成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

php構建一個區塊鏈(含源碼)

php構建一個區塊鏈(含源碼)

php構建一個區塊鏈(含源碼)

我們要用PHP編程語言構建區塊鏈,區塊鏈本身就是一個非常簡單的概念,它是一個非常簡單的數據結構,數字貨幣是很復雜,但區塊鏈不是,它們復雜的原因是共識算法,挖礦機制和運行在他們之上的一切,但區塊鏈本身是很容易理解的,在你真正了解區塊鏈是如何工作的之前,你需要知道什么,你需要知道什么是哈希hash?它們是如何工作的?

哈希基本上是某種數據的數字簽名,例如可以拍一部電影,可以hash它并得到一個數字簽名;可以拿一封電子郵件,可以把它hash并得到一個數字簽名;還可以拿一個字,也可以hash它,你可以拿任何數據,然后hash它,你都可以得到一個hash值。它只是對該數據進行數字簽名。

這個hash哈希實際上是如何工作的?讓我們深入了解下。

我們將在PHP中構建區塊鏈,這將非常簡單,如果你懂一點兒編程,你也可以用另一種語言來做,如果你不懂編程,我想你仍然能夠大致理解它是如何工作的,所以讓我們來談談哈希hash。

<?php     $list1 = ["a","b","c"];     $list2 = ["a","b","c"];     echo "list 1: ".md5(serialize($list1));     echo "<br/>list 2: ".md5(serialize($list2)); ?>

正如你所看到的,我們有兩個列表,我們有兩個包含a、b、c的列表,這是數據,這是我們試圖hash的字符串,讓我們看看我們從列表1和2中得到什么樣的數字簽名。

輸出結果:

list 1: ec10e0c7a344da191700ab4ace1a5e26 list 2: ec10e0c7a344da191700ab4ace1a5e26

你可以看到,當我們得到這兩個哈希字符串或數字簽名,這兩個是相同的。

如果我現在改變list1中的內容,例如:

<?php     $list1 = ["aaa","b","c"]; //Changed     $list2 = ["a","b","c"];     echo "list 1: ".md5(serialize($list1));     echo "<br/>list 2: ".md5(serialize($list2)); ?>

現在我在運行它:

list 1: 97f4361000fdba1732a50f1771c9d830 list 2: ec10e0c7a344da191700ab4ace1a5e26

你可以看到我們得到了完全不同的數字簽名,所以如果我只是做一個小的修改,我只是干預數據,我試圖改變這個列表中的任何東西,我將得到完全不同的數字簽名,這是區塊鏈技術的基礎,因為區塊鏈是一個塊的列表,基本上是一個由區塊組成的鏈表和每個塊保持前一個塊的數字簽名,并且下一個塊的數字簽名是基于當前塊的數字簽名,所以它們總是關聯在一起,下一個簽名將基于當前簽名而當前簽名是基于以前的簽名,所以如果你改變過去的任何東西,你會打破所有的簽名,他們將看起來完全不同。

如何編碼

讓我們實際進入我們的區塊鏈編碼,我們需要做的第一件事是談論我們的Block類,在這種情況下,我們的塊將非常簡單,它只包含三個東西,它將包含在該塊中發生的交易列表,它將包含先前的哈希或數字簽名的前一個塊,它也將包含哈希的本身,這個哈希將基于交易和以前的哈希,所以如果任何人改變任何東西在前一塊,數字簽名的當前塊將改變,并改變下一個塊的數字簽名。

使用你喜歡的IDE重新生成空的PHP項目,我在本地主機環境中使用XAMPP。

現在創建一個新的文件block.php,并在其中放入下面的代碼片段。

<?php     class Block{               private $previousHash;               private $transactions=[];               private $blockHash;               function __construct($previousHash,$transactions){                              $this->previousHash = $previousHash;                              $this->transactions = $transactions;                              $contents = [md5(serialize($transactions)),$previousHash];                              $this->blockHash = md5(serialize($contents));               }               function getPreviousHash(){                              return $this->previousHash;               }               function getTransactions(){                              return $this->transactions;               }               function getBlockHash(){                              return $this->blockHash;               }     } ?>

