溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

區(qū)塊鏈開(kāi)發(fā)必備的Rust包有哪些

發(fā)布時(shí)間:2021-12-29 14:35:13 來(lái)源:億速云 閱讀:212 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容主要講解“區(qū)塊鏈開(kāi)發(fā)必備的Rust包有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“區(qū)塊鏈開(kāi)發(fā)必備的Rust包有哪些”吧!

Rust是新一代的潛力巨大的開(kāi)發(fā)語(yǔ)言。本文編輯整理了9個(gè)主流的用于以太坊、比特幣、tendermint、eosio、polkadot等區(qū)塊鏈開(kāi)發(fā)的Rust包,可用于區(qū)塊鏈應(yīng)用的快速開(kāi)發(fā)。

1、rust-bitcoin:比特幣區(qū)塊鏈rust開(kāi)發(fā)包

rust-bitcoin用于開(kāi)發(fā)比特幣區(qū)塊鏈相關(guān)應(yīng)用,支持序列化/反序列化、解析并執(zhí)行比特幣相關(guān)數(shù)據(jù)結(jié)構(gòu)及網(wǎng)絡(luò)消息等功能,具體支持的特性包括:

  • 比特幣協(xié)議消息的序列化/反序列化

  • 比特幣區(qū)塊和交易的序列化/反序列化

  • 比特幣腳本的序列化/反序列化

  • 私鑰和地址的創(chuàng)建、序列化/反序列化和驗(yàn)證,內(nèi)置BIP32的完整支持

  • PSBT的創(chuàng)建、操作、合并與最終化

  • 支持Blockstream側(cè)鏈的Pay-to-contract交易

2、rust-bitcoincore-rpc:比特幣節(jié)點(diǎn)JSON-RPC API客戶端開(kāi)發(fā)包

rust-bitcoin不包含比特幣節(jié)點(diǎn)的JSON RPC API封裝,rust-bitcoincore-rpc填補(bǔ)了這個(gè)空白。例如:

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());

3、rust-web3:以太坊區(qū)塊鏈rust開(kāi)發(fā)包

rust-web3是以太坊web3.js開(kāi)發(fā)包的rust版本的實(shí)現(xiàn),具體特性包括:

  • 支持合約調(diào)用、ABI編碼

  • 支持批量請(qǐng)求

  • 支持HTTP/IPC/WebSocket傳輸

  • 支持眾多標(biāo)準(zhǔn)或非標(biāo)數(shù)據(jù)類型,例如:

    • U256,H256,Address(H160)

    • Parity的Transaction、TransactionReceipt 、RichBlock、Work、SyncStats

  • 支持大部分標(biāo)準(zhǔn)以太坊RPC API:

    • Eth:eth_*:支持

    • Eth Filters:eth_*:支持

    • Eth Pubsub:eth_*:支持

    • net_*:支持

    • web3_*:支持

    • personal_*:支持

    • traces_*:暫不支持

  • 支持Parity擴(kuò)展RPC API:

    • 只讀api:parity_*:支持

    • 賬戶api:parity_*:部分支持

    • 集合api:parity_*:支持

    • signer_*:支持

    • 自定義API:支持

4、ethereum-tx-sign:以太坊離線簽名rust開(kāi)發(fā)包

ethereum-tx-sign支持你在Rust代碼中脫機(jī)簽名以太坊交易。例如:

// 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, &ETH_CHAIN_ID);

let result = "f885808227108252f894000000000000000000000000000000000000000080a\
    47f746573743200000000000000000000000000000000000000000000000000\
    00006000572aa0b4e0309bc4953b1ca0c7eb7c0d15cc812eb4417cbd759aa09\
    3d38cb72851a14ca036e4ee3f3dbb25d6f7b8bd4dac0b4b5c717708d20ae6ff\
    08b6f71cbf0b9ad2f4";
assert_eq!(result, hex::encode(raw_rlp_bytes));

5、SputnikVM:純r(jià)ust實(shí)現(xiàn)的以太坊虛擬機(jī)

SputnikVM是完全采用rust實(shí)現(xiàn)的以太坊虛擬機(jī),主要特性包括:

  • 獨(dú)立:可以作為單獨(dú)進(jìn)程載入或集成進(jìn)現(xiàn)有APP

  • 通用:支持不同的以太坊區(qū)塊鏈,例如ETC、ETH或私有鏈

  • 無(wú)狀態(tài):只包含一個(gè)連接到獨(dú)立的狀態(tài)存儲(chǔ)的執(zhí)行環(huán)境

  • 快速:實(shí)現(xiàn)的關(guān)注重點(diǎn)就是性能

SputnikVM要求 rustc 1.33.0 (2aa4c46cf 2019-02-28),不支持 Rust 1.32.0以及更早版本。

6、tendermint-rs:tendermint區(qū)塊鏈rust開(kāi)發(fā)包

Tendermint是一個(gè)高性能的支持拜占庭容錯(cuò)的區(qū)塊鏈共識(shí)引擎,tendermint-rs用于訪問(wèn)Tendermint區(qū)塊鏈,要求Rust 1.39+。

7、monero-rs:Monero區(qū)塊鏈rust開(kāi)發(fā)包

monero-rs用于訪問(wèn)Monero區(qū)塊鏈,支持門羅幣相關(guān)的序列化/反序列化以及數(shù)據(jù)結(jié)構(gòu)或網(wǎng)絡(luò)消息的解析。具體特性包括:

  • 支持Monero區(qū)塊及交易的序列化/反序列化

  • 支持地址和子地址的創(chuàng)建、序列化/反序列化和驗(yàn)證

  • 支持私鑰和一次性密鑰的創(chuàng)建、序列化/反序列化和驗(yàn)證

  • 大部分結(jié)構(gòu)都支持Serde

8、eosio-rust:EOSIO區(qū)塊鏈rust開(kāi)發(fā)包

eosio-rust是Rust版本的EOSIO SDK,它提供一組API用于采用Rust開(kāi)發(fā)EOSIO區(qū)塊鏈上的智能合約與全棧應(yīng)用。

9、substrate:大殺器

Parity出品,支持區(qū)塊鏈創(chuàng)新的下一代開(kāi)發(fā)框架,已經(jīng)用于Polkadot的開(kāi)發(fā),是中小企業(yè)開(kāi)發(fā)自主知識(shí)產(chǎn)權(quán)的的區(qū)塊鏈平臺(tái)的一大利器。

到此,相信大家對(duì)“區(qū)塊鏈開(kāi)發(fā)必備的Rust包有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI