专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

一文弄清以太坊代币ERC721

  文章共2000字,预计阅读时间10分钟。
  Web3是个令人眼花缭乱的地方,里面充斥着新颖的词汇:币、代币、NFT、跨链桥、Defi、Cefi,这些都让入门者感到非常困惑。
  新手可能花好几天时间,看了好几个项目的白皮书,最终都不明白什么是代币,什么是NFT。有人好不容易清楚了代币的含义,依然会疑惑,以太坊不是已经有了主币ETH,为什么还有个代币wETH?
  本文试图从代码角度帮助弄清以太坊上的各种代币,他们有什么功能,以及通常是如何实现这些功能的,欢迎交流。TL;DR
  ERC全称EthereumRequestforComment,中文名为以太坊意见征求稿,目前经常使用的有ERC20和ERC721两个标准,前者用于发行同质化代币,后者用于发行非同质化代币(即NFT,nonfungibletoken)。
  满足标准的合约所记录的数据就被称为代币,代币只是被记录在合约中的数据,铸造、转账、销毁操作也只是在合约中修改记录的数值。
  ERC标准规定了合约的接口,其他应用(例如OpenSea)可以通过合约的接口来操作代币。
  容易误解的是,ERC标准仅仅规定了合约的接口格式,至于合约具体怎样实现这些接口,ERC标准是不做规定的,所以能有各式各样的NFT。ERC20
  ERC20标准规定了以下6个函数和2个事件interfaceIERC20{functiontotalSupply()externalviewreturns(uint256);functionbalanceOf(addressaccount)externalviewreturns(uint256);functiontransfer(addressto,uint256amount)externalreturns(bool);functionallowance(addressowner,addressspender)externalviewreturns(uint256);functionapprove(addressspender,uint256amount)externalreturns(bool);functiontransferFrom(addressfrom,addressto,uint256amount)externalreturns(bool);eventTransfer(addressindexedfrom,addressindexedto,uint256value);eventApproval(addressindexedowner,addressindexedspender,uint256value);}
  6个函数的含义分别是totalSupply():获取代币的总发行量balanceOf(addressaccount):获取account地址代币的余额transfer(addressto,uint256amount):函数的调用者直接向to地址发送amount数量代币allowance(addressowner,addressspender):获取owner向spender地址批准了多少消费额度approve(addressspender,uint256amount):函数的调用者向spender地址批准amount数量消费额度transferFrom(addressfrom,addressto,uint256amount):函数的调用者使用from地址给的消费额度向to地址发送amount数量代币
  2个事件的含义分别是Transfer:转账时发出,记录from地址向to地址发送了amount数量代币Approval:批准消费额度时发出,记录owner地址向spender地址批准了value消费额度
  其中approve、transferFrom和allowance可能比较难理解,一个简单的例子就是父母给零花钱,花钱的虽然是子女,但钱是从父母钱包里面扣除的。
  如果合约实现了以上6个函数和2个事件,我们就可以说满足ERC20标准。通常项目方还会在合约中添加mint函数和burn函数,用来增发代币和销毁代币,这里是ERC20合约的一种实现方式。
  满足ERC20标准的合约所铸造出来的代币,就可以上线uniswap等去中心化交易所,用来交换别的虚拟货币了。因为去中心化交易所需要调用transferFrom方法,而以太坊的主币ETH并没有这个接口,所以查看ETH在uniswap中具体的交易情况,能发现ETH总是先被存入wETH合约转换成同等数量的wETH代币,之后uniswap再调用transferFrom进行各种代币间的交换。ERC721
  ERC721标准规定了以下10个函数和3个事件interfaceIERC165{functionsupportsInterface(bytes4interfaceID)externalviewreturns(bool);}interfaceIERC721isIERC165{eventTransfer(addressindexedfrom,addressindexedto,uint256indexedtokenId);eventApproval(addressindexedowner,addressindexedapproved,uint256indexedtokenId);eventApprovalForAll(addressindexedowner,addressindexedoperator,boolapproved);functionbalanceOf(addressowner)externalviewreturns(uint256balance);functionownerOf(uint256tokenId)externalviewreturns(addressowner);functionsafeTransferFrom(addressfrom,addressto,uint256tokenId)external;functionsafeTransferFrom(addressfrom,addressto,uint256tokenId,bytescalldatadata)external;functiontransferFrom(addressfrom,addressto,uint256tokenId)external;functionapprove(addressto,uint256tokenId)external;functiongetApproved(uint256tokenId)externalviewreturns(addressoperator);functionsetApprovalForAll(addressoperator,boolapproved)external;functionisApprovedForAll(addressowner,addressoperator)externalviewreturns(bool);}
  ERC721标准是继承了ERC165标准的,其中ERC165标准规定了函数supportsInterface(bytes4interfaceID)用于发布并检测合约实现了什么接口。
  ERC165标准使得外部可以查询合约是否支持接口,如果支持,查询接口的版本,以便用户可以调整与合约交互的方式。
  剩下9个函数的含义分别是balanceOf(addressowner):获取owner地址代币的余额ownerOf(uint256tokenId):获取tokenId号代币的owner地址safeTransferFrom(addressfrom,addressto,uint256tokenId,bytescalldatadata):安全地将tokenId号代币从from地址发送到to地址并附加data信息(data信息在token发送到合约账户时会用到,可以用data来操作接收的合约,安全发送指的是合约会检查to地址是不是合法的token接收者)safeTransferFrom(addressfrom,addressto,uint256tokenId):同上,data信息为空transferFrom(addressfrom,addressto,uint256tokenId):将tokenId号代币从from地址发送到to地址,一般用于发送给他人账户,如果to地址是合约账户则可能出错approve(addressto,uint256tokenId):函数调用者将tokenId号代币批准给to地址getApproved(uint256tokenId):获取tokenId号代币被批准给了哪个地址setApprovalForAll(addressoperator,boolapproved):函数调用者管理第三方operator地址的权限,approved表示是否给第三方批准isApprovedForAll(addressowner,addressoperator):获取owner地址是否批准第三方operator地址操作自己所有的代币
  3个事件的含义分别是Transfer:转账时发出,记录from地址向to地址发送了tokenId号代币Approval:批准时发出,记录owner地址向approved批准了tokenId号代币ApprovalForAll:管理第三方权限时发出,记录owner地址将第三方operator地址的管理权限设置为approved
  由于合约中含有tokenId,所以每个代币都是不尽相同的,这正是非同质化的含义。ERC721和ERC20在设计思路上没有太大差别,只不过由于ERC721的代币是非同质化的,所以既可以通过tokenId进行单个批准,也可以将owner地址的代币全部进行批准,而ERC20只能批准固定数量。
  在实际使用中,不一定需要把九个函数全部实现,这里是ERC721合约的一种实现方式。尾记
  知道了ERC20和ERC721有什么用呢?
  知道了标准,我们就可以通过ERC标准提供的接口直接操作各类代币和NFT,例如,无聊猿是NFT,那么他的合约肯定也符合ERC721标准。
  可以通过以太坊浏览器,直接调用ownerOf接口查看2022号无聊猿的拥有者(当然使用代码调用接口也可以,只是以太坊浏览器比较直观)
  我们再在最大的NFT交易市场OpenSea上查看一下2022号无聊猿,发现其拥有者确实是这个B44618开头的账户
  事实上,OpenSea这类应用,正是通过调用ERC标准提供的各种接口来实现交易的,当我们完全了解ERC标准之后,完全可以自己编写应用来进行代币的交易。
  今天就到这里,再见。
  参考文章
  https:ethereum。orgzhdevelopersdocsstandardstokenserc20
  https:ethereum。orgzhdevelopersdocsstandardstokenserc721
  https:eips。ethereum。orgEIPSeip165

