草庐IT

solid-principles

全部标签

Solidity中哈希函数的编码与解码

起因写这篇文章的起因,是我在前端调试合约的时候,发现合约报错了,点开命令行报错,发现返回的是合约的callData,我直接表演一个眼前一黑,我怎么直接的知道是调用哪个方法的时候报错呢?于是有了这篇文章的探索目标:如何根据callData解析出调用函数内容:从合约小白的角度,从哈希函数的前世今生开始讲起。如果你已经很了解这部分内容,可以直接划到底。-用到的库:ethers\foundry哈希函数的前世今生这一个部分直接引用WTF课程里对哈希函数的描述,讲解的很详细。感谢社区的力量github.com/AmazingAng/WTFSolidity哈希函数(hashfunction)是一个密码学概念

Solidity拓展:数学运算过程中数据长度溢出的问题

在数学运算过程中假如超过了长度则值会变成该类型的最小值,如果小于了该长度则变成最大值数据上溢uint8numA=255;numA++; uint8的定义域为[0,255],现在numA已经到顶了,numA++会使num变成0(由于256已经超过定义域,它会越过256,变成0),即数据发生上溢(越过上边界,叫上溢)。255-->256-->0上溢。数据下溢uint8numB=0;numB--;numB本身是低水位线,现在numB--会使num变成255(由于-1已经超过定义域,所以它会越过-1,变成255),即数据发生下溢(越过下边界,叫下溢)。0–>-1-->255下溢。   可以通过引用Op

solidity中assert用法详解

//solidityfunctionadd(uint256a,uint256b)internalpurereturns(uint256){uint256c=a+b;assert(c>=a);returnc;}基本上add只是像+一样对两个uint相加,但是它用一个assert语句来确保结果大于a。这样就防止了溢出。assert和require相似,若结果为否它就会抛出错误。assert和require区别在于,require若失败则会返还给用户剩下的gas,assert则不会。所以大部分情况下,你写代码的时候会比较喜欢require,assert只在代码可能出现严重错误的时候使用,比如uint

目录(文章更新中...)《实战NFT web3 solidity(新版本0.8.+)》

注:由于是付费专栏内容,若有错误请及时联系@1_bit,博客链接:https://blog.csdn.net/A757291228,或在文章下留言,收到后将会对错误进行改正,若是版本更新导致的问题也希望大家对错误进行提交,尽力去保证付费用户该得到的权益。友情提示:本系列文章读者最好学过一门编程语言,面向对象语言更佳文章还在持续更新中…未完本专栏将会实战NFT,带读者走进web3世界,完成一个NFT项目。《实战NFTweb3solidity(新版本0.8.+)》一、solidity基础二、solidity基础进阶(2.1)——library库合约二、solidity基础进阶(2.2)——库合约的

如何使用 Solidity 创建 NFT

如何使用Solidity创建NFT提供技术支持SinaVisitorSystem构建和创建NFT的光荣指南,ERC-721标准,用于创建收藏品、艺术品和任何类型的链上独特资产。照片由AntonMaksimovjuvnsky在Unsplash上拍摄。NFT(Non-FungibleTokens)是智能合约领域的热门新秀。如果说2020年是DeFi之年,那么至少2021年初属于NFT。NFT是一种类似于ERC20的代币标准。不可替代的代币意味着它是独一无二的代币,没有其他类似的代币。这与可替代的ERC20截然不同。Fungible的意思是“可替换的”或“可互换的”。例如,无论您使用哪种美元钞票,您

solidity实战

目录合约间转账合约的继承合约间转账用到address类型的transfer方法话不多说,先上代码//SPDX-License-Identifier:GPL-3.0pragmasolidity>=0.6.20.9.0;contractInfoFeed{functioninfo()publicpayablereturns(uint256ret){return42;}functiongetBalance()publicviewreturns(uint){returnaddress(this).balance;}}contractConsumer{fallback()externalpayable{}

Solidity contract智能合约概览

ContractsinSolidityaresimilartoclassesinobject-orientedlanguages.Theycontainpersistentdatainstatevariables,andfunctionsthatcanmodifythesevariables.Callingafunctiononadifferentcontract(instance)willperformanEVMfunctioncallandthusswitchthecontextsuchthatstatevariablesinthecallingcontractareinaccessibl

solidity合约验证

相关合约TokenX.sol//SPDX-License-Identifier:MITpragmasolidity^0.8.0;import"@openzeppelin/contracts/token/ERC20/ERC20.sol";contractTokenXisERC20{constructor(uint256initialSupply)publicERC20("Web03","W03"){_mint(msg.sender,initialSupply);}stringpublicconstanturl='web03.cn';}部署合约部署TokenX.sol地址:0x38451d7BC8

零时科技|solidity智能合约基础漏洞——重入漏洞

 ​0x01重入本质调用外部合约或将Ether发送到地址的操作需要合约提交外部调用,这些外部调用可能被攻击者劫持,迫使合约执行进一步的代码导致重新进入逻辑。0x02前置知识我们需要先知道以下几种函数的区别.transfer():发送失败则回滚交易状态,只传递2300Gas供调用,防止重入。.send():发送失败则返回false,只传递2300Gas供调用,防止重入。.call():发送失败返回false,会传递所有可用Gas给予外部合约fallback()调用;可通过{value:money}限制Gas,不能有效防止重入。payable标识符在函数上添加payable标识,即可接受Ether

【蚂蚁链学习3】蚂蚁搬家(蚂蚁链智能合约实战solidity)

文章目录第一章生成蚂蚁的房子实战第二章mapping+identityMapping(映射)Identity(标识)实战第三章msg.sender全局函数实战第四章require实战第五章增加一些属性实战第六章Storage与Memory实战接下来我们需要给我们的小蚂蚁建造一个属于他的小窝,让小蚂蚁有个自己的家。第一章生成蚂蚁的房子小蚂蚁出生了,快来给它建造一所房子,给小蚂蚁一个安心的家。实战参照上面生成蚂蚁的例子,我们还需要给蚂蚁生成房子。定义一个事件叫做NewHouse。它有4个参数:houseId(uint)带indexed属性,name(string),existGoods(uint)