Lograr una cadena simple bloque

Debido a que los líderes del discurso, esta tecnología se convierte en la cadena de bloque caliente hasta el centro parece haberse convertido en la tendencia.

O por la noche todos los días antes de ir a la estación de cepillo lecho B, buscar la animación principal dinámica o la tecnología, o una serie de informes científicos, de repente dar un repaso a las principales series no convencional de la cadena de bloques de vídeo, escuchar realmente bloque de cadena la comprensión, por lo que tenemos la intención de seguir jefes también utilizan su idioma preferido para lograr una cadena simple bloque.
Aquí Insertar imagen Descripción
enlaces de vídeo punto aquí
, creo que, si no se especializan en esta área, pero en un tema muy caliente de la tecnología todavía tiene que tener una cierta comprensión, una palabra para aprender más es siempre ningún daño.

código mafioso js está escrito, enlace de GitHub aquí , tengo que darse cuenta de lo pitón

#首先导库,导入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())

Aquí Insertar imagen Descripción
Gángster de vídeo también dijo que para fomentar el uso de su idioma favorito para ponerlo en práctica, por lo que unos días también la intención de ir a está aprendiendo a escribir un intento, probablemente es así, entonces el código de acceso libre de GitHub.

Publicado 85 artículos originales · ganado elogios 55 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/shelgi/article/details/103525307
Recomendado
Clasificación