织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 比特币 > 比特币资讯

区块链时代的世界宪章:代码即法律(5)

时间:2020-08-04 08:48来源:未知 作者:admin 点击:
vargetGenesisBlock=()={returnnewBlock(0,0,1465154705,mygenesisblock!!,816534932c2b7154836da6afc367695e6337db8a921823784c14378abed4f7d7);};varblockchain=[getGenesisBlock()]; ⑥ 确认区块完

vargetGenesisBlock=()=>{returnnewBlock(0,"0",1465154705,"mygenesisblock!!","816534932c2b7154836da6afc367695e6337db8a921823784c14378abed4f7d7");};varblockchain=[getGenesisBlock()];

⑥ 确认区块完整性。在任何时候,都必须确保一个区块或者一整条链的区块的完整性能够被确认。在从其他节点接收到新的区块,并需要决定接受或拒绝它们时,这一点尤为重要。

用代码表现为:

varisValidNewBlock=(newBlock,previousBlock)=>{if(previousBlock.index+1!==newBlock.index){console.log('invalidindex');returnfalse;}elseif(previousBlock.hash!==newBlock.previousHash){console.log('invalidprevioushash');returnfalse;}elseif(calculateHashForBlock(newBlock)!==newBlock.hash){console.log('invalidhash:'+calculateHashForBlock(newBlock)+''+newBlock.hash);returnfalse;}returntrue;

⑦ 选择下一个链。任何时候在链中都应该只有一组明确的块。万一出现冲突(例如,两个节点都生成72号块时,如图5-3所示),前面的主干区块链会选择有最大数目认同的链。

图5-3 不被承认的区块

varreplaceChain=(newBlocks)=>{if(isValidChain(newBlocks)&&newBlocks.length>blockchain.length){console.log('Receivedblockchainisvalid.Replacingcurrentblockchainwithreceivedblockchain');blockchain=newBlocks;broadcast(responseLatestMsg());}else{console.log('Receivedblockchaininvalid');

⑧ 节点控制。某种程度上,用户必须能够控制节点。这一点可以通过搭建一个HTTP服务器实现。代码如下:

varinitHttpServer=()=>{varapp=express();app.use(bodyParser.json());app.get('/blocks',(req,res)=>res.send(JSON.stringify(blockchain)));app.post('/mineBlock',(req,res)=>{varnewBlock=generateNextBlock(req.body.data);addBlock(newBlock);broadcast(responseLatestMsg());console.log('blockadded:'+JSON.stringify(newBlock));res.send();});app.get('/peers',(req,res)=>{res.send(sockets.map(s=>s._socket.remoteAddress+':'+s._socket.remotePort));});app.post('/addPeer',(req,res)=>{connectToPeers([req.body.peer]);res.send();});app.listen(http_port,()=>console.log('Listeninghttponport:'+http_port));};

至此,一个区块链世界已经创建完成,在短短两百多行代码中,这个数字世界的法律被建立,“代码即法律”得到了完美的诠释。

但值得注意的是,以上的代码只是最简单的一种代码架构,像比特币和以太坊的代码经过这么长时间的发展,已经发生了一些变化,它们要复杂得多,架构肯定也完整得多。 (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容