[求助] web3j呼叫智能合约的问题

楼主: fugenyuzen (翎箫)   2018-02-08 13:13:03
大家好,我最近在研究私有链的部份,
并且用ethereum wallet发布了一个智能合约在上面,
该智能合约很简单,只是一个map形式的结构(key,value),
一个方法是新增,一个方法是查询,
目前使用web3j的方式来呼叫,
但我发现短时间内大量使用web3j sendAsync()呼叫该智能合约做新增的动作,
会漏掉中间某些数据没有成功上去,
但若使用send(),会需要10几秒的时间才结束,太慢了,
在网络上找了很久,发现可能和nonce有关系?
不知道有谁有类似经验的,可以回答我该怎么做吗?谢谢
作者: bikeboy106 (bikeboy106)   2018-02-09 00:44:00
印象中web3是不处理nonce的, 所以要嘛client side自己指定 不然就是node给. 所以听起来像是node使用的版本有TX nonce 同步的问题要去看node 的 log才知道发生什么问题
作者: ousapas (komica123)   2018-02-08 20:35:00
你是用parity还是geth?
楼主: fugenyuzen (翎箫)   2018-02-08 21:03:00
我是用geth,发布智能合约的方式是用mist发布的。再使用tuffle将abi转成java档
作者: bikeboy106 (bikeboy106)   2018-02-08 21:57:00
TX Nonce 你可以自己设定 或是让node帮你决定 最好方式你自己架一个node 自己送tx到自己的node 让你的node广播transaction出去
作者: ousapas (komica123)   2018-02-08 22:15:00
你要不要把code贴出来我的猜想是sendAsync来不及帮你递增nonceethereum的设计是一个帐号的交易nonce必须是递增数列短时间送出太多tx,可能会造成中间有重复的nonce重复nonce的tx都会被拒绝处理所以才会造成有些成功有些失败的现象
楼主: fugenyuzen (翎箫)   2018-02-09 16:37:00
目前应该是找到方法解决了,我自己给nonce并且递增就可以正常的把资料往上送,谢谢上面二位给我很大的帮助

Links booklink

Contact Us: admin [ a t ] ucptt.com