这篇文章主要和大家介绍下比特币的交易过程。
节点 / 交易过程 / 区块 / 区块头 / 区块形成 / 区块
分叉
比特币不存在与任何地方,包括你的电脑硬盘或者其他任何存储设备。你持有的
比特币也只是拥有比特币的地址。这样的一个地址只是充当了一个银行账户,没
有任何一个实物或者某个数据文件叫做比特币。
比特币的所有交易都存放在巨大的账本文件中,这个账本就是区块链。你的“银
行账户”(比特币地址)的余额,并不是直接存放在地址中,而是计算出来的。
先来一张“比特币之父”中本聪白皮书里的装逼图
UTXO(Unspent Transaction Outputs)是未花费的交易输出,它是比特币交易生
成及验证的一个核心概念。
张三有一个余额 100 元的账户,李四有一个余额50元的账户。当张三要付给
李四20元时,做以下操作:
1. 检查张三账户余额是否充足,如果不足20元就终止交易,向张三
报“余额不足”
2. 在张三账户里减去20元
3. 在李四账户里增加20元
张三挖到12.5 枚比特币。过了几天,他把其中 2.5 枚支付给李四。又过了几
天,他和李四各出资 2.5 比特币凑成 5 比特币付给王五。那么,三人的账户变
化情况使用UTXO记录如下:
对比特币的区块链账本来说记录的只是3笔交易记录。资金来源就是每笔交易的交
易输入,资金去向就是每笔交易的交易输出。每一笔交易都要花费(Spend)一笔
输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”,也就
是 UTXO。
被斯坦福大学密码学和计算机安全教授 Dan Boneh 评价为“extremely
brilliant”的中本聪的三个伟大创新:一个是区块链的设计,一个是UTXO,
一个是智能合约。
比特币的地址是随机生成的一串字符串,好像一个透明的存钱罐,谁都可以看
到。私钥也是一串保密的字符串,犹如一把钥匙,只有持有私钥的人才能打开这
个存钱罐。
比特币协议里面设置了挖矿完成的大概时间是10分钟。所以商家可能会等到你的
交易所在的区块被确认之后才会给你发货。但是也有商家不会让你去等,基于对
你的一个信任,相信你不会在交易没有得到确认之前有去拿同一笔钱花在别的地
方。不过一般这只适用于小额交易。
10分钟是被中本聪设计的时间,考虑计算并验证一笔交易后传播到全部互联网需
要几分钟的时间,为了避免“矿工A和矿工B在不知道对方都计算出结果的情况下
同时发送计算结果”的情况,都假设需要10分钟才可以完成计算。