一个简单的原型帮助理解区块链技术(哈希算法、链状数据结构、工作量证明机制)。
构建一个区块
区块是存储交易信息的数据结构。区块有6个属性:
- 索引值(Index)是区块在区块链中的位置;
- 时间戳(Timestamp)是区块的创建时间;
- 交易数据(Data)是区块中存储的数据信息;
- 前一区块哈希值(PreviousHash)是上一个区块的哈希值;
- 区块哈希值(Hash)是当前区块的哈希值;
- Nonce值是用来计算挖矿的哈希值。
/**
* 区块对象
*/
public class Block {
/**
* 区块索引值
*/
private Object index;
/**
* 时间戳
*/
private Object timestamp;
/**
* 区块交易数据
*/
private Object data;
/**
* 前一区块的哈希
*/
private String previousHash;
/**
* 区块哈希
*/
private String hash;
private long nonce = 0;
public Block(Object index, Object timestamp, Object data, String previousHash) {
this.index = index;
this.