【译】Jumping into Solidity —The ERC721 Standard (Part 1)

本文不是Solidity的介绍,所以我会假设你知道什么是区块链,以太坊是什么,以及Solidity的基础知识。 *(如果你是初学者,请参阅脚注)。

在接下来的几篇文章中,我将探索ERC721标准,它是如何工作的,它的变体,以及编写一个可自由使用的可扩展实现。 在这篇文章中,我们不会开始任何编码。 我将向您介绍非易失性令牌,以及一般情况下的ERC标准。

“建筑师用桌子上的尺子绘制蓝图”由Daniel UnscullosDaniel McCullough提供

什么是ERC721标准?

ERC721标准是用于创建非伪造令牌(NFT)合同的(草案)标准。 不可互换意味着不完全可以互换。 一美元硬币是可以替代的,因为如果我给你一美元硬币,而你给我一美元硬币,我们都不会更好或更坏 - 一美元就是一美元。 但是,如果我给你我的宠物猫,并且给我你的宠物猫,我们可能会不高兴,因为宠物猫不是完全可以互换的 - 它们是不可互换的。

2017年, Cryptokitties游戏展示了如何在以太坊区块链上制作和交易不可互换的资产。 在这个游戏中,玩家可以繁殖和交易Kitty - 但关键的是,所有Kitty都存在于区块链中, 只能由拥有它们的玩家进行繁殖或交易。 将其与传统的在线游戏进行对比,数据存储在中央服务器上,游戏管理员可以根据需要进行更改。 在Cryptokitties中,玩家在分散且不可靠的网络上购买和出售他们的Kitty,其Kitties的所有权无可辩驳地证明。 如果你拥有Kitty,区块链证明它是你的,而不是别人的。

你可能会想,“那又怎么样? 这只是一个假装猫的游戏!“

Cryptokitties的目标是表明不可互换的资产可以在区块链上进行交易。 假设代替假装猫,你的NFT可以代表一栋房子的行为。 您可以将该令牌卖给其他人,并且令牌和付款(ETH中的)的所有权可以交换,而不需要任何昂贵的律师或任何其他中间商。

因此,通过Crpytokitties,将NFT标准的想法引入了以太坊社区。 这个想法成为了一个提案,并且该提案成为了标准草案,这就是我们今天的标准,即ERC721(草案)标准 。 721号码并不特别有意义,它仅仅是Github上的第721个以太坊改进提案。

那么究竟是什么呢?

ERC标准基本上是一套规则,可以使您的合同与其他开发人员的合同(或DApp,网站,其他软件等)良好地发挥作用。 通过为所需功能提供一些指导原则,以及对应该如何行事的一些限制,其他程序员可以编写与您的代码交互的代码,而无需了解整个代码库。

举一个例子, balanceOf函数由标准定义:

 函数balanceOf(地址_owner)外部视图返回(uint256); 

该标准表示您的ERC721合同必须包含此功能。 它必须带有一个参数(一个地址 ),并且必须返回地址拥有的令牌的数量(一个uint - 这些是不可互换的令牌,因此它们不能被分割)。

该标准并不关心你的功能如何工作。 它可以像返回一个映射的值或一些复杂的等式和内部函数调用一样简单。 标准唯一关心的是当有人叫balanceOf 在一个地址他们得到一个与该地址的余额uint 。

我说标准并不关心你的功能是如何工作的,因为在某些情况下会有额外的指令或限制。 对于以上的balanceOf 功能,该标准有以下限制:

  /// @dev分配给零地址的NFT被认为是无效的,并且这个函数抛出查询零地址。 

所以,如果有人打电话

  balanceOf(为0x0) 

你的函数必须抛出一个错误。 在编写符合ERC721的合同时,您必须确保您的所有功能符合其各自的规则。 我会在他们出现时解决这些问题。

有些事情要注意

该标准并不妨碍您向合同添加额外的功能或额外的规则 。 只要您的添加与标准规定的规则不冲突 ,它们就完全可以接受。

在Stack Exchange上我看到很多问题,人们认为他们在网上找到的特定契约或接口文件标准的,无论是ERC721还是ERC20( Fungible令牌标准) 。他们担心他们的合同与特定实施不同,并且经常试图“修补”一些不成问题的东西。 这就是为什么在从头开始编写自己的合同时,回到ERC721标准总是一个好主意。 它以清晰的英文(和Solidity)表示什么是和不允许的。

因此,如果您遵循ERC721规定的所有规则,那么无论您的NFT合同中发生了什么,它都将符合规定。 合规性是一件好事,因为这意味着其他人可以更容易地使用您的令牌。 如果使用起来更容易,那么人们更可能采用它。

我希望这是对ERC721标准的有用介绍。 在我的下一篇文章中,我们将介绍标准接口的一些代码,并将介绍ERC721标准的一些方面,我会在开始时感到困惑。


https://medium.com/coinmonks/jumping-into-solidity-the-erc721-standard-part-1-e25b67fc91f3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值