日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Python創(chuàng)建自己的加密貨幣的示例

瀏覽:244日期:2022-06-26 17:35:50

隨著當(dāng)前加密貨幣的興起,區(qū)塊鏈在技術(shù)界引起了轟動。

這項技術(shù)之所以吸引了如此多的關(guān)注,主要是因為它具有保證安全,強制分權(quán)和加快多個行業(yè)(尤其是金融行業(yè))流程的能力。

本質(zhì)上,區(qū)塊鏈?zhǔn)且粋€公共數(shù)據(jù)庫,它不可逆地記錄和認證數(shù)字資產(chǎn)的擁有和傳輸。像比特幣和以太坊這樣的數(shù)字貨幣就是基于這個概念。

區(qū)塊鏈?zhǔn)且豁椓钊伺d奮的技術(shù),可用于轉(zhuǎn)換應(yīng)用程序的功能。

最近,我們看到政府,組織和個人使用區(qū)塊鏈技術(shù)來創(chuàng)建自己的加密貨幣。值得注意的是,當(dāng)Facebook提出自己的加密貨幣Libra時,這一公告激起了全世界的許多熱潮。

如果您也可以效仿并創(chuàng)建自己的加密貨幣版本,你應(yīng)該如何著手?

我考慮了這一點,決定開發(fā)一種可以創(chuàng)建加密貨幣的算法。

我決定將加密貨幣稱為fccCoin。

在本教程中,我將逐步說明構(gòu)建數(shù)字貨幣的過程(我使用了Python編程語言的面向?qū)ο蟾拍睿?

這是用于創(chuàng)建fccCoin的區(qū)塊鏈算法的基本藍圖:

class Block: def __init__(): #first block class pass def calculate_hash(): #calculates the cryptographic hash of every block class BlockChain: def __init__(self): # constructor method pass def construct_genesis(self): # constructs the initial block pass def construct_block(self, proof_no, prev_hash): # constructs a new block and adds it to the chain pass @staticmethod def check_validity(): # checks whether the blockchain is valid pass def new_data(self, sender, recipient, quantity): # adds a new transaction to the data of the transactions pass @staticmethod def construct_proof_of_work(prev_proof): # protects the blockchain from attack pass @property def last_block(self): # returns the last block in the chain return self.chain[-1]

現(xiàn)在,讓我解釋一下接下來應(yīng)該怎么做……

1.建立第一個Block類

區(qū)塊鏈由幾個相互連接的塊組成,因此,如果一個塊被篡改,則鏈將變?yōu)闊o效。

在應(yīng)用上述概念時,我創(chuàng)建了以下初始塊類:

import hashlibimport timeclass Block: def __init__(self, index, proof_no, prev_hash, data, timestamp=None): self.index = index self.proof_no = proof_no self.prev_hash = prev_hash self.data = data self.timestamp = timestamp or time.time() @property def calculate_hash(self): block_of_string = '{}{}{}{}{}'.format(self.index, self.proof_no, self.prev_hash, self.data, self.timestamp) return hashlib.sha256(block_of_string.encode()).hexdigest() def __repr__(self): return '{} - {} - {} - {} - {}'.format(self.index, self.proof_no, self.prev_hash, self.data, self.timestamp)

從上面的代碼中可以看到,我定義了__init __()函數(shù),該函數(shù)將在啟動Block類時執(zhí)行,就像在其他任何Python類中一樣。

我為啟動函數(shù)提供了以下參數(shù):

self-引用Block類的實例,從而可以訪問與該類關(guān)聯(lián)的方法和屬性; 索引—跟蹤區(qū)塊鏈在區(qū)塊鏈中的位置; proof_no-這是在創(chuàng)建新塊(稱為挖礦)期間產(chǎn)生的數(shù)量; prev_hash —這是指鏈中上一個塊的哈希值; 數(shù)據(jù)-提供所有已完成交易的記錄,例如購買數(shù)量; 時間戳記-為事務(wù)放置時間戳記。

類中的第二個方法calculate_hash將使用上述值生成塊的哈希。SHA-256模塊被導(dǎo)入到項目中,以幫助獲得塊的哈希值。

