1、新建Java springboot 项目,并在pom中添加依赖

<!--web3j--><dependency><groupId>org.web3j</groupId><artifactId>core</artifactId><version>5.0.0</version></dependency><dependency><groupId>org.web3j</groupId><artifactId>codegen</artifactId><version>5.0.0</version></dependency>

2、下载官方示例代码:

https://github.com/web3j/sample-project-gradle

将Greeter.sol拷贝到Remix中,编译、deploy到自己的私有链上

3、生成合约对应的Java文件

新建“SolidityGenerateUtil”

package com.dcepsoft.eth.learn.utils;import org.web3j.codegen.SolidityFunctionWrapperGenerator;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.stream.Stream;public class SolidityGenerateUtil {// 私有实例,类初始化就加载private static SolidityGenerateUtil solidityGenerateUtil = new SolidityGenerateUtil();// 私有构造方法private SolidityGenerateUtil() {}// 公共的、静态的获取实例方法public static SolidityGenerateUtil getInstance() {return solidityGenerateUtil;}public static void genAbiAndBin(){String abi  = "[\n" +"\t{\n" +"\t\t\"constant\": false,\n" +"\t\t\"inputs\": [],\n" +"\t\t\"name\": \"kill\",\n" +"\t\t\"outputs\": [],\n" +"\t\t\"payable\": false,\n" +"\t\t\"stateMutability\": \"nonpayable\",\n" +"\t\t\"type\": \"function\"\n" +"\t},\n" +"\t{\n" +"\t\t\"constant\": false,\n" +"\t\t\"inputs\": [\n" +"\t\t\t{\n" +"\t\t\t\t\"name\": \"_greeting\",\n" +"\t\t\t\t\"type\": \"string\"\n" +"\t\t\t}\n" +"\t\t],\n" +"\t\t\"name\": \"newGreeting\",\n" +"\t\t\"outputs\": [],\n" +"\t\t\"payable\": false,\n" +"\t\t\"stateMutability\": \"nonpayable\",\n" +"\t\t\"type\": \"function\"\n" +"\t},\n" +"\t{\n" +"\t\t\"inputs\": [\n" +"\t\t\t{\n" +"\t\t\t\t\"name\": \"_greeting\",\n" +"\t\t\t\t\"type\": \"string\"\n" +"\t\t\t}\n" +"\t\t],\n" +"\t\t\"payable\": false,\n" +"\t\t\"stateMutability\": \"nonpayable\",\n" +"\t\t\"type\": \"constructor\"\n" +"\t},\n" +"\t{\n" +"\t\t\"anonymous\": false,\n" +"\t\t\"inputs\": [\n" +"\t\t\t{\n" +"\t\t\t\t\"indexed\": true,\n" +"\t\t\t\t\"name\": \"oldGreetingIdx\",\n" +"\t\t\t\t\"type\": \"string\"\n" +"\t\t\t},\n" +"\t\t\t{\n" +"\t\t\t\t\"indexed\": true,\n" +"\t\t\t\t\"name\": \"newGreetingIdx\",\n" +"\t\t\t\t\"type\": \"string\"\n" +"\t\t\t},\n" +"\t\t\t{\n" +"\t\t\t\t\"indexed\": false,\n" +"\t\t\t\t\"name\": \"oldGreeting\",\n" +"\t\t\t\t\"type\": \"string\"\n" +"\t\t\t},\n" +"\t\t\t{\n" +"\t\t\t\t\"indexed\": false,\n" +"\t\t\t\t\"name\": \"newGreeting\",\n" +"\t\t\t\t\"type\": \"string\"\n" +"\t\t\t}\n" +"\t\t],\n" +"\t\t\"name\": \"Modified\",\n" +"\t\t\"type\": \"event\"\n" +"\t},\n" +"\t{\n" +"\t\t\"constant\": true,\n" +"\t\t\"inputs\": [],\n" +"\t\t\"name\": \"greet\",\n" +"\t\t\"outputs\": [\n" +"\t\t\t{\n" +"\t\t\t\t\"name\": \"\",\n" +"\t\t\t\t\"type\": \"string\"\n" +"\t\t\t}\n" +"\t\t],\n" +"\t\t\"payable\": false,\n" +"\t\t\"stateMutability\": \"view\",\n" +"\t\t\"type\": \"function\"\n" +"\t}\n" +"]";String bin = "{\n" +"\t\"linkReferences\": {},\n" +"\t\"object\": \"608060405234801561001057600080fd5b506040516106c23803806106c283398101806040528101908080518201929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060019080519060200190610089929190610090565b5050610135565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100d157805160ff19168380011785556100ff565b828001600101855582156100ff579182015b828111156100fe5782518255916020019190600101906100e3565b5b50905061010c9190610110565b5090565b61013291905b8082111561012e576000816000905550600101610116565b5090565b90565b61057e806101446000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806341c0e1b51461005c5780634ac0d66e14610073578063cfae3217146100dc575b600080fd5b34801561006857600080fd5b5061007161016c565b005b34801561007f57600080fd5b506100da600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506101fd565b005b3480156100e857600080fd5b506100f161040b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610131578082015181840152602081019050610116565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156101fb576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b565b806040518082805190602001908083835b602083101515610233578051825260208201915060208101905060208303925061020e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600160405180828054600181600116156101000203166002900480156102bd5780601f1061029b5761010080835404028352918201916102bd565b820191906000526020600020905b8154815290600101906020018083116102a9575b505091505060405180910390207f047dcd1aa8b77b0b943642129c767533eeacd700c7c1eab092b8ce05d2b2faf560018460405180806020018060200183810383528581815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561037b5780601f106103505761010080835404028352916020019161037b565b820191906000526020600020905b81548152906001019060200180831161035e57829003601f168201915b5050838103825284818151815260200191508051906020019080838360005b838110156103b557808201518184015260208101905061039a565b50505050905090810190601f1680156103e25780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a380600190805190602001906104079291906104ad565b5050565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156104a35780601f10610478576101008083540402835291602001916104a3565b820191906000526020600020905b81548152906001019060200180831161048657829003601f168201915b5050505050905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106104ee57805160ff191683800117855561051c565b8280016001018555821561051c579182015b8281111561051b578251825591602001919060010190610500565b5b509050610529919061052d565b5090565b61054f91905b8082111561054b576000816000905550600101610533565b5090565b905600a165627a7a72305820da6e1b15856cd8a06bea29310b90846f8f6aa36e963e160ca2af0906e4be6f800029\",\n" +"\t\"opcodes\": \"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6C2 CODESIZE SUB DUP1 PUSH2 0x6C2 DUP4 CODECOPY DUP2 ADD DUP1 PUSH1 0x40 MSTORE DUP2 ADD SWAP1 DUP1 DUP1 MLOAD DUP3 ADD SWAP3 SWAP2 SWAP1 POP POP POP CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x89 SWAP3 SWAP2 SWAP1 PUSH2 0x90 JUMP JUMPDEST POP POP PUSH2 0x135 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xD1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xFF JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xFF JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xFE JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xE3 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x10C SWAP2 SWAP1 PUSH2 0x110 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x132 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x116 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x57E DUP1 PUSH2 0x144 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN STOP PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0x41C0E1B5 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x4AC0D66E EQ PUSH2 0x73 JUMPI DUP1 PUSH4 0xCFAE3217 EQ PUSH2 0xDC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x71 PUSH2 0x16C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP3 ADD DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY DUP3 ADD SWAP2 POP POP POP POP POP POP SWAP2 SWAP3 SWAP2 SWAP3 SWAP1 POP POP POP PUSH2 0x1FD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0x40B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x131 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x116 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1FB JUMPI PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SELFDESTRUCT JUMPDEST JUMP JUMPDEST DUP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT ISZERO ISZERO PUSH2 0x233 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH1 0x20 DUP4 SUB SWAP3 POP PUSH2 0x20E JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x29B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x2BD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2A9 JUMPI JUMPDEST POP POP SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x47DCD1AA8B77B0B943642129C767533EEACD700C7C1EAB092B8CE05D2B2FAF5 PUSH1 0x1 DUP5 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x37B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x350 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x37B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x35E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3B5 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x39A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3E2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 PUSH1 0x1 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x407 SWAP3 SWAP2 SWAP1 PUSH2 0x4AD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x4A3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x478 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4A3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x486 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x4EE JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x51C JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x51C JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x51B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x500 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x529 SWAP2 SWAP1 PUSH2 0x52D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH2 0x54F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x533 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 0xda PUSH15 0x1B15856CD8A06BEA29310B90846F8F PUSH11 0xA36E963E160CA2AF0906E4 0xbe PUSH16 0x80002900000000000000000000000000 \",\n" +"\t\"sourceMap\": \"491:785:0:-;;;655:77;8:9:-1;5:2;;;30:1;27;20:12;5:2;655:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;334:10;326:5;;:18;;;;;;;;;;;;;;;;;;715:9;704:8;:20;;;;;;;;;;;;:::i;:::-;;655:77;491:785;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;\"\n" +"}";String abiFileName = "Greeter.abi";String binFileName = "Greeter.bin";generateAbiAndBin(abi,bin,abiFileName,binFileName);}public static void generateAbiAndBin(String abi,String bin,String abiFileName,String binFileName){File abiFile = new File("src/main/java/com/dcepsoft/eth/learn/contract/"+abiFileName);File binFile = new File("src/main/java/com/dcepsoft/eth/learn/contract/"+binFileName);BufferedOutputStream abiBos = null;BufferedOutputStream binBos = null;try{FileOutputStream abiFos = new FileOutputStream(abiFile);FileOutputStream binFos = new FileOutputStream(binFile);abiBos = new BufferedOutputStream(abiFos);binBos = new BufferedOutputStream(binFos);abiBos.write(abi.getBytes());abiBos.flush();binBos.write(bin.getBytes());binBos.flush();generateJavaFile(abiFile.getPath(),binFile.getPath());}catch (Exception e){e.printStackTrace();}finally {if(abiBos != null){try{abiBos.close();;}catch (IOException e){e.printStackTrace();}}if(binBos != null){try {binBos.close();}catch (IOException e){e.printStackTrace();}}}}public static void generateJavaFile(String abiFile, String binFile){String generateFile = "src/main/java/com/dcepsoft/eth/learn/contract/";generateClass(abiFile,binFile,generateFile);}public static void generateClass(String abiFile,String binFile,String generateFile){String[] args = Arrays.asList("-a",abiFile,"-b",binFile,"-p","","-o",generateFile).toArray(new String[0]);Stream.of(args).forEach(System.out::println);SolidityFunctionWrapperGenerator.main(args);}public static void main(String[] args) {genAbiAndBin();}}

使用合约编译之后的abi和二进制信息替换该类中的数据,然后执行

执行之后生成相应文件

4、Java程序调用合约执行

Springboot+web3j(4.7)+实战+填坑_一万次练习的博客-CSDN博客_web3jspringboot

package com.dcepsoft.eth.learn.handler;import com.dcepsoft.eth.learn.contract.Greeter;
import org.web3j.crypto.Credentials;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.RemoteCall;
import org.web3j.protocol.core.methods.response.TransactionReceipt;
import org.web3j.protocol.http.HttpService;
import org.web3j.tx.Contract;
import org.web3j.tx.RawTransactionManager;
import org.web3j.tx.TransactionManager;
import org.web3j.tx.gas.StaticGasProvider;
import java.math.BigInteger;public class GreeterContractHandler {private static GreeterContractHandler contractUtil = new GreeterContractHandler();private GreeterContractHandler(){}public static GreeterContractHandler getInstance() {return contractUtil;}private static String netWorkUrl = "HTTP://127.0.0.1:7545";// 钱包私钥private static String walletKey = "0x6595b875ee20993cdf8a303395e1f037177fcb81b09f8cdf8746775687c0e6e5";// 合约地址private static String contractAddress = "0xd9145CCE52D386f254917e481eB44e9943F39138";public static void useContract(){try {//连接对应节点Web3j web3 = Web3j.build(new HttpService(netWorkUrl));Credentials credentials = Credentials.create(walletKey);TransactionManager transactionManager = new RawTransactionManager(web3, credentials,3);BigInteger gasPrice = web3.ethGasPrice().send().getGasPrice();Greeter contract = Greeter.load(contractAddress,web3,transactionManager,new StaticGasProvider(gasPrice, Contract.GAS_LIMIT));//调用合约方法RemoteCall<TransactionReceipt> setWord = contract.newGreeting("hello world");TransactionReceipt transactionReceipt = setWord.send();String transactionHash = transactionReceipt.getTransactionHash();System.out.println(transactionHash);}catch (Exception e){e.printStackTrace();}}}

其中关键一步就是

Greeter contract = Greeter.load(contractAddress,web3,transactionManager,new StaticGasProvider(gasPrice, Contract.GAS_LIMIT));

RemoteCall<TransactionReceipt> setWord = contract.newGreeting("hello world");

上面都是连接我们的私有节点,以及根据钱包私钥生成合约调用凭证。

Java程序与以太坊智能合约交互相关推荐

  1. android web3j 代币查询_Android通过web3j以太坊智能合约交互

    如果要下载整个以太坊区块链并保持本地节点同步.当区块链占用了我计算机上超过100GB的空间.这在台式计算机上可能有意义,但在移动设备上则不太合理. 解决此限制的一种方法是使用像Infura这样的服务. ...

  2. java和以太坊交互_Android怎么和以太坊智能合约交互

    we3j简介 we3j是提供了一个java访问以太坊网络的接口.借助we3j我们可以操作以太坊网络,包括创建账户.创建合约.执行合约.交易.查询余额.转账都可以. 项目地址https://github ...

  3. 以太坊智能合约交互调用,web3.js,web3j两种方式实现

    导语 接上篇文章 <使用hardhat部署solidity智能合约到测试网> 部署完合约之后,那么如何区块链进行交互呢?这节的主要内容就是使用web3.js和web3j来与区块链以及链上的 ...

  4. 以太坊智能合约开发(truffle box pet-shop为例)

    开发环境 我在ubuntu环境下开发的,建议装好vscode,nodejs .选用别的编译器也可以. 装好nodejs后装一下truffle. npm install -g truffle truff ...

  5. 以太坊 智能合约 简介

    以太坊是一个分布式的计算平台.它会生成一个名为Ether的加密货币.程序员可以在以太坊区块链上写下"智能合约",这些以太坊智能合约会根据代码自动执行. 以太坊是什么? 以太坊经常与 ...

  6. java和以太坊交互_java类库web3j开发以太坊智能合约快速入门

    web3j简介 web3j是一个轻量级.高度模块化.响应式.类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成. 可以通过它进行以太坊 ...

  7. 以太坊智能合约开发第七篇:智能合约与网页交互

    原文发表于:以太坊智能合约开发第七篇:智能合约与网页交互 上一篇中,我们通过truffle开发框架快速编译部署了合约.本篇,我们将来介绍网页如何与智能合约进行交互. 编写网页 首先我们需要编写一个网页 ...

  8. 以太坊智能合约Hello World示例程序

    简介 以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开 ...

  9. 以太坊智能合约开发第二篇:理解以太坊相关概念

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 很多人都说比特币是区块链1.0,以太坊是区块链2.0.在以太坊平台上,可以开发各种各样的去中心化应用,这些应用构成了以太 ...

最新文章

  1. c语言中仅分号,问什么C程序里总是提示缺少分号;,而明明有分号?
  2. 401 - 未授权: 由于凭据无效,访问被拒绝。
  3. 娱乐化手游营销模式探索
  4. 联通突然从4g变成3g了_中国联通最快明年底2G全面退网 并推进3G逐步退网
  5. [AWS vs Azure] 云计算里AWS和Azure的探究(2)
  6. Matlab内存不足问题的解决 .
  7. 部署SpringBoot到阿里云
  8. 用turtle实现动态汉诺塔
  9. 算法笔记_面试题_16. 二叉树相关_模板及示例十几道
  10. P2P共享经济都可接受 O2O×××有何不可?
  11. java聊天软件_java实现简单聊天软件
  12. 如何查html病毒svchost.exe,解决html文件的DropFileName = svchost.exe木马
  13. 生成对抗网络 Generative Adversarial Nets(GAN)详解
  14. unity的RectTransform
  15. PicPick 5.1.3 中文版,一个全功能的屏幕截图工具,图像编辑器,颜色选择器
  16. Android下的linux指令集
  17. jrtplib学习目录及总结
  18. Linux,shell与alias
  19. 邮件伪造测试-Swaks
  20. 太全了,一线互联网大厂都在用的Android UI框架完全解析,拿去吧你

热门文章

  1. Matlab车牌识别
  2. 输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少(使用指针)
  3. (国赛B题)沙漠掘金——基于深度优先搜索的沙漠掘金游戏策略求解(上)
  4. 计算机网络——第4章网络层(下)
  5. Ubuntu下Intel A201 Wifi6驱动安装
  6. 在运行ros的Python文件时报找不到路径
  7. 自适应遗传算法 matlab,自适应遗传算法MATLAB代码
  8. cx_oracle安装教程,Python 安装 cx_Oracle
  9. 廖雪峰python视频教程-福利 | 廖雪峰官方Python教程,拿走不谢!
  10. SQL Server服务无法启动/登陆的解决方法