主页 > imtoken钱包怎么下载 > 比特币和以太坊的记账方式——UTXO和账户余额

比特币和以太坊的记账方式——UTXO和账户余额

imtoken钱包怎么下载 2023-01-18 18:32:27

比特币合约交易中心_比特币合约期货交割日_比特币有合约地址吗

第0章介绍

本文介绍比特币的核心概念UTXO,并将其与以太坊的账户体系进行对比,实现同样的记账功能。

虽然这两个概念在很多文章中都有介绍,但希望描述的更容易理解。

第一章银行账户余额

你去银行存钱,银行给你开户。 银行账户在用户层面呈现的是银行卡账号和用户名。 有了账户,就可以记录用户存了多少钱。

账户在银行的“物理实体”是这样的:用户的账户和余额存储在一个数据库中,最简单的就是一个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 想发送 1 个比特币给 B,他可以这样做:

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

第二步,A用B的地址作为电子锁,用这把锁锁住自己的1个比特币,然后把加密后的比特币发到网上。 请注意,全网所有人都可以看到加密后的比特币,但只有B有私钥(key),所以只有B才能再次解锁比特币,再次加密到别人的地址。

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

另外,在第二步中,A必须先用自己的私钥(key)解密自己的1比特币(这是之前的人发给A的加密过程)比特币有合约地址吗,然后结合B的地址解密再加密.

比特币有合约地址吗_比特币合约期货交割日_比特币合约交易中心

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

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

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

第三章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的过程就是验证交易是否是账户发送的,用户使用“签名”方式证明交易是账户所有者发送的。

第六章账户系统的好处

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

因为发送以太币是调用系统的发送函数,不需要在交易中留下“解锁脚本”和“锁定脚本”,而UTXO系统相当于为每笔交易都写了“发送函数”,即就是,在比特币系统中“发送函数”的代码被重复了无数次,这些都是要记录在区块链中的。 以太坊发送功能的代码只需要部署在一个区块中,然后每次发送交易时,调用它即可,无需重写代码。

账户系统的另一大好处是可以对复杂的状态进行编程。

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

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

第七章结论

比特币能成功成为世界货币,UTXO功不可没。