1. 程式人生 > >java開發區塊鏈5

java開發區塊鏈5

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 + "]");