class Block:
def __init__(self, index, transactions, previous_hash):
self.index = index
self.transactions = transactions
self.previous_hash = previous_hash
self.timestamp = time()
class BlockChain:
self.chain = []
def new_block(self, transactions):
pass
让我说我做了一个新的交易{'sender': 'bob', 'receiver': 'alice', 'amount': 2}
此事务会在链中创建一个新块(即self.chain.append(new_block_which_has_above_transaction
)
或它是否会获得链中的最后一个块(即len(self.chain)-1
)并修改此块的self.transactions
。
https://hackernoon.com/learn-blockchains-by-building-one-117428612f46
在本文中,作者使用self.transactions
作为列表,这就是我感到困惑的地方。
根据我的理解,每个新事务都将使用该事务创建一个新块,该块将附加到区块链。如果有人开采新区块,那么很少有硬币将作为交易授予矿工。 那是正确的流程吗?或者一个块有多个交易?如果是的话 -
1)创世区块应该有多笔交易吗?
2)如果两个节点具有不同的链(我的意思是我们需要解决) 使用一致性算法)但同时如果该节点处理a 事务然后该块的哈希值会被改变,然后邻居节点的链会发生什么?
答案 0 :(得分:1)
比特币在每个区块上设置了2,400个交易上限,但并非所有区块都有这么多。人们向矿工和矿工广播交易,将交易分成块并分发。
关于你的问题:
您链接的website表示块应该不可变,因此您不应将新事务附加到块列表中。此外,这将更改您需要查找以验证块的哈希值。
由每个块,一个或多个所需的事务数决定。我要做的是收集非链式交易,将它们放入一个区块并将新区块附加到链条上。