現在創建另一個名為index.php的文件,并使用block.php類來創建一些塊。

index.php

<?php     include("block.php");     $genesisTransaction = ["a sends 11 bitcoins to b","b sends 44 bitcoins to c"];     $genenisBlock = new Block(0, $genesisTransaction);     $block1Transaction = ["a sends 11 bitcoins to b","b sends 44 bitcoins to c"];     $block1 = new Block($genenisBlock->getBlockHash(), $block1Transaction);     $block2Transaction = ["a sends 11 bitcoins to b","b sends 44 bitcoins to c"];     $block2 = new Block($block1->getBlockHash(), $block2Transaction);     echo "Genesis Block: ".$genenisBlock->getBlockHash();     echo "<br/>Block 1: ".$block1->getBlockHash();     echo "<br/>Block 2: ".$block2->getBlockHash(); ?>

輸出結果:

Genesis Block: d9c559b57e148b19802d8e70555f0303 Block 1: 29e9e5a309aae81243fdf73112253c74 Block 2: fbff8f664f6b4069bf7288cb1b86cb3a

請看當前哈希將基于以前的哈希,如果你改變了任何先前的交易,你的所有數字簽名將生效,例如,在genesisTransaction中,我改變了11到12,它將輸出完全不同的,如:

<?php     include("block.php");      $genesisTransaction = ["a sends 12 bitcoins to b","b sends 44 bitcoins to c"]; //changed 11 to 12     $genenisBlock = new Block(0, $genesisTransaction);     $block1Transaction = ["a sends 11 bitcoins to b","b sends 44 bitcoins to c"];     $block1 = new Block($genenisBlock->getBlockHash(), $block1Transaction);     $block2Transaction = ["a sends 11 bitcoins to b","b sends 44 bitcoins to c"];     $block2 = new Block($block1->getBlockHash(), $block2Transaction);     echo "Genesis Block: ".$genenisBlock->getBlockHash();     echo "<br/>Block 1: ".$block1->getBlockHash();     echo "<br/>Block 2: ".$block2->getBlockHash(); ?>

輸出結果:

Genesis Block: d9c559b57e148b19802d8e70555f0303 Block 1: 29e9e5a309aae81243fdf73112253c74 Block 2: fbff8f664f6b4069bf7288cb1b86cb3a

你可以看到任何一個交易的變化,在一個塊中的任何一個數據將傳播和改變未來的區塊鏈中所有的數字簽名,這就是區塊鏈的工作原理,因為如果我改變了什么,每個人都會看到我的數字簽名完全不同于其他人,所以這意味著我在欺騙別人。就如同我告訴每個人,嘿,一個人給了我很多比特幣,這里是區塊鏈,請每個人確認下。每個人將查看它并說清楚,我們知道這個區塊鏈無法確認這一點,因為我們有自己版本的區塊鏈,數字簽名會是完全不同,所以這不行。

我希望你能理解通過它們的數字簽名將區塊的哈希鏈接在一起的這一基本概念。在你的PHP中實現這個例子吧。

本文轉自:https://blog.csdn.net/mongo_node/article/details/81700425

