eth收币地址 怎么申请(eth收款地址在哪里)
币圈知识
阅读 3
2023-05-24 09:13:30
前言
最近在学习Polkadot底层的substrate框架及moonbeam兼容以太坊的智能合约平台,为了更好的学习熟练Rust的语法编程,整理个Rust以太坊转账的代码。
准备
1、使用自己的节点或者使用第三方的公共节点提供RPC地址
2、以太坊地址
使用Cargo创建项目
cargo new ethers-transfercd ethers-transfer
请自行选用文本编辑器打开 Cargo.toml 文件。需要安装ethers.rs库等。
[package]name = "ethers-transfer"version = "0.1.0"edition = "2021"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]ethers = "1.0.2"ethers-solc = "1.0.2"tokio = { version = "1", features = ["full"] }serde_json = "1.0.89"serde = "1.0.149"
发送交易代码示例
use ethers::providers::{Provider, Http};use ethers::{utils, prelude::*};type Client = SignerMiddleware<Provider<Http>, Wallet<k256::ecdsa::SigningKey>>;#[tokio::main]async fn main() -> Result<(), Box<dyn std::error::Error>> { let provider: Provider<Http> = Provider::<Http>::try_from("http://127.0.0.1:8545")?;// 替换你的RPC地址 http://127.0.0.1:8545 // 配置使用私钥进行以下交易,去除“0x”前缀 let wallet: LocalWallet = "a58ac7ea54b74896c6a3129370dea99140c42b6908dff628f9062b9d40da4b7e" .parse::<LocalWallet>()? .with_chain_id(1281u64); // 可以更换链ID // .with_chain_id(Chain::Moonbase); // 可以更换链ID let client = SignerMiddleware::new(provider.clone(), wallet.clone()); let address_from = "0x9295b5ca66CC2d8Abfa9024F482038A2D5Ff7Eaf".parse::<Address>()?; let address_to = "0x108e35b0089e8069dae7e9fdc3a0353ac62a999e".parse::<Address>()?; let block_number = provider.get_block_number().await?; println!("获取最新区块号: {}", block_number ); // let block = provider.get_block(81088u64).await?; // println!("获取区块号交易信息: {}", serde_json::to_string(&block)?); let gas_price = provider.get_gas_price().await?; println!("获取当前gas_price: {} Wei => {} Gwei", gas_price ,utils::format_units(gas_price, "gwei").unwrap()); let none = provider.get_transaction_count(address_from,None).await?; println!("获取当前地址的None值: {}", none ); send_transaction(&client, &address_from, &address_to).await?; print_balances(&provider, &address_from, &address_to).await?; Ok(())}// 查询钱包地址余额async fn print_balances(provider: &Provider<Http>, address_from: &Address, address_to: &Address) -> Result<(), Box<dyn std::error::Error>> { let balance_from = provider.get_balance(address_from.clone(), None).await?; let balance_to = provider.get_balance(address_to.clone(), None).await?; println!("{} has {},eth:{}", address_from, balance_from, utils::format_units(balance_from, "ether").unwrap()); println!("{} has {},eth:{}", address_to, balance_to, utils::format_units(balance_to, 18).unwrap()); Ok(())}// 转账基础币async fn send_transaction(client: &Client, address_from: &Address, address_to: &Address) -> Result<(), Box<dyn std::error::Error>> { println!( "开始转移1个基础币: {} to {}.", address_from, address_to ); let gas = U256::from(21000); let gas_price = client.get_gas_price().await?; let tx = TransactionRequest::new() .to(address_to.clone()) .value(U256::from(utils::parse_ether(1)?)) .from(address_from.clone()) .gas(gas) .gas_price(gas_price); println!("组装交易信息: {}", serde_json::to_string(&tx)?); let tx_hash = client.send_transaction(tx, None).await?.await?; println!("返回交易数据: {}", serde_json::to_string(&tx_hash)?); Ok(())}
构建并运行 Cargo 项目
使用 cargo run 一步构建并运行项目。
cargo run
控制台输出内容
AY:ethers-transfer smartstrategy-ios01$ cargo run Finished dev [unoptimized + debuginfo] target(s) in 1.25s Running `target/debug/ethers-transfer`获取最新区块号: 123727获取当前gas_price: 1000000000 Wei => 1.000000000 Gwei获取当前地址的None值: 1开始转移1个基础币: 0xbe02…fef9 to 0x108e…999e.组装交易信息: {"from":"0xbe020dc9d8c912ff081ad927c1b7394abf0dfef9","to":"0x108e35b0089e8069dae7e9fdc3a0353ac62a999e","gas":"0x5208","gasPrice":"0x3b9aca00","value":"0xde0b6b3a7640000"}返回交易数据: {"transactionHash":"0xa10b3cb5e71fff691c9dfab75f49a65011d5d720de034876a34554a5bfdf4cb0","transactionIndex":"0x0","blockHash":"0x7970ca90e14055e9eee85681ac75fd75ade3267cb84e6403bee26acbc281adee","blockNumber":"0x1e351","from":"0xbe020dc9d8c912ff081ad927c1b7394abf0dfef9","to":"0x108e35b0089e8069dae7e9fdc3a0353ac62a999e","cumulativeGasUsed":"0x5208","gasUsed":"0x5208","contractAddress":null,"logs":[],"status":"0x1","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}0xbe02…fef9 has 97999958000000000000,eth:97.9999580000000000000x108e…999e has 101845986528528000000000,eth:101845.986528528000000000
区块浏览器
相关内容
文章来源:
沉睡的鱼
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,
请发送邮件至举报,一经查实,本站将立刻删除。
相关资讯
-
虚拟币平台钱包(虚拟币 钱包)
虚拟货币钱包APP哪一种比较安全好用鏍规嵁銆婂叧浜庨槻鑼冧唬甯佸彂琛岃瀺璧勯闄╃殑鍏憡銆嬶紝鎴戝浗澧冨唴娌℃湁鎵瑰噯鐨勬暟瀛楄揣甯佷氦鏄撳钩鍙般€傛牴鎹垜鍥界殑鏁板瓧璐у竵鐩戠瑙勫畾锛屾姇璧勮
-
虚拟货币上币的平台 国内正规的虚拟货币交易有哪些
br/>鐏竵鍏ㄧ悆涓撲笟绔欐槸鐏竵闆嗗洟鏃椾笅鏈嶅姟浜庡叏鐞冧笓涓氫氦鏄撶敤鎴风殑鍒涙柊鏁板瓧璧勪骇鍥介檯绔欙紝鑷村姏浜庡彂鐜颁紭璐ㄧ殑鍒涙柊鏁板瓧璧勪骇鎶曡祫鏈轰細锛岀洰鍓嶆彁渚涘洓鍗佸绉嶆暟
-
虚拟币哪个平台好 虚拟币哪个平台好用
目前国内比较好的数字货币交易平台应该属于三巨头,不管从数字货币成交量资金量来讲是从网站的安全性来讲,币安、火币、OKEX这三家大平台交易所都是非常不错的
-
股指期货对冲平仓,股指期货对冲原理
现手最近一笔的成交手数开仓是指开新的多头仓位或者新的空头仓位,也就是新买进或者新卖出一定手数的股指期货合约平仓如果你已经开了多头仓位的话,就需要卖出手上的合约来进行对冲平仓
-
2016年期货双边手续费 2016期货最新手续费
但如果你有认识好的期货客户经理,那你开的户可以只在交易所收取的标准上+0.01元每手,还是黄金,你交的总手续费只需10.01元
-
比特币大牛(比特币大牛市)
在巴比特创始人长铗看来:“中本聪在密码朋克组中是一个年轻后辈(可能30岁出头),但地位十分显赫,在这个密码朋克组中,有菲利普·希默曼(PGP技术的开发者)、约翰·吉尔摩(太阳微系统公司的明星员工)、斯
实时快讯
-
半年前黄金电子货币?电子货币 金属货币
-
半年前鼓励数字货币(数字货币有哪些)
-
半年前辐射货币代码,辐射4动力装甲代码
-
半年前国际汇兑货币,国际汇兑的两种方法
-
半年前黄金储备 基础货币?基础货币和储备货币的区别
-
半年前宏观微观货币,货币的四个职能
-
半年前黄金 货币 关系(黄金货币投资)
-
半年前国际货币基金组织份额(收益好的十大货币基金)
24H热门阅读
一周热点
风险警示
关于防范以“虚拟货币”“区块链”名义进行非法集资的风险提示
——银保监会等五部门
本站内容均整理自互联网,不构成投资建议