内容简介:哪个是对现实世界的映射?本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。
哪个是对现实世界的映射?
注:本系列文章是闭源情况下根据现有公开资料的黑盒分析,仅供参考。
DCEP(Digital Currency Electronic Payment)央行数字货币已进入内测期,很多同学与开发者都非常关心这件事。因此笔者决定着手一系列的文章,用谨慎的研究态度从技术的角度对 DCEP 进行黑盒分析,希望能给我们的开发实践提供一些借鉴意义。
1 UTXO 模型与 Account 模型
UTXO(Unspent Transaction Output)模型与 Account 模型是用以记账的最流行的两种模型。
专业的定义:
- UTXO 模型是资产在用户之间移动的有向图
- Account 模型是具有当前网络状态的数据库
大白话定义:
- UXTO 模型——假设所有的资产都是一个个的硬币,那我们记下所有硬币的「流动轨迹」,知道当前没花的硬币都在哪里,那么我们无需给每个人创建账户,也能知道每个人有多少钱。
- Account 模型——我们拿了个小本本给张三李四都开个户,记下来他们的交易信息、当前余额等信息。
关于 UTXO 账户模型与 Account 模型的更具体的技术内容可以看如下链接:
- 比特币极速入门指南 by 李大狗
- UTXO 与账户余额模型 by Draveness
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 模型更优,而是这两种模型来源于不同的角度。把握了这个本质性的区别,接下来我们便会更好地理解两种模型的差异,以及这两种模型分别适合哪些业务场景。
注:本系列文章是闭源情况下根据现有公开资料的黑盒分析,仅供参考。
DCEP(Digital Currency Electronic Payment)央行数字货币已进入内测期,很多同学与开发者都非常关心这件事。因此笔者决定着手一系列的文章,用谨慎的研究态度从技术的角度对 DCEP 进行黑盒分析,希望能给我们的开发实践提供一些借鉴意义。
1 UTXO 模型与 Account 模型
UTXO(Unspent Transaction Output)模型与 Account 模型是用以记账的最流行的两种模型。
专业的定义:
- UTXO 模型是资产在用户之间移动的有向图
- Account 模型是具有当前网络状态的数据库
大白话定义:
- UXTO 模型——假设所有的资产都是一个个的硬币,那我们记下所有硬币的「流动轨迹」,知道当前没花的硬币都在哪里,那么我们无需给每个人创建账户,也能知道每个人有多少钱。
- Account 模型——我们拿了个小本本给张三李四都开个户,记下来他们的交易信息、当前余额等信息。
关于 UTXO 账户模型与 Account 模型的更具体的技术内容可以看如下链接:
- 比特币极速入门指南 by 李大狗
- UTXO 与账户余额模型 by Draveness
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 模型更优,而是这两种模型来源于不同的角度。把握了这个本质性的区别,接下来我们便会更好地理解两种模型的差异,以及这两种模型分别适合哪些业务场景。
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。
- 发表于 2分钟前
- 阅读 ( 3 )
- 学分 ( 0 )
- 分类:DCEP
以上所述就是小编给大家介绍的《浅谈 UTXO 模型与 Account 模型 | DCEP 黑盒分析(一)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 业务分析模型,该怎么搭建
- ClickhHouse 开发数据模型之留存分析
- Netty源码分析--内存模型(上)(十一)
- Netty源码分析--Reactor模型(二)
- 如何用线性回归模型做数据分析?
- LNMP架构下的进程模型分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JSP网站开发典型模块与实例精讲
李振捷 / 电子工业出版社 / 2006-8 / 50.0
本书是典型模块与实例精讲丛书中的一本。 本书讲解了使用JSP开发网站系统的经典模块和工程实例,基本囊括了JSP的重点技术,对这些模块稍加修改就可以直接使用到实际项目中。为了方便本书的读者交流在学习中遇到的问题,特地在本书的服务网站上公布了很多QQ群组,读者只要拥有QQ号码,就可以参与到本书的QQ学习群组中一起讨论学习心得。本书的作者还在一定的时间给读者提供在线答疑服务。一起来看看 《JSP网站开发典型模块与实例精讲》 这本书的介绍吧!
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
XML、JSON 在线转换
在线XML、JSON转换工具