Rust区块链开发包

喜欢ヅ旅行 2022-08-29 05:43 308阅读 0赞

Rust是新一代的潜力巨大的开发语言。本文编辑整理了9个主流的 用于以太坊、比特币、tendermint、eosio、polkadot等区块链 开发的Rust包,可用于区块链应用的快速开发。

区块链开发教程链接: 以太坊 | 比特币 | EOS | Tendermint | Hyperledger Fabric | Omni/USDT | Ripple

1、rust-bitcoin:比特币区块链rust开发包

rust-bitcoin用于开发比特币区块链相关应用,支持 序列化/反序列化、解析并执行比特币相关数据结构及 网络消息等功能,具体支持的特性包括:

  • 比特币协议消息的序列化/反序列化
  • 比特币区块和交易的序列化/反序列化
  • 比特币脚本的序列化/反序列化
  • 私钥和地址的创建、序列化/反序列化和验证,内置BIP32的完整支持
  • PSBT的创建、操作、合并与最终化
  • 支持Blockstream侧链的Pay-to-contract交易

项目地址:https://github.com/rust-bitcoin/rust-bitcoin

2、rust-bitcoincore-rpc:比特币节点JSON-RPC API客户端开发包

rust-bitcoin不包含比特币节点的JSON RPC API封装,rust-bitcoincore-rpc 填补了这个空白。例如:








  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
  1. 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());

项目地址:https://github.com/rust-bitcoin/rust-bitcoincore-rpc/tree/master/client

3、rust-web3:以太坊区块链rust开发包

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:支持

项目地址:https://github.com/tomusdrw/rust-web3/

4、ethereum-tx-sign:以太坊离线签名rust开发包

ethereum-tx-sign支持你在Rust代码中脱机签名以太坊交易。例如:








  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
  1. // 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));

项目地址:https://github.com/synlestidae/ethereum-tx-sign

5、SputnikVM:纯rust实现的以太坊虚拟机

SputnikVM是完全采用rust实现的以太坊虚拟机,主要特性包括:

  • 独立:可以作为单独进程载入或集成进现有APP
  • 通用:支持不同的以太坊区块链,例如ETC、ETH或私有链
  • 无状态:只包含一个连接到独立的状态存储的执行环境
  • 快速:实现的关注重点就是性能

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

项目地址:https://github.com/rust-blockchain/evm

6、tendermint-rs:tendermint区块链rust开发包

Tendermint是一个高性能的支持拜占庭容错的区块链共识引擎,tendermint-rs用于 访问Tendermint区块链,要求Rust 1.39+。

项目地址:https://github.com/informalsystems/tendermint-rs/tree/master/tendermint

7、monero-rs:Monero区块链rust开发包

monero-rs用于访问Monero区块链,支持门罗币相关的序列化/反序列化 以及数据结构或网络消息的解析。具体特性包括:

  • 支持Monero区块及交易的序列化/反序列化
  • 支持地址和子地址的创建、序列化/反序列化和验证
  • 支持私钥和一次性密钥的创建、序列化/反序列化和验证
  • 大部分结构都支持Serde

项目地址:https://github.com/monero-rs/monero-rs

8、eosio-rust:EOSIO区块链rust开发包

eosio-rust是Rust版本的EOSIO SDK,它提供一组API用于采用Rust 开发EOSIO区块链上的智能合约与全栈应用。

项目地址:https://github.com/sagan-software/eosio-rust

9、substrate:大杀器

Parity出品,支持区块链创新的下一代开发框架,已经用于Polkadot的开发, 是中小企业开发自主知识产权的的区块链平台的一大利器。

项目地址:https://github.com/paritytech/substrate

发表评论

表情:
评论列表 (有 0 条评论,308人围观)

还没有评论,来说两句吧...

相关阅读

    相关 区块

    1.概念定义 什么是区块链?从科技层面来看,区块链涉及数学、密码学、互联网和计算机编程等很多科学技术问题。从应用视角来看,简单来说,区块链是一个分布式的共享账本和数据库,

    相关 区块安全性(区块应用)

    区块链的特征包括什么 安全性高。区块链不受任何人和实体的控制,数据在多台计算机上完整的复制。攻击者没有一个单一的入口点,数据安全更有保障。数据不可篡改,一旦进入区块链,任

    相关 区块

    什么是区块链? 区块链可以简单理解成一种记账本(分布式数据库)。不过,这种账本不是纸质的,而是电子记账本,存放于于互联网中,有无数本,并且每一本的内容都一样。如果其中一本账本

    相关 Rust区块开发

    Rust是新一代的潜力巨大的开发语言。本文编辑整理了9个主流的 用于以太坊、比特币、tendermint、eosio、polkadot等区块链 开发的Rust包,可用于区块链应

    相关 区块

    什么是区块链 区块链是一种技术,比特币交易用到了区块链技术 中心化交易模式:转账需要经过第三方,比如银行,银行就是中心 去中心化交易模式:区块链模式。A将虚拟货币(