主页 > imtoken钱包下载2.0 > 比特币和以太坊的计费方式-UTXO和账户余额

比特币和以太坊的计费方式-UTXO和账户余额

imtoken钱包下载2.0 2023-01-17 12:33:17

第0章介绍

本文介绍了比特币的核心概念,UTXO,以及账户系统与以太坊作为相同记账功能的对比。

虽然有很多文章涉及这两个概念,但我希望描述更容易理解。

第 1 章银行账户余额

你去银行存钱,银行会为你开一个账户。在用户层面,银行账户呈现银行卡账号和用户姓名。使用该帐户,您可以记录用户存了多少钱。

银行账户的“物理实体”是这样的:用户的账户和余额都存储在一个数据库中,最简单的就是Excel表格,例如:第一列是用户名,第一列是第二栏是卡号,第三栏是存款金额……

用户账户余额调整的实际过程是对数据库的更改。

很多科普比特币文章都用银行账户做类比,说比特币地址类似于银行账户,比特币地址后面的余额就相当于银行账户里的存款金额。可以理解,但涉及到比特币的底层设计时就不行了。

第 2 章比特币的 UTXO

比特币本质上并不像银行账户那样设计。要理解UTXO,我先讲一个故事。

在古代欧洲,如果A想寄东西给B,但又不想让邮递员偷看,就按照下面的流程来。

第一步,A将要发送的东西放入一个盒子并加锁a。然后发给B。因为是锁着的,邮递员是看不到的。

第二步,B收到盒子后,在盒子上加了一把锁b。发回给 A。

第三步,A收到后,解锁a锁,然后将带锁b的盒子发回给B,这样B收到后就可以打开盒子了。

这是古老的加密通信。

这个加密通信的过程总结如下:A为要发送的东西设置一个开启屏障,这样只有B的密钥才能解锁这个屏障。

现在我们要将上面的整个过程数字化,并将其转移到互联网上。因为在互联网上,B可以直接将自己的锁广播给A,可以省去上面的第一步。

A 有一份电子文件要发送给 B,所以你可以这样做:

第一步,B直接通过网络将自己的电子锁发送给A。请注意,由于此步骤未加密,因此 B 的电子锁对网络上的每个人都是可见的。

第二步,A拿到电子锁锁定文件并发送给B。由于文件是加密的,虽然网络上的任何人都可以看到加密后的文件,但无法解密。

第三步,B使用自己的电子密钥解锁加密文档,读取明文。

电子加密通讯已结束。

这种电子加密通信的过程可以概括为:A对通信内容设置了一个查看障碍,只有B可以解锁这个障碍。

现在我们将上述电子加密通信转换为发送比特币。

A 想向 B 发送 1 个比特币,它可以这样做:

第一步比特币地址可以查到账户本人吗,B直接将自己的比特币地址发送给A。请注意,发送过程是全网公开的,大家可以看到B的比特币地址。其实这个地址就是电子锁

第二步,A把B的地址当成电子锁,用这把锁锁住自己的一个比特币,然后锁定加密后的比特币发送到互联网。请注意,整个网络中的每个人都可以看到这个加密的比特币,但只有B拥有私钥(key),所以只有B才能再次解锁这个比特币,并再次加密到别人的地址。

A 这样就完成了向 B 发送 1 个比特币。

另外,第二步,A先用自己的私钥(key)解密自己的1个比特币(这是前人发给A的加密过程)然后可以结合重新加密B的地址。

向A发送比特币的过程总结如下:A为这个比特币设置了一个解锁障碍,这样只有B(私钥)才能解锁这个障碍。

所谓UTXO,就是只有B的私钥才能解锁的东西。在B未解锁之前,这个东西是解锁的,解锁状态是“未花费的钱”。比特币学术话语称为“未花费交易输出”,英文称为未花费交易输出。

你拥有多少比特币本质上就是你拥有多少 UTXO。

第 3 章 UTXO 的“物理实体”

以上是理解比特币UTXO概念表达的过程。 UTXO 的具体“物理实体”是什么样的?

UTXO 以数据的形式存在。数据存储在比特币客户端中。任何比特币客户端都可以保存比特币网络上的所有UTXO,也就是每个人的比特币。都存在于任何比特币客户端中。

一个特定的UTXO,比如你的一个比特币,存储的数据主要代表以下两种含义:

