区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > SHIB > 正文

RAN:源码解读:你买的NFT到底是什么?_以太坊交易所app

作者:

时间:

安全性设计和以太坊数据上链成本构成。目录大纲

NFT资产是什么?

2.Mint和safeMint的差别

4.NFT哪些数据也存储在链上?

面向对象

Web3新手,有无技术背景均可:

研发——可无障碍阅读,理解精美的合约设计

非研发——可能读不懂列举的代码,但能体会标准协议的设计思路

公链等信息,而Properties栏目则是其设定的具备各种属性,对应的稀有度。

1.1资产在标准ERC721协议里是什么?

而咱们回顾到源代码,会发现程序记录了全局性的两个字典类型的变量,通过?_owners中用数字映射地址的方式记录每一个ID?当前对应的所有者,同时也附带用_balances?记录了当前所有者总计持有的NFT数量

并且由于ERC721创新性的赋予了一个ID对应地址的变量?_owners,从而与ERC20仅_balances?进行地址与余额的管理,区分出了FT与NFT的差别。

MicroStrategy CEO:只要有闲置资金就会购入比特币:5月28日消息,MicroStrategy首席执行官Michael Saylor在最近出席Fox News被问及“目前MicroStrategy的战略”时表示,MicroStrategy未出售任何比特币,且只要有闲置资金就会购入更多的比特币。此外,Michael Saylor还表示,MicroStrategy计划永远在“顶部”价格购入比特币。

据悉,截至4月5日,MicroStrategy持有129,218枚比特币,在撰写本文时价值3,723,248,686美元。(U.Today)[2022/5/29 3:47:55]

2.Mint和safeMint的差别

2.1?Mint是如何进行的

Mint?意思为铸造,即每个NFT的创造过程,例如之前的爱死机NFT?当奈飞的NFT忘记了web2的业务安全

Mint?获取到该NFT的资产证明。

从源代码中可以看到,Mint?主要是进行了安全判断:

判断1:确保转入的不是0x00地址

“特斯拉或将支持比特币付款”登上微博热搜榜:微博热搜数据显示,“特斯拉或将支持比特币付款”登上微博热搜榜,现排名第48位,热度值92281。[2021/2/9 19:17:21]

判断2:确保此交易所操作的NFTID是不存在的

最终代码执行的操作是:

操作1:将转入地址的_balances?所持有总数加1

操作2:将对应?NFTID?的所有者修改为转入的地址

操作3:完成交易则发出emit?事件,可以让链下监听到这次交易的数据

中间有_beforeTokenTransfer和_afterTokenTransfer属于虚函数,作为标准,是让项目方可以再不修改标准协议的情况下增加一些特定的逻辑代码用的。

2.2为何safeMint更安全

safeMint意为安全的铸造,从代码实现中可以看到他本身也是调用了MInt但是他额外增加了_checkOnERC721Received的判断,这点是属于ERC165的标准,相当于在完成转入操作后,则判断对方地址,是否是黑洞地址是防止转入对象为合约地址时候,其合约没有预设置好转出的函数,导致资产在内无法被转走,从而造成永久损失。

比特币全网未确认交易34,939笔:金色财经报道,据btc.com数据显示,目前比特币全网未确认交易数为34,939笔,24小时交易速率为3.85 txs/s。目前全网难度为16.79 T,预测下次难度下调13.93%%至14.45 T,距离调整还剩10 天 20 小时。[2020/11/7 11:53:34]

2.3ERC165是如何防止资产转入黑洞的?

设计初衷可见:https://eips.ethereum.org/EIPS/eip-165

是让合约接口标准化的提案,在编程语法中interface是接口的意思,在其中定义的函数可以不实现仅仅放上函数名字相关参数,在程序复杂的时候,相当于目录一般告诉别人我都有什么功能。

但是接口的写法各有千秋,名字定义参数类型,甚至是否存在都有不同,

