java開發區塊鏈5
阿新 • • 發佈:2019-01-24
java開發區塊鏈二
- 使用如下命令開啟geth
- 這種命令開啟後,就可以使用web3j的java包進行呼叫了
$ geth --rpc --rpccorsdomain "*" --datadir "%cd%/mydata" --port 30303 --rpcapi "db,eth,net,web3,personal,web3" --networkid 1234 --rpcport 8545 console 2
- 解鎖賬戶,這裡解鎖20分鐘
personal.unlockAccount(eth.accounts[0],"password", 1000*60*20)
-
到這裡我相信大家已經學會了部署智慧合約,以及一些基本的geth命令操作
-
下面我們需要部署java環境
-
這裡使用jdk8 + gradle
-
使用gradle引入web3j
compile 'org.web3j:core:3.2.0'
compile 'com.squareup.okhttp3:okhttp:3.9.1'
compile 'org.slf4j:slf4j-nop:1.7.25'
-
使用上一章的操作,將合約編譯成的java版本的並放入專案中
-
獲取合約地址
$ hello
{
abi: [{
constant: false,
inputs: [{...}],
name: "main",
outputs: [{...} ],
payable: false,
stateMutability: "nonpayable",
type: "function"
}],
address: "0x3fe9d462f620d970317e8c001821c0d99492f59a",
transactionHash: "0x628d58730fe362a3e901e1dbe134b8d939117075c37e6a17b58eae0e0ba623ff",
allEvents: function(),
main: function()
}
- 合約呼叫
// 獲取憑證
// 密碼 錢包憑證
Credentials credentials = WalletUtils.loadCredentials("123456" , "F:\\Geth\\mydata\\keystore\\UTC--2018-01-22T01-44-28.192158200Z--6dfea531562b1b0adfbeabf230cdb6a6d5d21b51");
Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/
//傳入合約地址,自行對照
Hello_sol_hello contract = Hello_sol_hello.load(
"0x3fe9d462f620d970317e8c001821c0d99492f59a", web3, credentials, GAS_PRICE, GAS_LIMIT);
RemoteCall<BigInteger> main = contract.main(new BigInteger("100"));
BigInteger maincall = main.send();
System.out.println("maincall = [" + maincall + "]");