1是一个名为“satoshi”的数字,它是比特币的数量,1BTC=1亿聪。

2锁定脚本是第2章中描述的“解锁障碍”。如果有人想使用这个UTXO,他们必须提供满足“解锁条件”的数据。此数据通常称为已签名。

总而言之,UTXO 就是“一个数字加一个锁脚本”。

具体来说,UTXO存储在计算机中的主要数据有以下四部分:

1 生成本次UTXO交易的txid;

2 生成本次UTXO交易的输出序号序列。因为大部分交易都是一个或多个输入和多个输出,所以第一个输入序号是0,第二个是1。

3 锁定脚本lockscript。

4是金额值

第 4 章 UTXO 的好处

第一个好处是极度安全。发送比特币是先用私钥解密,然后加密成目标公钥的过程,而接收比特币只需要提供地址即可。除非加密和解密的加密算法被破解,否则不会有问题。这种加密算法非常安全。如果加密算法被破解,全世界的银行都将破产。这种事情发生的可能性几乎是不可能的。

第二个好处是隐私。如果用户每笔交易都使用一个地址,那么用户的资金就很难追踪。

第三个好处是非常大的可扩展性,它基于 SPV 验证、UTXO 证明和 UTXO 分片的理论。目前比特币(BTC和BCH)的内容还没有完全解决。如果解决了,比特币(BTC或BCH)可以扩展到无限tps。

第 5 章以太坊账户

相对于比特币的 UTXO,以太坊的账户余额系统很容易理解。可以直接用银行账户打个比方,准确的。

以太坊的账户体系是一个代表特定用户的“地址”,可以理解为银行卡号和用户名。当然,这个“地址”没有名字,也不需要身份证。在这个“地址”之后,可以创建一个值来充值以太坊的余额,还可以在地址中添加一些字段来充当“代币余额”,这意味着一个以太坊地址可以接收很多各种币。

将 ETH 发送到以太坊账户的过程与比特币不同。以太坊系统部署了一个“发送”函数,任何账户通过调用该函数向系统发送ETH。这类似于银行使用数据修改功能更改用户余额的方式。以太坊系统验证账户发送ETH的过程是验证交易是否是账户发送的。用户使用“签名”的方式来证明交易是账户所有者发出的。

第 6 章帐户系统的好处

Account System 相比 UTXO 优势明显,可以节省大量的交易字节空间。账户系统每笔交易只需要一个输入、一个输出和一个签名。 UTXO 可能需要多个输入,每个输入都需要单独签名,或者多个输出,每个输出都需要一个锁定脚本。这大大增加了事务中的字节数。

因为发送以太币是调用系统的发送函数,所以不需要在交易中留下“解锁脚本”和“锁定脚本”,UTXO系统相当于每笔交易都写“发送”。 “函数”比特币地址可以查到账户本人吗,即比特币系统中“发送函数”的代码,被无数次重复填写,都将被记录在区块链中。以太坊的发送函数的代码只需要部署在一个区块中,然后每次发送一笔交易都会被调用,无需重写代码。

帐户系统的另一大好处是能够编写复杂的状态。

UTXO 的余额只有两种状态——已使用或未使用。没有50%成本这样的概念。但是,以太坊的账户系统可以写消费条件。例如,您可以重写一个 send 函数,将输入到达的硬币发送到输出,这样就可以实现各种状态。这就是有状态智能合约的概念。如果你看一下EOS的ICO智能合约,它会发现每23小时可以向ICO地址发送相应的代币,你就会知道以太坊的发送币能写出多少种可能性。

比特币的脚本系统(BTC和BCH是一样的)不能写有状态的合约,但是以太坊可以轻松写出来。

第 7 章结论

比特币可以成功成为世界货币,UTXO是一个伟大的贡献者。

t.zsxq.com/UvZfyrv(二维码自动识别)

另请阅读:

a href="mp.weixin.qq.com/s?__biz=MzIxNTA0NDQzMA==&mid=2651799412&idx=1&sn=79156e5f22b14e7e80ecb9928cd4f6cf&chksm=8c65c755bb124e43184ba99ed9c3267ff96f757de61403758ca714eb11c7c8a5233a8165a04e&scene=21#wechat_redirect">《接下来让比特现金支持更多的创新——比特币现金 BCH 5 月升级”