区块链-java对接web3合约

区块链-java对接web3合约,第1张

文章讲了什么

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

准备工作有哪些 已经部署好的合约地址编译合约后生成的abi文件  通过hardhat-build去编译通过remix网站去编译获取(教程可自行百度查询) JAVA端需要做些什么  引入web3的jar包 版本用最新的就行了
            
                org.web3j
                core
                ${web3j.version}
            
引入web3j-maven-plugin 将编译后得到的abi文件转换为java所用的对象文件

        
            
                org.web3j
                web3j-maven-plugin
                4.8.7
                
                    bandex.exchange.entity
                    true
                    java
                    
                        src/main/java/bandex/exchange
                        
                            CowbitDex.json
                        
                    
                    
                        src/main/java
                    
                
            
        
    

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

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对接合约的详细过程,如果有什么问题可以在文章下留言.

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/2992484.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-23
下一篇 2022-09-23

发表评论

登录后才能评论

评论列表(0条)

保存