EthereumSmartContractService
Introduction
We can use this interface to manage operations related with Ethereum smart contracts over blockchain
Smart contract deployment
TransactionConfig txconfig = new TransactionConfig.Builder()
.withPrivateKey("0xd06026d5b8664036bdec0a924b8c7360566e678a2291e9440156365b040a7b83")
.build();
List<String> params = new ArrayList<>();
params.add("1000");
params.add("HancockTest1");
params.add("18");
params.add("HT1");
final Future<HancockSocketTransactionBody> response = ethereumSmartContractService
.deploy("0x6c0a14f7561898b9ddc0c57652a53b2c6665443e", "https://s3-eu-west-1.amazonaws.com/ethereum/eip20/EIP20", "EIP20", params, txConfig);
System.out.println(response.get());
Console output:
{
blockHash: '0x4c5dae42c9ea1b90912b6f7128a9d1213d14f70ca12b06f417b4d519b8cfe543';
blockNumber: 4460598;
transactionId: '0x241dbc176195e58c7505812e7c9a04bd83c5dd59b0684e39911f88bedce5c6bf';
from: '0x8a37b79e54d69e833d79cac3647c877ef72830e1';
to: null;
value: IHancockSocketCurrency;
data: '';
fee: IHancockSocketCurrency;
newContractAddress: '0x54a298ee9fccbf0ad8e55bc641d3086b81a48c41';
timestamp: 1559038793;
}
Smart contract invoke
TransactionConfig txconfig = new TransactionConfig.Builder()
.withPrivateKey("0xd06026d5b8664036bdec0a924b8c7360566e678a2291e9440156365b040a7b83")
.build();
ArrayList<String> params = new ArrayList();
params.add("0x6c0a14f7561898b9ddc0c57652a53b2c6665443e");
EthereumTransactionResponse invokeResponse = ethereumSmartContractService.invoke(
"token-contract-alias",
"balanceOf",
params,
"0x6c0a14f7561898b9ddc0c57652a53b2c6665443e",
txconfig
);
System.out.println("success: " + invokeResponse.getSuccess());
Console output:
success: true
Smart contract register
TransactionConfig txconfig = new TransactionConfig.Builder()
.withPrivateKey("0xd06026d5b8664036bdec0a924b8c7360566e678a2291e9440156365b040a7b83")
.build();
ArrayList<String> abiDefinitions = new ArrayList();
params.add(new AbiDefinition());
EthereumRegisterResponse invokeResponse = ethereumSmartContractService.register(
"MyAlias",
"0x6c0a14f7561898b9ddc0c57652a53b2c6665443e",
abiDefinitions)
System.out.println("success: " + invokeResponse.getSuccess());
Console output:
success: true
Subscribe to smart contract events
ArrayList<String> contracts = new ArrayList<>();
contracts.add("0x547aaccaef70a7aef5a44fa173f46e9ea07bdce7");
HancockSocket socket = ethereumSmartContractService.subscribeToEvents(contracts);
Function logsFunc = o -> {
System.out.println(o);
return null;
};
socket.on("contract-event", logsFunc);
Subscribe to smart contract deployment
ArrayList<String> contracts = new ArrayList<>();
contracts.add("0x547aaccaef70a7aef5a44fa173f46e9ea07bdce7");
Function readyFunc = o -> {
System.out.println(o);
return null;
};
HancockSocket socket = ethereumSmartContractService.subscribeToContractsDeployments(contracts, "consumer", readyFunc);
Function logsFunc = o -> {
System.out.println(o);
return null;
};
socket.on("contract-deployment", logsFunc);
Subscribe to smart contract transactions
ArrayList<String> contracts = new ArrayList<>();
contracts.add("0x547aaccaef70a7aef5a44fa173f46e9ea07bdce7");
HancockSocket socket = ethereumSmartContractService.subscribeToTransactions(contracts);
Function logsFunc = o -> {
System.out.println(o);
return null;
};
socket.on("transaction", logsFunc);