区块链最近IT世界的流行语之一。这项有关数字加密货币的技术,并与比特币一起构成了这个热门的流行趋势。它是去中心化的,不可变的分块数据结构,这是可以安全连接和使用的密码算法。在这种结构中的每一区块通常包含前一个区块的加密哈希,一个时间戳,和交易数据。区块链是点对点管理网络的,并在加入每一个新的块之前进行节点间通信的验证。这是关于区块链的部分理论。简而言之,这是一种技术,它允许我们使用一个去中心化的方式管理双方的交易。现在,问题是我们如何在我们的系统中实现它。
于是以太坊来了。这是一个Vitarik Buterin提供的去中心化的平台,可以通过脚本语言创建开发应用。它的想法是从比特币获得的,并由新的叫Ether即以太坊币的加密数字币驱动。今天,以太币是继比特币之后的第二大加密数字货币。以太坊技术的核心是EVM(以太坊虚拟机),它可以被视为类似于Java虚拟机,而且用一种完全去中心化的节点网络。基于java世界实现以太坊交易我们使用web3j库。这是一个轻量级的、响应式、类型安全的java和Android库结合了以太坊区块链节点。更多的细节可以在这里找到web3j.io中文版。
![11831773-c0a5b75da215f431.png](https://i-blog.csdnimg.cn/blog_migrate/919fab0867ee1639d9d2c9cfbe79bdde.webp?x-image-process=image/format,png)
1.本地运行
虽然有许多针对区块链文章,但以太坊相关的网络内容中不容易找到一个解决方案描述如何准备在本地机器使用实例运行以太坊。值得一提的是,一般有两种最基本的客户端可以使用:Geth和Parity。原来,我们可以很容易地在本地使用Docker容器运行节点。默认情况下,连接节点的以太坊主网络(公有链)。或者,你可以将它连接到测试网络或Rinkeby网络。但开始最好的选择就是运行在设置了开发参数(--dev)的开发模式下,并在Docker容器中运行命令。
下面的命令启动Docker容器开发模式在端口8545调用以太坊RPC API。
$ docker run -d --name ethereum -p 8545:8545 -p 30303:30303 ethereum/client-go --rpc --rpcaddr "0.0.0.0" --rpcapi="db,eth,net,web3,personal" --rpccorsdomain "*" --dev
在开发模式中运行该容器时,一个非常好的消息是,在默认的测试帐户上有大量的Ether。在这种情况下,你不必挖掘任何Ether,便能够开始测试。超级棒!现在,让我们创建一些其他的测试帐号,并做一些检查。为了实现这一点,我们需要在容器内部运行Geth的交互式JavaScript控制台。
$ docker exec -it ethereum geth attach ipc:/tmp/geth.ipc
2.以太坊节点使用JavaScript控制台管理
运行JavaScript控制台可