cargo run -- usage bcossdk的操作命令字帮助,建议查看包括 usage account,usage contract,usage get或usage all
注意,控制台调用区块链的RPC接口时,在此版本开始需要区分bcos2,bcos3的客户端,如
查询类:
cargo run -- bcos2 getBlockNumber
cargo run -- bcos3 getBlockNumber
更多命令参见cargo run -- usage get
合约:
cargo run -- bcos2 deploy HelloWorld
cargo run -- bcos2 sendtx HelloWorld latest set "new data"
cargo run -- bcos3 deploy HelloWorld
cargo run -- bcos3 sendtx HelloWorld latest set "new data"
FISCO BCOS SDK : Rust Gears
Rust SDK for FISCO-BCOS ,like some rusted but solid gears , help to build blockchain application with FISCO-BCOS
FISCO BCOS的轻量级版本Rust SDK, 基础网络、国密非国密算法支持、合约解析能力较为完备,附带命令行交互控制台。
关键特性
支持FISCO BCOS3.0 release版本,支持FISCO BCOS2.x的RPC/Channel协议,国密和非国密算法,友好解析交易(Transaction)、回执(Receipt)、事件(Event)
有命令行控制台,支持创建和查询账户,以及合约类(部署调用),查询类的操作。
rustc环境
已经验证的rust版本
rustc 1.54.0-nightly (ed597e7e1 2021-06-08)
rustc 1.55.0-nightly (67b03007c 2021-07-23)
rustc 1.66.0-nightly (f5193a9fc 2022-09-25)
rust版本的本身更新较快,请按rust官网指引安装配置。
crates.io引用方式
考虑到稳定性和完备性,暂未发布最新版本,建议直接套用源代码,并在开发使用中完善。
代码调用示例
目录结构
FISCO BCOS3.x的C语言SDK库
FISCO BCOS 3.x的rust sdk通过FFI方式封装C语言实现的接口库,协议、通信、证书等细节封装在C/C++库里。
ABI格式编解码和2.x的客户端一样依旧用rust实现。
重要:
最新版本的C语言的SDK库文件可到文件下载连接,下载相应操作系统的库文件。
如windows平台上的bcos-c-sdk.dll/.lib,linux平台上的libbcos-c-sdk.so等。
下载后放到当前目录的编译环境路径和运行环境路径下,具体路径取决于开发者的特定项目结构、环境配置。总之一定要在编译期和运行期能映射到C语言SDK库。
C语言SDK接口实现代码
https://github.com/FISCO-BCOS/bcos-c-sdk
技术文档
C++客户端代码 https://github.com/FISCO-BCOS/bcos-cpp-sdk
配置文件
主要配置文件是 conf/config.toml,项目提供了conf/config.toml.sample,将其复制或去掉sample后缀即可。
目前的配置文件同时包含FISCO BCOS2/FISCO BCOS3的配置,初始化时会全部加载,后续可以优化为特定版本客户端只加载特定的配置
配置项解释:
控制台使用帮助:
账户管理、合约编译这些无节点版本区别的,则不需要加bcos2/bcos3参数
Solc编译器下载说明
下载链接参见 Github Release:包含多版本/多平台
根据实际操作系统版本、国密或非国密,下载相应的二进制文件,解压并放到bin/目录下,或者和配置路径对应
建议同时下载0.4.25和6.x的solc
控制台输入复杂数据类型概要说明
数组
合约数组如uint256[3] nums,那么在rust层面,其参数构造可以是 [1,2,3],同理,字符串数组对应[‘a’,’b’,’c’]
在控制台输入时,数组参数需要加上中括号,比如[1, 2, 3],数组中是字符串或字节类型,加双引号或单引号,例如[“alice”, ”bob”],注意数组参数中不要有空格;布尔类型为true或者false。
结构体
合约结构体如
对应rust的tuple类型,如 (‘alice’,23)
如果是结构体数组 User[] _users, 则对应tuple数组如[(‘alice’,23),(‘bob’,28)]
在控制台输入时,按以上格式输入即可。举例
重要提示:
FISCO BCOS2.x channel协议中的SSL库使用说明
channel协议用于FISCO BCOS 2.x。FISCO BCOS 3.x采用了新的协议,不是这个版本的channel协议,如使用3.x的节点,无需关注此节。
channel协议要求在客户端和节点之间TLS长连接,使用证书握手和加密,详细参见:Channel协议
TLS实现分为国密和非国密两种,国密的证书私钥文件会比非国密多两个(sdk加密证书和key)。
对非国密TLS,本项目直接使用了ssl库,在系统上要求安装了ssl。在linux上要设置OPENSSL_DIR=[如:/usr/local/ssl],否则编译时rust的openssl-sys库会报错。
对国密版本,采用了TASSL开源库以及简单的C LIB封装对接,需要在不同平台上手动编译出动态库(dll或so),并确保这些动态库和相关的依赖库,都部署在项目目录或系统目录下,可加载。
如果想使用国密版本channel协议,请仔细阅读native_ssock_lib下的README
要将c语言项目编译出来的动态库,全部复制到和可执行程序相同的目录或系统目录下下,才可以加载成功
在linux上,可以配置LD_LIBRARY_PATH=[so库所在目录]并生效
加载动态库的rust实现参见src/bcossdk/bcos_tls_native.rs,如有兴趣建议仔细走读,并进行优化,目前的实现在生命周期和稳定性方面有优化空间
todo list:
贡献代码
欢迎clone,fork,可以参考/复制所需代码,欢迎交流讨论。
欢迎并非常感谢您的贡献,请参阅代码贡献流程。
如项目对您有帮助,欢迎star支持!
加入社区
FISCO BCOS开源社区是国内活跃的开源社区,社区长期为机构和个人开发者提供各类支持与帮助。已有来自各行业的数千名技术爱好者在研究和使用FISCO BCOS。如您对FISCO BCOS开源技术及应用感兴趣,欢迎加入社区获得更多支持与帮助。
License
Rust SDK的开源协议为MIT License. 详情参考LICENSE。