国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何使用Python創(chuàng)建加密貨幣

開發(fā) 后端
在構(gòu)建自己的加密貨幣或區(qū)塊鏈之前,您需要了解Python和區(qū)塊鏈的基礎(chǔ)知識(shí)。區(qū)塊鏈或許看起來很復(fù)雜,但可以肯定的是其核心概念確實(shí)非常簡(jiǎn)單。

[[399524]]

本文轉(zhuǎn)載自微信公眾號(hào)「區(qū)塊鏈研究實(shí)驗(yàn)室」,作者鏈三豐 。轉(zhuǎn)載本文請(qǐng)聯(lián)系區(qū)塊鏈研究實(shí)驗(yàn)室公眾號(hào)

本文將向大家介紹如何使用Python 3.9.4建立屬于自己的區(qū)塊鏈和加密貨幣。在構(gòu)建自己的加密貨幣或區(qū)塊鏈之前,您需要了解Python和區(qū)塊鏈的基礎(chǔ)知識(shí)。區(qū)塊鏈或許看起來很復(fù)雜,但可以肯定的是其核心概念確實(shí)非常簡(jiǎn)單。

要求

確保您已安裝最新版本的Python。

入門

創(chuàng)建一個(gè)新的Python文件,文件名app.py。首先,我們應(yīng)該創(chuàng)建一個(gè)Block類。

我將參考dzone.com的代碼:

  1. class Block(object): 
  2.     def __init__(self): 
  3.         pass 
  4.  
  5.     def compute_hash(self): 
  6.         pass 

我們還需要?jiǎng)?chuàng)建Blockchain類藍(lán)圖:

  1. class Blockchain(object): 
  2.     def __init__(self): 
  3.         pass 
  4.  
  5.     def build_genesis(self): 
  6.         pass 
  7.  
  8.     def build_block(self): 
  9.         pass 
  10.  
  11.     @staticmethod 
  12.     def confirm_validity(block, previous_block): 
  13.         pass 
  14.  
  15.     def get_data(self, sender, receiver, amount): 
  16.         pass 
  17.  
  18.     @staticmethod 
  19.     def proof_of_work(last_proof): 
  20.         pass 
  21.  
  22.     @property 
  23.     def latest_block(self): 
  24.         pass 

積木類

現(xiàn)在,讓我們看一下我們剛剛創(chuàng)建的這些類。塊類將如下所示:

  1. import hashlib 
  2. import time 
  3.  
  4. class Block(object): 
  5.     def __init__(self, index, proof_number, previous_hash, data, timestamp=None): 
  6.         self.index = index 
  7.         self.proof_number = proof_number 
  8.         self.previous_hash = previous_hash 
  9.         self.data = data 
  10.         self.timestamp = timestamp or time.time() 
  11.  
  12.     @property     
  13.     def compute_hash(self): 
  14.         string_block = "{}{}{}{}{}".format(self.index, self.proof_number, self.previous_hash, self.data, self.timestamp
  15.         return hashlib.sha256(string_block.encode()).hexdigest() 

Block類采用幾個(gè)參數(shù):index,proof_number,previous_hash,data和timestamp。

  • 索引用于查看塊在鏈中的哪個(gè)位置。
  • 我認(rèn)為,前者是不言而喻的。
  • 數(shù)據(jù)是一個(gè)對(duì)象,它收集有關(guān)該區(qū)塊的所有信息(id,金額,發(fā)送者,接收者等)。
  • 時(shí)間戳是指生成塊的時(shí)刻。

在def compute_hash()方法中,我們的哈希將使用hash方法創(chuàng)建。

鏈條類

單獨(dú)的塊沒有任何價(jià)值,并且使用鏈來加密數(shù)據(jù),因此很重要。讓我們?yōu)镃hain類創(chuàng)建構(gòu)造函數(shù):

  1. class Blockchain(object): 
  2.     def __init__(self): 
  3.         self.chain = [] 
  4.         self.current_data = [] 
  5.         self.nodes = set() 
  6.         self.build_genesiss() 

讓我們看一下這些參數(shù)的作用。

  • 該self.chain是一個(gè)變量,它存儲(chǔ)所有的塊。
  • 該self.current_data是一個(gè)變量,它存儲(chǔ)所有關(guān)于該塊的信息。
  • 這self.nodes是用于設(shè)置節(jié)點(diǎn)的示例方法。
  • 所述self.build_genesis方法變量是創(chuàng)建第一塊中的方法。

建立創(chuàng)世方法

