安全性设计和以太坊数据上链成本构成。目录大纲
NFT资产是什么?
2.Mint和safeMint的差别
4.NFT哪些数据也存储在链上?
面向对象
Web3新手,有无技术背景均可:
研发——可无障碍阅读,理解精美的合约设计
非研发——可能读不懂列举的代码,但能体会标准协议的设计思路
公链等信息,而Properties栏目则是其设定的具备各种属性,对应的稀有度。
1.1资产在标准ERC721协议里是什么?
而咱们回顾到源代码,会发现程序记录了全局性的两个字典类型的变量,通过?_owners中用数字映射地址的方式记录每一个ID?当前对应的所有者,同时也附带用_balances?记录了当前所有者总计持有的NFT数量
并且由于ERC721创新性的赋予了一个ID对应地址的变量?_owners,从而与ERC20仅_balances?进行地址与余额的管理,区分出了FT与NFT的差别。
印度将为数字卢比试点加入更多银行:金色财经报道,印度中央银行正在加强两个正在进行的CBDC测试项目,这些项目研究数字卢比的零售和批发实施。印度储备银行(RBI)表示,它现在将在下一个财政年度为试点引入一系列用例和功能。储备银行去年推出了数字卢比(或电子卢比)试点。
根据该银行5月30日发布的年度报告,计划扩大零售试点,引入更多参与银行。印度的批发CBDC测试于去年11月开始。这个想法是为了使用数字卢比促进政府证券二级市场交易的结算。九家银行参与了第一阶段。零售试点于12月启动,目标是使用数字卢比作为实物纸币的替代品。中央银行表示,已有八家银行参与了零售试点,另有五家银行正在加入。[2023/5/31 11:49:20]
2.Mint和safeMint的差别
2.1?Mint是如何进行的
Mint?意思为铸造,即每个NFT的创造过程,例如之前的爱死机NFT?当奈飞的NFT忘记了web2的业务安全
Mint?获取到该NFT的资产证明。
从源代码中可以看到,Mint?主要是进行了安全判断:
判断1:确保转入的不是0x00地址
美前财长萨默斯:美国金融市场或进入动荡期:金色财经报道,美国前财长萨默斯警告称,金融市场对遏制通胀进展的自满情绪正不断升温,美联储进一步收紧货币政策的程度可能需要高于投资者当前的预期。我们正进入一个可能动荡的时。我不确定我们目前的轨迹是否能实现2%的通胀率目标,而无需进行高于市场当前预期幅度的加息。[2023/2/11 12:00:11]
判断2:确保此交易所操作的NFTID是不存在的
最终代码执行的操作是:
操作1:将转入地址的_balances?所持有总数加1
操作2:将对应?NFTID?的所有者修改为转入的地址
操作3:完成交易则发出emit?事件,可以让链下监听到这次交易的数据
中间有_beforeTokenTransfer和_afterTokenTransfer属于虚函数,作为标准,是让项目方可以再不修改标准协议的情况下增加一些特定的逻辑代码用的。
2.2为何safeMint更安全
safeMint意为安全的铸造,从代码实现中可以看到他本身也是调用了MInt但是他额外增加了_checkOnERC721Received的判断,这点是属于ERC165的标准,相当于在完成转入操作后,则判断对方地址,是否是黑洞地址是防止转入对象为合约地址时候,其合约没有预设置好转出的函数,导致资产在内无法被转走,从而造成永久损失。
持有1+MATIC的以太坊钱包数量超过40万个:金色财经报道,据Dune Analytics数据显示,持有1枚以上MATIC Token的以太坊钱包数量已超过40万个,本文撰写时401,215个。此外,当前持有10枚以上MATIC Token的以太坊钱包数量为311,343个,持有100枚以上MATIC Token的以太坊钱包数量为141,876个,持有1000枚以上MATIC的以太坊钱包数量为43,405个。[2022/8/13 12:22:22]
2.3ERC165是如何防止资产转入黑洞的?
设计初衷可见:https://eips.ethereum.org/EIPS/eip-165
是让合约接口标准化的提案,在编程语法中interface是接口的意思,在其中定义的函数可以不实现仅仅放上函数名字相关参数,在程序复杂的时候,相当于目录一般告诉别人我都有什么功能。
但是接口的写法各有千秋,名字定义参数类型,甚至是否存在都有不同,
所以此提案最终形成了ERC165标准,规范了接口的识别规则。
使用流程是:
NFT铸造平台REBASE即将推出reBASE APP:7月12日消息,NFT铸造平台REBASE即将推出reBASE APP,旨在通过地理定位技术以弥合现实世界和虚拟世界之间的差距,使用户可以与NFT以及所处的物理环境进行交互,此外,在虚拟和现实世界中的社交互动也将成为reBASE APP的重要部分。[2022/7/12 2:07:01]
STEP1?判断是否存在?supportsInterface?函数,并且其符合165标准
STEP?2通过?supportsInterface?函数,判断是否具有转出NFT的函数
3.交易时会发生什么?有哪些细节?
钱包所持有的NFTID转移到指定地址
transferFrom从转移:用某机构调用,需要用户先授权某地址,让其有权可转移。
类比一下:
transfer?就是现金交易,从自己口袋里拿钱支付
transferFrom?就是扫码扣款,由店家申请扣款,受制于用户是否开通小额代扣权限
接下来咱们从代码来看看,其中可能有会意想不到的细节。
公链项目Aptos推出生态系统资助计划:6月30日消息,据官方公告,由Diem原团队成员成立的公链项目Aptos宣布推出Aptos生态系统资助计划,资助类别包括:1.开发人员工具、SDK、库、文档、指南及教程;2.用于开发、治理、DeFi和NFT的工具和框架;3.核心协议贡献:代币标准、库、协议升级等;4.开源和公共产品;5.教育举措;6.应用程序。Aptos称,赠款资金将以美元分配,不过未来有可能会选择分发代币以帮助激励各方的长期生态系统增长。
此外,Aptos宣布已有100个项目在该网络上构建,用例涵盖DeFi、NFT、游戏等,并预计在9月底左右推出Aptos主网。[2022/6/30 1:41:28]
3.1?transfer?是如何进行的
他会检测当前交易的?from?方是否是此NFTID的持有者,并且限制该NFT转入0x00地址。其次进行?from?转出地址和?to?转入地址的余额刷新,修改?_balances全局变量并且重新设置_owners此NFTID的所有者地址修改为to。
这里有个防护的细节会先执行_approve(address(0),tokenId);?清空历史授权,如果没有这一步,则资产完成了转移,但是其NFTID的转移授权依旧在,细思极恐:
3.2transferFrom是如何进行的
这里的交易本质调用的是_safeTransfer所以他的核心逻辑是require部分,
这的一大细节是:_msgSender()?这是openzepplin的标准库Context.sol中的方法。
其实就是获取当前交易的发送者地址,但这里使用了封装版本,而不是直接使用msg.sender
是考虑到,可能存在一种交易类型“元交易”,即交易的付费gas方和交易发起方不相同的情况。
所以一些处于中间环节的,类似library的合约需要考虑这种特殊情况。
其余部分判断是确定是否有授权记录,易于理解,不作赘述
IPFS的地址。
咱们可以通过之前Etherscan教程方法来看看一些项目数据有什么?
Azuki上合约地址是:0xed5af388653567af2f388e6224dc7c4b3241c544
通过ReadContract可以查阅到,其元数据只存放了ipfs上的指向地址
而近期兴起的Metaverse项目元宇宙土地sandbox和****Decentraland,以及去年火热的****AxieInfinity,基本链上存储元数据也只是ID网址。
像mirror那些是专门设计低费用可进行高存储,一个块常规都是30M起步,大约是以太坊的1000倍。
用户发起一笔交易,将要写链上数据作为参数传入,其大小是一笔成本
交易执行合约代码,依据修改和使用,EVM计算消耗的gas成本。
5.1交易发起的成本
咱们可以核对下以太坊黄皮书,里对交易数据大小所消耗gas有清晰的定义
可以看到交易所附带的参数的价格:
每笔交易都有21000GAS需要支付
为交易的每个非零字节数据或代码支付68GAS
为交易的每个零字节数据或代码支付4GAS
所以如果是再?Mint?的时候,登记上若干NFT属性信息,交易的data部分会将abc等字符转成2个十六进制表示,而每个字符为一个八位二进制,等于一个byte。所以可以约等于将data的长度除以2作为byte数。
而1kb的数据,如果都是非0的有信息量的文本信息,则等于增加是68*1000=6.8W的gas消耗。按20gwei的gas价格和2000的eth兑换美元价格,可以估算出,每上链1kb数据在交易发起端就要:
20*(2100068000)*1e9/1e18*2000=?3.5美金
5.2合约存储的成本
由于交易发起后,还有智能合约上存储的逻辑,咱们从以太坊go源代码中,来分析具体的消费量,代码具体在函数内,太长了不全粘来:
func?gasSStore(evm*EVM,contract*Contract,stack*Stack,mem*Memory,memorySizeuint64)(uint64,error)
历史上GAS消耗的估算有经过若干迭代,如果是Petersburg或者Constantinople未激活的话,则不按下面逻辑进行计算
gas消耗计算,依赖3个种数据的管理形式
从零值地址到非零值,每个存储槽需消耗2Wgas
从非零值地址到零值地址,每个存储槽需消耗5Kgas,但会有奖励1.5Wgas退回
从非零到非零,每个存储槽需消耗200gas
注意,上述每一个存储槽算32byte,1kb存储则是32个存储槽。Mint?的过程是新增存储,所以如果新增1kb的数据存储在链上代价将是64Wgas,换算成金额则是:
20*(640000)*1e9/1e18*2000=?25美金
真可谓寸土寸金!
前文回顾
EIP-5058能否防止NFT项目方提桶跑路?
当我们在看Etherscan的时候,到底在看什么?
当奈飞的NFT忘记了web2的业务安全
自1981年以来最高通胀的幽灵让交易员预计到10月还会再加息3次0.5%。6月10日,在华尔街开盘前美国出人意料的高通胀数据震惊了市场之后,比特币(BTC)大幅下跌.
1900/1/1 0:00:00亲爱的CoinW用户:CoinW将于2022/6/1520:00(UTC8)在ETF专区上线PEOPLE3L/USDT、PEOPLE3S/USDT、BREED3L/USDT、BREED3S/US.
1900/1/1 0:00:00尊敬的XT.COM用戶:由於BEP20錢包升級維護,XT.COM現已暫停所有BEP20鏈上代幣的充值與提現業務.
1900/1/1 0:00:00在跨链协议Umee和Maker团队合作之后,第四大稳定币即将登陆Cosmos。从UST到DAI稳定币,Cosmos希望填补这一空白继上个月Terra的400亿美元爆雷之后,?Cosmos生态系统.
1900/1/1 0:00:00親愛的KuCoin用戶,KuCoin交易機器人一直致力於為廣大用戶帶來更優質的使用體驗,近期我們上線了多項更新邀您體驗.
1900/1/1 0:00:00?更专注一级市场、公募、二级市场潜力币推荐,项目孵化的探究、暴涨山寨币,优质币种的挑选和做到更专业,提供海内外一级市场优质项目----区块链阿生就是能给v神压力的公链是那一条链,其实.
1900/1/1 0:00:00