区块连是由一个个区块组成,那么在编写区块连之前要先把区块逻辑,下面是区块编辑的简单Java 程序,原程序来自英文原编 Lauri Hartikka
对编程感兴趣的可以参考下
第一个逻辑步骤是决定块结构。
这个块中必须能找到前一个块的哈希值(hash),以此来保证整条链的完整性。class Block {
constructor(index, previousHash, timestamp, data, hash) {
this.index = index;
this.previousHash = previousHash.toString();
//这一步很重要,起到区块链接功能
this.timestamp = timestamp;
//输入的时间
this.data = data;
//用户提供的资料
this.hash = hash.toString();
}
}
块哈希var calculateHash = (index, previousHash, timestamp, data) => {
return CryptoJS.SHA256(index + previousHash + timestamp + data).toString();
};
为了保存完整的数据,必须哈希区块。SHA-256会对块的内容进行加密,
记录这个值应该和“挖矿”毫无关系,因为这里不需要解决工作量证明的问题。
块的生成var generateNextBlock = (blockData) => {
var previousBlock = getLatestBlock();
var nextIndex = previousBlock.index + 1;
var nextTimestamp = new Date().getTime() / 1000;
var nextHash = calculateHash(nextIndex, previousBlock.hash, nextTimestamp, blockData);
return new Block(nextIndex, previousBlock.hash, nextTimestamp, blockData, nextHash);
};
要生成一个块,必须知道前一个块的哈希值,然后创造其余所需的内容(= index, hash, data and timestamp)。
块的data部分是由用户所提供,这样一个签单的块就编写完了。