首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rust中签署交易

如何在Rust中签署交易
EN

Ethereum用户
提问于 2018-04-23 20:34:21
回答 3查看 2.2K关注 0票数 5

给定一个私钥,我想离线签署一个事务,这样它就可以被发送到一个节点或恩弗拉,而不需要先解锁一个帐户。我可以使用ethereumjs-tx在javascript中找到许多示例,但是我使用的是Rust和铁锈网3,并且找不到一个写入数据的示例。我需要能够调用函数,而不仅仅是发送值,因此如何构造函数参数是非常重要的。此外,如果函数有返回值,我如何等待并处理返回值?

EN

回答 3

Ethereum用户

发布于 2018-11-22 20:15:11

这里有一个名为以太-tx-标志 on crates.io的包。它提供了带有RawTransaction方法的sign结构。它不依赖于web3,您可以脱机对事务进行签名。

票数 4
EN

Ethereum用户

发布于 2018-05-12 21:59:08

储存和使用私钥是钱包的一种功能。web3 API和铁锈网3一样,通常将事务签名留给钱包。因此,您的选择是重用用Rust编写的百合花钱包中的代码。

票数 3
EN

Ethereum用户

发布于 2018-11-17 17:46:31

使用python的web3包和巨蟒有一个技巧:

代码语言:javascript
复制
let gil = Python::acquire_gil();
let py = gil.python();
let web3 = py.import("web3").unwrap();

let transaction = {
    let transaction = PyDict::new(py);
    transaction.set_item(py, "gas", gas_limit).unwrap();
    transaction.set_item(py, "gasPrice", gas_price).unwrap();
    transaction.set_item(py, "nonce", nonce).unwrap();
    transaction.set_item(py, "data", data).unwrap();

    let web3 = web3.get(py, "Web3").unwrap();
    let to = web3.call_method(py, "toChecksumAddress", (to, ), None).unwrap();

    transaction.set_item(py, "to", to).unwrap();
    transaction.set_item(py, "value", value).unwrap();

    transaction
};

let account = web3.get(py, "Account").unwrap();
let signed_transaction = account.call_method(py, "signTransaction", (transaction, private_key), None).unwrap();

let raw_transaction: String = signed_transaction.getattr(py, "rawTransaction")
    .unwrap()
    .call_method(py, "hex", NoArgs, None)
    .unwrap()
    .extract(py)
    .unwrap();

轰隆隆!明白了!

顺便说一下,关于以太-tx-标志。我已经试过了,但它似乎不能正常工作。我的目标服务器不识别signedRawTransaction。因此,我将其结果与web3的S结果进行了比较,发现它们是不同的。

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

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

复制
相关文章

相似问题

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