- 关于锁仓合约的代码地址
- 使用solc编译
solc TokenTimelock.sol --bin --abi --optimize --overwrite -o /git/Test/solidity/
格式:solc 合约文件名字 --bin --abi --optimize --overwrite - 输出文件目录
注意事项
如果有多个合约文件,只需要编译这个一个,这个工具会自动相关连合约一起编译
编译后得到的合约文件:
编译后的合约文件
- 使用web3j编译合约文件
web3j solidity generate --solidityTypes TokenTimelock.bin TokenTimelock.abi -o ../src/main/java/ -p com.zhongmh.test
格式:web3j solidity generate --solidityTypes 合约文件.bin 合约文件.abi -o 输出目录 -p 包名
合约文件转换为java文件的结果图
[图片上传失败...(image-5c06ce-1534409443513)]
- 使用java程序部署和测试的代码
代码文件
@Test
public void testDeployedTokenTimeLock() throws Exception {
RemoteCall<TokenTimelock> lock = TokenTimelock.deploy(web3j,credentials,GAS_PRICE,GAS_LIMIT,new Address("0xb36Cb1043fe5F7bb5ae9E78069C237C4f70eE578"),new Address("0xfa3cd047df67edebf8643a51887410c92942a55e"),new Uint256(System.currentTimeMillis() + 864000000L));
TokenTimelock tokenTimelock = lock.send();
System.out.println("合约地址:"+tokenTimelock.getContractAddress());
System.out.println("合约是否可用:"+tokenTimelock.isValid());
}
@Test
public void testLoad() throws Exception {
credentials = WalletUtils.loadCredentials("123456","/data/eth/private/keystore/UTC--2018-08-15T10-07-23.732786995Z--fa3cd047df67edebf8643a51887410c92942a55e");
TokenTimelock tokenTimelock = TokenTimelock.load("0xf9e7942a32717be568b98251e1cb629ad0d6aa50",web3j,credentials,GAS_PRICE,GAS_LIMIT);
Uint256 releaseTime = tokenTimelock.releaseTime().send();
System.out.println("合约释放时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(releaseTime.getValue().longValue())));
String tokenAddress = tokenTimelock.token().send().getValue();
System.out.println("合约地址:"+tokenAddress);
tokenTimelock.release().send();
}
网友评论