如果你是WEB3加密界的新手,面对众多概念无从入手,那么欢迎你,来对地方了!!
本文围绕标准?ERC721协议,描述了Mint、?safeMint、?transfer等是如何实现资产管理的,并通过解读代码来了解它的安全性设计和以太坊数据上链成本构成。
1.所谓NFT资产是什么?
2.Mint和safeMint的差别
3.交易时会发生什么?有哪些细节设计
4.NFT哪些数据也存储在链上?
5.以太坊上存储有多贵?
Web3新手,有无技术背景均可:
研发——可无障碍阅读,理解精美的合约设计
非研发——可能读不懂列举的代码,但能体会标准协议的设计思路
在opensea上,可看到每个NFT都有个唯一的编号。
比如azuki系列中第4132号,在页面的Details栏目可以看到其合约地址,ID编号,部署所在公链等信息,而Properties栏目则是其设定的具备各种属性,对应的稀有度(非azuki本身携带,而是opensea整合计算的)。
而咱们回顾到源代码(此处取ERC721标准库openzepplin代码),会发现程序记录了全局性的两个字典类型的变量,通过?_owners中用数字映射地址的方式记录每一个ID?当前对应的所有者,同时也附带用_balances?记录了当前所有者总计持有的NFT数量
富达数字资产负责人:数字资产更多是TradFi的进化:金色财经报道,在今日举行的Web3香港嘉年华峰会上,富达数字资产解决方案全球负责人Luc Froehlich在圆桌论坛上表示,数字资产更多是TradFi的进化,科技背后的数字资产赋能,与我们更多的做TradFi。允许传统的金融行业去交付它的目标,给消费者提供服务,不仅仅是服务,还有数字资产,但数字资产只是这个公式的一部分,我们还要看到新的技术股在建立,物联网、人工智能怎么把收集的信息进行分析、使用、结构化,区块链这层可以创造出基础设施,把这些信息进行存储和交换,这就带来了价值,这是新的技术堆栈慢慢发展的趋势。
谈到机遇,我觉得这是一个创造金融服务的机会,它可以和消费者的需求相一致。谈到挑战,我们也在传统的财务金融行业有一些洗牌、颠覆,会有很多风险,也需要很多监管去保护消费者权益,但是我觉得这是一个自然而然的进化。[2023/4/12 13:59:03]
并且由于ERC721创新性的赋予了一个ID对应地址的变量?_owners,从而与ERC20仅_balances?进行地址与余额的管理,区分出了FT(同质化)与NFT(非同质化)的差别。
Mint?意思为铸造,即每个NFT的创造过程,例如之前的爱死机NFT?当奈飞的NFT忘记了web2的业务安全
数据:过去24小时XEN Crypto合约Gas消耗排名第一,已消耗超900枚ETH:10月9日消息,据Etherscan数据显示,过去24小时,XEN Crypto合约Gas消耗排名第一,已消耗超941.7枚ETH。[2022/10/9 12:50:24]
Mint?获取到该NFT的资产证明。
从源代码中可以看到,Mint?主要是进行了安全判断:
判断1:确保转入的不是0x00地址(黑洞地址无法转出,转入则资产损失)
判断2:确保此交易所操作的NFTID是不存在的
最终代码执行的操作是:
操作1:将转入地址的_balances?所持有总数加1
操作2:将对应?NFTID?的所有者修改为转入的地址
操作3:完成交易则发出emit?事件,可以让链下监听到这次交易的数据
中间有_beforeTokenTransfer和_afterTokenTransfer 属于虚函数,作为标准,是让项目方可以再不修改标准协议的情况下增加一些特定的逻辑代码用的。
safeMint 意为安全的铸造,从代码实现中可以看到他本身也是调用了MInt 但是他额外增加了_checkOnERC721Received 的判断,这点是属于ERC165的标准,相当于在完成转入操作后,则判断对方地址,是否是黑洞地址(即无法发起交易NFT操作的地址)是防止转入对象为合约地址时候,其合约没有预设置好转出的函数,导致资产在内无法被转走,从而造成永久损失。
Ripple与Web3公司CrossTower在NFT领域达成合作:7月11日消息,Ripple与Web3公司CrossTower在NFT领域建立合作关系。由于双方的合作,基于XRP Ledger的NFT系列将上线CrossTower的市场,XRPL NFT的开发者和创作者将可以完全访问该网站的功能并触及全球用户。
CrossTower首席执行官Kapil Pathi表示,与Ripple的合作以及在平台上使用XRPL为CrossTower开拓新市场提供了机会,特别是印度,这是Pathi长期以来一直关注的国家。XRP Ledger的支持将大大降低创建和生产NFT内容的成本,并加强CrossTower在这个快速增长的加密市场领域的地位。
据悉,第一批XRPL NFT项目将在未来几周内上线CrossTower市场。(U.Today)[2022/7/12 2:06:32]
设计初衷可见:https://eips.ethereum.org/EIPS/eip-165
是让合约接口标准化的提案,在编程语法中interface 是接口的意思,在其中定义的函数可以不实现仅仅放上函数名字相关参数,在程序复杂的时候,相当于目录一般告诉别人我都有什么功能。
但是接口的写法各有千秋,名字定义参数类型,甚至是否存在都有不同,
Nexo联合创始人:Nexo不会遭遇与Celsius和Voyager Digital类似的流动性危机:金色财经报道,Nexo 联合创始人兼管理合伙人Antoni Trenchev表示,Nexo不会遭遇与Celsius和Voyager Digital类似的流动性危机,Nexo和他们完全不同,并且不必采取任何相同的措施来维持生计。此外,Nansen首席执行官Alex Svanevik提供数据显示,Nexo的几个钱包内资产价值达到8.38亿美元(包括1.69亿美元链上资产),其中一半持有ETH,四分之一持有其原生 NEXO 代币。 另外,Nexo 已将价值5.79亿美元的Wrapped Bitcoin ( wBTC ) 作为抵押品存放在MakerDAO保险库中,并有 5000 万美元的DAI未偿余额。另外Antoni Trenchev声称,Nexo 没有利用投资者的资金来履行其客户义务。[2022/6/29 1:39:18]
所以此提案最终形成了ERC165标准,规范了接口的识别规则。
使用流程是:
STEP 1?判断是否存在?supportsInterface?函数,并且其符合165标准
STEP?2通过?supportsInterface?函数,判断是否具有转出NFT的函数
Optimism推出新去中心化Rollup基础架构Bedrock:5月20日消息,以太坊二层网络Optimism宣布推出去中心化Rollup基础架构Bedrock,该架构尽可能重用了以太坊的代码、基础设施和设计模式,并表示“EVM等效”已是过去时,Bedrock带来的是“以太坊等效”。Optimism表示,Bedrock将作为交互式故障证明系统Cannon的基础架构进行发布,其优势包括交易费用降低、最大吞吐量提升、节点同步速度提高。[2022/5/20 3:30:26]
(PS:让合约具备NFT接收转出功能,可通过引入?IERC721Receiver.sol?拓展包来实现)
标准协议设计有两种转移方式,transfer?和?transferFrom,作用于两种场景:
transfer 转移:由用户调用,将本消息发送的钱包所持有的NFTID转移到指定地址
transferFrom 从转移:用某机构调用,需要用户先授权某地址,让其有权可转移。
类比一下:
transfer?就是现金交易,从自己口袋里拿钱支付
transferFrom?就是扫码扣款,由店家申请扣款,受制于用户是否开通小额代扣权限
接下来咱们从代码来看看,其中可能有会意想不到的细节。
他会检测当前交易的?from?方是否是此NFTID的持有者,并且限制该NFT转入0x00地址。其次进行?from?转出地址和?to?转入地址的余额刷新,修改?_balances全局变量并且重新设置_owners此NFTID的所有者地址修改为to。
这里有个防护的细节会先执行_approve(address(0), tokenId);? 清空历史授权,如果没有这一步,则资产完成了转移,但是其NFTID的转移授权依旧在,细思极恐:
这里的交易本质调用的是_safeTransfer 所以他的核心逻辑是require 部分,
这的一大细节是:_msgSender() ? 这是openzepplin的标准库Context.sol 中的方法。
其实就是获取当前交易的发送者地址,但这里使用了封装版本,而不是直接使用msg.sender
是考虑到,可能存在一种交易类型“元交易” ,即交易的付费gas方和交易发起方不相同的情况。
所以一些处于中间环节的,类似library的合约需要考虑这种特殊情况。
其余部分判断是确定是否有授权记录,易于理解,不作赘述
交易的环节也看完后,其实很多新同学也顿感奇怪,原来我买的NFT只有一个ID的归属地址指向了我,从而达成了唯一性。那就算如此,稀有度信息放在哪里?我的NFT图像本身在那里?
这就是涉及到ERC721的元数据拓展IERC721Metadata.sol
要放什么都可以,但是项目方往往在链上只存储最基础的ID+IPFS的地址。
咱们可以通过之前Etherscan教程方法来看看一些项目数据有什么?
Azuki上合约地址是:0xed5af388653567af2f388e6224dc7c4b3241c544
通过Read Contract可以查阅到,其元数据只存放了ipfs上的指向地址
而近期兴起的Metaverse项目元宇宙土地sandbox和****Decentraland ,以及去年火热的****Axie Infinity ,基本链上存储元数据也只是ID+网址。
像mirror那些是专门设计低费用可进行高存储,一个块常规都是30M起步,大约是以太坊的1000倍。
这里是本文稍难的地方。咱们从源码来分析链上存储的成本构成以及金额换算
成本产生将有2个方面,按执行流程来看
用户发起一笔交易,将要写链上数据作为参数传入,其大小是一笔成本
交易执行合约代码,依据修改和使用,EVM计算消耗的gas成本。
咱们可以核对下以太坊黄皮书,里对交易数据大小所消耗gas有清晰的定义
可以看到交易所附带的参数的价格:
每笔交易都有21000 GAS需要支付
为交易的每个非零字节数据或代码支付68 GAS
为交易的每个零字节数据或代码支付4 GAS
所以如果是再?Mint?的时候,登记上若干NFT属性信息,交易的data部分会将abc等字符转成2个十六进制表示,而每个字符为一个八位二进制,等于一个byte。所以可以约等于将data的长度除以2作为byte数。
而1kb的数据,如果都是非0的有信息量的文本信息,则等于增加是68*1000=6.8W 的gas消耗。按20gwei的gas价格和2000的eth兑换美元价格,可以估算出,每上链1kb数据在交易发起端就要:
20*(21000+68000)*1e9/1e18 * 2000 =?3.5美金
由于交易发起后,还有智能合约上存储的逻辑,咱们从以太坊go源代码中(EIP1283),来分析具体的消费量,代码具体在函数内,太长了不全粘来:
func?gasSStore(evm *EVM, contract *Contract, stack *Stack, mem *Memory, memorySize uint64)(uint64, error)
历史上GAS消耗的估算有经过若干迭代,如果是Petersburg或者 Constantinople 未激活的话,则不按下面逻辑进行计算
gas消耗计算,依赖3个种数据的管理形式(增删改)
从零值地址到非零值(NEW VALUE),每个存储槽需消耗2Wgas
从非零值地址到零值地址(DELETE),每个存储槽需消耗5Kgas,但会有奖励1.5W gas退回
从非零到非零(CHANGE),每个存储槽需消耗 200 gas
注意,上述每一个存储槽算32byte,1kb存储则是32个存储槽。Mint?的过程是新增存储,所以如果新增1kb的数据存储在链上代价将是64Wgas,换算成金额则是:
20*(640000)*1e9/1e18 * 2000 =?25 美金
真可谓寸土寸金!
标签:NFTGASTRAINTNFTBlackmarketUGAS-JUN21价格TRAMSV1 Tokenpaint币详细资料
通常,黑客会发现并利用软件开发整个流程链条(从设计到部署再到维护)中的缺陷,从而打破区块链项目的安全屏障。如果能够提前了解到相关经验,我相信安全事故会少很多.
1900/1/1 0:00:00编者按NFT自从2021年火爆出圈以来,受到市场的广泛关注和讨论。虽然海外市场的NFT的产品逻辑与国内市场的数字藏品并不完全一样,但通过全局性地了解海外市场的发展和运行逻辑,有助于帮大家从长期性.
1900/1/1 0:00:00转自:老雅痞大多数关注加密货币的用户听说过DeFi Summer,这发生在2020年,当时,看起来DeFi将是加密货币和区块链的主流用例。然而,一年后,一些类似于口袋妖怪的游戏起飞了.
1900/1/1 0:00:00在疫情期间我们见证了加密市场令人难以置信的增长,同时也观察到加密货币与传统风险资产之间所出现的极强相关性.
1900/1/1 0:00:00导读如果你的注意力还聚焦于Web3的社交一种怎样的Web2产品的替代和去中心化改进,或者还在关注Social to Earn在Web3社交中的应用.
1900/1/1 0:00:00图中可以看到,红色线距离通道下轨仍有一段距离,通过历史走势能看到,2014年和2018年熊市均是收线收至下轨下方才会见底,目前BTC再次冲高回落,前期已提示短期内跌多了就会出现阶段性反弹反抽.
1900/1/1 0:00:00