在网络上共享对象(区块链)

时间:2018-04-20 13:19:48

标签: java share distributed blockchain mining

我创建了一个简单的"区块链"在Java上。

Blockchain类是一个ArrayList<>块。这些块由:hashcode,前一个hashcode和nonse计数器组成。创建块时,会将其添加到区块链中,但在解析算法(SHA256)之前,无法分配其他块。如果哈希码是唯一的,则会成功添加或删除块。

我现在要做的是在网络上共享区块链,因此SHA256算法不会被本地机器解析,而是由网络上的用户解决(对于exaple,比特币挖掘)。

所以我的问题是:如何在网络中的不同机器上共享同一个对象?

您可以从Git下载代码:

Blockchain code

1 个答案:

答案 0 :(得分:3)

这是一个复杂的问题。有不同的方法,但通常一个节点将保留它所连接的节点列表,并将通知它们进行更改。一旦他们开始沟通,你应该开始担心链中的差异(例如,如果一个节点上的链与另一个节点上的链不同,但两者都是有效的)。对于比特币,它需要较长的一个作为有效。

这是一个非常广泛的问题,答案非常广泛。您可以在此处使用websockets查看区块链的简单javascript实现:

https://github.com/lhartikk/naivechain

或者一个简单的python实现: https://github.com/sMustafov/Blockchain/blob/master/blockchain.py

或者这是我在Java中写的一个:)虽然不完整,但只是做了一些培训和想法

https://github.com/veso1001/blockchain/tree/master/src/main/java/imbachain