# bcos_rust_sdk **Repository Path**: ancelmo/bcos_rust_sdk ## Basic Information - **Project Name**: bcos_rust_sdk - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2021-07-19 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FISCO BCOS Rust SDK --- Rust SDK为[FISCO BCOS](https://github.com/FISCO-BCOS/FISCO-BCOS/tree/master)提供Rust API ## 关键特性 - 提供调用FISCO BCOS 2.0 [JSON-RPC](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/api.html)的Rust API - 支持json rpc的同步请求模式,默认指向8545端口 - 支持[Channel协议](https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/design/protocol_description.html#channelmessage),保证节点与SDK安全加密通信 - 支持交易的部署、发送交易、call - 支持解析解析功能:包括交易输入、交易输出、Event Log等ABI数据的拼装和解析。 - 支持基于pem文件的账户私钥读取。 - 引用WeDPR的密码库进行HASH,签名 (签名的实现有待封装以支持国密,所以不倾向引入更多的签名算法) - 已经全面支持国密和非国密节点(包括签名,HASH,TLS连接) (2021.07.18) ## 目录结构: - src/bcossdk : 主要的代码 - src/sample: 陆续增加一些sample - conf : 配置文件,运行前,先将client_config.toml.sample复制为client_config.toml,并仔细理解和修改里面的配置值,尤其是ip端口和证书 - sdk : 连接节点的证书,国密和非国密的都放到这里 - contracts : 合约的sol,abi,bin等 **如果想体验channel协议,请仔细阅读另一个开源项目[native_ssock_lib下的README](https://gitee.com/coderkent/native_ssock_lib/)** **要将c语言项目编译出来的动态库,全部复制到和可执行程序相同的目录下,才可以加载成功** **加载动态库的rust实现见src/bcossdk/bcostlsclient.rs** ## todo: - 补全JSON RPC的大部分常用接口(2021.07.18 √ ,待补充:群组操作,系统合约如权限等) - 在linux等多平台上进行测试适配(开发期是在windows+msys64上) - 测试更多的合约接口是否支持 (2021.07.18 √,已经测试多参数合约,待测试 数组 接口)) - 支持命令行交互式控制台 (2021.07.18 ,采用StructOpt ,可以简易的支持命令行参数,待完善友善体验) - 支持国密(SM2,SM3,SM4 ,2021.07.18 √) - 支持异步的远程请求模式(包括http jsonrpc和channel) - 支持多线程的channel长连接 - 支持event回调监听 - 增加日志 - 优化代码风格 - 减少编译期warning (√) - 优化引用库列表,去掉没用到的引用库 - 优化错误处理,包括错误码,错误逻辑,边界异常等 (统一到KissError,增加kisserror!宏,Kiss:Keep It Simple & Stupid) - 优化生命周期/内存管理细节 - 优化性能 - 去掉大量的开发期打印信息 (采用printlnex!宏打印,待优化) - (一大堆todo ....) ## 一些注意事项 - 本项目是一个练习作品,作者正在学习rust语言,不保证所有的语法正确、生命周期合理,也不保证功能完整和正常。仅供学习参考。 - 作者是深度“C with Class"患者,潜意识的会采用C语言写法。什么模板、泛型之类的不怎么爱用。(但宏是个好东西) - 作者也不喜欢类似闭包这种可读性见仁见智的写法,能不用就不用,宁可写循环,写function,即使冗长一点,但线性可读 - 尚未使用大量rust特色属性,包括宏定义等,后续会增补优化。 - 代码尚未稳定,不定期进行大幅度重构,代码风格、目录结构、命名、实现什么都会有修改(也算是rust系特色了,依赖库各种小版本差异神坑) - 欢迎clone,fork,可以参考/复制所需代码,欢迎交流讨论。 ## 贡献代码 - 我们欢迎并非常感谢您的贡献,请参阅[代码贡献流程](https://mp.weixin.qq.com/s/hEn2rxqnqp0dF6OKH6Ua-A )。 - 如项目对您有帮助,欢迎star支持! ## 加入社区 **FISCO BCOS开源社区**是国内活跃的开源社区,社区长期为机构和个人开发者提供各类支持与帮助。已有来自各行业的数千名技术爱好者在研究和使用FISCO BCOS。如您对FISCO BCOS开源技术及应用感兴趣,欢迎加入社区获得更多支持与帮助。 ## License Rust SDK的开源协议为[MIT License](https://opensource.org/licenses/MIT). 详情参考[LICENSE](./LICENSE)。