所以此提案最终形成了ERC165标准,规范了接口的识别规则。

使用流程是:

STEP1?判断是否存在?supportsInterface?函数,并且其符合165标准

STEP?2通过?supportsInterface?函数,判断是否具有转出NFT的函数

Twitter首席执行官:比特币白皮书是诗歌:Twitter首席执行官兼联合创始人Jack Dorsey在接受技术研究员的播客采访时,将比特币白皮书称为“诗歌”。他表示:“我认为比特币的白皮书是计算机科学在过去的20年或30年最有影响的作品之一,这是诗歌。”(Cointelegraph)[2020/4/26]

3.交易时会发生什么?有哪些细节?

钱包所持有的NFTID转移到指定地址

transferFrom从转移:用某机构调用,需要用户先授权某地址,让其有权可转移。

类比一下:

transfer?就是现金交易,从自己口袋里拿钱支付

transferFrom?就是扫码扣款,由店家申请扣款,受制于用户是否开通小额代扣权限

接下来咱们从代码来看看,其中可能有会意想不到的细节。

3.1?transfer?是如何进行的

他会检测当前交易的?from?方是否是此NFTID的持有者,并且限制该NFT转入0x00地址。其次进行?from?转出地址和?to?转入地址的余额刷新,修改?_balances全局变量并且重新设置_owners此NFTID的所有者地址修改为to。

动态 | 古巴人正在使用比特币等加密货币来规避美国制裁:据FXstreet报道,一个名为Sanchez的古巴商人正在使用比特币和其他主流加密货币为他的手机修理店购买备件。Sanchez称:“(加密货币)真的为我们打开了大门。”Telegram Channel的创始Alex Sobrino称,估计古巴至少有1万人使用加密货币:“我们正在使用加密货币给手机充值,在网上购物,甚至有人用它预订酒店房间。” 但是,尽管目前的条件迫使古巴人使用加密货币,但这些数字资产不太可能被用作一种合法的支付方式。目前加密货币在该国仍属于法律灰色地带。[2019/9/13]

这里有个防护的细节会先执行_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的业务安全

标签:比特币ETH以太坊RAN超级比特币SBTC论坛ethw币未来前景最新以太坊交易所appQuadrantProtocol

SHIB热门资讯
EARN:「X To Earn」应用的红与黑:详解应用演变和经济模型困境_LAYER

原文作者:汤圆 进入2022年,加密资产市场走熊,但出现了板块轮动现象。热度先从DeFi2.0的疯狂走到泡沫破灭,又在稳定币大战与熄火中消失,PFP头像类NFT也逐渐从狂欢走入沉寂.

WON:这就是 LUNA 2.0 是死胡同的原因_LUN

Luna2.0似乎已经失去了加密社区的信心,因为著名的市场分析师表示,在针对创始人DoKwon的新指控引发市场波动之后,它没有未来.

ETH:比特币跌至2万美元,市场到底了吗?_ETHY

过去两天,加密市场持续下行。欧易数据显示,比特币逼进2万美元大关,最低跌至20800美元,创下2020年12月以来的最低水平;以太坊跌破1100美元,最低跌至1074美元,创下2021年1月最低.

TPS:部份地区网络异常公告_tps币圈

尊敬的唯客用户您好! 目前WEEX于2022/06/1421:30开始部份地区软件App出现网络异常情况,技术正在紧急排除中,期间给您带来的不便,敬请谅解;请放心用户之资金都是安全无虞的.

SDT:关于BitMart下架 TALK, HOGL, BEC, SHARPEI, POPO, CBL, MOK, BALA, UGC 的公告_USDT

亲爱的BitMart用户:根据BitMart“交易对的暂停交易、隐藏及下线规则”,通过对相关交易对的持续跟踪观察,我们决定于香港时间2022年6月14日凌晨06:00起暂停TALK,HOGL.

SAMA:如何参与波卡的千人验证者计划?_ADO

“波卡知识图谱”是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战.