读懂BCH发行本地代币技术——CashToken
来源:闪电HSL
同样是UTXO流派,BTC上有TaprootAssets,BCH上有CashToken,都是用来发币的。
理解CashToken要比理解TaprootAssets更容易。
CashToken是在BCH交易的数据结构里新增加一个字段“TokenFields”,用来标记代币,BCH的脚本引擎也做了配套升级,新增了一系列验证代币的OpCode,这样就实现了在BCH链上发行代币。
回到比特币现金交易(也就是比特币交易)的基本原理,一笔比特币现金交易是一个包含输入值和输出值的数据结构,该数据结构记录了将一笔资金从起始地址(输入)转移至目标地址(输出)的信息。
一般的比特币的交易是由一个或多个输出和一个或多个输入构成。
交易的每个输出上,都会附上一个加密难题,定义将来在花费这笔UTXO时需要满足的条件。
交易的每个输入上,都要提供一个解锁脚本,解决或满足之前附在这笔UTXO上的加密难题或条件,解锁UTXO用于支付。
可以用下图来描述比特币现金交易数据结构。
BCH交易数据结构(增加TokenFields之前):
增加CashToken之后,创建和转移cashtoken是嵌套在一笔常规的BCH交易里,即创建和转移cashtoken必然伴随着BCH本身的解锁和锁定,但cashtoken是不和具体的bch聪相绑定(类似于染色币)。
BCH交易数据结构(增加TokenFields之后):
下面就是一笔具体的token的交易:
CashToken的这种设计和以太的ERC20很像,cashtoken是完全“本地(native)”的代币设计,即BCH的矿工是完全为cashtoken的安全负责,矿工节点知道自己正在验证cashtoken。
相应的,TaprootAssets对于BTC的矿工来说,其实是并不知道真的存在一个代币的,矿工只是负责Taproot交易的验证。