查阅了很多资料,似乎理解 CKB 对于密码学原语的处理逻辑了,请各位大牛确认一下我的理解是否有偏差。
- 第一,CKB 是没有 built-in 的密码学原语的
- 第二,密码学原语是编译成 RISC-V 的 binary 之后,存放到 Cell 的脚本中的
- 第三,节点在进行验证的时候,会从 Cell 中读取原语,加载执行验证操作
不知道上面的三点是否正确?
查阅了很多资料,似乎理解 CKB 对于密码学原语的处理逻辑了,请各位大牛确认一下我的理解是否有偏差。
不知道上面的三点是否正确?
正确的
https://explorer.nervos.org/address/ckt1q9gry5zg8u2h8dzzrr2vz253jxd932rrheq4527rxr7493
从 explorer 看,output 的 lock_script 包含 code_hash 、args, 其中 code_hash 就对应使用 secp256k1 写成的一个 script 编译成 RISC-V 的 binary 的 hash。
lock_script 的代码在这里 https://github.com/nervosnetwork/ckb-system-scripts,
为了方便在 testnet 已经内置到 genesis 里,配合 sdk 可以直接使用。
用户自己也可以用自己编写的 lock_script 存放到 Cell 里使用。
是的,看源码的话LockScript 就是你的锁定原语,你可以自己定义的。
明了了,这部分内容最好能在 https://docs.nervos.org/basic-concepts/architecture#scripts 更清晰的描述一下。
这里的内容会写入到创世区块( 的 data )中,其他的 Cell 可以在自己的 lock 脚本中通过 code_hash 指向它来进行调用即可,不需要把对应的密码学原语的实现在每个 Cell 中都拷贝。
对 别人有了 你直接用就好了