我在Java上创建了一个简单的“区块链”.
区块链类是ArrayList<>.的块.这些块由以下各项组成:哈希码,先前的哈希码和nonse计数器.创建一个块时,会将其添加到区块链中,但是,在解析算法(SHA256)之前,无法分配其他块.如果哈希码是唯一的,则成功添加该哈希码或删除该块.
我现在想做的是在网络上共享区块链,因此SHA256算法不会由本地计算机解决,而是由网络上的用户解决(例如,比特币挖掘).
所以我的问题是:如何在网络中的不同计算机上共享同一对象?
您可以从Git下载代码:
解决方法:
这是一个复杂的问题.有不同的方法,但是通常一个节点也会保留一个已连接节点的列表,并会通知它们更改.同样,一旦他们开始沟通,您就应该开始担心链中的差异(例如,如果一个节点上的链与另一节点上的链不同,但两者都有效).对于比特币,需要更长的一个才有效.
这是一个非常广泛的问题,答案也很广泛.您可以在此处使用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