簡(jiǎn)單的記錄下最近自己在學(xué)習(xí)區(qū)塊鏈的筆記瞎访,隨著比特幣的價(jià)格越來越高,區(qū)塊鏈的概念也越來越火蔓倍。我簡(jiǎn)單的把區(qū)塊鏈理解成存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫全肮,由一個(gè)個(gè)區(qū)塊作為容器存儲(chǔ)數(shù)據(jù)敞咧,通過hash值相互連接,類似鏈表結(jié)構(gòu)辜腺。
簡(jiǎn)易的數(shù)據(jù)結(jié)果圖
簡(jiǎn)單區(qū)塊鏈結(jié)構(gòu)圖
python代碼簡(jiǎn)易實(shí)現(xiàn)
import hashlib #導(dǎo)入加密模塊
import time #導(dǎo)入時(shí)間模塊
#定義一個(gè)區(qū)類休建,命名為maxBlockCoin
class maxBlockCoin:
def __init__(self, index, timestamp, data, pre_hash):
#區(qū)塊中含有index(序號(hào)), timestamp(時(shí)間戳), data(交易數(shù)據(jù)), pre_hash(前一個(gè)區(qū)塊的hash), hash(當(dāng)前區(qū)塊的hash)
self.index = index
self.timestamp = timestamp
self.data = data
self.pre_hash = pre_hash
self.hash = self.hash_block()
def hash_block(self):
string = str(self.index) + str(self.timestamp) + str(self.data) + str(self.pre_hash)
sha = hashlib.sha256()
sha.update(string.encode("utf-8"))
return sha.hexdigest();
# 創(chuàng)建第一個(gè)區(qū)塊(創(chuàng)始區(qū)塊)的方法
def create_gensis_block():
return maxBlockCoin(0, time.time(), "first_block", "0000000")
#創(chuàng)建其它區(qū)塊的方法
def create_block(pre_block):
return maxBlockCoin(pre_block.index + 1, time.time(), "line_block", pre_block.hash)
# 打印出整個(gè)區(qū)塊鏈
pre_block = create_gensis_block()
nums = 99
print(str(pre_block.index) + "---" + str(pre_block.timestamp) + "---" + str(pre_block.data) + "---hash:" +
pre_block.hash)
for i in range(nums):
add_block = create_block(pre_block);
pre_block = add_block
print(str(pre_block.index) + "---" + str(pre_block.timestamp) + "---" + str(
pre_block.data) + "---pre_hash:" + pre_block.pre_hash + "---hash:" +
pre_block.hash)
輸出結(jié)果部分截圖:
部分打印結(jié)果