web3j以太坊智能合约流程浅析

本文介绍了web3j作为Java SDK如何访问以太坊HTTP RPC服务,探讨合约部署、加载和调用的过程。智能合约在链上表现为二进制编码,web3j负责将其发送至以太坊并加载。合约调用涉及 ABI 映射,如果合约地址错误,调用会出现问题。合约消息通过创建logfilter并监听filterchange来获取。合约执行失败仍会产生receipt,需要通过合约状态或检查合约地址合法性来处理。
摘要由CSDN通过智能技术生成

这次的项目,主要在智能合约开发上。这里简单讲讲隐藏在合约下面的一些东西。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文件等,不需要去以太坊获取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值