比特币是一种点对点的电子现金系统,基于新的区块链技术,有大套的知识,从基础的钱包,密码验证,到支付并记账。对于手机支付,网上支付大家都已经熟悉,本文主要讲解比特币支付和记账知识,毕竟它是区块链技术实现的,只有搞清楚如何支付和记账这个最核心的问题,才会真正相信比特币是值得信赖的。
结合常识,我们从以下三个方面理解:
1、 钱包余额
比特币钱包里的余额,用一个专业词汇叫UTXO(Unspent Transaction Output),直接翻译是“未花费交易的输出”。每个比特币钱包里,只有UTXO才能支出!多笔UTXO总计出钱包余额。
举例说明,A收到三笔钱,分别是0.1,0.3,1.0个比特币。左图是总共三笔UTXO,千万不要想象成右图,有很多个小比特币。只有三笔!
现在A要支付出去0.25个比特币。钱包软件这样操作,将0.3的UTXO支出,发起给对方0.25个比特币的交易,钱包再建立0.05个比特币的UTXO给回A(这里先忽视手续费)。这样A的钱包里还是有0.05,0.1和1.0三笔UTXO。
在网络里找到一张图,使用Bitcoin Core钱包软件可以查看UTXO明细,下图账户里有7笔UTXO组成0.00727个比特币的余额。如果直接转账会花费更多的手续费,因为多笔UTXO会耗费更多的字节。新版本的比特币已经采用segwit技术减少字节,从而减少手续费。
这是比特币钱包的支付的过程,如果支付金额小于钱包余额,是无法支付的。
随机挑一块比特币的区块,可以看到区块中交易信息,在转到下一个账户后,有的钱已经花费(Spent)掉了,有的钱还没有被花费(Unspent)。如下图:
2、 支付失败
中心化的交易系统比如支付宝,如果出现小概率严重故障事件,将引起大量交易失败回滚,告诉用户交易繁忙,稍后再试。而比特币是去中心化的系统,采用P2P网络,交易信息丢失情况不常见,但是交易缓慢常见,比特币的处理能力差不多是每秒7笔交易,双十一期间支付宝的交易峰值最高达每秒25.6万笔,所以区块链技术将升级到3.0版本,理论上支持每秒百万数量级交易。观察比特币网络,一次长的确认时间甚至超过30分钟,手续费给得很少,优先级很低,当发生大量交易的时候,好几个小时得不到确认。耐心等待,默认72个小时得不到确认会被自动退回。
查看区块中交易情况,确实有转账失败的,“Unable to decode output address”这种情况不少,大多数是写错收款方地址,一长串的字符一点也不能错,大小写也不能拼错,需要仔细,手工输入对方地址的都是高手。
3、 人人记账
去中心化的系统,人人都能记账,以谁记的账为准呢?这要所有人达成一致,也就是常说的共识问题。这是比特币设计实现的一个难点。
为了鼓励大家记账,中本聪设计的比特币系统给记账成功的人回报,这个过程也被称为“挖矿”。目前每挖出一个新区块,可以获得12.5个比特币,新区块就是记账用的账本。关于挖矿也有很多故事,不在这里赘述。
人人记账过程如下:
A) 新交易信息被钱包广播到网络中;
B) 每个矿工收集广播到的交易信息,验证交易信息是否有效,是否重复,检查是未确认交易后放到缓冲池(Memory pool)里;
C) 挖矿工作,抓取缓冲池里的未确认交易信息。按照手续费排序,每字节付费高的交易优先级高排前面,抓取交易信息后计算它们的默克尔树根值(merkel root);
D) 将默克尔树根值,前一个区块的哈希值,还有一个Nonce随机数一起做二次哈希运算;
E) 每计算一回,Nonce就换一个随机数,在数亿次计算后,哈希值达到要求,符合新区块条件,向全网络广播新区块诞生。新区块里记录了交易信息,成为“一次确认”的交易;
F) 不仅给挖出矿的矿工新区块酬劳,还包括新区块中所有交易的手续费;
G) 所有矿工保存好新区块,将已经确认的交易信息从缓冲池里剔除,继续计算下一个新区块。
这样,实现了人人记账的功能。用了比较简短的语言,实际上还有大量的细节,没有提及和深入阐述。有时间可以写更详细的资料供区块链开发人员学习探讨。
需要补充说明一下,这样的分布式记账,可以被修改吗?基本无可能。每个区块都是根据前一个区块数据加密的。任何一个环节变动,比如增加一条交易信息到区块中,区块的默克尔树根值将引起变化,这样区块的哈希值将不符合,如果修改区块哈希符合,那么后续所有区块的值全部不符合,因为后续区块的哈希值是根据前一个区块的哈希值计算出来的。即使技术仿造一条链,如何复制到其他机器也是很大问题,需要超过全网算力的50%才可能有机会,这又是一个很长的故事,不再赘述。在大多数人诚实的情况下,是无法造假的。
一个去中心化的电子现金系统就这样实现了。所有人在交易的时候,不需要考虑背后如此复杂的机制,只需信任这套机制杜绝了造假。
和前面一篇《什么是区块链?告诉你真正的答案》相比,本篇技术含量多一点,可能一些人还有疑问,欢迎和我联系,可以有更多的知识分享给你。
作者:雨崩