久久亚洲精品成人_国产精品欧美综合亚洲_亚洲va天堂va欧美ⅴa在线_91色视频在线观看_久久影院亚洲_一级黄色片播放_日韩av在线一区_精品一区二区在线看_老头吃奶性行交视频_日韩免费高清视频_天天操天天爽天天干_日本欧美在线视频

首頁 > 數據庫 > 文庫 > 正文

200行代碼輕松實現一個簡單的區塊鏈

2020-10-29 21:47:06
字體:
來源:轉載
供稿:網友

英文原文:Lauri Hartikka

區塊鏈的基礎概念很簡單:一個分布式數據庫,存儲一個不斷加長的 list,list 中包含著許多有序的記錄。然而,在通常情況下,當我們談到區塊鏈的時候也會談起使用區塊鏈來解決的問題,這兩者很容易混淆。像流行的比特幣和以太坊這樣基于區塊鏈的項目就是這樣。“區塊鏈”這個術語通常和像交易、智能合約、加密貨幣這樣的概念緊緊聯系在一起。

這就令理解區塊鏈變得不必要得復雜起來,特別是當你想理解源碼的時候。下面我將通過 200 行 JS 實現的超級簡單的區塊鏈來幫助大家理解它,我給這段代碼起名為 NaiveChain。

塊結構

第一個邏輯步驟是決定塊結構。為了保證事情盡可能的簡單,我們只選擇最必要的部分:index(下標)、timestamp(時間戳)、data(數據)、hash(哈希值)和 previous 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();  }}

塊哈希

為了保存完整的數據,必須哈希區塊。SHA-256會對塊的內容進行加密,記錄這個值應該和“挖礦”毫無關系,因為這里不需要解決工作量證明的問題。

var calculateHash = (index, previousHash, timestamp, data) => {  return CryptoJS.SHA256(index + previousHash + timestamp + data).toString();};

塊的生成

要生成一個塊,必須知道前一個塊的哈希值,然后創造其余所需的內容(= index, hash, data and timestamp)。塊的data部分是由終端用戶所提供的。

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);};

塊的存儲

內存中的Javascript數組被用于存儲區塊鏈。區塊鏈的第一個塊通常被稱為“起源塊”,是硬編碼的。

var getGenesisBlock = () => {  return new Block(0, "0", 1465154705, "my genesis block!!", "816534932c2b7154836da6afc367695e6337db8a921823784c14378abed4f7d7");}; var blockchain = [getGenesisBlock()];

確認塊的完整性

在任何時候都必須能確認一個區塊或者一整條鏈的區塊是否完整。在我們從其他節點接收到新的區塊,并需要決定接受或拒絕它們時,這一點尤為重要。

var isValidNewBlock = (newBlock, previousBlock) => {  if (previousBlock.index + 1 !== newBlock.index) {    console.log('invalid index');    return false;  } else if (previousBlock.hash !== newBlock.previousHash) {    console.log('invalid previoushash');    return false;  } else if (calculateHashForBlock(newBlock) !== newBlock.hash) {    console.log('invalid hash: ' + calculateHashForBlock(newBlock) + ' ' + newBlock.hash);    return false;  }  return true;};

選擇最長的鏈

任何時候在鏈中都應該只有一組明確的塊。萬一沖突了(例如:兩個結點都生成了72號塊時),會選擇有最大數目的塊的鏈。

var replaceChain = (newBlocks) => {  if (isValidChain(newBlocks) && newBlocks.length > blockchain.length) {    console.log('Received blockchain is valid. Replacing current blockchain with received blockchain');    blockchain = newBlocks;    broadcast(responseLatestMsg());  } else {    console.log('Received blockchain invalid');  }};

與其他結點的通信

結點的本質是和其他結點共享和同步區塊鏈,下面的規則能保證網絡同步。

當一個結點生成一個新塊時,它會在網絡上散布這個塊。
當一個節點連接新peer時,它會查詢最新的block。
當一個結點遇到一個塊,其index大于當前所有塊的index時,它會添加這個塊到它當前的鏈中,或者到整個區塊鏈中查詢這個塊。

如圖為當節點遵循前文所述協議時會發生的一些典型通信場景

我沒有采用自動發現peer的工具。peers的位置(URL)必須是手動添加的。

結點控制

在某種程度上用戶必須能夠控制結點。這一點通過搭建一個HTTP服務器可以實現。

