[求助] 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