Olá tudo bem ? eu estou aprendendo a programar uma blockchain (bem simples) mas eu estou tendo um problema no meu codigo e não consigo achar o erro, se alguem puder me ajudar eu agradeço !
1) o problema esta na hora de criar um novo hash, ao tentar passar um novo hash para um novo bloco ele esta passando o mesmo hash (anterior) e sinceramente não vejo o erro
segue o codigo:
const SHA256 = require('crypto-js/sha256');
class Block {
constructor(index, timestamp, previousHash, data){
this.index = index;
this.timestamp = timestamp;
this.previousHash = previousHash;
this.data = data;
this.hash = this.calculateHash();
}
calculateHash(){
return SHA256(this.index, this.timestamp, this.previousHash, JSON.stringify(this.data)).toString();
}
}
class Blockchain{
constructor(){
this.chain = [this.createGenesisBlock()];
}
createGenesisBlock(){
return new Block(0, '17/02/1999',0,'Genesis block');
}
getLatestBlock(){
return this.chain[this.chain.length -1];
}
addBlock(newBlock){
newBlock.previousHash = this.getLatestBlock().hash;
newBlock.hash = newBlock.calculateHash(); /*<--deveria passar novo hash */
this.chain.push(newBlock);
}
}
var test = new Blockchain()
test.addBlock(new Block(2,'18/02/2002',{amount :55}));
test.addBlock(new Block(3,'19/02/2002',{amount :2789}));
console.log(JSON.stringify(test, null, 4));
Na hora de rodar no console o bloco 3 sai com o mesmo hash do 2 :
C:\Users\Felipe\Desktop\blockchain\aitak_chain>node main
{
"chain": [
{
"index": 0,
"timestamp": "17/02/1999",
"previousHash": 0,
"data": "Genesis block",
"hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"index": 2,
"timestamp": "18/02/2002",
"previousHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"hash": "4ea5c508a6566e76240543f8feb06fd457777be39549c4016436afda65d2330e"
},
{
"index": 3,
"timestamp": "19/02/2002",
"previousHash": "4ea5c508a6566e76240543f8feb06fd457777be39549c4016436afda65d2330e",
"hash": "4ea5c508a6566e76240543f8feb06fd457777be39549c4016436afda65d2330e"
}
]
}
C:\Users\Felipe\Desktop\blockchain\aitak_chain>
Se alguem puder ajudar eu agradeço ! obrigado !