我创建了一个简单的"区块链"在Java上。
Blockchain类是一个ArrayList<>块。这些块由:hashcode,前一个hashcode和nonse计数器组成。创建块时,会将其添加到区块链中,但在解析算法(SHA256)之前,无法分配其他块。如果哈希码是唯一的,则会成功添加或删除块。
我现在要做的是在网络上共享区块链,因此SHA256算法不会被本地机器解析,而是由网络上的用户解决(对于exaple,比特币挖掘)。
所以我的问题是:如何在网络中的不同机器上共享同一个对象?
您可以从Git下载代码:
答案 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