var initHttpServer = () => {  var app = express();  app.use(bodyParser.json());   app.get('/blocks', (req, res) => res.send(JSON.stringify(blockchain)));  app.post('/mineBlock', (req, res) => {    var newBlock = generateNextBlock(req.body.data);    addBlock(newBlock);    broadcast(responseLatestMsg());    console.log('block added: ' + 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('Listening http on port: ' + http_port));};

用戶可以用下面的方法和結點互動:

  • 列出所有的塊
  • 用用戶提供的內容創建一個新的塊
  • 列出或者新增peers

下面這個Curl的例子就是最直接的控制結點的方法:

#get all blocks from the nodecurl http://localhost:3001/blocks

體系結構

需要指出的是,節點實際上展現了兩個web服務器:一個(HTTP服務器)是讓用戶控制節點,另一個(Websocket HTTP服務器)。

NaiveChain的主要組成部分

總結

創造 NaiveChain 的目的是為了示范和學習,因為它并沒有“挖礦”算法(PoS of PoW),不能被用于公用網絡,但是它實現了區塊鏈運作的基本特性。

你可以在 Github 庫中查看更多的技術細節。 https://github.com/lhartikk/naivechain

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
日本高清久久一区二区三区| 白白色 亚洲乱淫| 久久国产人妖系列| 亚洲成人三级在线| 精品国产乱码久久久久久浪潮| 亚洲第一中文字幕在线观看| 51色欧美片视频在线观看| 国产女同无遮挡互慰高潮91| 日韩中文字幕区一区有砖一区| 欧美无乱码久久久免费午夜一区| 国产尤物91| 国产一级特黄a高潮片| 国产成人欧美日韩在线电影| 久久精品视频亚洲| 99热一区二区三区| 国产精品一级二级| 亚洲爱爱爱爱爱| 国产卡一卡二在线| 精品亚洲乱码一区二区| 亚洲制服丝袜av| 97久久精品国产| 久久av无码精品人妻系列试探| 国产丝袜欧美中文另类| 国产精品一区二区久久久| 国产一级理论片| 在线视频欧美精品| 国产91xxx| 久久综合九色综合97_久久久| 性亚洲最疯狂xxxx高清| 国产一级av毛片| 中文字幕一区二区日韩精品绯色| 国产精品嫩草影院一区二区| 国产精品成人aaaa在线| 国产清纯在线一区二区www| 欧美黄色性视频| 天天干天天舔天天操| 在线亚洲高清视频| 在线观看日本www| 亚洲黄色尤物视频| 一区二区三区网址| 欧美在线视频不卡| 中文字幕乱码在线| 亚洲va韩国va欧美va精品| 无需播放器的av| 亚洲天堂a在线| 欧美在线观看成人| 国产精品久久久久久久久果冻传媒| 日本高清久久一区二区三区| 奇米精品一区二区三区在线观看| 亚洲自拍在线观看| 五月天激情四射| 国产精品精品久久久久久| 亚洲国产精品久久久久久久| 成人精品视频在线| 国产黄色精品视频| 777精品久无码人妻蜜桃| 亚洲成a人v欧美综合天堂| 黄色一级片免费播放| 欧美日韩国产小视频| 国产人妻精品一区二区三区不卡| 日韩中文在线视频| 狠狠躁夜夜躁av无码中文幕| 欧美美乳视频网站在线观看| 亚洲国产成人在线| 精品国产乱码久久久久久88av| 国产美女永久免费| 国产综合18久久久久久| 不卡的av在线| 中文字幕色网站| 日韩国产精品亚洲а∨天堂免| 国产污视频网站| 女同一区二区| 91在线丨porny丨国产| 男女污污视频网站| 久久激情视频免费观看| 三级网站免费观看| 国产一级黄色录像片| 婷婷久久综合九色综合伊人色| 182在线视频| 国产精品海角社区在线观看| 免费不卡在线观看| 国产熟人av一二三区| 日韩经典第一页| 久草热在线观看| 欧美极品视频一区二区三区| 婷婷国产在线综合| 神马久久久久久久| 做爰高潮hd色即是空| 欧美色另类天堂2015| 超碰91在线播放| 日韩成人中文字幕| 精品美女www爽爽爽视频| 超碰成人在线免费观看| 久久综合久久鬼色中文字| 国产欧美日韩一区| 国产亚洲成av人在线观看导航 | 午夜影院福利社| 91av在线网站| 国产女人18水真多18精品一级做| 女女调教被c哭捆绑喷水百合| 久久夜色精品亚洲噜噜国产mv | 亚洲www在线观看| 激情久久av一区av二区av三区| 特级西西444www大精品视频免费看 | 中文字幕第3页| 91精品国产高清久久久久久91裸体| 亚洲愉拍自拍另类高清精品| 国产男人搡女人免费视频| 一区二区三区四区| 久久国产精品亚洲| 亚洲伊人伊色伊影伊综合网| 99免费在线视频| 无码人妻一区二区三区在线视频| 国产不卡av在线| 在线观看日韩精品| 懂色av一区二区在线播放| 91麻豆免费视频网站| 国内外成人免费激情视频| 国产精品久久久久久久久久久不卡| 日韩欧美中文字幕在线观看| 日韩高清一级片| 国产精品99无码一区二区| 天天影视综合色| 91免费在线观看网站| 欧美丰满少妇xxxxx做受| 九九视频免费看| 亚洲欧美日韩精品在线| 久久久久久久久久亚洲| 中文字幕一区二区三区在线播放 | 91老师片黄在线观看| 三级影片在线看| 日本成人在线免费| 欧美成人精品1314www| 26uuu国产电影一区二区| 性少妇videosexfreexxx片| 性欧美13一14内谢| 一区二区三区四区国产| 成人免费看片视频| 欧美精品在线观看播放| 国产精品私人影院| 亚洲视频一区在线播放| 国模无码国产精品视频| 先锋资源av在线| 777一区二区| 欧美日韩一区二区在线免费观看| 亚洲在线一区二区| 91精品国产一区| 中文字幕精品网| 欧美日韩精品一区二区三区| 亚洲一区二区三区小说| 国产精品视频免费看| 香蕉人妻av久久久久天天| 91精品国自产| 精品久久久免费视频| 久久久无码精品亚洲国产| 91狠狠综合久久久久久| 久久久免费看片| 91精品国产91久久久久麻豆 主演| 欧美老女人在线| 亚洲国产成人自拍| 免费观看的毛片| 久久精品欧洲| 国产乱理伦片在线观看夜一区| 精品中文字幕av| 自拍偷拍一区二区三区四区| 无套内谢丰满少妇中文字幕 | 99爱视频在线| 天天躁日日躁狠狠躁av麻豆男男 | 欧美性色19p| 日韩高清有码在线| 欧美高清一级片在线| 亚洲一区免费在线观看| 国产精品久久久久久久岛一牛影视| 亚洲欧美怡红院| 国产精品午夜在线观看| 欧美性大战久久| 亚洲国产精品一区二区www在线 | 91久久国产最好的精华液| 亚洲综合色视频| 日韩欧美一二区| 久久久久久久国产精品视频| 91九色国产社区在线观看| 亚洲欧美一区二区激情| 欧美专区国产专区| 四虎永久国产精品| 亚洲精品一区二区三区蜜桃久 | 久久香蕉国产线看观看网| 中文字幕人成人乱码亚洲电影| 免费污污视频在线观看| 免费在线观看黄色av| 国产人妖一区二区三区| 东方aⅴ免费观看久久av| 麻豆精品久久精品色综合| 中文字幕一区二区三区不卡在线| 中文字幕一区日韩精品欧美| 97在线播放免费观看| 性感美女福利视频| 一二三区精品福利视频| 亚洲新中文字幕| 国产v亚洲v天堂无码| 鲁一鲁一鲁一鲁一av| 久久久久久久久久久久久久av| 丝袜a∨在线一区二区三区不卡| 亚洲国产精品国自产拍av| 亚洲深夜福利在线| 国产成+人+综合+亚洲欧洲 | 国产伦精品一区二区三区免费迷| 精品丰满少妇一区二区三区| 久久久精品99| 在线视频精品免费| 懂色av中文字幕一区二区三区| 亚洲国产精品精华液ab| 欧美日韩一区二区三区在线看| www亚洲精品| 欧美二区乱c少妇| 99精品视频免费版的特色功能| 国产xxxx视频| 国产喷水吹潮视频www| 国产一区在线视频| 色哟哟精品一区| 91免费版黄色| 超碰av在线免费观看| 日本高清xxxx| 视频国产一区二区| 97精品超碰一区二区三区| 亚洲精品一区二区久| 欧美这里只有精品| 亚洲qvod图片区电影| 欧美肉大捧一进一出免费视频| www.久久色| 亚洲第一级黄色片| 伊人狠狠色丁香综合尤物| 国产精品-色哟哟| 亚洲精选在线视频| 91精品国产综合久久香蕉| 日本黄色小视频在线观看| 久久精品人人做人人爽人人| 久久人人爽人人爽人人片av高清| 天天色综合天天色| 国产又黄又大久久| 深夜福利日韩在线看| 久久久久人妻精品一区三寸| 九色综合国产一区二区三区| 久久久99久久精品女同性| 中文字幕网av| 国产一区二区免费看| 欧美www在线| 日本午夜精品视频| 欧美性视频一区二区三区| www.xxx亚洲| 久久夜色精品一区| 国产精品亚洲激情| 国产精品视频久久久久久久| 日韩欧美国产一二三区| 99999精品| 亚洲国产精品视频| 日韩欧美三级一区二区| 免费观看黄色av| 亚洲福利在线看| 欧美特黄aaa| 国产精品久久久久久久久久免费看 | 国产精品伦子伦| 精品成人久久av| 五月天色一区| 国产精品系列在线观看| 日本久久91av| 欧美人与禽zozzo禽性配| 亚洲精品在线观| 中国特黄一级片| 欧美日韩国产大片| 亚洲一区二区三区蜜桃| 亚洲精品久久视频| 伊人久久久久久久久久久久久久| 亚洲精品videossex少妇| 国产大片一区二区三区| 国产精品电影一区二区三区| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 亚洲午夜激情免费视频| 青青草原在线免费观看| 亚洲国产精品尤物yw在线观看| 国产精品入口芒果| 久久亚洲欧美国产精品乐播 | av综合在线观看| 国新精品乱码一区二区三区18| 国产精品2024| 精品欧美一区二区在线观看视频 | 最近2019中文免费高清视频观看www99| 久久精品久久99| 日韩午夜中文字幕| 国产三级精品三级在线| 欧美精品v国产精品v日韩精品| 精品国产一区在线| 欧美日韩高清在线观看| 蜜臀av免费在线观看| 精品国产乱码久久久久久1区2区 | 中文字幕在线一区二区三区| 日韩一级片播放| 欧美精品少妇一区二区三区| 日本免费网站视频| 97超级碰碰| 99re视频精品| 国产永久免费网站| 亚洲欧美福利视频| 国产精品玖玖玖| 国产一区香蕉久久| 国产清纯白嫩初高生在线观看91| 成人免费视频91| 日韩亚洲欧美在线| a天堂中文在线观看| 亚洲黄色成人久久久| 国产欧美精品一区二区三区四区 | 91超薄丝袜肉丝一区二区| 国产精品入口福利| 成人亚洲精品久久久久软件| av一区二区三区免费观看| 亚洲图片制服诱惑| 国产在线不卡一区| 狠狠热免费视频| 久久国产精品偷| 欧美特级特黄aaaaaa在线看| 国产精品一区二区欧美| 久久久久久网| 日日碰狠狠躁久久躁婷婷| 日韩有码在线电影| 精品亚洲成av人在线观看| 欧美黄色免费网址| 日韩av在线电影网| 亚洲人午夜射精精品日韩| 亚洲激情 欧美| 免费观看黄色的网站| 亚洲精品视频网上网址在线观看| 成人性视频网站| 国产精品午夜一区二区| 亚洲欧洲日本精品| 成人网在线免费看| 欧美日韩二区三区| 国产成人精品一区二三区四区五区| 日韩精品视频一二三| 国产精品区免费视频| 日韩成人中文电影| av电影一区二区| 久久精品女人毛片国产| 天堂av手机在线| 91福利视频导航| 精品美女一区二区三区| 国产精品欧美久久久久一区二区| 日本色综合中文字幕| 亚洲第一成人网站| 日本国产在线播放| 日本欧美中文字幕| 不卡中文字幕av| 一本色道a无线码一区v| 蜜桃91麻豆精品一二三区| 男插女视频网站| 中文字幕免费在线不卡| 国产精品va在线播放| 日韩精品久久久久| 国产成人在线视频网址| 久久婷婷av| 人妻中文字幕一区| 97超碰资源站| 久久久久99精品成人片我成大片| 最近中文字幕无免费| 欧美一级免费播放| 精品蜜桃传媒| 亚洲综合一区二区不卡| 成人性教育视频在线观看| 亚洲一级片在线看| 日韩欧美资源站| 亚洲午夜激情网页| 久久精品亚洲麻豆av一区二区| 国产精品va无码一区二区三区| 日韩Av无码精品| 欧美激情 一区| 九九热精品免费视频| 制服丝袜第一页在线观看| 69堂免费视频| 黄色三级中文字幕| 黄色性视频网站| xxxx18hd亚洲hd捆绑| 黄色国产精品视频| 韩国日本美国免费毛片| 日韩成人av免费| 免费高清视频在线观看| 亚洲色图都市激情| 樱空桃在线播放| 国产日韩欧美在线看| 97久久久久久| 国产日韩欧美视频| 亚洲综合精品一区二区| 中文字幕一区二区中文字幕| 黄色网址在线免费看| 欧美视频在线免费播放| 日韩精品久久一区| 日韩在线第一区| 99福利在线观看| 少妇被躁爽到高潮无码文| 国产大片aaa| 久久国产欧美| 亚洲卡通动漫在线| 精品久久久久久久久久久院品网| 亚洲成**性毛茸茸| 欧美精品xxx| 成年人三级视频| 原创真实夫妻啪啪av| 一级黄色电影片| 少妇荡乳情欲办公室456视频| 奇米影视在线99精品| 久久久久久电影| 欧美日韩免费一区|