Skip to content

去中心化应用中的CAT代币

每个代币UTXO都有一个所有者地址。本质上,这是一个公钥的哈希值,对应一个私钥。当所有者发送代币时,她用私钥签名,代币合约会进行验证,这与发送锁定在常规P2PKH地址中的比特币的方式相同。 alt text

还有一种替代方式来花费代币:脚本或合约路径。在这种路径中,公钥是使用Taproot从合约中派生的,如下所示,其中密钥花费路径被禁用。 alt text

代币可以被存入合约地址。这个地址不受任何人控制,而是由合约控制,因为没有对应的私钥。这类似于以太坊中的智能合约账户,它也没有对应的私钥,不像外部拥有账户(EOA)。要转移代币,CAT代币合约确保在同一交易中必须有一个相邻的输入,花费一个带有所有者合约地址的UTXO(如红色箭头所示)。合约可以使用契约(covenant)检查并对交易施加约束,从而强制执行额外的转账规则。 alt text

总之,花费代币UTXO有两种选择,类似于Taproot:

  1. 密钥路径
  2. 脚本/合约路径

现在我们可以使用选项2将现有代币发送到任意智能合约。合约不必在代币铸造时就已知,可以由第三方独立开发。这意味着CAT代币可以无限扩展,并与去中心化应用(如去中心化交易所和原子互换)实现互操作。

卖单 为了演示其工作原理,我们将代币发送到一个卖出合约,只要买家支付给卖家指定的价格,任何人都可以购买这些代币。 alt text

卖出合约确保:

  1. 买家获得她支付的代币
  2. 卖家按照她指定的代币价格和售出的代币数量获得付款
  3. 如果有剩余代币,则返回到同一合约(递归契约)

值得注意的是,该订单允许部分成交,买家可以只购买挂单中的一部分代币。剩余的代币可以重复购买,直到订单完全成交。所有操作都由矿工验证,因此是无需信任的。

一个卖出订单合约的示例可以在GitHub上找到。