首页 > 其他分享 >比特币的小白入门理解

比特币的小白入门理解

时间:2024-12-19 18:57:08浏览次数:6  
标签:UTXO 入门 比特 小白 哈希 中心化 区块 交易

       电子支付相比于纸币支付更加方便快捷,具备远程支付能力,但随之也出现了纸币这种物理货币不可能出现的双重支付问题(即交易未被确认前,攻击者使用同一笔电子货币进行多次交易支付)。为了解决双重支付问题,在传统的有可信任第三方如银行的中心化电子支付系统中,银行承担了交易确认的职能。中心化系统可以及时更新交易,使得一笔交易能及时确认,留给双重支付的窗口期非常短。此外,银行可以对不合法合规的交易进行撤销,这进一步降低了双重支付的可能性。由于银行受到法律法规的监管,其对交易的撤销也是受到严格监督的。所以,依托银行的中心化电子支付系统确实有十分合理的地方,我们必须肯定。但是,老话常谈,银行这类中心化机构,存在着中心化不可靠的问题,毕竟中心化机构作恶很难受到限制。由此,我们提出了去中心化的电子支付系统,问题是谁来代替中心化机构呢?比特币提出的就是使用共识机制POW(Proof of Work),用分布式网络上的各个节点代替银行进行交易确认。那自然会存在一些问题。首先,是交易确认后,如何确保不会被攻击者入侵再次篡改呢?中本聪提供的思路就是采用链式存储结构,交易区块的区块头中包含Merkle root(Merkle tree的子节点不显示存储,需要验证时直接计算就能得到,这样可以降低存储压力)以及上一区块的哈希值。对交易的变动会导致Merkle root和区块哈希值的变化,前者作用于交易的篡改,后者作用于整个区块的篡改。善良的节点是不会认可这种变化的,从而很大程度降低了篡改的可能性。为什么说是很大程度呢?因为作恶的节点仍然有一定可能性通过比特币的最长链确认原则,从包含需要篡改的交易所在的前一区块接着挖矿形成新区块导致分叉最终形成最长链达成原交易失效的目的。但是POW共识机制保证了交易所在区块后确认了六七个区块以后几乎不会被这种手段篡改,因为所需要的算力至少要超过51%,否则几乎没有可能重头开始进行新的分叉。因此,比特币利用技术手段确保了交易确认后的防篡改,这是去中心化电子支付系统的一大进步。再谈交易确认,一是如何确保交易双方的身份无误。比特币使用的方法是数字签名,利用椭圆曲线算法生成的公私钥对,对交易数据哈希化后用私钥对交易数据哈希值进行加密形成数字签名,验证者再利用公钥(在网络上公开)解密验证。二是如何确保数字货币所有权的转移。比特币使用的方式是UTXO模型:UTXO集合是当前网络中所有未被花费的交易输出的集合,节点使用UTXO集合来验证交易的合法性,防止双重支付,每个UTXO只能被消费一次,消费后生成新的UTXO。下面来探讨一下UTXO:
         UTXO本质上就是还未被引用的交易输出(钱),包含了货币数值和锁定脚本两部分。一个UTXO = (金额, ScriptPubKey)。谈及交易输出,就不得不说比特币的交易结构了,交易结构里包含txid(交易id)、交易哈希值、使用的比特币协议版本号version、交易的大小size、交易的生效时间locktime 、交易区块所在的哈希值、交易及区块产生的时间以及最重要的交易输入input和交易输出output。假设10个比特币由A到B,再由B到C。这里涉及两个交易M和N。交易M(即由A到B)包含了交易输入input(里面有上一笔交易的哈希值、交易输出的索引以及解锁脚本)和交易输出output(货币数值+锁定脚本)。当我们进行交易N(由B到C)时,N的交易输入input要和M的交易输出output结合起来进行验证,验证是B在将10个比特币转出。常见的验证思路:①数字签名:output中的锁定脚本为公钥或者公钥的哈希,新交易input中的解锁脚本为数字签名或者数字签名+公钥,这两种形式就是我们常说的P2PK(Pay to Public)和P2PKH(Pay to Public Key Hash);②脚本:为了实现时间限制、多重签名等,我们在交易M中规定一个脚本,然后取脚本的哈希值放入output中,进行交易N时的input里包含了该脚本,验证脚本取哈希无误后执行脚本无误,至此验证完成,这种验证形式为P2SH(Pay to Script Hash);  以上,我们讨论了两种验证思路,UTXO即交易输出部分(包含金额和锁定脚本),一旦一笔交易确认,这笔UTXO就会消失在UTXO集合中,避免双重支付。与此同时,这笔交易在引用完旧的UTXO后会产生新的UTXO。UTXO的消失和产生正是比特币的转移过程。

         三是如何解决在交易未确认的这段时间内出现双重支付问题?比特币我个人认为没有给出答案,因为这是去中心化系统存在的弊端,即因为网络延迟和考虑安全性等导致交易确认时间较长,这段空窗期内是有双重支付的潜在风险的,即除了真正的交易方外还有其他使用这笔UTXO输入的交易,而最后交易确认有可能确认的是后者。通常的思路就是两方面,等待交易确认完成和缩短交易确认时间,前者导致交易效率降低,后者导致安全性降低。当然,这都是基于比特币链上进行支付的,可以设计链下的支付方式如闪电网络等缩减交易确认时间。

上面是我认为的比特币一些核心的点,基于密码学的比特币将人们对中心化的信任转换为对密码学的信任。

标签:UTXO,入门,比特,小白,哈希,中心化,区块,交易
From: https://blog.csdn.net/yuabziq/article/details/144592090

相关文章