此方法將用于創(chuàng)建初始?jí)K。因此,我們需要調(diào)用該build_block()方法。

  1. def build_genesis(self): 
  2.         self.build_block(proof_number=0, previous_hash=0) 
  3.  
  4.     def build_block(self, proof_number, previous_hash): 
  5.         block = Block( 
  6.             index=len(self.chain), 
  7.             proof_number=proof_number, 
  8.             previous_hash=previous_hash, 
  9.             data=self.current_data 
  10.         ) 
  11.  
  12.         self.current_data = [] 
  13.         self.chain.append(block) 
  14.  
  15.         return block 

在此方法中,創(chuàng)建一個(gè)新Block對(duì)象并輸入所需的參數(shù):索引,證明,previous_hash和數(shù)據(jù)。然后,我們?cè)O(shè)置當(dāng)前數(shù)據(jù)并將該塊附加到鏈中。

確認(rèn)有效性方法

創(chuàng)建加密貨幣/區(qū)塊鏈的重要部分是檢查區(qū)塊是否有效。我們用一種新方法來做到這一點(diǎn)。

  1. @staticmethod 
  2.     def confirm_validity(block, previous_block): 
  3.         if previous_block.index + 1 != block.index
  4.             return False 
  5.  
  6.         elif previous_block.compute_hash() != block.previous_hash: 
  7.             return False 
  8.  
  9.         elif block.timestamp & lt; = previous_block.timestamp
  10.             return False 
  11.  
  12.         return True 

讓我們解釋一下:此方法使用幾個(gè)if語句來檢查Block是否是它應(yīng)該的塊。它c(diǎn)ompute_hash()再次使用該方法。

獲取數(shù)據(jù)方法

當(dāng)然,您希望能夠讀取您的塊和區(qū)塊鏈的數(shù)據(jù),這是通過以下get_data()方法完成的:

  1. def get_data(self, sender, receiver, amount): 
  2.             self.current_data.append({ 
  3.                 'sender': sender, 
  4.                 'receiver': receiver, 
  5.                 'amount': amount 
  6.             }) 
  7.  
  8.             return True 

該方法非常簡(jiǎn)單,它采用三個(gè)參數(shù)并將它們添加到對(duì)象中。

工作證明

在這個(gè)項(xiàng)目中,我們將添加一個(gè)工作量證明算法以使挖掘成為可能。

讓我們創(chuàng)建def block_mining方法:

  1. def block_mining(self, details_miner): 
  2.         self.get_data( 
  3.             sender="0"
  4.             receiver=details_miner, 
  5.             quantity=1, 
  6.         ) 
  7.  
  8.         last_block = self.latest_block 
  9.         last_proof_number = last_block.proof_number 
  10.         proof_number = self.proof_of_work(last_proof_number) 
  11.         last_hash = last_block.compute_hash 
  12.  
  13.         block = self.build_block(proof_number, last_hash) 
  14.  
  15.         return vars(block) 

定稿

為了結(jié)束我們的項(xiàng)目,我們將以下代碼行添加到def latest_block方法中,

  1. return self.chain[-1] 

