• Stars
    star
    239
  • Rank 168,763 (Top 4 %)
  • Language
    Java
  • Created over 7 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

以太坊开发 HelloWorld for Java

以太坊开发 HelloWorld for Java

😄 更新版本,支持插件。

Geth下载

  1. 官方下载: https://ethereum.github.io/go-ethereum/downloads/
  2. 国内镜像: https://ethfans.org/wikis/Ethereum-Geth-Mirror
  3. 其他安装方式: https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum
***** CentOS *****
$ yum -y update
$ yum -y install golang
$ git clone https://github.com/ethereum/go-ethereum
$ cd go-ethereum/
$ make geth
$ ls -al build/bin/geth
如果出错,尝试命令:
$ mv /usr/local/include/iconv.h /usr/local/include/iconv.h.back

初始以太坊

$ geth init genesis.json
自动生成 ~/.ethereum
.
├── geth
│   ├── chaindata
│   │   ├── 000001.log
│   │   ├── CURRENT
│   │   ├── LOCK
│   │   ├── LOG
│   │   └── MANIFEST-000000
│   └── lightchaindata
│       ├── 000001.log
│       ├── CURRENT
│       ├── LOCK
│       ├── LOG
│       └── MANIFEST-000000
├── history
└── keystore

启动以太坊

$ startup.bat # Windows
$ startup.sh # Linux

geth --rpc --rpcaddr "0.0.0.0" --rpcport 8545 --rpccorsdomain "*" --rpcapi "personal,db,eth,net,web3" --networkid 666666 console
--rpc Enable the HTTP-RPC server
--rpcaddr HTTP-RPC server listening interface (default: localhost)
--rpcport HTTP-RPC server listening port (default: 8545)
--rpccorsdomain Comma separated list of domains from which to accept cross origin requests (browser enforced)
--rpcapi API's offered over the HTTP-RPC interface (default: eth,net,web3)
--networkid 区块链ID-私链
--console 命令行模式

钱包

# 查询账户
> eth.accounts
# 创建账户
> personal.newAccount("123456") # 密码123456
# 查询余额
> eth.getBalance(eth.accounts[0])

挖矿

# 开始挖矿 (一个线程挖矿,多线程会很卡)
> miner.start(1)
# 停止挖矿
> miner.stop()

编写合约

  1. 中文文档 http://www.tryblockchain.org/
  2. 英文文档 https://solidity.readthedocs.io/
  3. 在线测试 https://remix.ethereum.org/

部署合约

  1. 方式一 - remix编译 + geth部署

alt text

# 解锁用户
> personal.unlockAccount(eth.account[0])
# 输入代码
> var helloworldContract = web3.eth.contract(......); var helloworld = helloworldContract.new(......)

console: INFO [MM-dd|HH:mm:ss] Submitted contract creation              fullhash=0x...... contract=0x......
  1. 方式二 - web3j ↓

Web3j 轻量级的以太坊开发库 for Java

alt text

  1. Web3j依赖:https://github.com/web3j/web3j/
<dependencies>
	<dependency>
		<groupId>org.web3j</groupId>
		<artifactId>core</artifactId>
		<version>4.5.11</version>
	</dependency>
</dependencies>
  1. Web3j插件:https://github.com/web3j/web3j-maven-plugin
<plugin>
    <groupId>org.web3j</groupId>
    <artifactId>web3j-maven-plugin</artifactId>
    <version>4.5.11</version>
    <configuration>
        <soliditySourceFiles/>
    </configuration>
</plugin>
  1. 运行插件:Plugins->web3j:generate-sources
resources/HelloWorld.sol ----> org.web3j.model.HelloWorld
  1. 部署合约:main/java/com/example/demo/HelloWorldDeploy.java
HelloWorld contract = HelloWorld.deploy(web3j, credentials, new DefaultGasProvider()).send();
System.out.println("getContractAddress : " + contract.getContractAddress());
// rewrite: contractAddress ----> application.properties
  1. 加载合约:main/java/com/example/demo/HelloWorldMain.java
HelloWorld contract = HelloWorld.load(Constants.ADDRESS, web3j, credentials, new DefaultGasProvider());
System.out.println("getContractAddress : " + contract.getContractAddress());
  1. 项目结构