將值輸入到密碼哈希算法后,該函數(shù)將返回一個256位字符串,表示該塊的內(nèi)容。

這就是在區(qū)塊鏈中實現(xiàn)安全性的方式-每個塊都將具有哈希,并且該哈希將依賴于前一個塊的哈希。

因此,如果有人試圖破壞鏈中的任何區(qū)塊,其他區(qū)塊將具有無效的哈希值,從而導(dǎo)致整個區(qū)塊鏈網(wǎng)絡(luò)的破壞。

最終,一個塊將如下所示:

{ 'index': 2, 'proof': 21, 'prev_hash': '6e27587e8a27d6fe376d4fd9b4edc96c8890346579e5cbf558252b24a8257823', 'transactions': [ {’sender’: ’0’, ’recipient’: ’Quincy Larson’, ’quantity’: 1} ], 'timestamp': 1521646442.4096143}2.建立區(qū)塊鏈類

顧名思義,區(qū)塊鏈的主要思想涉及將多個區(qū)塊相互“鏈接”。

因此,我將構(gòu)建一個對管理整個鏈的工作很有用的Blockchain類。這是大多數(shù)動作將要發(fā)生的地方。

該Blockchain類將在blockchain完成各種任務(wù)的各種輔助方法。

讓我解釋一下每個方法在類中的作用。

A.構(gòu)造方法

此方法確保實例化區(qū)塊鏈。

class BlockChain: def __init__(self): self.chain = [] self.current_data = [] self.nodes = set()self.construct_genesis()

以下是其屬性的作用:

self.chain-此變量保留所有塊; self.current_data-此變量將所有已完成的事務(wù)保留在該塊中; self.construct_genesis() -此方法將負責(zé)構(gòu)造初始塊。B.構(gòu)建創(chuàng)世塊

區(qū)塊鏈需要一個construct_genesis方法來構(gòu)建鏈中的初始塊。在區(qū)塊鏈慣例中,此塊是特殊的,因為它象征著區(qū)塊鏈的開始。

在這種情況下,讓我們通過簡單地將一些默認值傳遞給Construct_block方法來構(gòu)造它。

盡管您可以提供所需的任何值,但我都給了proof_no和prev_hash一個零值。

def construct_genesis(self): self.construct_block(proof_no=0, prev_hash=0)def construct_block(self, proof_no, prev_hash): block = Block( index=len(self.chain), proof_no=proof_no, prev_hash=prev_hash, data=self.current_data) self.current_data = [] self.chain.append(block) return blockC.建造新的街區(qū)

該construct_block 方法用于在blockchain創(chuàng)造新的塊。

這是此方法的各種屬性所發(fā)生的情況:

索引-代表區(qū)塊鏈的長度; proof_nor&prev_hash —調(diào)用者方法傳遞它們; 數(shù)據(jù)-包含節(jié)點上任何塊中未包含的所有事務(wù)的記錄; self.current_data-用于重置節(jié)點上的事務(wù)列表。如果已經(jīng)構(gòu)造了一個塊并將事務(wù)分配給該塊,則會重置該列表以確保將來的事務(wù)被添加到該列表中。并且,該過程將連續(xù)進行; self.chain.append()-此方法將新構(gòu)建的塊連接到鏈; return-最后,返回一個構(gòu)造的塊對象。D.檢查有效性

該check_validity方法是評估blockchain的完整性,確保異常是絕對重要。

如上所述,散列對于區(qū)塊鏈的安全至關(guān)重要,因為即使對象發(fā)生任何細微變化也將導(dǎo)致生成全新的哈希。

因此,此check_validity 方法使用if語句檢查每個塊的哈希是否正確。

它還通過比較其哈希值來驗證每個塊是否指向正確的上一個塊。如果一切正確,則返回true;否則,返回true。否則,它返回false。

@staticmethoddef check_validity(block, prev_block): if prev_block.index + 1 != block.index: return False elif prev_block.calculate_hash != block.prev_hash: return False elif not BlockChain.verifying_proof(block.proof_no, prev_block.proof_no): return False elif block.timestamp <= prev_block.timestamp: return False return TrueE.添加交易數(shù)據(jù)

