浅谈 UTXO 模型与 Account 模型 | DCEP 黑盒分析(一)

栏目: IT技术 · 发布时间: 4年前

内容简介:哪个是对现实世界的映射?本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

哪个是对现实世界的映射?

注:本系列文章是闭源情况下根据现有公开资料的黑盒分析,仅供参考。

DCEP(Digital Currency Electronic Payment)央行数字货币已进入内测期,很多同学与开发者都非常关心这件事。因此笔者决定着手一系列的文章,用谨慎的研究态度从技术的角度对 DCEP 进行黑盒分析,希望能给我们的开发实践提供一些借鉴意义。

1 UTXO 模型与 Account 模型

UTXO(Unspent Transaction Output)模型与 Account 模型是用以记账的最流行的两种模型。

专业的定义:

  • UTXO 模型是资产在用户之间移动的有向图
  • Account 模型是具有当前网络状态的数据库

大白话定义:

  • UXTO 模型——假设所有的资产都是一个个的硬币,那我们记下所有硬币的「流动轨迹」,知道当前没花的硬币都在哪里,那么我们无需给每个人创建账户,也能知道每个人有多少钱。
  • Account 模型——我们拿了个小本本给张三李四都开个户,记下来他们的交易信息、当前余额等信息。

关于 UTXO 账户模型与 Account 模型的更具体的技术内容可以看如下链接:

2 两个模型哪个是对现实世界的映射?

也许你觉得我接下来要分析二者的优劣了。但别着急,让我们问一个更本质的问题:二者哪个映射了现实世界?

这个问题在我们进行计算机领域的学习与研究的时候至关重要。有的时候我们觉得某种设计「很怪」、「难以理解」的本质原因是因为它并非现实世界的 1:1 映射,而仅是一种仿真。

然后我们来编写程序。程序的结构要严格保持与问题的结构一致,即每一个 真实世界里的活动都严格映射到我们编程语言中的一个并发进程上。如果从问题 到程序的映射比例为 1:1,我们就说程序与问题是同构(isomorphic)的。

映射比例为 1:1 这一点非常重要。因为这样可以使得问题和解之间的概念隔 阂最小化。如果比例不为 1:1,程序就会很快退化而变得难以理解。在使用非面 向并发的编程语言来解决并发问题时,这种退化是非常常见的。在非面向并发的 编程语言中,为了解决一个问题,通常要由同一个语言级的线程或进程来强制控 制多个独立的活动,这就必然导致清晰性的损失,并且会使程序滋生复杂的、难 以复现的错误。

—— 《面对软件错误构建可靠的分布式系统 》by Joe Armstrong

一眼看去,Account 模型似乎更像现实世界的映射,因为按人头记账嘛,古已有之,但真的是这样吗?

3 信息与资源

让我们再往里走一层,思考一下计算机系统中的基本元素。我们会发现我们可以这样对计算机中的元素进行二分——「信息」与「资源」。

  • 信息 可以复制的内容,例如我们在硬盘上存个 1.txt,我们把它复制一下,那么我们硬盘上就有两份相同的文本。
  • 资源 不可复制。我占据了一块内存,那么我占据的这个内存就不能被其它程序所占据。

同样,我们生活中的元素也可以区分为信息和资源:

  • 信息 我有一个八卦,我告诉了你,那么我和你都有了这个「八卦」。
  • 资源 我有一个硬币,我给了你,那么我就没有了。

3 信息与资源的映射与仿真

理想的情况下,现实中的资源映射到计算机中,应该依然是资源的形式;信息映射到计算机中,应该依然是信息的形式。

现实世界 计算机世界

信息 ————————> 信息

资源 ————————> 资源

但是!事实并非如此。很多情况下,我们用计算机中的「信息」,仿真现实世界中的「资源」。

现实世界 计算机世界

信息 ————————> 信息

资源 ———————————+

例如,我们希望在游戏里的「屠龙宝刀」是一种数量有限的资源,实际上它是可以复制的数据,只不过游戏厂商用代码限制了它的复制。

相对于「映射」,「仿真」设计会带来很多不可控的因素。例如厂商说游戏里只能有十把屠龙宝刀,但是玩家通过特殊的方式可能造成第十一把的出现。

4 UTXO 模型与 Account 模型的映射与仿真

