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