http://www.7klian.com

如何利用rust实现发送以太坊生意业务所需的代码


let tx = RawTransaction {
array.copy_from_slice(bytes);

to: Some(convert_account(accounts[1])),
use ethereum_tx_sign::RawTransaction;
启动以太坊节点

array.copy_from_slice(bytes);
to: Some(accounts[1]),


hex:decode函数将十六进制字符串(确保删除0x前缀)转换为Vec <u8>,但RawTransction的sign函数回收ethereum_types :: H256名目标私钥。不幸的是,h256在构建期间回收的是[u8;32]而不是vec<t>,因此我们需要举办另一个转换!
接下来,我们结构一个web3工具,传入先前建设的传输变量,就是这样!我们此刻已毗连到以太坊节点!
array


let (_eloop, transport) = web3::transports::Http::new("http://localhost:8545").unwrap();
println!("Balance before: {}", balance_before);

私钥作为切片通报给to_array,然后将此切片转换为[u8:32]。

可能假如你喜欢用yarn呼吁
let (_eloop, transport) = web3::transports::Http::new(
利用的其他库
// Remember to change the below
let nonce = web3.eth().transaction_count(accounts[0], None).wait().unwrap();
web3 = { git = "https://github.com/tomusdrw/rust-web3" }

array
data: Vec::new()
此布局中的大大都字段都是可选的,假如不手动指定,则利用公道的默认值。当我们发送简朴的ETH转移事务时,数据字段为空,在此示例中,我们利用默认的gas和gas_price值。我们也没有指定nonce,因为rust-web3库默认环境下会向以太坊客户端查询最新的nonce值。该条件是rust-web3特定字段,答允您延迟发送事务直到满意某个条件,譬喻到达特定的块编号。
通过web3.eth()得到的Eth定名空间包括很多用于与以太坊节点交互的有用函数。通过accounts()获取打点帐户列表就是个中之一。它返回异步的将来,所以我们期待任务完成(wait()),并得到功效(unwrap())。
fn main() {

value: Some(U256::from(10000)),
gas: None,
let accounts = web3.eth().accounts().wait().unwrap();

};

留意,-d参数指示ganache cli始终以预先填充eth的沟通帐户开始。这在本教程的原始事务部门很有用,因为我们将知道这些帐户的私钥。
let mut array = [0; 32];
let signed_tx = tx.sign(&get_private_key());
let bytes = &bytes[..array.len()];
println!("Balance before: {}", balance_before);
let nonce = web3.eth().transaction_count(accounts[0], None).wait().unwrap();
gas_price: U256::from(1000000000),
let (_eloop, transport) = web3::transports::Http::new("http://localhost:8545").unwrap();
use web3::types::{TransactionRequest, U256};


condition: None
let web3::types::U256(ref arr) = value;

留意,我们必需在这里举办另一次转换!send_raw_transaction将Bytes值作为参数,而RawTransaction的sign函数返回Vec <u8>。 幸运的是,这种转换很容易,因为bytes布局有一个现成的from特性,可以从vec<u8>转换。
gas: U256::from(21000),
let private_key = hex::decode(

}
let ret = H160::from(value.0);


签名之前,我们需要会见用于签名的私钥。在这个例子中,我们硬编码ganache中第一个ETH填充帐户的私钥(记得以-d参数开头)。这可以用于测试,可是您不该该在出产情况中果真私钥!
d21715b23b1d").unwrap();
· Rust入门
}
fn to_array(bytes: &[u8]) -> [u8; 32] {
extern crate hex;
}

let web3 = web3::Web3::new(transport);
在本教程中,我们进修了

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。