那么 UTXO 模型与 Account 模型,哪个是「映射」,哪个是「仿真」呢?

答案很有意思:

  • Account 模型是对纸质账本的「映射」,对物理货币系统的仿真 ****
  • UTXO 模型是直接对物理货币系统的仿真

记账模型在很久很久以前就出现了,因此在设计一个计算机记账系统时,自然而然会想到将传统的纸质记账映射到计算机记账中。

但是 —— 传统的纸质记账并非是物理货币系统的映射,而是仿真。

仿真 映射

物理货币系统 ——————> 传统纸质记账 ——————> Account 模型

然后,钱币在物理货币中是「资源」,但在传统记账系统中就变成了「信息」,投射到 Account 模型中,自然还是信息。

仿真 映射

物理货币系统 ——————> 传统纸质记账 ——————> Account 模型

资源 —————> 信息 —————> 信息

带来不可控因素的实际是「物理货币系统」到「记账系统」的仿真过程。因此我们可以看到,在手工记账年代会出现很多的纰漏与错误。后来有了计算机记账系统,这些纰漏与错误由于计算机的强大而被弥补,但新的系统构建的过程依然非常艰难与成本高昂——我们现在见到的银行的「计算机记账系统」是几十年不断摸索的产物。

所以,比特币诞生的时候,中本聪决定换种思路 —— 直接做物理货币系统的映射:

映射

物理货币系统 ——————> UTXO 模型

资源 —————> 模型

我把一块钱给小明,小明给小张,在 Account 模型里,是三人账户金额的加加减减;在 UTXO 模型中,则是这枚硬币在三个地址间发生转移的过程。

数据库没有账户,只有每一枚货币的转移旅程。

5 小结

笔者的意思并非 UTXO 模型比 Account 模型更优,而是这两种模型来源于不同的角度。把握了这个本质性的区别,接下来我们便会更好地理解两种模型的差异,以及这两种模型分别适合哪些业务场景。

浅谈 UTXO 模型与 Account 模型 | DCEP 黑盒分析(一)

注:本系列文章是闭源情况下根据现有公开资料的黑盒分析,仅供参考。

DCEP(Digital Currency Electronic Payment)央行数字货币已进入内测期,很多同学与开发者都非常关心这件事。因此笔者决定着手一系列的文章,用谨慎的研究态度从技术的角度对 DCEP 进行黑盒分析,希望能给我们的开发实践提供一些借鉴意义。

1 UTXO 模型与 Account 模型

UTXO(Unspent Transaction Output)模型与 Account 模型是用以记账的最流行的两种模型。

专业的定义:

  • UTXO 模型是资产在用户之间移动的有向图
  • Account 模型是具有当前网络状态的数据库

大白话定义:

  • UXTO 模型——假设所有的资产都是一个个的硬币,那我们记下所有硬币的「流动轨迹」,知道当前没花的硬币都在哪里,那么我们无需给每个人创建账户,也能知道每个人有多少钱。
  • Account 模型——我们拿了个小本本给张三李四都开个户,记下来他们的交易信息、当前余额等信息。

关于 UTXO 账户模型与 Account 模型的更具体的技术内容可以看如下链接:

2 两个模型哪个是对现实世界的映射?

也许你觉得我接下来要分析二者的优劣了。但别着急,让我们问一个更本质的问题:二者哪个映射了现实世界?

这个问题在我们进行计算机领域的学习与研究的时候至关重要。有的时候我们觉得某种设计「很怪」、「难以理解」的本质原因是因为它并非现实世界的 1:1 映射,而仅是一种仿真。

然后我们来编写程序。程序的结构要严格保持与问题的结构一致,即每一个 真实世界里的活动都严格映射到我们编程语言中的一个并发进程上。如果从问题 到程序的映射比例为 1:1,我们就说程序与问题是同构(isomorphic)的。

映射比例为 1:1 这一点非常重要。因为这样可以使得问题和解之间的概念隔 阂最小化。如果比例不为 1:1,程序就会很快退化而变得难以理解。在使用非面 向并发的编程语言来解决并发问题时,这种退化是非常常见的。在非面向并发的 编程语言中,为了解决一个问题,通常要由同一个语言级的线程或进程来强制控 制多个独立的活动,这就必然导致清晰性的损失,并且会使程序滋生复杂的、难 以复现的错误。

