java 调用区块链 发布和调用智能合约
java连接区块链 很简单 ,调用智能合约要麻烦一些.
先说连接 区块链查询数据.
1 maven 项目导入 web3j 的依赖.
<dependency>
<groupId>org.web3j</groupId>
<artifactId>core</artifactId>
<version>4.5.0</version>
</dependency>
2 需要 链上开启 rpc 端口 . 不开启 本地可以通过 指定 geth.ipc 连接.
package com.cxygg.testweb3j; import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameterName;
import org.web3j.protocol.core.methods.response.EthGetBalance;
import org.web3j.protocol.http.HttpService;
import org.web3j.utils.Convert; public class Web3jDemo2 { private static final String RPC_URL = "http://192.168.1.199:9001";
private static final Web3j web3j = Web3j.build(new HttpService(RPC_URL)); public static void main(String[] args) throws Exception { getAge(); } public static void getAge() throws Exception {
// 这里要填写真实的钱包地址
EthGetBalance ethGetBalance = web3j
.ethGetBalance("0xbcbbd4e9bbf41a149652da55c42a4b28b6e39599", DefaultBlockParameterName.LATEST).send(); if (ethGetBalance != null) {
System.out.println("余额:" + Convert.fromWei(ethGetBalance.getBalance().toString(), Convert.Unit.ETHER));
} } }

发布和调用智能合约部分
调用智能合约通过 abi 文件 和 合约二进制文件生成 java的 代理类,然后调用。
truffle 和 zeppelin-solidity 的使用
truffle是一个基于Javascript开发的一套智能合约开发框架,使用Solidity语言编写合约。truffle有一套自动的项目构建机制
1 安装 npm
brew install npm
2 安装 truffle
npm install -g truffle
3 下载 zeppelin-solidity 包
npm install zeppelin-solidity
4 编写合约
建立项目 truffle unbox 项目名 ,编写合约
5 得到bin 文件和 abi 文件。
6 使用 bin文件 和 abi 文件生成Java 对象.( 需要安装 web3j )
web3j solidity generate -b <编译的bin文件地址> -a <编译的abi文件地址> -o <输出目录> -p <java包名>
web3j solidity generate -b ./tokenExchange.bin -a .\tokenExchange.abi -o ./ -p data
生成了 Java对象 ,结合 Web3j 就可以发布合约和调用合约了。
备注:我使用的版本: 版本不同可能有奇怪的问题
appledeMacBook-Pro:~ apple$ truffle version
Truffle v5.0.36 (core: 5.0.36)
Solidity v0.5.8 (solc-js)
Node v12.10.0
Web3.js v1.2.1
java 调用区块链 发布和调用智能合约的更多相关文章
- 区块链学习5:智能合约Smart contract原理及发展历程科普知识
☞ ░ 前往老猿Python博文目录 ░ 一.智能合约的定义 通俗来说,智能合约就是一种在计算机系统上,当一定条件满足的情况下可被自动执行的合约,智能合约体现为一段代码及其运行环境.例如银行信用卡的自 ...
- geth建立私链以及发布第一个智能合约
原博客地址 https://blog.csdn.net/qq_36124194/article/details/83686740 geth建立私链 初始化genesis.json文件 geth --d ...
- java中使用axis发布和调用webService及dom4j解析xml字符串
工作中需要调用webService服务,这里记录一下如何在java中发布和调用webService. 需要的jar包: webService服务端: import javax.jws.WebMetho ...
- java开发区块链只需150行代码
本文目的是通过java实战开发教程理解区块链是什么.将通过实战入门学习,用Java自学开发一个很基本的区块链,并在此基础上能扩展如web框架应用等.这个基本的java区块链也实现简单的工作量证明系统. ...
- JAVA版本区块链钱包核心代码
Block.java package com.ppblock.blockchain.core; import java.io.Serializable; /** * 区块 * @author yang ...
- 使用web3+solc编译发布以太坊智能合约
一.环境安装: 1.安装web3工程:npm install web3 2.安装solc工程:npm install solc二.在node环境中使用 先引用所需环境: var fs = requir ...
- 用Java实现简单的区块链
用 Java 实现简单的区块链 1. 概述 本文中,我们将学习区块链技术的基本概念.也将根据概念使用 Java 来实现一个基本的应用程序. 进一步,我们将讨论一些先进的概念以及该技术的实际应用. 2. ...
- android和java以太坊开发区块链应用使用web3j类库
如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建.钱包创建.交易转账,交易与状态.智能合约开发与交互.过滤器和 ...
- 一、Bitcoin比特币与BlockChain区块链技术
一.比特币历史 2008 年 10 月 31 日,一个网名叫中本聪(英文翻译过来滴)的家伙发布比特币唯一的白皮书:<Bitcoin:A Peer-to-PeerElectronic Cash S ...
随机推荐
- 《转》python 10 集合
自 http://www.cnblogs.com/BeginMan/p/3160565.html 一.目录 1.集合概述 2.关于集合的操作符.关系符号 3.集合的一系列操作(添加.更新.访问.删除) ...
- eclipse新建maven项目和聚合项目
1.new maven project : next 2.勾选 create a simple project : next 3.Group Id:项目的包路径 如com.jiayou.zjl, ...
- Hive系统架构
- SpringBoot Redis 订阅发布
一 配置application.yml spring: redis: jedis: pool: max-active: 10 min-idle: 5 max-idle: 10 max-wait: 2 ...
- LeetCode第二题—— Add Two Numbers(模拟两数相加)
Description: You are given two non-empty linked lists representing two non-negative integers. The di ...
- 阿里云 Aliplayer高级功能介绍(三):多字幕
基本介绍 国际化场景下面,播放器支持多字幕,可以有效解决视频的传播障碍难题,该功能适用于视频内容在全球范围内推广,阿里云的媒体处理服务提供接口可以生成多字幕,现在先看一下具体的效果: WebVTT格式 ...
- kubernetes istio之流量管理
1.部署 Bookinfo 应用 要在 Istio 中运行这一应用,无需对应用自身做出任何改变.我们只要简单的在 Istio 环境中对服务进行配置和运行,具体一点说就是把 Envoy sidecar ...
- C/C++语言实现单链表(带头结点)
彻底理解链表中为何使用二级指针或者一级指针的引用 数据结构之链表-链表实现及常用操作(C++篇) C语言实现单链表,主要功能为空链表创建,链表初始化(头插法),链表元素读取,按位置插入,(有序链表)按 ...
- java基本类型映射表
- 浅谈简单实现file控件的图片预览,裁剪和上传。
1.图片预览之FileReader对象 FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用File或Blob对象指定要读取的文件或数据 ...