如何使用 web3j 为 Java 应用或 Android App 增加以太坊区块链支持, 本教程内容即涉及以太坊中的核心概念, 例如账户管理包括账户的创建, 钱包创建, 交易转账, 交易与状态, 智能合约开发与交互, 过滤器和事件等, 同时也详细说明如何使用 web3j 提供的 API 开发接口与以太坊进行交互, 是 java 和 android(安卓)工程师学习以太坊应用开发 (DApp) 的不二选择.
以太坊概述
以太坊是备受关注的区块链, 它基于密码学技术和 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 的协议细节, 有助于开发人员聚焦在业务逻辑的实现上.
web3j http://xc.hubwiz.com/course/5b2b6e82c02e6b6a59171de2?affid=622csdn 是一个轻量级的用于集成以太坊功能的 Java 开发库, 它是 Java 版本的以太坊 JSON RPC 接口协议封装实现, 如果需要将你的 Java 应用或 Android 应用接入以太坊, 用 web3j 就对了.
web3j 体系概述
web3j 的功能组织在不同的包中, 下图展示了 org.web3j 主要包之间的依赖关系:
core:JSON RPC 协议的封装主要由包 org.web3j.core 实现, 它依赖于 org.web3j.crypto 包提供的密钥与签名相关的功能, 以及 org.web3j.abi 包提供的 java/solidity 类型映射支持.
console:org.web3j.console 包实现了一个可以单独运行的命令行程序 web3j, 我们将使用它来 生成 solidity 合约的 Java 封装类, 其中, org.web3j.codegen 包实现了从 abi 到 java 封装类的代码生成.
节点相关: org.web3j.infura 包封装了对 Infura 公共节点旳 http 访问服务接口, org.web3j.geth 和 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 目录下查看. 更详细的内容点击这里开始学习: Web3j 教程 http://xc.hubwiz.com/course/5b2b6e82c02e6b6a59171de2?affid=oschina624 , 主要介绍 java 和 android app 通过 web3j 进行区块链以太坊开发, 非常适合 java 和 android(安卓)程序员.
其他的以太坊相关内容推荐:
以太坊教程 http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=oschina624 , 主要介绍智能合约与 dapp 应用开发, 适合入门.
以太坊开发 http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6?affid=oschina624 , 主要是介绍使用 node.js,mongodb, 区块链, ipfs 实现去中心化电商 DApp 实战, 适合进阶
欢迎大家加群技术交流: 367685933 里面大牛很多
来源: http://www.jianshu.com/p/188c70e55576