有员工借钱给老板的,最后老板没钱还,员工又不敢走的吗?我以前的老板特别会画大饼,打鸡血。同事有好几个都借钱给老板,一个女同事是总监,自己也没钱在亲朋好友那里东拼西凑的借了60万钱给老板。一个拿父母的积蓄钱借给老板20万!还有借10万的乡村振兴驻村你愿意去吗?不去了。因为搞好乡村振兴工作不是那么轻松,受多方面因素影响。回头看看脱贫攻坚走过的路,体制机制障碍是工作最大的障碍。要想工作从实际出发,就必须赋予第一书记和工作队人财物以及重大事项打算买车,新宝来和捷达vs5怎么选?追求动力就选捷达,三大件相当靠谱,绝不次于宝来甚至有过之,配置也不低,对动力没有要求就选宝来,毕竟还有个大众标追求空间宽敞,走城郊道路多的,还是vs5比较好。同价位,三大件应该捷达猪肚和什么食物一起炖汤最有营养?猪肚本身也算是营养比较丰富的食材,含有钾磷镁钙等矿物质,还含有一点点硒元素,也含有一点维生素等物质,主要还是蛋白质和脂肪的量比较大。而在本草纲目唐本草等医药典籍中对猪肚评价也是蛮高你认为河北经贸大学在河北属于什么级别的学校?为什么?河北省内的高校基本上默认的是这样的,一流的理科院校只有燕山大学和河北工业大学,虽然燕大不是双一流,但是它有的专业是全国数一数二的(不晓得双一流评定怎么把它给漏了),至于河工大我个人电影或电视剧中有哪些有趣的穿帮镜头?大家好,我是玉玲珑格格,喜欢各种搞笑的笑话和故事,还有各种搞笑图片,各种搞笑影视剧等,愿意和大家一起分享各种搞笑事情,笑一笑,十年少!希望带给大家更多的欢乐和开心,祝福大家天天好心有开封和洛阳两大古都,河南省会为何在1954年迁往郑州?自古至今,中原划线文明的核心区域都会有两座双星闪耀的城市,从最早的长安洛阳,到后来的洛阳开封,直到今天的西安郑州。这其中的原因主要是由他们的区位优势决定的,河洛盆地自古是中华文明的电视剧中有很多咬舌自尽的,从医学分析,咬舌真的能自杀吗?这个问题我也思考过,看过电视剧的都知道。咬舌自尽是常见的一种自杀方法,吐血是剧中人物死亡的前奏。先来说说咬舌自尽,目前没有因为咬舌而疼死的,咬舌可能会影响生命也也就是大量出血了,因为什么英超和德甲的世界足球先生那么少?自从1991年世界足球先生的评选举办以来,英超球员仅在2008年由C罗当选过一次世界足球先生,而德甲还从没有球员赢得过世界足球先生这一殊荣,最接近这一荣誉的是还在拜仁慕尼黑效力的卡沈阳今年的供热是不是不好?非常不好越来越次你这说的,就像哪年好过一样现在的沈阳冬季供暖就似老太太过年,一年不如一年。老太太,一年不如一年,快看到西阳。从没好过,感觉钱白交了沈河区广宜三小区14度,非常不好非为什么现在大多数公司招聘都要求年龄35岁以下?35岁的80后就这么被排斥吗?35岁之后,不易洗脑。有独立的思想,不易管理。你懂的。不做多讲。投过简历参加过招聘会的应聘者应该对公司的年龄限制并不陌生,虽然我们的平均寿命逐年增长,但找工作的年龄红线却在逐步前移
十有临夏之化石多项为国内首次发现或世界之最2020年,在位于甘肃临夏州和政县的古动物化石博物馆内,拍摄世界上最丰富的铲齿象化石。(资料图)和政宣传部供图中新网兰州12月14日电(艾庆龙张明红江智博)在西北内陆的甘肃临夏这片地球故事追溯我们的起源并联系我们的过去地球故事追溯我们的起源并联系我们的过去地球故事讲述了我们这个星球从数十亿年前形成到今天的故事。这是一个关于进化论地质学生物学和生态学的故事,它让我们深入了解我们在宇宙中的位置。地球法媒科学家警告称气候变暖有自我推进的危险据法新社华盛顿17日报道,随着全球变暖,浮冰正在融化,而浮冰的白色表面比颜色更暗的海洋更能反射太阳光,所以它的减少会导致升温加剧。其结果是浮冰融化得更厉害了。报道称,这种恶性循环被1982年起,中央军委在5年时间内,先后裁军200万,有何战略考量?1982年起,中央军委在5年时间内,先后裁军200万,有何战略考量?从1950年开始,我军经历了十一次大规模裁军。其中,1982年1985年两次裁军较为特殊,时间点挨得都很近裁军力最担心的事情发生了俄飞船找不到明显泄漏点,设计或存在严重问题2月18日,对接于国际空间站的进步MS21飞船脱离空间站,为后续MS23飞船腾出对接口,原计划该飞船在脱离国际空间站后将在受控的条件下减速进入大气层,它的最终归宿将会是南太平洋的航推进轨道高质量发展,深铁集团TOD项目建设全面加速近日,深铁集团TOD项目建设开足马力,深铁懿府传来全面售罄的市场佳绩,奋力以高质量的TOD项目勾勒出轨道高质量发展新图景。深铁集团相关负责人表示,今年,深铁集团仍将积极推动轨道物业目标不是俄罗斯,拜登骗了全世界?俄媒这国正被美国摧毁据参考消息17日报道,俄新社在刊发的题为德国成为美国的主要目标的文章中指出,目前的俄乌地缘政治危机是美国维持其在二战后领先地位的最后机会。文章表示,那场大战后,美国没有一个能够与之衡阳崛起时间谷衡阳船山时间谷钟表开发有限公司董事长唐灵军返乡创业的故事全媒体记者陈鸿飞通讯员邹健陈曙霞伯乐推荐唐灵军,衡阳船山时间谷钟表开发有限公司董事长。2003年,唐灵军南下来到广州,从事钟表行业。他先后成立广州奥圣钟表有限公司广州威得钟表有限公孩子有卡点儿综合征?科学管理时间,应该怎样做?东营日报社爱东营讯759和801,都是接近8点,可是最终效果一样吗?表面上它们之间只差了两分钟,可是在卡点儿综合征患者眼中可能相差了一个小时。您家孩子是否有卡点儿综合征呢?什么是卡俄乌战争,俄罗斯VS乌克兰,胜负早已注定,从这十个方面可以判断俄乌战争已经一年多了,至今还没有结束的意思,看起来像是一场无休无止的战争,不知道什么时候才结束。很多网友都关心,俄乌战争最终的胜负结果,有的网友认为是乌克兰胜俄罗斯败,因为乌克兰背访谈一方山水的自然灵性,一条时间河流的交相辉映一方山水的自然灵性,一条时间河流的交相辉映评论家王波与作家袁姣素关于文学的对话有时候,写作就是一种自我的修行,沉淀与学习,方法与思考,都很重要。就像沈从文说的,要贴着人物去写。而人
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网