网络安全检测|网络安全服务|网络安全扫描-香港墨客投资移动版

主页 > 业界资讯 > imtoken

代币是怎样演进的(2)

用最直白的方式来说,就是要写一个ERC-20 代币发行规范的智能合约,并在发行量这段程式码中写一百万颗,接着把这个智能合约放入一笔交易的Input Data 中,交易的接收地址填为0x0,被矿工执行部署完成后,一百万颗Pelith Token 便诞生了。

所以说,代币的创造在技术上是非常容易的,无论想要发行一百万颗、一亿颗、十亿颗,其实都只是智能合约内改个数字的差别,发行量的变动成本趋近于零。

所以2017 年的ICO 浪潮,才会出现这么多各式各样的shitcoin,只要写个智能合约和白皮书,一个代币就此诞生了,可以开始圈钱。啊!不是,是募资。

真正的难处往往是代币发行后实际的应用场景搭建和社群行销营运,让这个代币被认可、让人愿意持有及应用才是最大的困难点和成本之所在。

小结

1. 「协议代币」往往有自己的区块链或类似的分散式帐本技术,而「自定义代币」则是利用现有的区块链来发行及运行。

2. 早期比特币上常见的代币有改变单位定义的染色币与把比特币作为便条纸的Omni Layer 两种做法。

3. 以太坊与智能合约的出现让发行代币在技术门槛上变得更简易且更有统一的规范,然而应用场景搭建与社群行销营运才是真正难处。

在上文中我们谈到从比特币开始到以太坊ERC-20 Token出现的自定义代币发展史。下面将更着重在以太坊技术面的介绍,并在最后综观代币演进发展史给予一些观点评论。

代币转移的成本

大家在第1节中应该都了解到区块链加密货币交易必须支付手续费给矿工,那么既然「自定义代币」要透过区块链来进行传输,当我要发送代币给别人,支付手续费给矿工也是很合乎逻辑的。

接着要解释的部分会用到许多第2节的概念,如果您还没读过,建议您先去阅读,否则可能会有些难消化。

假设我(A)要把10 个Pelith Token(自定义代币)转给B,其实是发生了什么事呢?我简单做了一张示意图来说明。(只做概念阐释,省略了很多可以很复杂的中间细节)

首先要知道,在区块链上发行代币不是真的发行硬币或发行钞票,而是建立了一个「类Excel帐本」来纪录谁拥有多少代币。当我们进行代币转移时,只是更改这个帐本上格子里的数字。

因此,当我透过智慧合约创造了Pelith Token 时,建立了一个类似Excel 的表格来追踪所有Pelith Token 持有者的持有数量,并且这些资料会以某种形式储存备份在每一个节点中(对,就是在全节点那200 G 左右里)。

当我要把10个Pelith Token转给B时,我必须发送一笔接收对象为合约地址的交易,矿工看到便知道我是要对智慧合约进行操作,不是一般发送Ether给别人的交易。并且在Input Data中呼叫我要操作动作的function,输入相对应的参数,大概会长类似下面这样:

我要call的function格式:

transferFrom(address _from, address _to, uint256 _value)

[从address _from传送_value数量的代币到_to钱包地址] 填入参数:transferFrom(0xA⋯⋯, 0xB⋯⋯, 10)

→ transferFrom(0xA⋯⋯, 0xB⋯⋯, 10000000000000000000)

注:第三个参数uint256_value是10个Pelith Token,不过因为在以太坊上没有小数点,所以进入运算时要以wei (10^-18,以太坊最小的单位)来进行,因此在10后面要补上18个0。然后转换成类似下面这个样子:

0x23b872dd000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000008ac7230489e80000

再放入Input Data中。*(0xA⋯⋯, 0xB⋯⋯, 10)这一串function中的参数称为“Payload”(装载的货物)

这些Bytecode 被矿工验证执行后,更新了「帐本内」对应地址的Balance,随后连同其它交易一起打包入新的区块中。最先找到Nonce 获得出块权利的矿工广播给其它节点,直到各节点同步完成,并确认区块在最长区块链中,便正式验证我(A)把10 个Pelith Token 转给B 了。

而以上这些动作,其实跟交易一样须缴些许的Ether 手续费给矿工。当你的ERC-20 Token 要转移给一个新的地址持有时(假设B 过去未曾持有过Pelith Token),我们在「帐本中」便必须要多开一个格子来记录并追踪这个地址的Balance。

要「多开一个格子」的价格是20,000 gas ;「更改一个现有格子内的数字」的价格是5,000 gas,在这笔交易中一共更改了A、B 两格,故是10,000 gas。再加上交易的基本手续费21,000 gas。我执行了将10 Pelith Token 转给B 的动作,总共花费了51,000 gas。

执行操作的Gas 总花费计算:

20,000 gas + 5,000*2 gas + 21,000 gas = 51,000 gas 手续费(Eth)= Gas Used * Gas Price

51,000 gas * 10 Gwei(fast) = 510,000 Gwei = 0.00051 ETH = 0.1 USD

(以1 Ether = 200 USD 计算)

大约3 块台币,便是更改一个格子大约需付出的手续费。

(责任编辑:admin)