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

Share an object (blockchain) on a network

我在 Java 上创建了一个简单的 "blockchain"。

区块链 class 是块的 ArrayList<>。这些块由:哈希码、先前的哈希码和废话计数器组成。当一个块被创建时,它被添加到区块链中,但是,直到算法 (SHA256) 被解析,它是不可能分配其他的。如果哈希码是唯一的,则添加成功或删除块。

我现在想做的是在网络上共享区块链,所以SHA256算法不会由本地机器解析,而是由网络上的用户(例如比特币挖矿)解析。

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

您可以从 Git 下载代码:

Blockchain code

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

这是一个非常宽泛的问题,有着非常宽泛的答案。您可以在此处查看使用 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