単純なブロックチェーンを達成

スピーチの指導者なので、この技術は、中心までのホットブロック鎖がトレンドとなっているようだとなります。

または夜遅く毎日本当にチェーンをブロックするように聞いて、突然ビデオブロックチェーンの主な型破りなシリーズをブラッシュアップするために、メインのダイナミックなアニメーションや技術、あるいは科学的なレポートの数を調べ、ベッドブラシB駅に行く前に理解は、私たちは首長にも、簡単なブロック鎖を達成するためにあなたの好きな言語を使用従うことを計画しています。
ここに画像を挿入説明
動画のリンクはここでのポイント
は、私はこの分野に特化したが、技術の非常にホットな話題にはまだ一定の理解を持っている必要はない場合は、より多くの学ぶべき単語が常に害ではない、と思います。

ギャングjsのコードが記述され、ここでGitHubのリンクは、私が何のpythonを実現する必要があります

#首先导库,导入sha256加密算法
import hashlib


#区块
class Block:
    def __init__(self,data,previousHash):
        self.data=data
        self.previousHash=previousHash
        self.hash=self.computeHash()
    #计算hash值
    def computeHash(self):
        return hashlib.sha256((self.data+self.previousHash).encode("utf-8")).hexdigest()
    
    
#链
class Chain:
    def __init__(self):
        self.chain=[self.bigBang()]
    #第一个区块
    def bigBang(self):
        genesisBlock=Block("我是祖先","")
        return genesisBlock
    
    #最后的区块
    def getLastestBlock(self):
        return self.chain[len(self.chain)-1]
    
    #添加区块到区块链上
    def addBlockToChain(self,newBlock):
        newBlock.previousHash=self.getLastestBlock().hash
        newBlock.hash=newBlock.computeHash()
        self.chain.append(newBlock)
        print("添加新区块成功")
        
    #验证这个当前的区块链是否合法
    #当前的数据有没有被篡改
    #我们要验证区块的previousHash是否等于previous区块的hash
    def validateChain(self):
        if(len(self.chain)==1):
            if(self.chain[0].hash!=self.chain[0].computeHash()):
                return False
            return True
        else:
            # self.chain[1] 是第二个区块
            # 我们从第二个区块开始 验证
            # 验证到最后一个区块 this.chain.length -1 
            for i in range(1,len(self.chain)):
                blockToValidate=self.chain[i]
                #当前的数据有没有被篡改
                if(blockToValidate.hash!=blockToValidate.computeHash()):
                    print("数据篡改")
                    return False
                #我们要验证区块的previousHash是否等于previous区块的hash
                previousBlock=self.chain[i-1]
                if(blockToValidate.previousHash!=previousBlock.hash):
                    print("前后区块链接断裂")
                    return False
            else:
                return True
            
#初始化一个区块链           
mychain=Chain()
print(mychain.validateChain())

#添加两个新区块
block1=Block("转账十元","")
mychain.addBlockToChain(block1)
block2=Block("转账一百元","")
mychain.addBlockToChain(block2)
print(mychain.validateChain())

#查看区块的数据
print(mychain.chain[0].data,mychain.chain[0].previousHash,mychain.chain[0].hash)
print(mychain.chain[1].data,mychain.chain[1].previousHash,mychain.chain[1].hash)
print(mychain.chain[2].data,mychain.chain[2].previousHash,mychain.chain[2].hash)

#尝试篡改区块链信息
mychain.chain[1].data="转账二元"
mychain.chain[1].hash=mychain.chain[1].computeHash()
print(mychain.chain[1].data)
print(mychain.validateChain())

ここに画像を挿入説明
ギャングスターのビデオはまた、コードフリーパスのgithubの、おそらくそれはそうです、試みを書くために学んでいる数日も一緒に行くつもりので、それを実装するためにあなたの好きな言語を使用奨励すると述べました。

公開された85元の記事 ウォン称賛55 ビュー20000 +

おすすめ

転載: blog.csdn.net/shelgi/article/details/103525307