比特币最初的数量,比特币需要注意什么消息

  

  最近博主们正在整理一本浅显易懂的关于挖矿的科普画册,希望全面介绍挖矿过程中发生了什么,哪些环节产生了挖矿收益,以及我们常说的计算能力,为什么要这样分配挖矿收益等等,从最初的加密货币交易到挖矿确认交易。   

  

  以比特币为例。我们知道比特币网络挖矿的目的是打包交易,维护比特币网络,所以交易实际上是与挖矿密切相关的第一个环节。在比特币网络交易过程中,非对称加密技术、数字抽象技术、区块链技术等。都用过,其中很多大神和珍珠都已经实现了,博主就不出丑了。这篇文章的主要目的是将比特币的交易过程用较为浅显的语言展示出来,以便更多像作者一样的技术门外汉可以了解比特币。   

  

     

  

在展开说明之前,需要先安利几个概念

  

  非对称加密:也称为公钥加密。它通过加密算法生成一对公钥和私钥。公钥公开,私钥自己保管。它先有两个用途:别人可以用public public公钥加密数据然后把传输交给公钥持有者,公钥持有者用对应的私钥解密数据,读取信息。这样,保证信息传输的安全性就可以获得;第二,公钥持有者可以使用私钥到信息签名(签名过程类似于加密过程),然后将信息连同签名一起发送给其他人,其他人可以通过公钥验证信息签名(验证过程类似于解密过程),验证签名的信息与发送的信息一致,证明信息是公钥持有者发送的,可以在不泄露公钥持有者身份和私钥的情况下发送到确保信息来源的可靠性。(参考链接:https://en.wikipedia.org/wiki/Public-key_cryptography)   

  

  哈希算法:也叫hash函数,它可以从一个消息或数据量很大的数据中计算出一个固定格式和少量数据的数字摘要,也叫指纹,散列值哈希.一个好的hash算法应该是不可逆的(原始信息或数据无法从数字摘要中推导出来)、敏感的(原始数据的任何微小变化都会使数字摘要发生很大变化)和防冲突的(很难找到两个不同的信息有相同的数字摘要)。(参考链接:https://en.wikipedia.org/wiki/Hash_function)   

  

  比特币里的公钥和私钥:在比特币世界中,根据比特币协议生成的一对公钥和私钥用于确定比特币的所有权。它们是由非对称加密算法(椭圆曲线算法)生成的。公钥通过两次哈希算法(SHA256)运算得到了一个哈希值(也叫hash),然后经过Base58Check编码,生成,得到了比特币的钱包地址,也就是我们常见的。因此,钱包地址被解码后,就可以得到相应公钥的hash,用来验证私钥签名,加密数据等等。   

  

  UTXO:未使用的交易输出,未使用的交易输出,这是比特币世界中的抽象货币。每个UTXO都有一个公钥(钱包地址)锁定,只有那些持有相应的公钥私钥的人才能通过私钥签名(解锁)和使用UTXO。UTXO可以理解为抽象的纸币,但它的面值不是固定的(不仅是5元,10元,而是任何数字)。(参考链接:https://en.wikipedia.org/wiki/Unspent_transaction_output)   

  

抛开代码,我们接下来看看比特币的交易是怎样的一个过程

  

  如下图,A、B、C、D四个人,他们都有比特币钱包。钱包的私钥由自己持有,钱包的地址(由其钱包的公钥生成)在比特币网络上公开,用于UTXO的锁定和验证。   

  

  从开始,A给C 0.7BTC,在比特币网络中的记录是UTXO(1): A给C 0.7BTC给E-C 0.5 BTC,而此时比特币网络中的记录是UTXO(2):乙给丙0.5BTC.C的比特币钱包的账户余额就是这两个UTXO之和,丙的比特币总数=UTXO(1)+UTXO(2)=1.2BTC.下图:   

?k=比特币最初的数量,比特币需要注意什么消息3.jpg">这天,丙向丁买了一批货物,需要向丁支付0.8BTC。丙通过比特币网络向丁转账,但丙现有的两个UTXO均不足0.8BTC,需要将两个UTXO一起使用,类似现金交易:给丁支付1.2BTC,丁找给丙0.4BTC。但在比特币网络中,这个找零的工作是由丙自己发起的。

  

整个交易的流程如下:

  

丙通过比特币钱包准备交易信息,交易信息包括输入和输出两个部分,输入是UTXO(1)和UTXO(2),以及丙的钱包私钥签名(因为UTXO(1)和UTXO(2)均被丙的钱包公钥锁定,需要通过丙的私钥签名来解锁后,进行使用)

  

交易的输出是未确认的UTXO(3):丙给丁0.8BTC,这个新的UTXO指向丁的钱包公钥,待交易确认后,将被丁的钱包公钥锁定。

  

此时还有0.4BTC需要找零给丙,因此还需要输出一个未确认的UTXO(4): 丙给丙0.3999BTC,这个新的UTXO指向丙的钱包公钥,待交易确认后,将被丙的钱包公钥锁定。

  

为什么找零的数额不是0.4BTC呢?因为比特币网络要求,交易转账,需要向比特币网络支付交易手续费。剩余0.0001BTC未指向任何钱包公钥,将作为转账手续费支付给打包这笔交易的矿工(如果未找零,剩余所有未指定的比特币将全部作为手续费给打包交易的矿工,不过目前找零工作都由钱包自动完成,不用担心)。

  

交易信息准备完毕后,经过丙的钱包验证交易合法(UTXO合法,签名有效,输入输出金额有效等等)后,将交易广播到比特币网络中,由挖矿节点验证交易后,打包交易(将交易记入比特币区块中),并向比特币网络广播,交易完成。

  

旧的UTXO被消耗,新的UTXO开始生效,此时丁的钱包里有一个未使用的UTXO(3): 丙给丁0.8BTC,丙的钱包里有一个未使用的UTXO(4): 丙给丙0.3999BTC

  

以上是较为抽象的比特币交易的过程,有关比特币交易的构造,签名验证,节点验证,交易广播,加入挖矿节点mempool,矿工构造预备区块,以及最终的出块确认的过程,后续会分别介绍,本篇不做展开。

  

从这个抽象的交易过程,我们可以发现,比特币的交易实质上是一堆UTXO的输入和输出的过程,伴随旧的UTXO被消耗,新的UTXO产生,完成了一次又一次的比特币交易。交易的过程由非对称加密和哈希算法进行双重保护,比特币持有者可以放心完成交易而不必担心身份被泄露,交易过程中也消耗了一部分比特币,用于奖励打包交易的矿工,使矿工乐于完成自己维护比特币网络的任务。

相关文章