本篇内容主要讲解“区块链开发必备的Rust包有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“区块链开发必备的Rust包有哪些”吧!
Rust是新一代的潜力巨大的开发语言。本文编辑整理了9个主流的用于以太坊、比特币、tendermint、eosio、polkadot等区块链开发的Rust包,可用于区块链应用的快速开发。
rust-bitcoin用于开发比特币区块链相关应用,支持序列化/反序列化、解析并执行比特币相关数据结构及网络消息等功能,具体支持的特性包括:
比特币协议消息的序列化/反序列化
比特币区块和交易的序列化/反序列化
比特币脚本的序列化/反序列化
私钥和地址的创建、序列化/反序列化和验证,内置BIP32的完整支持
PSBT的创建、操作、合并与最终化
支持Blockstream侧链的Pay-to-contract交易
rust-bitcoin不包含比特币节点的JSON RPC API封装,rust-bitcoincore-rpc填补了这个空白。例如:
let rpc = Client::new(url, Auth::UserPass(user, pass)).unwrap(); let _blockchain_info = rpc.get_blockchain_info()?; let best_block_hash = rpc.get_best_block_hash()?; println!("best block hash: {}", best_block_hash); let bestblockcount = rpc.get_block_count()?; println!("best block height: {}", bestblockcount); let best_block_hash_by_height = rpc.get_block_hash(bestblockcount)?; println!("best block hash by height: {}", best_block_hash_by_height); assert_eq!(best_block_hash_by_height, best_block_hash); let bitcoin_block: bitcoin::Block = rpc.get_by_id(&best_block_hash)?; println!("best block hash by `get`: {}", bitcoin_block.header.prev_blockhash); let bitcoin_tx: bitcoin::Transaction = rpc.get_by_id(&bitcoin_block.txdata[0].txid())?; println!("tx by `get`: {}", bitcoin_tx.txid());
rust-web3是以太坊web3.js开发包的rust版本的实现,具体特性包括:
支持合约调用、ABI编码
支持批量请求
支持HTTP/IPC/WebSocket传输
支持众多标准或非标数据类型,例如:
U256,H256,Address(H160)
Parity的Transaction、TransactionReceipt 、RichBlock、Work、SyncStats
支持大部分标准以太坊RPC API:
Eth:eth_*:支持
Eth Filters:eth_*:支持
Eth Pubsub:eth_*:支持
net_*:支持
web3_*:支持
personal_*:支持
traces_*:暂不支持
支持Parity扩展RPC API:
只读api:parity_*:支持
账户api:parity_*:部分支持
集合api:parity_*:支持
signer_*:支持
自定义API:支持
ethereum-tx-sign支持你在Rust代码中脱机签名以太坊交易。例如:
// 1 mainnet, 3 ropsten const ETH_CHAIN_ID: u32 = 3; let tx = ethereum_tx_sign::RawTransaction { nonce: web3::types::U256::from(0), to: Some(web3::types::H160::zero()), value: web3::types::U256::zero(), gas_price: web3::types::U256::from(10000), gas: web3::types::U256::from(21240), data: hex::decode( "7f7465737432000000000000000000000000000000000000000000000000000000600057" ).unwrap(), }; let mut data: [u8; 32] = Default::default(); data.copy_from_slice(&hex::decode( "2a3526dd05ad2ebba87673f711ef8c336115254ef8fcd38c4d8166db9a8120e4" ).unwrap()); let private_key = web3::types::H256(data); let raw_rlp_bytes = tx.sign(&private_key, Ð_CHAIN_ID); let result = "f885808227108252f894000000000000000000000000000000000000000080a\ 47f746573743200000000000000000000000000000000000000000000000000\ 00006000572aa0b4e0309bc4953b1ca0c7eb7c0d15cc812eb4417cbd759aa09\ 3d38cb72851a14ca036e4ee3f3dbb25d6f7b8bd4dac0b4b5c717708d20ae6ff\ 08b6f71cbf0b9ad2f4"; assert_eq!(result, hex::encode(raw_rlp_bytes));
SputnikVM是完全采用rust实现的以太坊虚拟机,主要特性包括:
独立:可以作为单独进程载入或集成进现有APP
通用:支持不同的以太坊区块链,例如ETC、ETH或私有链
无状态:只包含一个连接到独立的状态存储的执行环境
快速:实现的关注重点就是性能
SputnikVM要求 rustc 1.33.0 (2aa4c46cf 2019-02-28),不支持 Rust 1.32.0以及更早版本。
Tendermint是一个高性能的支持拜占庭容错的区块链共识引擎,tendermint-rs用于访问Tendermint区块链,要求Rust 1.39+。
monero-rs用于访问Monero区块链,支持门罗币相关的序列化/反序列化以及数据结构或网络消息的解析。具体特性包括:
支持Monero区块及交易的序列化/反序列化
支持地址和子地址的创建、序列化/反序列化和验证
支持私钥和一次性密钥的创建、序列化/反序列化和验证
大部分结构都支持Serde
eosio-rust是Rust版本的EOSIO SDK,它提供一组API用于采用Rust开发EOSIO区块链上的智能合约与全栈应用。
Parity出品,支持区块链创新的下一代开发框架,已经用于Polkadot的开发,是中小企业开发自主知识产权的的区块链平台的一大利器。
到此,相信大家对“区块链开发必备的Rust包有哪些”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。