現(xiàn)在,我們將測(cè)試我們的項(xiàng)目:

  1. bc = Blockchain() 
  2. print("READY"
  3. print(bc.chain) 
  4. #output
  5. READY 
  6. [<__main__.Block object at 0x00000241A23C5EE0>] 

當(dāng)您看到類似的結(jié)果時(shí),您的區(qū)塊鏈藍(lán)圖已成功構(gòu)建。如果您想添加額外的功能,則可以這樣做,請(qǐng)告訴我您所構(gòu)建的內(nèi)容!

完整代碼示例:

  1. import hashlib 
  2. import time 
  3.  
  4.  
  5. class Block(object): 
  6.     def __init__(self, index, proof_number, previous_hash, data, timestamp=None): 
  7.         self.index = index 
  8.         self.proof_number = proof_number 
  9.         self.previous_hash = previous_hash 
  10.         self.data = data 
  11.         self.timestamp = timestamp or time.time() 
  12.  
  13.     @property 
  14.     def compute_hash(self): 
  15.         string_block = "{}{}{}{}{}".format( 
  16.             self.index, self.proof_number, self.previous_hash, self.data, self.timestamp
  17.         return hashlib.sha256(string_block.encode()).hexdigest() 
  18.  
  19.  
  20. class Blockchain(object): 
  21.     def __init__(self): 
  22.         self.chain = [] 
  23.         self.current_data = [] 
  24.         self.nodes = set() 
  25.         self.build_genesis() 
  26.  
  27.     def build_genesis(self): 
  28.         self.build_block(proof_number=0, previous_hash=0) 
  29.  
  30.     def build_block(self, proof_number, previous_hash): 
  31.         block = Block( 
  32.             index=len(self.chain), 
  33.             proof_number=proof_number, 
  34.             previous_hash=previous_hash, 
  35.             data=self.current_data 
  36.         ) 
  37.  
  38.         self.current_data = [] 
  39.         self.chain.append(block) 
  40.  
  41.         return block 
  42.  
  43.     @staticmethod 
  44.     def confirm_validity(block, previous_block): 
  45.         if previous_block.index + 1 != block.index
  46.             return False 
  47.  
  48.         elif previous_block.compute_hash() != block.previous_hash: 
  49.             return False 
  50.  
  51.         elif block.timestamp >= previous_block.timestamp
  52.             return False 
  53.  
  54.         return True 
  55.  
  56.     def get_data(self, sender, receiver, amount): 
  57.         self.current_data.append({ 
  58.             'sender': sender, 
  59.             'receiver': receiver, 
  60.             'amount': amount 
  61.         }) 
  62.  
  63.         return True 
  64.  
  65.     @staticmethod 
  66.     def proof_of_work(last_proof): 
  67.         pass 
  68.  
  69.     @property 
  70.     def latest_block(self): 
  71.         return self.chain[-1] 
  72.  
  73.     def block_mining(self, details_miner): 
  74.         self.get_data( 
  75.             sender="0"
  76.             receiver=details_miner, 
  77.             quantity=1, 
  78.         ) 
  79.  
  80.         last_block = self.latest_block 
  81.         last_proof_number = last_block.proof_number 
  82.         proof_number = self.proof_of_work(last_proof_number) 
  83.         last_hash = last_block.compute_hash 
  84.  
  85.         block = self.build_block(proof_number, last_hash) 
  86.  
  87.         return vars(block) 
  88.  
  89.  
  90. bc = Blockchain() 
  91. print("READY"
  92. print(bc.chain) 

終于我們使用Python創(chuàng)建了自己的區(qū)塊鏈。

 

責(zé)任編輯:武曉燕 來源: 區(qū)塊鏈研究實(shí)驗(yàn)室
相關(guān)推薦

2022-06-06 15:41:51

加密貨幣安全勒索軟件

2021-04-12 16:31:09

加密貨幣資金金融

2021-03-23 12:15:32

加密貨幣比特幣貨幣

2022-07-29 15:08:05

加密貨幣去中心化工具

2022-06-10 14:10:38

加密貨幣代幣比特幣

2021-04-12 11:23:43

加密貨幣技術(shù)比特幣

2022-01-12 11:12:21

區(qū)塊鏈加密貨幣技術(shù)

2021-02-02 21:43:47

加密貨幣以太坊比特幣

2022-05-04 23:29:42

加密貨幣代幣比特幣

2021-11-14 22:25:18

加密貨幣物聯(lián)網(wǎng)區(qū)塊鏈

2022-02-18 00:02:31

加密貨幣愛情安全

2022-04-19 15:39:08

區(qū)塊鏈加密貨幣交易

2021-02-26 20:32:40

加密貨幣比特幣貨幣

2021-06-04 10:31:41

PythonUniswap加密貨幣

2021-06-09 14:26:50

加密貨幣比特幣貨幣

2022-04-08 14:06:08

加密貨幣捐贈(zèng)慈善

2022-05-26 14:52:00

加密貨幣金融女性

2021-04-12 10:29:56

加密貨幣貨幣比特幣

2021-04-22 22:02:50

加密貨幣比特幣數(shù)字資產(chǎn)

2021-11-15 15:37:14

加密貨幣銀行比特幣
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

青青久久av| 视频一区二区国产| 欧美成人激情免费网| 久草热久草在线频| 中文字幕免费不卡在线| 青娱乐自拍偷拍| 国产一区二区看久久| 亚洲国产一区二区精品视频| 亚洲在线网站| 国产主播一区二区三区四区| 午夜久久美女| 91九色对白| 91精品国产自产拍在线观看蜜| 国产成人精品综合久久久| 老司机凹凸av亚洲导航| 午夜剧场成人观在线视频免费观看| 国产中文欧美日韩在线| 久久久久www| 视频在线一区| 国内偷自视频区视频综合 | 精品亚洲综合| 欧美色道久久88综合亚洲精品| 香蕉视频在线免费| 色噜噜狠狠色综合中国| av网站在线免费播放| 在线播放亚洲一区| 超免费在线视频| 日韩精品久久久久久久玫瑰园| 免费h视频在线观看| 最新国产成人av网站网址麻豆| 欧美97人人模人人爽人人喊视频| 久久av中文字幕| 亚洲香蕉视频| 国产精品视频久久久久| 亚洲一区二区三区无吗| 国产高清一区视频| 麻豆91精品| 亚洲精品国产suv一区88| 91美女福利视频| 色琪琪丁香婷婷综合久久| 在线观看视频91| 性xxxxfreexxxxx欧美丶| 久久精品成人欧美大片| 亚洲人成网77777色在线播放| www.久久久| 免费的成人av| 7777在线视频| 极品少妇一区二区| 国产最顶级的黄色片在线免费观看| 日韩高清中文字幕| 日本美女在线中文版| 日韩经典第一页| 999久久久精品一区二区| 成人免费在线视频网址| 丝袜美腿亚洲综合| 人人妻人人添人人爽欧美一区| 国产精品国产a| 在线免费观看黄色| 少妇高潮久久77777| 欧美另类69xxxxx| 久久久久久欧美精品色一二三四 | 国产精品日日做人人爱| 日韩激情视频网站| 欧美日韩国产高清电影| 亚洲人吸女人奶水| 18视频免费网址在线观看| 亚洲美女视频网| 国产一区二区在线| 中文字幕一区二区三区5566| 国产精品福利电影一区二区三区四区 | a级黄色一级片| 色婷婷综合在线| 亚洲精品毛片| 高清一区二区三区视频| 99精品国产一区二区三区不卡| 欧美性色黄大片手机版| 在线精品亚洲一区二区不卡| 69堂免费精品视频在线播放| 国产精品免费小视频| 国产在线播放一区| 超碰在线人人| 在线国产精品视频| 亚洲国产精品第一区二区| 色综合久久久久无码专区| 欧美精品第1页| 亚洲精品**不卡在线播he| 蜜桃网站在线观看| 欧美精品vⅰdeose4hd| 蜜乳av综合| 亚洲国产欧美在线人成| 欧美日韩国产丝袜美女| 亚洲精品555| 看高清中日韩色视频| 一区二区免费视频| 99久久这里有精品| 激情五月俺来也| 一区二区三区四区不卡在线| 成人黄色在线| 午夜精品视频在线观看一区二区 | 日本女优一区| www.欧美日本| 在线观看欧美www| 日韩av成人高清| 成人在线观看网站| 国产成人激情小视频| 久久久久久久久一| 日本欧美韩国| 最近免费观看高清韩国日本大全| 欧美亚洲国产一区二区三区| 激情综合网最新| 欧美一级二级三级| 91精品中文字幕一区二区三区| 日韩三级一区| 亚洲mv在线看| 欧美高清视频免费观看| 久久伊99综合婷婷久久伊| 亚洲一区二区三区视频| 中文字幕日本乱码精品影院| 懂色aⅴ精品一区二区三区| 亚洲国产精品久久久久久女王| 在线观看视频一区二区欧美日韩| 亚洲影院天堂中文av色| 天天色综合社区| 欧美黄色免费网站| 久久久久99精品一区| 国产精品久久久久久久久久久久久久久 | 国偷自产av一区二区三区小尤奈| 亚洲国产成人tv| 不卡一区2区| 黄色免费看片| 国产精品久久久久久久app| 自拍视频在线观看一区二区| 日韩欧美国产大片| 日韩黄色视屏| 国产中文字幕91| 在线观看av不卡| 美女黄网久久| 久热在线观看视频| 国产v片免费观看| 国内成人精品视频| 亚洲国产精品欧美一二99| 亚洲成人精选| 国产婷婷视频在线| 在线观看一区二区三区三州| 亚洲欧美三级伦理| 91香蕉视频在线| 日韩中文字幕一区二区高清99| juliaann成人作品在线看| 国产精品海角社区在线观看| 在线免费观看视频一区| 久久久一二三| 国产精品高潮久久| 国产免费视频| 国产91一区二区三区| 精品国产sm最大网站| 99精品国产热久久91蜜凸| 中文字幕伦av一区二区邻居| 国家队第一季免费高清在线观看| 欧洲一区二区在线观看| 伊人久久免费视频| 亚洲日本青草视频在线怡红院 | 黄网在线观看| 亚洲自拍偷拍二区| 欧美成人小视频| 亚洲大片精品永久免费| 亚洲自啪免费| 欧美亚洲黄色| 同心难改在线观看| 中文字幕一区二区三区有限公司 | 一区二区理论电影在线观看| 日韩香蕉视频| 懂色aⅴ精品一区二区三区| www.999av| 久久久综合亚洲91久久98| 中文字幕在线成人| 午夜精品一区二区三区电影天堂| 性欧美videos另类喷潮| 96视频在线观看欧美| 精品视频三区| 精品久久久久久久久久中文字幕| 国产欧美亚洲视频| 亚洲少妇激情视频| 精品动漫一区二区三区| 国产真实乱子伦精品视频| 天海翼精品一区二区三区| caopo在线| 成年网站在线播放| 日韩福利二区| 欧美在线观看视频| 日韩电影在线观看永久视频免费网站| 亚洲日本一区二区| 国产另类ts人妖一区二区| 日本一二区不卡| 欧美黄色a视频| 男人影院在线观看| 1069男同网址| 无码人妻少妇伦在线电影| 久久国产精品一区二区三区| 午夜精品一区二区三区在线播放 | 精品国产丝袜高跟鞋|