例如,使用calldatacopy(t, f, s)内联程序集,它将S字节从位置f的calldata复制到t位置的内存。
在调用例如function newContract(bytes data) { ... }时
契约是否有可能知道callcode中的data字节码是从哪个位置开始的?
发布于 2016-06-12 22:18:25
一般的答案是,它遵循了ABI的惯例。你可以根据这些规则算出来。
在这种情况下,data的编码将从36位置开始。前四个字节将是消息签名,下一个32个字节将是指向data's表示的位置的指针。
请注意,data的前32个字节将给出length参数,因此如果您实际上只想要bytes中的原始数据,则从68开始。
https://ethereum.stackexchange.com/questions/5925
复制相似问题