精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何使用Go實現區塊鏈

區塊鏈
自互聯網以來,鎖鏈技術已被某些人稱為最有影響力的發明。盡管公眾將區塊鏈與投機性加密貨幣同義解釋,但區塊鏈實際上在現代世界中具有不可思議的廣泛應用。

[[392202]]

本文轉載自微信公眾號「區塊鏈研究實驗室」,作者鏈三豐。轉載本文請聯系區塊鏈研究實驗室公眾號。

自互聯網以來,鎖鏈技術已被某些人稱為最有影響力的發明。盡管公眾將區塊鏈與投機性加密貨幣同義解釋,但區塊鏈實際上在現代世界中具有不可思議的廣泛應用。實際上,加密貨幣只是區塊鏈領域的一小部分,生產中的許多解決方案都是由私人組織領導來實現的。

隨著區塊鏈技術的迅速發展,技術領域的專業人員越來越需要了解區塊鏈的基礎知識及其技術影響力。

畢竟,實現自己的區塊鏈實際上并不像聽起來那樣復雜。本文中,我們將使用2021年最流行的編程語言之一GoLang實現基本的區塊鏈。那么,讓我們開始吧!

了解區塊鏈

區塊鏈是名稱符合其含義的少數技術之一。我們可以將區塊鏈視為通過哈希相互連接的信息塊,哈希是從輸入數據生成的加密的固定輸出。由于每個塊都通過哈希相互引用,因此如果不大幅度更改鏈的其余部分,就不可能更改鏈的任何部分。

區塊鏈中的每個塊都可以包含幾乎任何內容的數據。一個基本框架將包括每個塊的過去交易的所有記錄。比特幣以類似的方式工作,這就是為什么您可以一直跟蹤比特幣交易直至Satoshi首次進行加密貨幣交易的原因。

下面我們有三個區塊來創建區塊鏈。第一塊是創世塊。由于之前沒有任何內容,因此前一個哈希字段為空。我們仍然使用時間戳記屬性和初始事務作為哈希算法的輸入。該算法將吐出一大串數字和字母,這些數字和字母代表了創世紀塊的哈希值。

轉到塊2,我們將創世塊的哈希值用作塊2先前哈希值。這個動作將創世塊與第2塊聯系起來!接下來,我們將時間戳,交易列表和先前的哈希值作為我們的哈希算法的輸入。該算法將為我們提供一個新的哈希值來表示塊2。

我們將繼續重復該過程任意多次,除了區塊的有效性以及存儲區塊鏈的能力(比特幣的區塊鏈約為330 GB)之外,沒有任何其他限制。

在Go中創建一個簡單的區塊鏈