--com.example.demo.util
----Constants.java 常量

--com.example.demo.test
----ClientVersionTest.java 版本
----TransferEthTest.java 转账
----TransactionGetTest.java Web3j 原生调用合约的 get 方法
----TransactionSetTest.java Web3j 原生调用合约的 set 方法
----FilterTest.java 过滤器

--com.example.demo.contract
----HelloWorldDeploy.java 部署合约
----HelloWorldMain.java 加载合约

Maven镜像

C:\Users\zhang\.m2\settings.xml

<mirrors>
    <mirror>
        <id>ali-maven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
    <mirror>
        <id>jboss-maven</id>
        <name>jBoss maven</name>
        <url>http://repository.jboss.org/nexus/content/groups/public</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>

错误信息

Usage of API documented as @since 1.8+

解决方法设置如下:

alt text

Error:java: Compilation failed: internal java compiler error

解决方法设置如下:

alt text

More Repositories

1

CrowdFunding

基于区块链(以太坊)技术的安全众筹系统
Java
197
star
2

Game-Tricks

Game Tricks !!!
C++
110
star
3

chatbot-aiml-webqa

基于人工智能标记语言 (AIML)和开放域问答(WebQA)的深度智能对话模型
Python
82
star
4

StrangeIoC

基于StrangeIoC的游戏框架,包含音效管理类、对象池、本地化、状态机、Protobuf等的使用
C#
64
star
5

detect-lstm-model

detect malicious URL and Request (Bi-LSTM、Bi-LSTM + CNN、CNN + Bi-LSTM、CNN + Bi-LSTM + CNN)
Jupyter Notebook
58
star
6

mall

SpringBoot + Layui 电子商城系统
Java
52
star
7

expert-system

专家系统作业——井字棋、推理机、决策树
Python
45
star
8

HTTPServer

基于Netty、JSON-RPC的分布式弱联网游戏服务端
Java
34
star
9

Egame

基于 Ethereum & IPFS 的去中心化游戏平台
JavaScript
22
star
10

captcha-adversarial-attack

基于深度学习的验证码破解、对抗与反对抗研究
Jupyter Notebook
22
star
11

picar_end2end

使用 树莓派小车 + 深度学习 完成自动驾驶
Jupyter Notebook
20
star
12

mall-monitor

电商平台价格监控
Python
13
star
13

NAT

内网穿透(1. 微信、支付宝支付 2. 小程序应用 3. 个人网站 ......)
Java
12
star
14

ebook-lsi-cnn

基于潜在语义索引(LSI)和卷积神经网络(CNN)的深度智能阅读模型
Jupyter Notebook
11
star
15

Keras-ImageNet

基于Keras预训练模型VGG16、ResNet50、InceptionV3,使用Python的HTTP框架Flask搭建图像识别接口
Python
9
star
16

Google-Translator

利用爬虫进行谷歌翻译(以*.srt字幕文件为例)
Python
6
star
17

ml-dl-analysis

数据挖掘作业——关联分析、分类、聚类
Jupyter Notebook
6
star
18

doc-similarity

①TF-IDF / LSI ③Doc2Vec DM / DBOW 文档相似度
Jupyter Notebook
5
star
19

chatbot-pi

聊天机器人、智能音箱(snowboy baidu tuling netease......)
Python
4
star
20

ATM

基于C++和MySQL++的ATM
C++
4
star
21

car_end2end

使用 Udacity(self-driving-car-sim) 模拟器完成自动驾驶
Jupyter Notebook
3
star
22

PyTorch-Study

PyTorch-Study
Python
2
star
23

auto-Christmas-hat

基于OpenCV自动给图片生成圣诞帽
Jupyter Notebook
2
star
24

Rootless

CGJ 主题是一棵树...
C#
2
star
25

img-similarity

基于感知哈希算法 dhash 判断两张图片相似情况
Jupyter Notebook
2
star
26

deep-vis

关于深度学习可视化
Jupyter Notebook
1
star
27

kong-gateway

docker + kong + konga + postgresql
Lua
1
star
28

adversarial-examples

关于深度学习对抗性
Jupyter Notebook
1
star
29

pay-demo

支付宝(授权+支付)
Java
1
star