—— 《面对软件错误构建可靠的分布式系统 》by Joe Armstrong

一眼看去,Account 模型似乎更像现实世界的映射,因为按人头记账嘛,古已有之,但真的是这样吗?

3 信息与资源

让我们再往里走一层,思考一下计算机系统中的基本元素。我们会发现我们可以这样对计算机中的元素进行二分——「信息」与「资源」。

  • 信息 可以复制的内容,例如我们在硬盘上存个 1.txt,我们把它复制一下,那么我们硬盘上就有两份相同的文本。
  • 资源 不可复制。我占据了一块内存,那么我占据的这个内存就不能被其它程序所占据。

同样,我们生活中的元素也可以区分为信息和资源:

  • 信息 我有一个八卦,我告诉了你,那么我和你都有了这个「八卦」。
  • 资源 我有一个硬币,我给了你,那么我就没有了。

3 信息与资源的映射与仿真

理想的情况下,现实中的资源映射到计算机中,应该依然是资源的形式;信息映射到计算机中,应该依然是信息的形式。

现实世界 计算机世界

信息 ————————> 信息

资源 ————————> 资源

但是!事实并非如此。很多情况下,我们用计算机中的「信息」,仿真现实世界中的「资源」。

现实世界 计算机世界

信息 ————————> 信息

资源 ———————————+

例如,我们希望在游戏里的「屠龙宝刀」是一种数量有限的资源,实际上它是可以复制的数据,只不过游戏厂商用代码限制了它的复制。

相对于「映射」,「仿真」设计会带来很多不可控的因素。例如厂商说游戏里只能有十把屠龙宝刀,但是玩家通过特殊的方式可能造成第十一把的出现。

4 UTXO 模型与 Account 模型的映射与仿真

那么 UTXO 模型与 Account 模型,哪个是「映射」,哪个是「仿真」呢?

答案很有意思:

  • Account 模型是对纸质账本的「映射」,对物理货币系统的仿真****
  • UTXO 模型是直接对物理货币系统的仿真

记账模型在很久很久以前就出现了,因此在设计一个计算机记账系统时,自然而然会想到将传统的纸质记账映射到计算机记账中。

但是 —— 传统的纸质记账并非是物理货币系统的映射,而是仿真。

仿真 映射

物理货币系统 ——————> 传统纸质记账 ——————> Account 模型

然后,钱币在物理货币中是「资源」,但在传统记账系统中就变成了「信息」,投射到 Account 模型中,自然还是信息。

仿真 映射

物理货币系统 ——————> 传统纸质记账 ——————> Account 模型

资源 —————> 信息 —————> 信息

带来不可控因素的实际是「物理货币系统」到「记账系统」的仿真过程。因此我们可以看到,在手工记账年代会出现很多的纰漏与错误。后来有了计算机记账系统,这些纰漏与错误由于计算机的强大而被弥补,但新的系统构建的过程依然非常艰难与成本高昂——我们现在见到的银行的「计算机记账系统」是几十年不断摸索的产物。

所以,比特币诞生的时候,中本聪决定换种思路 —— 直接做物理货币系统的映射:

映射

物理货币系统 ——————> UTXO 模型

资源 —————> 模型

我把一块钱给小明,小明给小张,在 Account 模型里,是三人账户金额的加加减减;在 UTXO 模型中,则是这枚硬币在三个地址间发生转移的过程。

数据库没有账户,只有每一枚货币的转移旅程。

5 小结

笔者的意思并非 UTXO 模型比 Account 模型更优,而是这两种模型来源于不同的角度。把握了这个本质性的区别,接下来我们便会更好地理解两种模型的差异,以及这两种模型分别适合哪些业务场景。

浅谈 UTXO 模型与 Account 模型 | DCEP 黑盒分析(一)

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2分钟前
  • 阅读 ( 3 )
  • 学分 ( 0 )
  • 分类:DCEP

以上所述就是小编给大家介绍的《浅谈 UTXO 模型与 Account 模型 | DCEP 黑盒分析(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Database Design and Implementation

Database Design and Implementation

Edward Sciore / Wiley / 2008-10-24 / 1261.00 元

* Covering the traditional database system concepts from a systems perspective, this book addresses the functionality that database systems provide as well as what algorithms and design decisions will......一起来看看 《Database Design and Implementation》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具