千家信息网

Java如何调用以太坊智能合约

发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,本篇内容介绍了"Java如何调用以太坊智能合约"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、什么
千家信息网最后更新 2025年02月07日Java如何调用以太坊智能合约

本篇内容介绍了"Java如何调用以太坊智能合约"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1、什么是web3j

Web3j是一个开发包,你可以利用这个开发包快速实现对以太坊/Quorum节点的访问,同时也可以用它为某个智能合约文件生成对应的java封装类,以便在Java应用中调用。

系统学习web3j开发,推荐汇智网的在线互动教程:《Web3j以太坊开发详解》

2、节点安装与智能合约部署

首先我们需要搭建一个以太坊网络并部署智能合约,你可以参考这个repo,按照README说明搭建并部署智能合约。

要调用以太坊链上的合约,我们需要两个东西:

  • 钱包私钥

  • 合约地址

在区块链领域,账号通常称为钱包,不过这是一个比较混乱的词语,有时钱包指的是单一地址,有时又指的是包含多个地址的容器。在本文中,一个钱包指的是单一的以太坊地址,

ganache在启动时会列出10个钱包地址以及其对应的私钥。例如:

(0) 11af9e9f87c53beedfe7eb3f1e9b6e2592b382ab3ecd83a92a6c20cb0c885f63(1) 7cb8f9f70eac9aca70b514a9a8ebd36a3c2c4a9d28dc9534d6042914ed814161(…)

在这个教程中,我们将使用0#地址,即:

11af9e9f87c53beedfe7eb3f1e9b6e2592b382ab3ecd83a92a6c20cb0c885f63

部署好的合约也类似:

2_deploy_contracts.js=====================Deploying 'SimpleStorage'---------> transaction hash:   0x18f4dffba426a2cd63bddf5b8741f0708729515d178d59df0b2a43c5aa85e646> Blocks: 0           Seconds: 0> contract address:   0x3C4c39bd5a928bc19A981c85A00543EEB9f7C795> account:             0x169C8C361e1CC394C3FFefa52FcaB91704cde2b2> balance:             99.99147618(…)

在上面的输出中,注意contract address部分,表示合约的部署地址,即:

contract-address: 0x3C4c39bd5a928bc19A981c85A00543EEB9f7C795

3、智能合约相关工具安装

我们首先需要安装solidity智能合约编译器:

$ npm install -g solc

然后从这里下载web3j命令行工具,解压并设置PATH环境变量,以便可以在任何目录调用。

4、合约的java封装类

首先编译合约并生成java封装类:

$ solc .sol -bin -abi -optimize -o /$ web3j solidity generate -b /path/to/.bin \        -a /path/to/.abi \        -o /path/to/src/main/java \        -p com.your.organisation.name

5、在Java代码中调用合约

现在我们可以调用合约了:

public class App{   // change contract-address   private static String contractAddress = contract-address;   // main method   public static void main(String[] args) {       // instantiate web3j       Web3j web3 = Web3j.build(new          HttpService("http://localhost:9545/"));       Credentials credentials = Credentials.create(wallet-address);       // instantiate the contract       SimpleStorage contract = SimpleStorage.load(           contractAddress, web3, credentials, new DefaultGasProvider()       );       // say hello       System.out.println("Welcome " + credentials.getAddress());       // interact with the contract       try {           BigInteger currentValue;           // get value           currentValue = contract.get().send();           System.out.println(currentValue.toString());           // change value           contract.set(new BigInteger("1")).send();           // get value           currentValue = contract.get().send();           System.out.println(currentValue.toString());       } catch (Exception e) {           e.printStackTrace();       }   }}

上面的代码首先用节点URL来初始化Web3j实例,然后使用钱包地址私钥创建一个账户身份凭证对象,并使用合约地址初始化合约,最后调用合约的方法。

"Java如何调用以太坊智能合约"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

合约 地址 智能 以太 钱包 开发 节点 封装 代码 内容 工具 开发包 教程 更多 知识 面的 学习 生成 编译 输出 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 售后维修服务器周记 求生之路2怎么用官方服务器 果洛软件开发解决方案 除了云服务器还有什么软件 中国工业数据库筛选方法 网络安全情报分析具体做什么 云服务器跨云管理 失落的方舟美服服务器加载不出来 群晖 音乐流媒体服务器 共上网络安全课观后感 北京特色软件开发厂家报价 中国计算机及网络安全中心 注意网络安全用英语作文 郑州网络安全法 网络安全国家安全案例 浙江特种网络技术分类价目表 朝鲜语软件开发人员 软件开发者全球国家排名 全球最厉害的网络安全公司 电网网络安全宣传报道 小爱查网络安全手抄报 软件开发 开工资料 全面促进网络安全保护 广东通用软件开发代理价格 手机怎么设置云服务器地址 数据库三级抽象是什么意思 网络安全小视频手抄报 获取数据库中所有表名 芜湖比较好的软件开发公司 如何查看mqtt服务器ip
0