以太坊智能合约之锁仓合约的开发

  1. 关于锁仓合约的代码地址
  2. 使用solc编译
solc TokenTimelock.sol --bin --abi --optimize --overwrite -o /git/Test/solidity/
格式:solc 合约文件名字 --bin --abi --optimize --overwrite - 输出文件目录
注意事项

如果有多个合约文件,只需要编译这个一个,这个工具会自动相关连合约一起编译

编译后得到的合约文件:


以太坊智能合约之锁仓合约的开发_第1张图片
编译后的合约文件
  1. 使用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)]

  1. 使用java程序部署和测试的代码
    代码文件
@Test
    public void testDeployedTokenTimeLock() throws Exception {
        RemoteCall 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();
    }

你可能感兴趣的:(以太坊智能合约之锁仓合约的开发)