给定一个私钥,我想离线签署一个事务,这样它就可以被发送到一个节点或恩弗拉,而不需要先解锁一个帐户。我可以使用ethereumjs-tx在javascript中找到许多示例,但是我使用的是Rust和铁锈网3,并且找不到一个写入数据的示例。我需要能够调用函数,而不仅仅是发送值,因此如何构造函数参数是非常重要的。此外,如果函数有返回值,我如何等待并处理返回值?
发布于 2018-11-22 20:15:11
这里有一个名为以太-tx-标志 on crates.io的包。它提供了带有RawTransaction方法的sign结构。它不依赖于web3,您可以脱机对事务进行签名。
发布于 2018-05-12 21:59:08
发布于 2018-11-17 17:46:31
使用python的web3包和巨蟒有一个技巧:
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结果进行了比较,发现它们是不同的。
https://ethereum.stackexchange.com/questions/46490
复制相似问题