該NEW_DATA方法用于添加事務(wù)的數(shù)據(jù)的塊。這是一種非常簡單的方法:它接受三個參數(shù)(發(fā)送者的詳細信息,接收者的詳細信息和數(shù)量),并將交易數(shù)據(jù)附加到self.current_data列表中。

每當(dāng)創(chuàng)建新塊時,都會將該列表分配給該塊,并再次按Construct_block方法中的說明進行重置。

將交易數(shù)據(jù)添加到列表后,將返回要創(chuàng)建的下一個塊的索引。

該索引是通過將當(dāng)前塊的索引(即區(qū)塊鏈中的最后一個)的索引加1來計算的。數(shù)據(jù)將幫助用戶將來提交交易。

def new_data(self, sender, recipient, quantity): self.current_data.append({ ’sender’: sender, ’recipient’: recipient, ’quantity’: quantity }) return TrueF.添加工作證明

工作量證明是防止區(qū)塊鏈濫用的概念。簡而言之,其目的是在完成一定數(shù)量的計算工作后,確定一個可以解決問題的編號。

如果識別數(shù)字的難度很高,則不鼓勵發(fā)送垃圾郵件和篡改區(qū)塊鏈。

在這種情況下,我們將使用一種簡單的算法來阻止人們挖掘區(qū)塊或輕松創(chuàng)建區(qū)塊。

@staticmethoddef proof_of_work(last_proof): ’’’this simple algorithm identifies a number f’ such that hash(ff’) contain 4 leading zeroes f is the previous f’ f’ is the new proof ’’’ proof_no = 0 while BlockChain.verifying_proof(proof_no, last_proof) is False: proof_no += 1 return proof_no@staticmethoddef verifying_proof(last_proof, proof): #verifying the proof: does hash(last_proof, proof) contain 4 leading zeroes? guess = f’{last_proof}{proof}’.encode() guess_hash = hashlib.sha256(guess).hexdigest() return guess_hash[:4] == '0000'G.得到最后一塊

最后,latest_block 方法是一種幫助程序方法,可幫助獲取區(qū)塊鏈中的最后一個塊。請記住,最后一個塊實際上是鏈中的當(dāng)前塊。

@property def latest_block(self): return self.chain[-1]總結(jié)

這是用于創(chuàng)建fccCoin加密貨幣的完整代碼。

import hashlibimport timeclass Block: def __init__(self, index, proof_no, prev_hash, data, timestamp=None): self.index = index self.proof_no = proof_no self.prev_hash = prev_hash self.data = data self.timestamp = timestamp or time.time() @property def calculate_hash(self): block_of_string = '{}{}{}{}{}'.format(self.index, self.proof_no, self.prev_hash, self.data, self.timestamp) return hashlib.sha256(block_of_string.encode()).hexdigest() def __repr__(self): return '{} - {} - {} - {} - {}'.format(self.index, self.proof_no, self.prev_hash, self.data, self.timestamp)class BlockChain: def __init__(self): self.chain = [] self.current_data = [] self.nodes = set() self.construct_genesis() def construct_genesis(self): self.construct_block(proof_no=0, prev_hash=0) def construct_block(self, proof_no, prev_hash): block = Block( index=len(self.chain), proof_no=proof_no, prev_hash=prev_hash, data=self.current_data) self.current_data = [] self.chain.append(block) return block @staticmethod def check_validity(block, prev_block): if prev_block.index + 1 != block.index: return False elif prev_block.calculate_hash != block.prev_hash: return False elif not BlockChain.verifying_proof(block.proof_no, prev_block.proof_no): return False elif block.timestamp <= prev_block.timestamp: return False return True def new_data(self, sender, recipient, quantity): self.current_data.append({ ’sender’: sender, ’recipient’: recipient, ’quantity’: quantity }) return True @staticmethod def proof_of_work(last_proof): ’’’this simple algorithm identifies a number f’ such that hash(ff’) contain 4 leading zeroes f is the previous f’ f’ is the new proof ’’’ proof_no = 0 while BlockChain.verifying_proof(proof_no, last_proof) is False: proof_no += 1 return proof_no @staticmethod def verifying_proof(last_proof, proof): #verifying the proof: does hash(last_proof, proof) contain 4 leading zeroes? guess = f’{last_proof}{proof}’.encode() guess_hash = hashlib.sha256(guess).hexdigest() return guess_hash[:4] == '0000' @property def latest_block(self): return self.chain[-1] def block_mining(self, details_miner): self.new_data( sender='0', #it implies that this node has created a new block receiver=details_miner, quantity= 1, #creating a new block (or identifying the proof number) is awarded with 1 ) last_block = self.latest_block last_proof_no = last_block.proof_no proof_no = self.proof_of_work(last_proof_no) last_hash = last_block.calculate_hash block = self.construct_block(proof_no, last_hash) return vars(block) def create_node(self, address): self.nodes.add(address) return True @staticmethod def obtain_block_object(block_data): #obtains block object from the block data return Block( block_data[’index’], block_data[’proof_no’], block_data[’prev_hash’], block_data[’data’], timestamp=block_data[’timestamp’])