創建我們的區塊鏈的第一步是定義什么是區塊。Go使我們的生活更輕松地創建自定義類型,我們可以Block使用以下代碼來定義類型。在這里,該Block結構具有四個字段以匹配我們上面的圖。

  1. type Block struct { 
  2.   timestamp  time.Time 
  3.   transactions  []string 
  4.   prevHash  []byte 
  5.   Hash    []byte 

下一步是創建構造函數的Go版本,以創建新的塊。該函數的輸入將使用一個字符串數組來表示事務,以及一個字節數組來表示先前制作的塊所對應的先前的哈希值。下一個要研究的NewHash()功能是我們下一步將實現的功能。

  1. func NewBlock(transactions []string, prevHash []byte) *Block { 
  2.   currentTime := time.Now() 
  3.   return &Block { 
  4.     timestamp: currentTime, 
  5.     transactions: transactions, 
  6.     prevHash: prevHash, 
  7.     Hash: NewHash(currentTime, transactions, prevHash), 
  8.   } 

該NewHash()函數將時間,事務列表和以前的哈希作為我們的輸入參數,同時返回一個字節數組來表示新生成的哈希值。在此功能中,我們基本上只是將所有輸入都混入一個稱為的單個字節數組中input。我們這樣做是使用append()功能的附加time參數,prevHash通過轉換time為string用...,以追加作為后綴time片的prevHash切片。

然后,我們遍歷transactions并將每個個體附加transaction到input數據blob。有趣的語法string(rune(transaction))...只是Go中將其中的每個元素轉換transactions為可以附加到的切片的一種方法input。它正在輸入垃圾內容,因此,如果您真的想要,請深入研究。

  1. func NewHash(time time.Time, transactions []string, prevHash []byte) []byte { 
  2.   input := append(prevHash, time.String()...) 
  3.   for transaction := range transactions { 
  4.     input = append(input, string(rune(transaction))...) 
  5.   } 
  6.   hash := sha256.Sum256(input) 
  7.   return hash[:] 

最后,我們使用crypto包轉到電話sha256.Sum256()與input作為它的參數。這將為我們的所有數據輸入提供新的哈希表示。我們返回時hash[:]使用的[:]語法將hash在返回時切成適當的長度。

這實際上是我們開始鏈接我們的區塊鏈所需的全部。當然,我們希望在程序中看到某種輸出,以便在打印時可以使用一些輔助方法:

  1. func printBlockInformation(block *Block) { 
  2.   fmt.Printf("\ttime: %s\n", block.timestamp.String()) 
  3.   fmt.Printf("\tprevHash: %x\n", block.prevHash) 
  4.   fmt.Printf("\tHash: %x\n", block.Hash) 
  5.   printTransactions(block) 
  6.  
  7. func printTransactions(block *Block) { 
  8.   fmt.Println("\tTransactions:"
  9.   for i, transaction := range block.transactions { 
  10.     fmt.Printf("\t\t%v: %q\n", i, transaction
  11.   } 

現在剩下的就是創建新的事務,塊和哈希。我們可以通過我們的主要方法來做到這一點。我們定義了一個字符串數組來記錄我們的區塊鏈中的交易。另請注意,我們如何傳遞一個空字節數組NewBlock()來生成名為的第一個塊genesisBlock。

  1. func main() { 
  2.   genesisTransactions := []string{"Izzy sent Will 50 bitcoin""Will sent Izzy 30 bitcoin"
  3.   genesisBlock := NewBlock(genesisTransactions, []byte{}) 
  4.   fmt.Println("--- First Block ---"
  5.   printBlockInformation(genesisBlock) 
  6.  
  7.   block2Transactions := []string{"John sent Izzy 30 bitcoin"
  8.   block2 := NewBlock(block2Transactions, genesisBlock.Hash) 
  9.   fmt.Println("--- Second Block ---"
  10.   printBlockInformation(block2) 
  11.  
  12.   block3Transactions := []string{"Will sent Izzy 45 bitcoin""Izzy sent Will 10 bitcoin"
  13.   block3 := NewBlock(block3Transactions, block2.Hash) 
  14.   fmt.Println("--- Third Block ---"
  15.   printBlockInformation(block3) 

為了創建新的區塊,我們將前一個區塊的哈希值NewBlock()與對應的交易歷史記錄一起傳遞。如果您想在一個地方查看整個程序,則為:

  1. package main 
  2.  
  3. import ( 
  4.   "crypto/sha256" 
  5.   "fmt" 
  6.   "time" 
  7.  
  8. type Block struct { 
  9.   timestamp    time.Time 
  10.   transactions  []string 
  11.   prevHash    []byte 
  12.   Hash      []byte 
  13.  
  14. func main() { 
  15.   genesisTransactions := []string{"Izzy sent Will 50 bitcoin""Will sent Izzy 30 bitcoin"
  16.   genesisBlock := NewBlock(genesisTransactions, []byte{}) 
  17.   fmt.Println("--- First Block ---"
  18.   printBlockInformation(genesisBlock) 
  19.  
  20.   block2Transactions := []string{"John sent Izzy 30 bitcoin"
  21.   block2 := NewBlock(block2Transactions, genesisBlock.Hash) 
  22.   fmt.Println("--- Second Block ---"
  23.   printBlockInformation(block2) 
  24.  
  25.   block3Transactions := []string{"Will sent Izzy 45 bitcoin""Izzy sent Will 10 bitcoin"
  26.   block3 := NewBlock(block3Transactions, block2.Hash) 
  27.   fmt.Println("--- Third Block ---"
  28.   printBlockInformation(block3) 
  29.  
  30. func NewBlock(transactions []string, prevHash []byte) *Block { 
  31.   currentTime := time.Now() 
  32.   return &Block { 
  33.     timestamp: currentTime, 
  34.     transactions: transactions, 
  35.     prevHash: prevHash, 
  36.     Hash: NewHash(currentTime, transactions, prevHash), 
  37.   } 
  38.  
  39. func NewHash(time time.Time, transactions []string, prevHash []byte) []byte { 
  40.   input := append(prevHash, time.String()...) 
  41.   for transaction := range transactions { 
  42.     input = append(input, string(rune(transaction))...) 
  43.   } 
  44.   hash := sha256.Sum256(input) 
  45.   return hash[:] 
  46.  
  47. func printBlockInformation(block *Block) { 
  48.   fmt.Printf("\ttime: %s\n", block.timestamp.String()) 
  49.   fmt.Printf("\tprevHash: %x\n", block.prevHash) 
  50.   fmt.Printf("\tHash: %x\n", block.Hash) 
  51.   printTransactions(block) 
  52.  
  53. func printTransactions(block *Block) { 
  54.   fmt.Println("\tTransactions:"
  55.   for i, transaction := range block.transactions { 
  56.     fmt.Printf("\t\t%v: %q\n", i, transaction
  57.   } 

如果要運行此程序,將得到以下輸出:

  1. $ go run example.go  
  2. --- First Block --- 
  3.         time: 2021-04-05 15:12:18.813294 -0600 MDT m=+0.000074939 
  4.         prevHash:  
  5.         Hash: 43ec51c50d2b9565f221155a29d8b72307247b08eaf6731cca 
  6.         Transactions: 
  7.                 0: "Izzy sent Will 50 bitcoin" 
  8.                 1: "Will sent Izzy 30 bitcoin" 
  9. --- Second Block --- 
  10.         time: 2021-04-05 15:12:18.813477 -0600 MDT m=+0.000257244 
  11.         prevHash: 43ec51c50d2b9565f221155a29d8b72307247b08eaf6731cca 
  12.         Hash: fcce5323a35cb67b45fe75866582db00fd32baeb92aac448c7 
  13.         Transactions: 
  14.                 0: "John sent Izzy 30 bitcoin" 
  15. --- Third Block --- 
  16.         time: 2021-04-05 15:12:18.813488 -0600 MDT m=+0.000269168 
  17.         prevHash: fcce5323a35cb67b45fe75866582db00fd32baeb92aac448c7 
  18.         Hash: fc1d3eee286970d85812b47c3a5bf016ae8c1de4f86b8ace972ffa 
  19.         Transactions: 
  20.                 0: "Will sent Izzy 45 bitcoin" 
  21.                 1: "Izzy sent Will 10 bitcoin" 

過程可能會很粗糙,但這是創建自己的區塊鏈的基礎!

責任編輯:武曉燕 來源: 區塊鏈研究實驗室
相關推薦

2021-04-16 20:43:18

Go區塊鏈編程

2022-07-18 23:49:19

區塊鏈民主數據

2022-01-10 10:56:37

區塊鏈技術比特幣

2019-04-03 10:50:09

Javascript區塊鏈技術

2020-09-04 08:33:17

區塊鏈病例電子病例

2021-09-23 22:40:10

區塊鏈比特幣技術

2021-04-08 18:39:57

JavaScriptExpress區塊鏈

2021-12-13 14:05:27

區塊鏈金融技術

2023-06-13 11:49:35

2018-03-27 09:52:30

區塊鏈數字貨幣比特幣

2021-05-10 15:09:47

區塊鏈互聯網金融

2021-09-02 00:25:46

區塊鏈互聯網技術

2019-01-24 15:50:06

區塊鏈數字貨幣比特幣

2018-06-14 10:32:25

2021-02-20 22:35:17

區塊鏈比特幣記賬

2021-04-11 11:31:05

區塊鏈記賬比特幣

2021-03-16 14:33:12

區塊鏈比特幣加密貨幣

2020-08-18 10:58:05

區塊鏈比特幣區塊鏈戰略

2021-04-12 10:57:28

區塊鏈信任銀行

2022-04-18 14:50:00

區塊鏈安全交易
點贊
收藏

51CTO技術棧公眾號

91影院在线免费观看| 精品av久久久久电影| 欧美日韩国产一级二级| 久久99国产精品一区| 亚洲免费一级片| 视频一区在线播放| 欧美xxxx综合视频| 久久人人爽人人爽人人片 | 欧美激情伊人电影| 美女久久久久久久久久| 9999在线精品视频| 欧美午夜美女看片| 欧美激情亚洲天堂| 91欧美在线视频| 99精品桃花视频在线观看| 成人欧美一区二区三区在线| 国产又黄又粗又爽| 欧美日韩免费| 三级精品视频久久久久| 日韩人妻一区二区三区| 国产精一区二区| 在线视频欧美区| 日韩av在线第一页| 色呦呦在线观看视频| 国产欧美日韩在线看| 国产专区一区二区三区| 精品国产无码一区二区| 日韩成人dvd| **欧美日韩vr在线| 国产一级aa大片毛片| 亚洲国产精品久久久天堂| 夜夜躁日日躁狠狠久久88av| 91丝袜在线观看| 亚洲一区二区三区四区电影| 91精品在线免费观看| 国产免费999| 午夜欧美巨大性欧美巨大| 亚洲电影在线免费观看| 日本一本草久p| 成人影欧美片| 亚洲欧美日韩国产成人精品影院| 视频一区二区三| 美女毛片在线看| 91首页免费视频| 国产精品久久久对白| 99精品在线视频观看| 久久国产成人午夜av影院| 国产精品吊钟奶在线| 日韩电影在线观看一区二区| 亚洲综合好骚| 青青久久aⅴ北条麻妃| 国产a∨精品一区二区三区仙踪林| 欧美精品大片| 欧美精品video| 国产一卡二卡在线| 国产欧美日本| 国产aⅴ夜夜欢一区二区三区 | 欧美va亚洲va国产综合| 一卡二卡三卡四卡五卡| 美国十次综合久久| 日韩欧美自拍偷拍| www.四虎在线| 日韩在线你懂的| 亚洲久久久久久久久久| 性欧美13一14内谢| 欧美亚洲国产激情| 久久视频在线免费观看| 免费视频网站www| 亚洲黄网站黄| 国产精品pans私拍| 中文字幕人妻一区二区在线视频 | 日本japanese极品少妇| 亚洲自拍电影| 色悠悠久久久久| 青草影院在线观看| 伊人精品成人久久综合软件| 26uuu久久噜噜噜噜| 日本中文字幕在线观看视频| 另类小说一区二区三区| 波多野结衣精品久久| 手机在线精品视频| 国产日韩视频一区二区三区| 亚洲精品偷拍视频| 三级中文字幕在线观看| 91福利精品第一导航| 天天干天天色天天干| 国内精品偷拍| 中文字幕精品av| 久久精品一级片| 六月婷婷一区| 亚洲aⅴ日韩av电影在线观看| 亚洲欧美国产高清va在线播放| 99re成人精品视频| 中文字幕免费高| 欧美一级鲁丝片| 欧美日韩色综合| 成年人小视频在线观看| 欧美理论电影大全| 高清欧美性猛交| 中文字幕 欧美激情| 国产成人三级在线观看| 日韩欧美在线一区二区| 久久99亚洲网美利坚合众国| 在线视频一区二区三区| 女性生殖扒开酷刑vk| 欧美日韩激情| 国产69精品久久久久99| 在线免费观看日韩视频| 91免费视频网| www插插插无码免费视频网站| 成人不卡视频| 亚洲精品在线看| 亚洲精品在线观看av| 免费成人美女在线观看.| 国产一区免费观看| 91国内在线| 欧美日韩免费高清一区色橹橹| 精品人妻一区二区三区日产| 香蕉视频官网在线观看日本一区二区| 4p变态网欧美系列| 国产综合视频在线| 亚洲男同1069视频| 伊人网在线综合| 精品精品99| 57pao成人国产永久免费| 午夜久久久久久久久久| 中文字幕在线免费不卡| 99视频精品免费| 网红女主播少妇精品视频| 欧美激情免费视频| 国产日产亚洲系列最新| 国产精品九色蝌蚪自拍| 亚洲不卡视频在线| 精品国产中文字幕第一页| 91成人精品网站| 无码精品人妻一区二区三区影院| 一区二区成人在线| 一卡二卡三卡四卡五卡| 影视一区二区| 91亚洲国产精品| 麻豆视频在线免费观看| 欧美日韩不卡在线| 三级黄色片在线观看| 奇米影视7777精品一区二区| 日本中文不卡| 主播大秀视频在线观看一区二区| 亚洲人成人99网站| 国产成人无码专区| 国产拍欧美日韩视频二区| 成人三级视频在线播放 | 国产高清精品网站| 中文字幕色呦呦| 精品久久国产一区| 久久91亚洲人成电影网站| 国产黄色片网站| 亚洲国产精品自拍| 国产又粗又猛又色| 国产精品嫩草99av在线| 欧美一区二区在线| 老司机成人影院| 有码中文亚洲精品| 91麻豆一区二区| 亚洲国产综合在线| 日韩一级视频在线观看| 日本欧美一区二区| 中日韩在线视频| 视频亚洲一区二区| 97在线观看免费| 久久手机免费观看| 69久久夜色精品国产69蝌蚪网| 久久国产在线观看| 91视频精品在这里| 在线观看高清免费视频| 欧美va亚洲va日韩∨a综合色| 国产精品日韩一区二区| 国产日韩另类视频一区| 久久精品亚洲国产| 手机在线观看毛片| 欧美日韩亚洲综合| 国产一级一级片| 久久久国产一区二区三区四区小说 | 欧美日韩一级片网站| 欧美日韩大片在线观看| 2020国产成人综合网| 欧美日韩精品区别| 亚洲裸体俱乐部裸体舞表演av| 色综合久久av| 91精品国产自产在线丝袜啪 | 久久精品在线视频| 天天操天天操天天| 欧美精品亚洲一区二区在线播放| 久久影院一区二区| 国产精品久久午夜夜伦鲁鲁| 日本天堂在线播放| 麻豆freexxxx性91精品| 日韩xxxx视频| 91精品一区二区三区综合| 奇米综合一区二区三区精品视频| 玛丽玛丽电影原版免费观看1977| 亚洲aⅴ网站| 欧美壮男野外gaytube| 国产最新在线| 夜夜嗨av色综合久久久综合网| www.国产免费| 欧美日韩一区二区三区四区五区| 欧美一级高潮片| 日韩一区有码在线| 成人性生交大免费看| 内衣办公室在线| 精品久久久久久| 亚洲熟女毛茸茸| 久久综合999| 亚洲乱妇老熟女爽到高潮的片 | 一区二区三区四区在线免费观看| 欧美成人国产精品一区二区| 成人h精品动漫一区二区三区| 女人高潮一级片| 久久精品成人| 青青草精品视频在线| 欧美在线网址| 中文字幕制服丝袜在线| 精品免费在线| 欧美一二三区| 秋霞影视一区二区三区| 成人自拍网站| 亚洲精品影片| 91青草视频久久| 先锋影音一区二区| 国产精品久久久久久久9999| 日韩新的三级电影| 欧美一区二区三区免费视| 国产第一页在线| 欧美在线制服丝袜| 日本精品一区二区三区高清 久久| 国产福利一区二区三区在线播放| 欧美在线一级va免费观看| caoporn-草棚在线视频最| 欧美成人精品一区| 亚洲制服国产| 九九视频这里只有精品| 亚洲区欧洲区| 欧美裸身视频免费观看| 五月花成人网| 欧美激情极品视频| 波多野结衣在线播放| 欧美激情国产精品| 成av人片在线观看www| 久久久亚洲国产| 黄色污网站在线观看| 91国内揄拍国内精品对白| 手机在线观看av| 日韩美女在线观看一区| 日本综合视频| 成人激情黄色网| 亚洲视频一起| 久久久久久久久久久久久久久久av | 亚洲高清资源| 少妇无码av无码专区在线观看 | 欧美新色视频| 一本一本久久a久久精品综合小说| 成人精品一区二区三区校园激情| 国产亚洲综合久久| av电影在线观看网址| www.日韩不卡电影av| а√中文在线8| 久久久久久久一区二区三区| 碰碰在线视频| 国产日韩一区在线| 国产精品影院在线| 91在线观看免费视频| 蜜臀视频在线观看| 久久久久88色偷偷免费| 精品国产大片大片大片| 一区二区三区加勒比av| 黄色片视频网站| 欧美在线免费观看亚洲| 国产精品毛片一区视频播 | 91在线视频免费看| 久久999免费视频| 国产激情视频在线看| 国产精品高潮呻吟久久av野狼 | 美女看a上一区| 成年人看片网站| 久久久高清一区二区三区| 日韩精品久久久久久久的张开腿让| 亚洲一区视频在线观看视频| 91丝袜一区二区三区| 国产精品成人3p一区二区三区| 亚洲第一视频网站| 在线视频婷婷| 国语自产精品视频在免费| 深夜成人在线| 114国产精品久久免费观看| 亚洲小说图片| 四虎永久免费网站| 先锋影音久久| 91视频福利网| 中文字幕国产一区| 国产大片aaa| 欧美日韩国产高清一区| 五月激情丁香婷婷| 欧美成人亚洲成人日韩成人| 亚洲www免费| 国产精品制服诱惑| 天天av综合| www.色偷偷.com| 91污片在线观看| 久久久久97国产| 欧美精品xxxxbbbb| 成人在线免费观看| 欧美亚洲免费电影| 福利片在线一区二区| 一区中文字幕在线观看| 日韩高清国产一区在线| av免费观看不卡| 亚洲欧美国产三级| 中文字幕av影视| 亚洲男人天堂2019| 九色porny视频在线观看| 91亚洲国产成人久久精品网站| 成人午夜国产| 久久精品一区二| 久久久三级国产网站| 欧美三级午夜理伦| 亚洲国产日韩欧美综合久久| 秋霞在线视频| 99视频在线| 综合日韩av| 欧美午夜电影网| 免费国产羞羞网站视频| 久久99国产精品自在自在app| 日韩电影免费观看高清完整版在线观看| 日本福利一区二区三区| 免费一区视频| 欧美大片免费播放器| 五月激情综合网| 色综合视频在线| 91高清视频免费观看| 三级小说欧洲区亚洲区| 波多野结衣乳巨码无在线| av中文字幕不卡| 成年人视频在线免费看| 精品亚洲一区二区三区四区五区| 白浆在线视频| 久久国产一区二区| 亚洲专区一区二区三区| 深爱五月激情网| 在线欧美日韩精品| 91电影在线播放| 国产日韩欧美中文在线播放| 国产精品毛片久久| 色黄视频免费看| 亚洲综合在线观看视频| 黄色小视频免费观看| 91精品国产乱码久久久久久蜜臀| 青青草原在线亚洲| 国产福利一区视频| 国产精品色婷婷| 亚洲综合五月天婷婷丁香| 久久夜色精品国产| 电影一区二区在线观看| www.99热这里只有精品| 久久只精品国产| 中文在线a天堂| 久久资源免费视频| 岛国精品一区| 天天摸天天碰天天添| 国产精品美女久久久久久| 国产免费一区二区三区最新不卡 | 欧美精品一区二区久久婷婷| zzzwww在线看片免费| 日本日本精品二区免费| 麻豆免费看一区二区三区| 欧美日韩一级大片| 日韩精品视频在线观看免费| 婷婷激情一区| 一本—道久久a久久精品蜜桃| 国产99精品在线观看| 青青青国产在线| 久久久精品美女| 青青草久久爱| 999久久久精品视频| 午夜精品视频一区| 欧美另类极品| 国产欧美一区二区三区不卡高清| 日韩精品一级二级| 九九视频在线免费观看| 亚洲女人天堂网| 欧美午夜在线播放| 激情五月开心婷婷| 一区二区三区精密机械公司| 春暖花开成人亚洲区| 1卡2卡3卡精品视频| 日日夜夜一区二区| 久视频在线观看| 久久精品一区中文字幕| 亚洲高清极品| 亚洲av无码专区在线播放中文| 精品视频资源站| 欧美男男tv网站在线播放|