我想计算Free TON Solidity合约中字符串的sha256,我将字符串存储在TvmBuilder中,然后将其作为TvmSlice传递给sha256((,但结果不正确(与shell中sha256sum计算的结果不匹配(。知道为什么吗?
TvmBuilder是否添加了在切片中传递的一些位?
是的,就我对的理解而言,tvm构建器是一种TL-B方案序列化器
Free TON Solidity API中的sha256((函数只接受TvmBuilder作为输入,您可以计算原始字符串的哈希。
散列任意字符串就是散列其BOC,因为BOC是tvm唯一能理解的结构
我想你可能想把中行从这个字符串中建立起来。构建器构建单元格,单元格布局由切片+引用组成。它产生了一个混合refs的切片树结构,在区块链状态下解析。
你的方法应该适用于小字符串,就像它适用于整个区块链状态一样。这是tvm了解数据的唯一方法
所以字符串的散列是一个单元格的散列,它有底层单元格的证明
这就是我现在理解它的方式,希望这能有所帮助。
如果字符串小于127个字节,则可以传递字节,并在单个单元格中散列字节
tg@freeton_smartcontracts在这里聪明的SmC家伙可以澄清,因为我是自学成才的,而不是真正掌握SmC pro
https://github.com/move-ton/ton-client-py/blob/b06b333e6f5582aa1888121cca80424b614e092c/tonclient/abi.py#L49
也许这个或锈芯sdk可以帮助你