BigBang blockchain (https://github.com/bigbangcore/BigBang) RPC client for golang! BigBang RPC >> bbrpc.
使用这个库您需要自行承担潜在的bug带来的风险
- more rpc method support
- websocket rpc support
- full rpc method test
- performance test
- full field match verify
- CI
需要bigbang 在$PATH 下,即可以直接从命令行运行bigbang
基本测测试思路:go 启动bigbang,通过rpc交互,验证逻辑符合bibang规则
client, err := bbrpc.NewClient(&bbrpc.ConnConfig{...})
tShouldNil(t, err, "failed to new rpc client")
defer client.Shutdown() //建议在系统关闭时调用shutdown
api 参考 https://github.com/bigbangcore/BigBang/wiki/JSON-RPC
Suggestion Strong rpc password, EnableTLS better, Allowed ip from server side(bigbang)
- majority of JSON-RPC API
- run bigbang server in golang (test usage)
- JSON-RPC data structures
- http.Client reuse,safe for concurrent use by multiple goroutines
- zero dependency
- TLS support
主要的版本跟着BigBangCore 走,semantic version
建议的方式是选择与你的BigBang-server一致的版本,比如你的bigbang为 0.9.1
建议选择 v0.9.x
-
http层如何复用http.Client的?
- 每个bbrpc.Client 有一个http.Client,所有的请求发送到一个内部chan req (cap 100) ,内部有一个goroutine for select 这个chan req,一直处理请求直到shutdown,每个请求返回的结果写入到req 的chan resp 里。参考client.go
-
JSON RPC request id 如何生成的?
atomic.AddUint64(&c.id, 1)
自增
-
Why testing(
make test
) slow?- 目前暂时没有找到bigbang缩短出块周期的方法,有些测试需要等待出块,这个是主要的时间耗费
- 暂时没有考虑
t.Parallel()
,这个需要对测试端口进行无冲突的管理分配 - 启动bigbang后会等待1s
该项目非bigbang核心团队实现,作者根据自己的需求实现了部分RPC。但代码设计成容易的添加新的RPC,只需要简单的添加数据结构(基本参考官方RPC Wiki),参考现有的代码即可快速实现。
欢迎提交PR.
TBD
(目前暂时没有限制,你可以按照你喜欢的方式使用代码)