求救:密码学原语是存放到 Cell 的 lock 脚本中吗?

查阅了很多资料,似乎理解 CKB 对于密码学原语的处理逻辑了,请各位大牛确认一下我的理解是否有偏差。

  • 第一,CKB 是没有 built-in 的密码学原语的
  • 第二,密码学原语是编译成 RISC-V 的 binary 之后,存放到 Cell 的脚本中的
  • 第三,节点在进行验证的时候,会从 Cell 中读取原语,加载执行验证操作

不知道上面的三点是否正确?

@janx @Cipher @daniel

1 Like

正确的

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 里使用。

1 Like

是的,看源码的话LockScript 就是你的锁定原语,你可以自己定义的。

1 Like

明了了,这部分内容最好能在 https://docs.nervos.org/basic-concepts/architecture#scripts 更清晰的描述一下。

这个文档中有写:https://docs.nervos.org/dev-guide/scripts

这里的内容会写入到创世区块( 的 data )中,其他的 Cell 可以在自己的 lock 脚本中通过 code_hash 指向它来进行调用即可,不需要把对应的密码学原语的实现在每个 Cell 中都拷贝。

对 别人有了 你直接用就好了