范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

一文弄清以太坊代币ERC721

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

苹果革命性产品将春季发布或由和硕独家组装,续航两小时早在几年前就已经传出苹果将推出一款ARVR头戴设备的消息,但这期间因诸多问题也让它的亮相时间也一再向后拖延,可以说苹果的ARVR头盔是作为科技行业内最为又臭又长的研发了。上个月分析云南旅行回忆录丽江古城旅游时间十一黄金周旅游地点香格里拉泸沽湖丽江玉龙雪山旅行建议1带伞在丽江的时间,基本都在下雨,大雨小雨。如果忘记了,也没关系,很多店里都会卖伞,也会借用。2防晒一定要做足防晒,高海中国游客遭罪犯般对待,被军人押送挂黄牌国门终于打开,中国人高高兴兴地出国游之后,发现外面并不是一个非常友好的世界。不友好国家排行榜上,排在第一位就是韩国。近期,多位去韩国旅游的中国游客,遭到了歧视性对待。韩国先是要求中中国经济新亮点陕西宝鸡老三线奏出新乐章地处关中平原西部的陕西省宝鸡市被称为火车驮来的城市20世纪五六十年代,伴随着三线建设的推进,大量的机械设备科研仪器等从全国各地汇聚于此,为宝鸡装备制造机械电子有色金属仪器仪表等工业韩国大叔许圣茂的三十载中国情缘来源中央广电总台国际在线编辑位树理国际在线报道(记者燕玺陈治铜辛萌)因为向往,他们来到中国因为梦想,他们选择留下。当外国人遇见中国,究竟会碰撞出怎么样的火花?环球资讯广播特别策划遇民营企业最糟糕时期是否已经过去基金经理对中国观点变得保守FinGraph是一份图形化的财经专栏,为专注于全球市场和经济形势的专业人士提供简短准确全面的每日概览。文章内容不构成投资建议。中国1。对于一些资金最紧张的中国公司来说,最糟糕的时家长批中国奇谭吓哭小孩,真的是大人不满,还是另有隐情?要说最近最火的国漫,非三体动画和中国奇谭莫属。只不过前者属于期待大落差也大而后者则是实打实得惊艳,从第一集播放开始就好评不断,可谓刷新了大家对国漫的认知。然而,人红是非多,这不,中第6届中国金球奖候选名单武磊张玉宁入选,武汉三镇3人直播吧1月12日讯第6届中国金球奖候选名单公布,共有15名球员入选名单,100多位国内外权威体育媒体代表和特邀评委将为2022年度的评选投出专业选票。中国金球奖15名候选人名单(首中国地理河西走廊河西走廊为祁连山脉和北山山脉之间,东西长约1000千米,因为它位于黄河以西,所以叫做河西走廊。河西走廊在历史上有非常重要的地位,它不仅是佛教东传的第一站丝路向西的咽喉,还是汉朝的军中国赴泰游客激增,日媒心态酸了泰旅游和航空业已经混乱最近,因为日本和韩国的不合理防疫措施,我国赶赴泰国的游客激增,而造成去日本和韩国的游客降低,这让日本媒体心态都酸了,只能鸡蛋里头挑骨头,说泰国旅游和航空业已经被中国游客弄混乱了。随文化为什么经常看见佛教活动中要点灯?前些时是西藏和部分蒙古地区的重大传统节日燃灯节。燃灯节之名,因其供灯而得。藏地燃灯节藏历十月二十五日是西藏及其他藏传佛教传播地区的传统节日甘丹阿曲,汉译燃灯节。在当天,各大藏区及蒙
唐山被打女孩伤情鉴定结果出来了,和我们想不一样人民日报和央视新闻等多家权威媒体通报了,唐山被打女孩伤情的最新情况。总结一下就是,其中两名受害女性经过检查后无需留院治疗后自行离开,司法鉴定为轻微伤。另外两名受害人经司法鉴定为轻伤案例一小伙酒吧搭话美女遭白眼,女子不要靠近我,你消费不起爱美之心人皆有之,看到美女心生向往是人的天性,但是很多人不知道,美貌其实是一种隐形资源。有时候对美女的美貌,我们远远地欣赏就好,如果想要靠近的话,可能需要付出我们付不起的代价。这个和同事去KTV,我喝多了趴在沙发上装睡,没想到她们会议论我我这个裤子上都是什么东西呀?我直接刮出了这么多黑色的你看什么看?我夹着都是自己吃的,小孩子只配看看你拿了个什么东西快拿开快拿开,我好怕呀吓死我了亲我一个就给你吃,真不愧是老奸巨猾亲我校举办2022年大学生志愿服务西部计划志愿者表彰欢送会6月22日,我校2022年大学生志愿服务西部计划志愿者表彰欢送会在文鼎三楼多功能厅举行。省督导专员校党委书记周元,党委副书记校长张穗萌,党委副书记副校长纪委书记唐立军,各二级学院院何超莲发文道歉!自称已深刻反思,向无辜被波及到的朋友道歉何鸿燊的儿子和女儿,这些年都是靠着父亲的名头,才能在娱乐圈混得风生水起,何猷君就是其中之一,他还参加过最强大脑,和他的女朋友奚梦瑶一起上过很多次恋爱节目。他的女儿何超莲正在和窦骁交戈壁西瓜有多大危害?硒砂瓜一年一茬,为何被局部禁种?夏天来袭,西瓜逐渐出现在人们的视野里。随着人们对西瓜喜爱度的提高,西瓜品种也不断地增多,不同品种的瓜,种植天数方法都大相径庭。种出来的西瓜,口感和瓜皮条纹也不一样。在麒麟西瓜花皮无华为下,苹果上,这是一场不公平的对决文科技君华为下,苹果上,这是一场不公平的对决!受老美一连串的限制措施影响,这两年华为企业营收规模下降明显,而曾经对华为营收贡献最大的手机业务,也因为芯片系统被限制,市场份额流失严重学习通1。7亿条信息泄露背后,专家建议谨慎开启App权限撰文周梦婷编辑董雨晴一个面向特定学生群体,名不见经传的App学习通迎来了最高光的时刻。6月22日,因疑似泄露学生信息,与大学生学习软件超星学习通(下称学习通)相关的多个词条登上热搜宁德同心描绘幸福景畲村谱写振兴曲牌坊对歌台凤凰图腾花园民房柏油村道安防监控鲜花绿植初夏时节,走进蕉城区九都镇九仙畲村,随处可见畲族元素与现代元素的深度融合,展现出令人赏心悦目的特色风情。从曾经穷居山林到受灾重建家2022山东高考本科分数线出炉!以梦为马,少年必胜2022年山东高考,本科专科分数线出炉,以梦为马少年定胜!就在刚刚,山东省教育直播,2022年夏季高考第二轮新闻发布会,公布普通类本科专科,艺术类本科专科分数线!一时间网上炸开了锅关键时刻,金砖峰会发出北京声音文观察者网王慧编辑冯雪时隔5年,金砖合作的时针又一次指向中国时刻。6月23日晚,习近平主席以视频方式主持金砖国家领导人第十四次会晤。会晤通过并发表了金砖国家领导人第十四次会晤北京宣