以太坊Ethereum应用HelloWorld开发及测试币申请
阐明一个事:以太坊和比特币都不是区块链,它们是基于区块链的一种应用,区块链可以理解为各种技术的组合或者一直新型的“数据库”。想要了解更多,可以去度娘下载相关的白皮书蓝皮书看看,这里有些pdf的白皮书可以下载观摩。
说明:以下样例和代码操作都是基于Java版的钱包应用来描述的。
标签:以太坊钱包开发,区块链钱包开发,ethereum钱包开发,web3j接口使用,以太坊测试网络,获取以太坊测试
一 测试网络
什么是测试网络?以太坊为了方便智能合约的开发、学习和测试,开启了一条全新的区块链,与主网络特性相同,但测试网络中的以太币价值更低,也更容易得到。这样不至于在主网络上开发出现 BUG 造成以太币的损失。当然我们也可以搭建私有的测试网络,不过区块链的去中心化特点,需要更多的节点运行才能达到理想效果,好在以太坊有公开的测试网络,而我们接入也更容易。
目前提供的测试网络:Ropsten、Rinkeby、Kovan、Morden(已下架),其中使用较多是的是Rinkeby和Kovan。
二 涉及框架或模块(Java)
web3j , gtihub: https://github.com/web3j/web3j
web3j是使用java语言开发用于和以太坊网络进行交互的类库。它是直接使用http请求以太坊的API,学习及使用的成本比较低。
另外还有js的版本:https://github.com/ethereum/web3.js,可自行参考。
三 使用样例(部分代码)
maven依赖
<dependency>
<groupId>org.web3jgroupId>
<artifactId>abiartifactId>
<version>3.3.1version>
dependency>
<dependency>
<groupId>org.web3jgroupId>
<artifactId>coreartifactId>
<version>3.3.1version>
dependency>
配置文件
# web3j - ethereum - settings
# Main Ethereum Network:
# https://mainnet.infura.io/
# Test Ethereum Network (Rinkeby):
# https://rinkeby.infura.io/
# Test Ethereum Network (Kovan):
# https://kovan.infura.io/
eth.web3j.profile=kovan
eth.web3j.profile.api.token=GZUqwBFcfDaniSWXwbJD
eth.web3j.http.service=https://${eth.web3j.profile}.infura.io/${eth.web3j.profile.api.token}
此处根据自己的环境灵活配置环境,可以使用各个环境web3j的实例。
@Bean
Web3j web3j() {
Web3j web3j = Web3j.build(new HttpService(“${ eth.web3j.http.service}”));
return web3j;
}
//# 创建轻量级钱包(获取地址)
String walletFile = WalletUtils.generateLightNewWalletFile("123456", new File("."));
返回的是json格式文件,里面包含了地址,同时这个文件就是keystore。
//# 查询账户余额,address是0x开头地址
EthGetBalance ethGetBalance =
web3j.ethGetBalance(address, DefaultBlockParameterName.LATEST).send();
//# 转账,返回交易hash
String toAddress = "0xadress"; 转出地址
Double amount = 1D; //# 转账数目,单位在下面指定Convert.Unit.ETHER
String privateKey = "";//# 私钥(只有自己知道)
Credentials keys = Credentials.create(privateKey);
TransactionReceipt transactionReceipt = Transfer.sendFunds(web3j, keys, toAddress, BigDecimal.valueOf(amount), Convert.Unit.ETHER).send();
四 网站查看余额及交易记录
Kovan环境:
https://kovan.etherscan.io/address/0x3d95eaEB3c1A2017FE9c90E760906D4624d71318
Rinkeby环境:
https://rinkeby.etherscan.io/address/0xcab0FC2c49D2C12e49571019977B518Fcbf4109a
五 密钥普及
公钥和私钥成对出现
公开的密钥叫公钥,只有自己知道的叫私钥
用公钥加密的数据只有对应的私钥可以解密
用私钥加密的数据只有对应的公钥可以解密
如果可以用公钥解密,则必然是对应的私钥加的密
如果可以用私钥解密,则必然是对应的公钥加的密
Keystore+密码=银行卡号+银行卡密码
Keystore ≠ 私钥
Keystore+密码=私钥
Keystore不是私钥,常见于以太坊钱包,一般你创建以太坊钱包后,会让你备份Keystore,输入密码,会出现一串字符这就是 Keystore。Keystore的本质是加密后的私钥,Keystore必须配合你的钱包密码来使用。用途:在导入钱包的时候,选择官方钱包,输入 Keystore 和密码,就能进入钱包了。需要说明的是,这和用私钥或助记词导入钱包不一样,用私钥或助记词导入钱包,不需要知道密码。
私钥:私钥可以计算出公钥,公钥可以经过一系列数字签名生成钱包地址。所以, 私钥的持有者才是数字货币的持有者。你可以把它看成是你的银行卡密码。
公钥:它是密码学上的概念,由私钥推算出来。公开密钥的算法属于不对称加密算法,该算法拥有两个密钥:公钥和私钥。使用私钥加密的数据可以用公钥解密,反之亦可。通过公钥可以算出钱包地址。
钱包地址:地址由公钥转换而来,地址被用于接收数字货币,一个地址上收到数字货币后,只有使用该地址所对应的私钥才能花费这个地址上的钱。可以把钱包地址想象成一个银行卡号,别人可以给你的钱包地址打钱。一般地址和私钥是成对出现的,他们的关系就像银行卡号和密码。地址就像银行卡号一样用来记录你在该钱包地址上存有多少币。我们可以简单的把钱包地址理解成为银行卡号,该钱包地址的私钥理解成为所对应银行卡号的密码。只有你在知道银行密码的情况下才能使用银行卡号上的钱。所以,在使用钱包时请保存好你的地址和私钥。
六 获取测试币
除了开发过程使用,其他时候没有任何实际价值,表当真^_^, 谁认真谁输.....
6.1 Kovan环境的测试币申请
https://gitter.im/kovan-testnet/faucet,使用gethub账户,gitlab账户,twitter账户登录可以申请3个ether。
6.2 Rinkeby环境的测试币申请
https://faucet.rinkeby.io/ , 它Rinkeb水龙头,但是,这里需要科学上墙~~~。最好用的twitter账户直接登录之后,推送一条带有你地址的消息,复制连接到水龙头网站即可获取测试币,很土豪,一个星期可以获取十多个ether。具体图文操作提示可以度娘,这里不再截图排版。
写的不好,不喜勿喷! 谢谢~~
如果觉得申请比特币测试币麻烦,可以加我联系方式,获取有偿测试币~~~
企鹅号: 631722350
邮箱: [email protected]