推薦教程:《php教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
粗大抽搐白浊H高干H| 被男狂揉吃奶胸60分钟视频| BGMBGM浓毛老太太| 波多波多野结衣中文无| 公和我做好爽添厨房| 国内精品久久久人妻中文字幕| 精品亚洲麻豆1区2区3区| 蜜桃精品欧美一区二区三区| 欧美精品一区二区蜜臀亚洲| 色婷婷综合久久久久中文字幕 | 日出水了好深好涨| 色婷婷亚洲六月婷婷中文字幕| 无码人妻一区二区三区一| 五月丁香国产在线视频| 亚洲精品无码乱码成人爱色| 自拍偷自拍亚洲精品被多人伦好爽| 帮妺妺洗澡忍不住C了她作文| 粉嫩AV一区二区三区免费观看| 国产无遮挡又黄又爽奶头| 久久久久精品无码专区| 欧美综合自拍亚洲综合图| 污污网站18禁在线永久免费观看| 亚洲人成网站精品片在线观看| 十八禁羞羞视频爽爽爽| 香蕉久久久久久AV综合网成人| 亚洲精品无码永久电影在线| 99国精品午夜福利视频不卡| 各种少妇正面着BBW撒尿视频| 河南少妇凸BBWBBW| 免费无遮挡色视频网站| 少妇扒开腿让我爽了一夜| 亚洲另类欧美综合久久图片区 | 奶头大他一口都含不住| 十八款夜间禁用APP| 亚洲一区二区三区乱码AⅤ蜜桃女| GRANSREMEDY老太太| 国产精品人人做人人爽人人添| 久久亚洲AV成人无码| 色欲AV综合AV无码AⅤ| 亚洲欧洲无码AV电影在线观看| 啊~用力CAO我CAO死我视频| 韩国三级HD中文字幕| 免费萌白酱国产一区二区三区| 白天躁晚上躁天天躁| 国产乱来乱子视频| 六月丁香婷婷色狠狠久久| 色一情一乱一伦一区二区三区日本| 亚洲精品无码永久中文字幕 | 国内偷自第一区二区三区| 毛片内射久久久一区| 天天躁狠狠躁狠狠躁夜夜躁| 在线观看亚洲AV日韩A∨| 国产成人精品无码播放| 麻花豆传媒剧国产MV在线 | 国产高潮流白浆喷水在线观看| 久久老子午夜精品无码| 色8久久人人97超碰香蕉987 | 亚洲AV无码成人精品区网站| JAPANESE熟睡侵犯| 精品卡一卡2卡三卡四卡乱码| 人人妻人人澡人人爽精品日本 | 蜜桃无码一区二区三区| 无码一区二区三区中文字幕| 97久久精品无码一区二区天美| 国产熟妇人妻ⅩXXXX麻豆网站| 人妻丰满熟妇岳av无码区HD| 亚洲人妻精品一区| 国产大学生酒店在线播放| 免费下载破解看片APP的软件| 亚洲AV无码不卡在线观看下载 | 日韩精品一区二区亚洲AV观看| 人妻AV无码一区二区三区| 亚洲VA无码手机在线电影| 成为全校公交车的日常生活| 老乞丐没完没了73节| 亚洲AV成人无码精品网站老司机| 白嫩的18SEX少妇HD| 久久久亚洲AV成人网站| 校花娇喘呻吟校长陈若雪视频| 白种女BBWBBWBBW| 老赵抱着媛媛在厨房做| 亚洲AV色一区二区三区蜜桃| 大肥女BBWBBWHD视频| 嫩小槡BBBB槡BBBB槡| 亚洲熟妇在线观看| 国产亚洲曝欧美不卡精品| 三上悠亚SSNI452内衣模特| 337P粉嫩大胆噜噜噜| 久久狠狠色噜噜狠狠狠狠97| 小雪的L3又嫩又紧又多水图| 成人奭片免费观看| 男人J桶进女人P无遮挡的图片| 亚洲AV永久无码精品水牛影视| 多毛freeoprn熟妇多毛y| 欧美黑人又大又粗XXXⅩ| 影音先锋亚洲成AⅤ无码| 精品成人免费一区二区| 无码人妻丝袜在线视频| 东京热人妻系列无码专区| 欧美日韩一区二区三区精品视频 | 淫淫网站日本网站黑人大吊| 狠狠色丁香婷婷综合久久图片| 卫生间被教官做好爽HH视频| YEEZY380蜜桃粉满天| 免费稀缺拗女一区二区| 影音先锋女人AV鲁色资源网久久| 精品人成视频免费国产| 亚洲AV一二三四区四色婷婷| 国产精品拍天天在线| 少妇性活BBBBBBBBB四川| 超碰CAO已满18进入| 欧美在线三级艳情网站| 97SE狠狠狠狠狼亚洲综合网| 美女高潮无遮挡喷水视频| 艳妇乳肉豪妇荡乳ⅩXX| 精品无码黑人又粗又大又长AV| 亚洲AV中文无码乱人伦在线咪咕| 国产肉体XXXX裸体137大胆| 无码人妻丰满熟妇奶水区毛片| 国产成人艳妇AA视频在线| 天干天干天啪啪夜爽爽AV| 国产97色在线 | 免| 水蜜桃成视频人在线看| 丁香五月开心婷婷激情综合| 日日婷婷夜日日天干| 纯肉的日本动漫 在线看| 日日摸日日碰夜夜爽亚洲| 成人国产亚洲精品A区天堂| 日产精品卡2卡三卡四卡公司| 波多野结衣av电影在线观看| 日本XXX色视频| 大J8黑人BBW巨大888| 色播久久人人爽人人爽人人片AV | 拔萝卜在线视频免费观看| 日本高清无卡码一区二区| 宝宝好大我都握不住了视频| 日韩人妻无码精品久久久不卡| 成人午夜福利视频网址| 撒尿BBWBBW毛| 国产GAYSEXCHINA男| 我们还没在书房试过| 国产无套码AⅤ在线观看在线播放 国产无套码AⅤ在线观看 | 色窝窝无码一区二区三区色欲| 高清欧美精品XXXXX在线看| 偷窥 间谍 隐 TUBE| 国产毛片精选好视频| 亚洲国产成人爱AV网站| 久久精品人人做人人综合试看| 中国丰满熟妇XXXX| 欧美国产日韩久久MV| 成人欧美一区二区三区视频 | 人人做人人爱在碰免费| 番茄TODO社区免费看片| 无码人妻精品中文字幕不卡| 韩国青草无码自慰直播专区| 亚洲伊人久久大香线蕉| 免费乱理伦片在线观看八戒| Z0OZO0人善之交另类| 天堂在\/线中文在线8| 国产在线一区二区三区AV| 亚洲无人区码一码二码三码的特点 | 宝宝好大我都握不住了视频| 四虎一区二区成人免费影院网址| 国产香蕉尹人在线视频你懂的| 亚洲人成色7777在线观看| 免费A级毛片在线播放| 被群CAO的合不拢腿H纯肉视频| 无码高清一区二区三区| 精品熟人妻一区二区三区四区不卡 | 被三个男人绑着躁我好爽| 无码精品A∨在线观看中文| 精品人妻少妇一区二区三区| 最新亚洲春色AV无码专区| 日韩精品无码一区二区中文字幕 | 日韩精品无码一区二区三区| 国产欧美日韩精品丝袜高跟鞋| 亚洲中文字幕久久精品无码APP| 欧美性猛烈XXXX极品少妇| 国产精品久久久久久久久电影网| 亚洲久热无码AV中文字幕| 男人又粗又黑又硬的东西 | AAA少妇高潮大片免费看| 上面一个摸下面一个手念什么| 狠狠色婷婷久久一区二区| 607080岁奶奶| 无码国产精品一区二区免费模式 | 久久精品中文字幕无码| FREE乌克兰嫩交HD| 五月丁香六月狠狠爱综合| 老师上课没戴奶罩看到奶头| 成人羞羞视频免费网站| 亚洲国产精品无码久久久动漫| 欧美日产国产精品| 国产视频一区二区| 97人妻人人做人碰人人爽| 无码AV免费一区二区三区四区| 久久综合狠狠综合久久综合88 | 天堂中文АⅤ在线| 久久亚洲色WWW成人网址| 国产 校园 另类 小说区|