浅谈 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 黑盒分析(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

JSP网站开发典型模块与实例精讲

JSP网站开发典型模块与实例精讲

李振捷 / 电子工业出版社 / 2006-8 / 50.0

本书是典型模块与实例精讲丛书中的一本。 本书讲解了使用JSP开发网站系统的经典模块和工程实例,基本囊括了JSP的重点技术,对这些模块稍加修改就可以直接使用到实际项目中。为了方便本书的读者交流在学习中遇到的问题,特地在本书的服务网站上公布了很多QQ群组,读者只要拥有QQ号码,就可以参与到本书的QQ学习群组中一起讨论学习心得。本书的作者还在一定的时间给读者提供在线答疑服务。一起来看看 《JSP网站开发典型模块与实例精讲》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具