java程序员使⽤web3j进⾏以太坊开发详解
如何使⽤web3j为Java应⽤或Android App增加以太坊区块链⽀持,教程内容即涉及以太坊中的核⼼概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤器和事件等,同时也详细说明如何使⽤web3j提供的API开发接⼝与以太坊进⾏交互,是java⼯程师学习以太坊应⽤开发的不⼆选择。怎么用java编写app软件
以太坊概述
以太坊是备受关注的区块链,它基于密码学技术和P2P通信技术 构建了⼀个去中⼼化的平台,所有的交易同步保存在每个节点中, 通过将区块单向级联成链,以太坊有效的保证了交易的不可篡改:
智能合约平台
以太坊是第⼀个实现了虚拟机的区块链,因此为智能合约 - Smart Contract - 的运⾏提供了良好的⽀持环境。也正因为这个原因,以太坊被称为区块链 2.0,以区别于⽐特币代表的以数字加密货币为核⼼特征的区块链1.0。
可以将智能合约理解为机器之间的合同约定,在满⾜⼀定条件时⾃动 执⾏约定好的逻辑,例如在保险理赔流程中,如果理赔条件满⾜就⾃动 将赔偿⾦释放给出险⼈,这个流程就可以使⽤智能合约来实现。
有多种语⾔可以开发以太坊智能合约,但⽬前最常⽤的是类似于JavaScript的 Solidity语⾔。本课程中将采⽤Solidity讲解智能合约的开发。
JSON RPC与web3j
如果我们希望构造⼀个去中⼼化应⽤(DApp),除了智能合约的开发, 通常还需要使⽤其他开发语⾔为⽤户提供操作智能合约的⽤户接⼝,例如 开发⼀个⽹页、⼀个⼿机App或者⼀个桌⾯应⽤。这些代码都需要与以太坊进⾏交互。
以太坊规定了每个节点需要实现的JSON RPC API 应⽤开发接⼝,该接⼝是传输⽆关的,应⽤程序可以通过HTTP、websocket或IPC等多种 通信机制来使⽤该接⼝协议操作以太坊节点:
理论上你可以使⽤任何语⾔基于JSON RPC接⼝开发出以太坊之上的 去中⼼化应⽤,不过为了提⾼开发效率,更好的办法是 使⽤特定语⾔的JSON RPC封装库,这些库封装了JSON RPC的协议细节, 有助于开发⼈员聚焦在业务逻辑的实现上。
是⼀个轻量级的⽤于集成以太坊功能的Java开发库,它是Java版本的以太坊JSON RPC 接⼝协议封装实现,如果需要将你的Java应⽤或Android应⽤接⼊以太坊,⽤web3j就对了。
web3j体系概述
web3j的功能组织在不同的包中,下图展⽰了org.web3j主要包之间的依赖关系:
core:JSON RPC协议的封装主要由包实现,它依赖于pto包提供的密钥与签名相关的功能,以
及org.web3j.abi包提供的java/solidity类型映射⽀持。
console:sole包实现了⼀个可以单独运⾏的命令⾏程序web3j,我们将使⽤它来 ⽣成solidity合约的Java封装类,其
中,degen包实现了从abi到java封装类的代码⽣成。
节点相关:org.web3j.infura包封装了对Infura公共节点旳http访问服务接⼝, h和org.web3j.parity则分别封装了这两种常⽤以太坊节点软件旳管理接⼝。
本课程的⽬的是帮助java⼯程师快速掌握使⽤web3j开发以太坊应⽤的技能,因此 主要以web3j的开发接⼝为主线来展开课程内容,同时穿插讲解以太坊的⼀些基本 概念,例如:账户、交易和智能合约的开发等。
课程内容概述
1. hello,web3j 将通过⼀个简单的java应⽤的开发来讲解使⽤web3j进⾏以太坊应⽤开发的最简流程,通过这⼀部分的学习,你就可以在
⾃⼰的java应⽤中引⼊以太坊⽀持了。
2. 账户管理 将详细介绍web3j提供的账户管理接⼝。如果你对开发钱包应⽤(中⼼化/去中⼼化)感兴趣,这部分内容会有很⼤的帮助。
web3j创建账户,创建钱包,转账特别是转账等丰富的进⾏交易的功能。
3. 状态与交易 主要讲解web3j提供的交易操作接⼝,同时也介绍⼀些重要的概念,例如状态、裸交易、gas等。这部分内容将帮助你理
清java应⽤与以太坊交互的⼤多数问题。
4. 智能合约 将通过⼀个投票合约的开发、编译、代码⽣成、部署与交互的完整流程,讲解使⽤web3j操作solitiy智能合约的⽅法。
5. 过滤器与事件 主要讲解以太坊的通知机制和web3j的响应式封装接⼝。
该为每个知识点都提供了相应的预置代码,你可以在在线实验环境的~/repo⽬录下查看。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论