現(xiàn)在,讓我們測試我們的代碼,看看它是否有效。

blockchain = BlockChain()print('***Mining fccCoin about to start***')print(blockchain.chain)last_block = blockchain.latest_blocklast_proof_no = last_block.proof_noproof_no = blockchain.proof_of_work(last_proof_no)blockchain.new_data( sender='0', #it implies that this node has created a new block recipient='Quincy Larson', #let’s send Quincy some coins! quantity= 1, #creating a new block (or identifying the proof number) is awarded with 1)last_hash = last_block.calculate_hashblock = blockchain.construct_block(proof_no, last_hash)print('***Mining fccCoin has been successful***')print(blockchain.chain)

有效!

這是挖掘過程的輸出:

***Mining fccCoin about to start***[0 - 0 - 0 - [] - 1566930640.2707076]***Mining fccCoin has been successful***[0 - 0 - 0 - [] - 1566930640.2707076, 1 - 88914 - a8d45cb77cddeac750a9439d629f394da442672e56edfe05827b5e41f4ba0138 - [{’sender’: ’0’, ’recipient’: ’Quincy Larson’, ’quantity’: 1}] - 1566930640.5363243]結(jié)論

以上就是使用Python創(chuàng)建自己的區(qū)塊鏈的方式。

如果按原樣部署該代幣,它將無法滿足當(dāng)前市場對穩(wěn)定,安全且易于使用的加密貨幣的需求。

因此,仍可以通過添加其他功能來增強其挖掘和發(fā)送財務(wù)交易的功能,從而對其進行改進。

以上就是Python創(chuàng)建自己的加密貨幣的示例的詳細內(nèi)容,更多關(guān)于Python創(chuàng)建自己的加密貨幣的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲制服少妇| 欧美专区18| 日本欧美在线| 亚洲免费福利一区| 最新国产精品久久久| 丝袜美腿亚洲色图| 蜜臀久久久99精品久久久久久| 三级小说欧洲区亚洲区| 国产精品蜜芽在线观看| 国产在视频一区二区三区吞精| 久久久久九九精品影院| 欧美交a欧美精品喷水| 精品亚洲二区| bbw在线视频| 99久久夜色精品国产亚洲1000部| 亚洲成人二区| 亚洲精品a级片| 久久亚洲一区| 日韩精品免费视频人成| 国产日韩在线观看视频| 久久免费精品| 久久精品1区| 日韩午夜黄色| 日韩中文字幕一区二区高清99| 91嫩草精品| 福利一区视频| 亚洲国产综合在线看不卡| 亚洲激情国产| 日韩黄色av| 最新中文字幕在线播放 | 亚洲高清av| 麻豆亚洲精品| 久久精品超碰| 国产精品亚洲一区二区三区在线观看| 久久高清精品| 视频一区视频二区中文| 国产探花一区| 日韩在线中文| 在线观看一区| 久久亚州av| 欧美日韩视频| 国产精品15p| 欧美日韩一二| 清纯唯美亚洲综合一区| 91免费精品| 在线一区免费观看| 国产欧美日韩精品一区二区三区| 日韩精品第一区| 蜜桃久久av| 国产日韩欧美三级| 一本大道色婷婷在线| 亚洲人成高清| 国产+成+人+亚洲欧洲在线| 国产精品88久久久久久| 欧美日韩一区二区国产 | 久久亚洲欧美| 国产成人免费av一区二区午夜| 欧美综合另类| 久久国产视频网| 欧美理论视频| 久久不见久久见中文字幕免费| 成人看片网站| 日韩av黄色在线| 999国产精品视频| 久久精品xxxxx| 欧美精品一区二区三区精品| 美女精品久久| 久久亚洲视频| 久久久一本精品| 国产日韩精品视频一区二区三区| 亚洲一本视频| 九九九精品视频| 日韩精品一级二级| 日韩欧美二区| 国产午夜精品一区在线观看| 五月天激情综合网| 国产成人免费| 亚洲精品人人| 蜜桃视频欧美| 成人午夜网址| 欧美自拍一区| 国产亚洲精品自拍| 日本一区二区免费高清| 亚洲日本三级| 亚洲国产专区| 狠狠躁少妇一区二区三区| 日韩精品免费视频一区二区三区| 亚洲精品a级片| 免费看av不卡| 精品视频在线观看网站| 日韩 欧美一区二区三区| 免费视频一区三区| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 美女网站视频一区| 精品一区91| 亚洲精品乱码日韩| 欧美 日韩 国产精品免费观看| 美女毛片一区二区三区四区最新中文字幕亚洲 | 久久av日韩| 中文字幕日韩亚洲| 婷婷综合社区| 91精品国产乱码久久久久久久 | 久久久久免费| 欧美a级一区二区| 欧美亚洲tv| 日韩国产欧美在线播放| 视频一区视频二区中文| 欧美特黄一区| 亚洲特色特黄| 成人看片网站| 久久毛片亚洲| 国产理论在线| 国产精品99一区二区三| 欧美激情综合| 国产精品久久久久久久久久久久久久久| 亚洲精品乱码| 亚洲一区导航| 一区二区精彩视频| 亚洲成av在线| 亚州av一区| av资源亚洲| 日韩欧美久久| 日韩一区二区中文| 一本色道久久精品| 丝袜美腿亚洲一区| 日韩一区二区三区精品| 日本va欧美va瓶| 国产伦精品一区二区三区在线播放| 日韩精选在线| 精品国产aⅴ| 亚洲高清av| 国产精品66| 国产精品巨作av| 欧美激情aⅴ一区二区三区 | 亚洲a级精品| 亚洲精品进入| 日韩av一区二区三区四区| 日韩中文字幕1| 中文不卡在线| 国产亚洲一区二区三区啪| 毛片不卡一区二区| 国产盗摄——sm在线视频| 精品免费av在线| 日韩网站在线| 欧美在线亚洲| 久久国产免费| 亚洲免费黄色| 在线国产精品一区| 欧美影院视频| 国产66精品| 蜜臀久久99精品久久一区二区| 午夜在线精品| 欧美日韩va| 国产欧美另类| 日韩精品1区| 亚洲资源av| 日韩av网站在线免费观看| 精品视频自拍| re久久精品视频| 少妇精品久久久一区二区 | 亚洲综合中文| 国产欧美日韩精品高清二区综合区| 久久中文字幕导航| 亚洲高清不卡| 91精品国产自产观看在线| 国产aⅴ精品一区二区三区久久| 色婷婷综合网| 亚洲大全视频| 欧美日韩精品一区二区三区在线观看| 精品免费av一区二区三区| 激情91久久| 欧美日韩午夜电影网| 亚洲免费福利| 视频在线在亚洲| 国内在线观看一区二区三区| 亚洲电影在线一区二区三区| 日韩国产在线一| 日韩欧美一区二区三区免费看| 亚洲在线观看| 国产一区二区三区精品在线观看| 欧美女激情福利| 日本h片久久| 色吊丝一区二区| 国产女人18毛片水真多18精品| 亚洲不卡系列| 欧美一区91| 亚洲午夜电影| 国产精品久久亚洲不卡| 欧美91视频| 国产精品亚洲欧美日韩一区在线 | 97精品一区二区| 一二三区精品| 午夜精品成人av| 国产一区福利| 免费在线视频一区| 日韩av中文字幕一区| 中文字幕在线免费观看视频| 亚洲人妖在线| 亚洲精品一级二级| 欧美日韩1区|