RFC:可扩展的 UDT(Extensible UDT)

xUDT 是对 Simple UDT 的扩展,用于满足更复杂的代币需求,如监管。它保持对 sUDT 的后向兼容性,并通过增加 xUDT Cell、Args 和 Data 的数据结构,支持扩展脚本。扩展脚本的验证可以通过预定义的哈希、所有者锁或动态链接的脚本实现,提供额外的安全性和灵活性。xUDT 的操作模式包括原始扩展脚本和P2SH风格的扩展脚本,分别处理不同类型的扩展数据和验证逻辑。
摘要由CSDN通过智能技术生成

可扩展的 UDT(Extensible UDT,本文统一称为 xUDT)是基于 Simple UDT 的扩展,可用于定义更多 UDT 可能需要的行为。sUDT 为在 Nervos CKB 上发行 UDT 提供了一个最基本的核心,xUDT 则可以建立在 sUDT 的基础上,满足更多的潜在需求,例如监管。


数据结构


xUDT Cell

xUDT cell 向后兼容于 sUDT,所有 sUDT 规范中定义的既存规则仍然适用于 xUDT cell。在 sUDT 的基础上,xUDT 扩展的 cell 如下:

data:
    <amount: uint128> <xudt data>
type:
    code_hash: extensible_udt type script
    args: <owner lock script hash> <xudt args>
lock:
    <user_defined>

这个被加上去的 xudt args 和 xudt data 部分提供了所有 xUDT 所需的新功能,我们将会在下文阐述这些细节的架构。

xUDT Args

xUDT args 的架构如下:

  • 4 个字节的 xUDT 标记
  • 可变长度扩展数据

依赖于 flags 的内容,可能会附加不同的扩展数据:

  • 如果 flags 全部为 0,我们不需要任何扩展数据。值得注意的是,向后兼容的查看方式是,一个空白的 sUDT cell 也等于有一个全部为 0 的隐藏 flags 字段。
  • 如果 flags 是 0x1,那么扩展数据将包含一个以 ScriptVec 结构进行序列化的 molecule (https://github.com/nervosnetwork/molecule)
table Script {
   
    code_hash:      Byte32,
    hash_type:      byte,
    args:           Bytes,
}

vector 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值