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

我在Java上创建了一个简单的“区块链”.

区块链类是ArrayList<>.的块.这些块由以下各项组成:哈希码,先前的哈希码和nonse计数器.创建一个块时,会将其添加到区块链中,但是,在解析算法(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

上一篇:UVA1108 Mining Your Own Business


下一篇:clock tree 做长做短在icc和innovus的对比