这次的项目,主要在智能合约开发上。这里简单讲讲隐藏在合约下面的一些东西。solidity合约的编写以及逻辑处理,请自行度娘。
1、web3j
web3j是一套访问以太坊http rpc服务的java sdk。有什么业务,主要看etherum-harmony提供的接口,而不是以太坊有什么服务。以太坊提供的服务比较简单,只有转账,存证和EVM执行。
而假如去看web3j的通讯代码,你可以看到,很多和合约相关的调用,都是通过转账接口完成的,在转账接口中附加了业务参数,然后rpc服务器解析业务参数进行业务处理。
web3j的创建和使用有TransactionManager以及ScheduledExecutorService可以自定义,可以用来定义连接超时,nonce规则,刷新频率等。
2、合约部署(这里不讲solc编译部分,自行度娘)
智能合约在链上的表现形式就是一段编译的二进制编码,web3j将生成的二进制文件,send到以太坊去保存。
以太坊产生合约地址,并保存二进制数据,可供后面合约调用。
3、合约加载
合约加载,web3j提供了友好的java函数接口可以加载调用,但是内部的逻辑,是加载函数调用接口abi的映射。一个abi可以对应一个具体的方法+参数。
从这点我们也可以知道两个点。一、假如合约的地址不对(对应的是二进制代码不对),加载是可以成功,但是由于映射是错误的,所以调用会出现问题。二、合约的加载是本地的,依赖的是本地的代码或者abi文件等,不需要去以太坊获取。