+
82
-

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

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

网友回复

+
3
-

这样才正确,楼主的代码有误

<!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="//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>

+
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>

我知道答案,我要回答