可扩展的 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 ScriptVec

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

被折叠的 条评论
为什么被折叠?



