区块链-java对接web3合约

文章讲了什么

本文章讲述了如何在合约已经部署并且能拿到合约abi文件的情况下,用java代码去进行调用合约

准备工作有哪些

  1. 已经部署好的合约地址
  2. 编译合约后生成的abi文件 
    1. 通过hardhat-build去编译
    2. 通过remix网站去编译获取(教程可自行百度查询)

JAVA端需要做些什么 

  • 引入web3的jar包 版本用最新的就行了
                <dependency>
                    <groupId>org.web3j</groupId>
                    <artifactId>core</artifactId>
                    <version>${web3j.version}</version>
                </dependency>
  • 引入web3j-maven-plugin 将编译后得到的abi文件转换为java所用的对象文件
    <build>
            <plugins>
                <plugin>
                    <groupId>org.web3j</groupId>
                    <artifactId>web3j-maven-plugin</artifactId>
                    <version>4.8.7</version>
                    <configuration>
                        <packageName>bandex.exchange.entity</packageName>
                        <nativeJavaType>true</nativeJavaType>
                        <outputFormat>java</outputFormat>
                        <abiSourceFiles>
                            <directory>src/main/java/bandex/exchange</directory>
                            <includes>
                                <include>CowbitDex.json</include>
                            </includes>
                        </abiSourceFiles>
                        <outputDirectory>
                            <java>src/main/java</java>
                        </outputDirectory>
                    </configuration>
                </plugin>
            </plugins>
        </build>

    然后我们来讲下上面的各个参数所对应的含义

    • packageName 对应的是生成文件后java文件存放的包名,就是类的包名

    • nativeJavaType 对应的是本机类型是否是JAVA类型

    • outputFormat 对应的是生成文件后的文件类型

    • abiSourceFiles

      • directory  对应的是生成java文件的所需abi的目录

      • include  对应的abi的文件名

    • outputDirectory  对应的是java文件生成后存放的路径

 以上做完后 就可以通过插件生成一个java文件了,这个文件就是跟合约对接的关键文件

如何对接合约

        首先我们需要将生成的这个java类通过下面的方法进行实例化

        

// webUrl 参数是节点路径 这个可以通过infura去创建账号并生成自己的节点获取路径
// https://infura.io/  infura官网 如果不会的可以百度去查询下教程
Web3j web3j = Web3j.build(new HttpService(webUrl));
// 创建证书 operatePrivateKey 操作合约者的私钥 填写了这个私钥后 后面对合约的相关操作 产生的费用都由这个地址来承担 一般都是设置为合约的部署者
Credentials credentials = Credentials.create(operatePrivateKey);
// contractAddress 参数就是我们部署的合约地址 
CowbitDex cowbitDex = CowbitDex.load(contractAddress,web3j,credentials,new DefaultGasProvider());

实例完之后 就可以直接使用cowbitDex这个类进行调用合约了,合约所定义的方法和事件都能在这个类里面能调用到

结语

        以上就是java对接合约的详细过程,如果有什么问题可以在文章下留言.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值