繁体   English   中英

区块链中的交易验证

[英]Transaction verification in Blockchain

让我们假设我们有一个名为ABCCoin,ABC的AltCoin。 我将被称为X,开采了一个街区并获得了新鲜铸造的25 ABC作为采矿奖励。 现在,我想将此硬币送给朋友Y。

Tx: X -> Y : 25ABC

并假设它存储在块B100中。 现在几个月后,Y女士出于任何原因都希望将其转移到Z。 所以,

Tx: Y -> Z : 25ABC

现在,几个月后。 Z先生想和女友约会时用星巴克买咖啡。

现在,交易链如下:

|Tx|Minted -> X |
   --> "Tx: X -> Y : 25ABC" 
   --> "Tx: Y -> Z : 25ABC"
   --> "Tx: Z -> Starbucks : 25ABC"

因此,在这种情况下。 当我们需要验证“ Tx:Z-> Starbucks:25ABC”时,我们必须追溯到其起源,即该硬币铸造的时间点,或者仅通过检查其直接来源就可以对其进行验证。 即“ Tx:X-> Y:25ABC”,并且不关心其他先前版本。

假设您正在询问基于UTXO交易的区块链(如比特币)。

验证有2种类型

  1. 全节点验证

  2. SPV验证

全节点

全节点程序是一种完全验证交易和区块(例如bitcoindlitecoindgeth 因此,每当一个完整的节点从其他对等方接收到新的块时,它都会验证该块中的所有交易,并仅在该块完全有效时才将其添加到其区块链中并更新UTXO列表。

为了验证交易,全节点检查类似

  • 交易格式
  • 交易签名
  • 从其区块链中查找先前的交易
  • 双重支出交易的存在

因为完整节点具有它认为正确的UTXO列表,所以检查事务格式/签名和UTXO列表足以验证新事务。

SPV

SPV客户端没有完整的区块链数据或UTXO列表,SPV仅使用MarkleTree检查交易是否在区块中,并且包含该交易的区块是否满足区块难度。 这就是SPV可以检查的所有内容,因为它必须逐个检查所有块头和块体以创建UTXO列表。 因此,SPV无法检查是否是双重消费交易。 但是,因为只要区块链具有足够的难度,创建一个假块的成本很高,所以它是可用的验证。 就像评论中提到的@Haardik一样,在将来的更新中可能会获得可信任的UTXO列表而不使用标记树下载所有区块链数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM