Everscale Solidity智能合约中字符串的sha256结果不正确



我想计算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可以帮助你

相关内容

  • 没有找到相关文章

最新更新