400-123-4567

138000000000

bob最新地址令人眼花缭乱的区块链名词之:UTXO

2022-06-30 09:32:21

  hello,大家好,我们第六期的区块链技术分享来啦~~本期分享的主题是UTXO

  在比特币系统中,每个全节点都会记录UTXO。要理解UTXO模式,首先要清楚:比特币采用的是基于交易的账本模式也就是transaction-based Ledger。bob最新地址怎么理解?

  通俗地解释,比特币系统并不存在“账户”,而只有“地址”。只要你愿意,你就可以在比特币区块链上开设无限多个钱包地址,你拥有的比特币数量是你所有的钱包地址中比特币的总和。比特币系统并不会帮你把这些地址汇总起来形成你的账户。

  因此,在比特币网络中核心是:交易。交易将价值从交易输入转移到交易输出。交易输入是价值的来源,通常是上一笔交易的输出。

  简单来说,一个比特币交易,就是告诉网络,某个拥有一定数量比特币的用户已经授权将这笔比特币转让给另一位用户。新的所有者可以通过另外一笔授权转让交易来使用这些比特币,以此类推,形成一个所有者转换的链条。

  每个区块链网络都是一个分布式账本,交易就像复式账本的一笔笔记录,每个交易均包含一到多条的“输入”——这是比特币账户的借方。每笔交易也包含了一到多条的“输出”——这是比特币账户的贷方。

  (3)工业社会时发明了“复式记账”,复式记账的平衡表使账目一目了然,适应了工业社会的企业管理,但它避免不了经理人与会计可能从原始数据源头造假。

  (4)区块链是一个分布式账本,分布式账本是一种在网络成员之间共享、bob最新地址复制和同步的数据库。

  复式记账法的记账规则是:“有借必有贷,借贷必相等。”使用“借”与“贷”两个记账符号,而这两个记账符号没有实际意义。借助记账符号将同一笔交易或事项以相同的金额记录在两个以上会计科目中,这样的记账方法有助于我们弄清楚交易和事项的来龙去脉。

  输入和输出(借和贷)加起来不要求相等。实际上,输出加起来的和应稍小于输入的和,这个差额就是隐含的“交易费用”,这笔小额费用归那些将交易归集到账本的矿工所有。(下图中的交易费用就是小费)

  如下图所示,爱丽丝支付给鲍勃的交易使用了上一笔交易的输出,作为这笔交易的输入,输出则包含两部分,一部分给Bob(0.0150BTC),另一部分用于找零(0.0845BTC)。交易形成了一个链条,最新交易的输入对应上一笔交易的输出。

  爱丽丝的私钥密钥提供的签名解锁了前笔交易的输出,向比特币网络证明了她对这些资金的所有权。她在交易中附上鲍勃的地址,形成一个“限制”,限制鲍勃必须使用私钥签名才能花费这笔资金。这个过程展示了价值在爱丽丝和鲍勃之间转移的过程。

  交易输出将一笔与私钥关联的价值赋予一个新用户。目标密钥称为安全锁。在未来的交易中,需要通过签名来获取这笔资金。

  如果每一笔输入都要关联上一笔输出,那么在比特币网络中到底是先有输入还是先有输出?

  bob最新地址

  铸币交易并不需要消耗(花费)。实际上,它只有一个输入,叫做币基(coinbase),这个交易从无到有生成了比特币。铸币交易有一个输出,支付到矿工的比特币地址。

  从前面的分析来看,交易的输入方在转账之前,先要用私钥签名,表示自己对这笔钱的所有权,也就是这笔钱还未被消费。

  比特币全节点跟踪所有可用和可消费的输出,称为“未花费的交易输出”(unspent transaction outputs),bob最新地址即UTXO,所有UTXO的集合被称为UTXO集。

  UTXO集大小在新的UTXO增加时而增长,并在UTXO被消耗时而缩小。每一个交易都代表UTXO集中的变化(状态转换)。

  1) 假设Alice之前通过挖矿获得了 10 个比特币,在她的地址中,这些比特币是某个币基交易的 UTXO。

  2) Alice 发起一个交易,输入是自己的上一个交易,输出有两个:一个是 Bob 的地址,数量是 8个比特币;另一个自己的地址,数量是2比特币,Alice 用自己的私钥对交易进行签名。

  比特币交易还要遵循一个原则:每一次交易的输入值都必须全部花掉,不能只花掉部分。你有一个价值20比特币的UTXO并且想支付1比特币,那么你的交易必须消耗掉整个20比特币的UTXO,并产生两个输出(UTXO):一个支付了1比特币给接收人,另一个支付了19比特币的找零到你的钱包。由于UTXO的不可分割特性,大部分比特币交易都会产生找零。

  3) 当交易被区块链确认后,Alice 的 UTXO 就变成了 2。而在Bob的地址中就多了一个 UTXO,数量是8。

  因此在比特币系统中并不存在比特币,只有UTXO,每一笔比特币都源自上一个交易,是上一个交易的未花费的交易输出。

  我们可以沿着这样的交易链条一直向上追溯。在源头,每一枚比特币都是通过挖矿被创造出来的,在每一笔比特币的源头是一种特殊的交易——比特币矿工因挖矿生成区块而获得奖励的币基交易(coinbase transaction)

  未使用的交易输出(UTXO)和我们熟悉的银行账户有着很大的不同。为什么要采用这样的设计?

  采用UTXO设计,要确认我拥有比特币,只要确认上一个交易我的确获得了它们即可。在比特币区块链中,一个区块经过6次确认后,其中的交易可被认为是真实无误的。因此,通常只要上一个交易是真实的,我就的确拥有这些比特币。

  银行账本的记录方式是每一刻形成一个快照,把重心放在第一个任务上,也就是谁拥有什么;

  UTXO的记录方式是把重心放在第二个任务上,然后反过来完成第一个任务,由转账交易来记录所有的所有权转移过程。

  转账交易累积成的区块链账本可在某一刻来确认谁拥有什么,这一刻的记录也就是区块链的状态。

  因此比特币的系统设计就是一个状态转换系统(statetransition system)。以太坊也是一个状态转换系统,区别于比特币transaction-based Ledger基于交易的模型,以太坊是account-based Ledger基于账户的模型,以太坊也采用这种状态转换系统的设计,同时又对其进行了改进,主要是引入了智能合约,让对状态转换进行编程更方便。