首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态地为事务创建消息数据?

如何动态地为事务创建消息数据?
EN

Ethereum用户
提问于 2016-05-24 10:47:19
回答 1查看 1.2K关注 0票数 6

在稳固性中,可以创建一个字节数组,然后使用address.call(bytesData)创建与函数签名匹配的新事务,以及传递参数。

例如,我们可以做address.call(bytes4(bytes32(sha3("someFunction(uint256,address)"))), 10, 0x42)。只需传递另一个字节变量,就可以动态地创建函数签名。但是,如何使动态争论也成为可能呢?

就像这样。但是functionSig & encoded_params是在坚实的基础上创建的。

代码语言:javascript
复制
function doSomething() {
    if(someCondition) {
        bytes memory data = functionSig + encoded_params.
        toAddress.call(data);
    }
}

我想要能在坚固的工艺下完成这个。不是从外部使用web3或其他一些编码函数吗?有什么简单的方法吗?还是应该编写一个可靠的编码函数,将参数转换为字节并创建此消息数据?

EN

回答 1

Ethereum用户

发布于 2016-06-16 21:12:49

要做到这一点,您需要为要传递的参数实现适当的RLP编码。

RLP规格:https://github.com/ethereum/wiki/wiki/RLP

对于简单的非数组固定长度类型,这就像将func_sig + arg_1_as_bytes + arg_2_as_bytes连接成单个字节值并将其传递到address.call(...)一样简单。

对于数组、bytesstring或structs这样的复杂类型,您必须做更复杂的事情来为数据构造适当的RLP字节表示。

可靠的关键跟踪器中的一个故事来创建encodedecode函数,这些函数将为您执行这种编码。

票数 4
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/4251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档