+
82
-

js版本的区块链技术有吗?

最近区块链很火,有没有js版本区块链技术的实现,想学习下

高手回复

+
2
-

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>BFW DEMO JS PAGE</title>
<script id="bfwone" data="dep=jquery.17|crypto-js-3.1.9-1/crypto-js" src="http://repo.bfw.wiki/bfwrepo/js/bfwone.js"></script>
<script>
class Block {

constructor(index, timestamp, data, previousHash = '') {

this.index = index;

this.previousHash = previousHash;

this.timestamp = timestamp;

this.data = data;

this.hash = this.calculateHash();

}

calculateHash() {

return CryptoJS.SHA256(this.index + this.previousHash + this.timestamp + JSON.stringify(this.data)).toString();

}

}
class Blockchain {

constructor() {

this.chain = [this.createGenesisBlock()];

}

createGenesisBlock() {

return new Block(0, "011/01/2019", "bfw init block", "0");

}

getLatestBlock() {

return this.chain[this.chain.length - 1];

}

addBlock(newBlock) {

newBlock.previousHash = this.getLatestBlock.hash;

newBlock.hash = newBlock.calculateHash();

this.chain.push(newBlock);

}

isChainValid() {

for (let i = 1; i < this.chain.length; i++) {

const currentBlock = this.chain[i];

const previousBlock = this.chain[i-1];

if (currentBlock.hash !== currentBlock.calculateHash()) {

return false;

}

if (currentBlock.previousHash !== previousBlock.hash) {

return false;

}

}

return true;

}

}
bready(function() {
let bfwcoin = new Blockchain();

bfwcoin.addBlock(new Block(1, "1/12/2019", {
amount: 4
}));

bfwcoin.addBlock(new Block(2, "2/12/2019", {
amount: 8
}));
// 检查是否有效(将会返回true)
console.log('区块链是否有效? ' + bfwcoin.isChainValid());
// 现在尝试操作变更数据
bfwcoin.chain[1].data = {
amount: 100
};
console.log(bfwcoin);
// 再次检查是否有效 (将会返回false)
console.log("区块链是否有效? " + bfwcoin.isChainValid());

});


</script>


</head>
<body>

</body>
</html>


by ppzhuzhu
我知道答案,我要回答