class Bird:
def __init__(self):
self.hungry=True
def eat(self):
if self.hungry:
print('Ahahahah')
else:
print('No thanks!')
class SongBird(Bird):
def __init__(self):
self.sound='Squawk'
super(SongBird,self).__init__()
def sing(self):
print(self.sound)
if __name__=="__main__":
sb=SongBird()
InPart 3:Persistence and CLIwe studied the way Bitcoin Core stores blocks in a database.It was said that blocks are stored inblocksdatabase and transaction outputs are stored inchainstatedatabase.Let me remind you what the structure ofchainstate'c'+32-byte transaction hash->unspent transaction output record for that transaction'B'->32-byte block hash:the block hash up to which the database represents the unspent transaction outputsSince that article,we’ve already implemented transactions,but we haven’t used thechainstatechainstate
sb.sing()#能正常输出
sb.eat()
func(cli*CLI)send(from,to string,amount int){
...
bc:=NewBlockchain()
UTXOSet:=UTXOSet{bc}
defer bc.db.Close()
tx:=NewUTXOTransaction(from,to,amount,&UTXOSet)
cbTx:=NewCoinbaseTX(from,"")
txs:=[]*Transaction{cbTx,tx}
newBlock:=bc.MineBlock(txs)
fmt.Println("Success!")
}
开放,共识,任何人都可以参与到区块链网络,每一台设备都能作为一个节点,每个节点都允许获得一份完整的数据库拷贝,节点之间基于一套共识机制,通过竞争计算共同维护整个区块链。
去中心化、去信任机制,区块链由众多的节点共同组成一个点对点的网络,不存在中心化的设备和管理机构,节点之间数据交互通过数字签名技术进行验证,不需要信任,只需要按照设置好的规则就行,节点之间不存在欺骗不信任的问题。
交易透明,双方匿名,区块链的运行规则是公开透明的,所有的数据信息也是公开的,每笔交易都是对所有节点公开可见,由于节点之间是去信任的,因此节点不需要公开身份,每个参与的节点都是匿名的。
不可篡改,可追溯,单个节点甚至多个节点对数据库的修改无法影响其他节点的数据库,区块链中的每一笔交易都通过密码学方法与两个相邻的两个区块串联,因此可以追溯每一笔交易的所有记录。