起因写这篇文章的起因,是我在前端调试合约的时候,发现合约报错了,点开命令行报错,发现返回的是合约的callData,我直接表演一个眼前一黑,我怎么直接的知道是调用哪个方法的时候报错呢?于是有了这篇文章的探索目标:如何根据callData解析出调用函数内容:从合约小白的角度,从哈希函数的前世今生开始讲起。如果你已经很了解这部分内容,可以直接划到底。-用到的库:ethers\foundry哈希函数的前世今生这一个部分直接引用WTF课程里对哈希函数的描述,讲解的很详细。感谢社区的力量github.com/AmazingAng/WTFSolidity哈希函数(hashfunction)是一个密码学概念
在数学运算过程中假如超过了长度则值会变成该类型的最小值,如果小于了该长度则变成最大值数据上溢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
//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
注:由于是付费专栏内容,若有错误请及时联系@1_bit,博客链接:https://blog.csdn.net/A757291228,或在文章下留言,收到后将会对错误进行改正,若是版本更新导致的问题也希望大家对错误进行提交,尽力去保证付费用户该得到的权益。友情提示:本系列文章读者最好学过一门编程语言,面向对象语言更佳文章还在持续更新中…未完本专栏将会实战NFT,带读者走进web3世界,完成一个NFT项目。《实战NFTweb3solidity(新版本0.8.+)》一、solidity基础二、solidity基础进阶(2.1)——library库合约二、solidity基础进阶(2.2)——库合约的
如何使用Solidity创建NFT提供技术支持SinaVisitorSystem构建和创建NFT的光荣指南,ERC-721标准,用于创建收藏品、艺术品和任何类型的链上独特资产。照片由AntonMaksimovjuvnsky在Unsplash上拍摄。NFT(Non-FungibleTokens)是智能合约领域的热门新秀。如果说2020年是DeFi之年,那么至少2021年初属于NFT。NFT是一种类似于ERC20的代币标准。不可替代的代币意味着它是独一无二的代币,没有其他类似的代币。这与可替代的ERC20截然不同。Fungible的意思是“可替换的”或“可互换的”。例如,无论您使用哪种美元钞票,您
目录合约间转账合约的继承合约间转账用到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{}
ContractsinSolidityaresimilartoclassesinobject-orientedlanguages.Theycontainpersistentdatainstatevariables,andfunctionsthatcanmodifythesevariables.Callingafunctiononadifferentcontract(instance)willperformanEVMfunctioncallandthusswitchthecontextsuchthatstatevariablesinthecallingcontractareinaccessibl
今天的系列教程给大家详细的指导手机刷机的全部步骤。从基本的卡刷到各芯片的线刷步骤与有些刷机中各个选项的详细说明。让最基本的用户都可以轻易上手刷机。当然各个机型版本较多。虽然可能界面略有不同。但最基本的选项操作没有太大的区别。 【刷机简介】通俗来讲,刷机就是给手机重装系统。刷机可以使手机的功能更加完善,并且可以使手机还原到原始状态。一般情况下Android手机出现系统被损坏,造成功能失效或无法开机,也通常通过刷机来解决。一般Andriod手机刷机分为线刷,卡刷。线刷:就是通过计算机上的线刷软件把刷机包用数据线连接手机载入到手机内存中,使其作为"第一启动"的刷机方法。线刷软件都为计算机软件,一般来
相关合约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
目前ide对于js调试还是如其它android、ios一样,存在较多缺陷,config.json配置导致中间调试的断层。建议初学者如果是java或者语言类转入,可以先用java语言进行学习。首先,你需要理清楚Ability、AceAbility、AbilityPackage三者关系:AbitityPackage继承 AbilityContext并且对接接口callback。context顾名思义:Context初始化,android也是上下文包括继承于Context的ContextWrapper,ios是controller中self、weakself等等。harmonyOS中的context