原本,这篇文章的标题是《区块链所预示的未来,需要什么样的基础设施?》,后来我反复想了好久,突然有一个有趣的念头紧紧的拽住了我,于是我完全沉迷其中无法自拔,只能放弃原来的写作内容与提纲,而是努力试图将自己的这个设想,阐述明白。

当然,这还远远称不上一份白皮书!

一、区块链的本质是什么?

有人说是:分布式数据库;有人说是:分布式账本;还有人会进一步说明:就是一种以分布式方式记录账本的数据库,但是,这个数据库只能添加、读取,不能修改,删除。

在苦思冥想的过程中,我突然想到,什么“账本”呀,这完全就是一套版本控制系统。

  • 除了初始提交,每一个提交都会有父提交——全部的提交历史,也构成了一个链,每一个commit,也可以说是一个block
  • 如果不经过特殊操作,所有的提交都不会消失,只会增加——区块链在这方面的限制更加严格

所以:我们也许可以借助对版本管理系统的理解,来理解区块链。

二、联想:SVN与Git的区别

更远的版本管理系统,咱们不去提他,单说SVN与Git的区别,SVN的版本号,是一个自增长的数字,因此:只能有一条链:

Git的版本号,是一串Hash值,不存在必须自增长的限制,因此Git的版本树形状会非常多样,通称DAG(有向无环图)

如果每一个节点,记录世界上的一批交易的话,我们就会发现SVN与Git的两种模式,存在性能上的巨大差距。因为SVN记录的交易,必须是串行的,任凭世界上同时发生多少交易,都必须依次记录!相比之下,Git的版本,就不必严格依序发生,最后的版本合并,也容易得多,这就是使得Git的并发性能,会好很多!

如果我没有理解错误的话:IOTA的DAG Tangle,应该受到Git的很多启发。

三、继续完善我们的设想——基于Git的分布式记账系统

1. 创造一个初始账户

  • 建一个空的git仓库
  • 创建一个root account文件,内容是:100000000
  • 创建一个初始提交:init root account, 100000000

2. 新增一个账户A,并且从root得到转账

  • 新建一个文件A,内容是:+20 from root
  • 修改root文件,添加一行:-20 to A
  • 创建第二次提交:root to A, 20

3. 如上所述,再创建第二个账户B,也从root得到转账

  • 新建一个文件B,内容是:+20 from root
  • 修改root文件,添加一行:-20 to B
  • 创建第三次提交:root to B, 20

4. 创建一个fork仓库,包含原来的全部账本

5. 原始仓库继续发生交易

  • 新建一个文件C,内容是:+20 from root
  • 修改root文件,添加一行:-20 to C
  • 创建第四次提交:root to C, 20

6. 在fork仓库中,发生另一次交易

  • 修改A文件,内容是:-10 to B
  • 修改B文件,内容是:+10 to A
  • 创建一次新的提交:A to B, 10

7. 原始仓库合入fork仓库的变更

  • fork仓库发起一次pull request
  • 原始仓库accept pull request
  • 由于两边的文件变更不存在冲突,所以合入直接完成,A向B转账的交易,也被计入主线
  • fork仓库同步原始仓库的版本(git pull),fork仓库的账本同步至最新版本

四、基于Git的分布式记账系统——要点

1. 每一台Git Server,就是一个账本库。因此,一笔交易的双方,可以选择任意一台服务器,记录他们的交易。前提是:

  • 这台服务器上的账本,是最新的(至少保存了交易双方账本的最新版本)
  • 交易双方都信任这台服务器的记录是准确,且及时的
  • 理论上,这台服务器提供了转账与记账的服务,可以收取服务费

2. 交易双方经过协商,可以选择任何一台服务器进行交易,并且支付费用。因此:账本服务器,存在竞争关系。理论上,以下优点将帮助交易服务器胜出:

  • 交易账本数据最新最全(这是核心竞争力,否则交易速度将会变慢)
  • 交易记录速度最快
  • 交易费用最低(这需要一个平衡)

3. 数据同步成功率与服务可信度

  • 为了确保自己的服务器上,拥有最新最全的数据。各家服务器都会有动力,频繁的拉取其他服务器的账本数据(git pull)
  • 可能存在这样的现象:A拉取B服务器的数据,但是出现了版本冲突,因为有账户x,同时在A、B记录了两笔不同的交易。理论上,需要B先拉取A服务器的数据,然后A才能成功拉取B服务器的数据。类似于我们git push之前,需要先git pull
  • 当A服务器拉取失败时,他有义务通知B服务器:“你的版本太老”。于是B服务器会拉取A服务器的数据。当A服务器再次重试时,拉取成功了。
  • 于是,长期来看,A服务器拉取B服务器的数据,就会有一个成功率的记录。我们也可以记录,某台服务器,针对其他所有服务器的拉取请求,其成功率的数据。这样的数据,就代表其服务可信度。

4. 可信度最高的服务器,通常为了确保其数据的及时与准确性,需要投入大量的成本,他们的交易服务费用,也将会比较高(好的服务,当然应该贵一些)

  • 于是:我们得到了一个良性的,分布式多中心的,交易账本系统!

五、三种交易类型与应对策略

1. 最简单的交易,就是发生在两个账户之间的。参考复式记账法,一笔交易我们至少需要同时修改两个文件,因此我们需要确保在那台git server上,两个账户文件都已经是最新版本了

  • 账户A说:我的账户地址是XXXX1,我的最新版本是YYYY1,你可以去以下服务器查证。
  • 账户B说:我的账户地址是XXXX2,我的最新版本是YYYY2,你可以去以下服务器查证。
  • 两个账户,都可以选择更加保守的策略,在更多的服务器上,互相查证对方的账户版本,是否为最新。并且最终商议出一个双方共同认可的交易服务器
  • 假设找不到一台服务器,同时保存了双方账户的最新版本,那就只能等待某一台服务器,最终同步到了最新的版本,然后再执行交易

2. 对于频繁收钱,或者频繁支出的账户,如果每次都需要交易双方协调版本,那交易成本就太高了

  • 以频繁收钱的账户为例,他可以对外公布一个自己的收款地址+服务器地址。所有的支付者,都到这个服务器上,与他交易
  • 付款者向指定服务器发出付款要求,指定服务器首先同步付款者的账户到最新版。交易服务器完成交易。
  • 对于收款者而言,并发的支付请求,在交易服务器上被批量处理并记录。不必严格遵守交易的先后次序,只要最终被全部记录且数据一致即可
  • 频繁支出的账户,也可以按类似方式处理。

3. 从个人账户到银行账户

  • 如果是个人对个人的交易,大家都是从我的钱包到你的钱包,这样的交易可以和具体的交易服务器无关,也可以说每次交易都可以选择任意的交易服务器。但是,如果是经常存在账户进出的情况,那么选择在某家“银行”开户,就变成很自然的事情
  • 过去是从个人钱包发起交易,每次选择交易记账的服务。现在变成直接委托某个交易服务器,完成进出。那么,不仅仅是完成数字货币进出,也完全可以将一部分数字货币,保存在那个“银行”里。这样当然会更加方便快捷。
  • 后续的发展,我们可以想象:现在的银行能够为客户提供哪些服务,今后的数字货币银行,同样也有机会提供出来。

六、联想与结语

本文未完善之处

  • 我没有深入去思考:如何达成信任这件事情。或者说:我认为通过算法保障信任,其实非常危险。因为绝大多数人,是无法真正理解算法,最后也只能是盲目信任。所以,信任只能来自于历史上是否清白,是否存在污点?算法公开是不够的,数据要公开,过程要公开,所有历史数据,都需要公开,这样才能够谈得上信任。换言之,信任不是0/1的选择,信任是一个X%的事情。我对这个服务有80%的信任,于是我愿意冒着20%的风险,去使用这一服务,如此而已。
  • 没有深入思考算法与协议的细节:为了实现一个几乎没有漏洞的架构,我现在大概只能算是完成了1%的工作,开了一个头而已。要是有朋友对于这个架构,也非常感兴趣,大家倒是可以一起研究一下。

未来的数字货币架构

一个逐渐完善的架构,肯定是分层、分模块,多个组件是可以组合/替换的。目前的大多数公链,都想的是打造一个完整的,全面可用的架构。我觉得他们多半都会失败。但是,有谁能够构造一个类似于TCP/IP这一的协议族呢?我非常期待!

下期预告

下一篇文章,会聊聊乌托邦的事情,这是IT技术,最接近革命的状态,也许未来真的会是某种DAO也未可知!

————————
补充一段霍炬对这篇文章的评论:

这是道思考题啊,git和区块链的异同比较可以做面试题。
你这个恰好回答了这个问题,这个系统 1 不是拜占庭容错系统 2 没法阻止异步时候的双花。
把这俩问题解决了之后就会发现它跟主流区块链解决方案基本一样了。
你这个叫做PoA,Proof-of-authority。以太坊早期启动时候算力不够用过一段这个办法。我们要pow是因为在数学上可以证明它成立,普通人懂不懂没关系。但是它得是可证明的。不然还搞区块链做什么,直接信任银行好了。。
你说的那种就是Pos或者DPos。前者是你抵押足够多的资产,让惩罚足够大,从而让你不敢捣乱。后者是经过选举大家选出来的,捣乱就干掉你破坏你前期投入。
git为什么不能和区块链相比,因为关键就在这个P-o- xxxx 啊。。

我的感想:
作为一个外行,我大概又搞懂了一些什么。虽然是自己瞎想,然后也许慢慢会理解“前辈”们的取舍和决策依据了。

区块链随想录——一种设想中的公链架构相关推荐

  1. J9数字论:如何理解区块链中的公链,私链,侧链,联盟链

    区块链简而言之,就是一个分散式的记账本,有着点对点交易查询,公正,透明,可追溯,不可篡改,去中心化的特点. 区块链在大类上被分为公共区块链(公链),联盟区块链和私有区块链,TVL和用户量最大的公链当属 ...

  2. 复星金服微服务_复星金服以区块链技术解决行业痛点 “中招公信链”项目正式启动...

    近日,中国招标投标公共服务平台在北京召开协同推进"互联网+"招标采购行动技术创新成果推广运用交流会,包括复星金融服务集团(以下简称"复星金服")在内的113家单 ...

  3. 商业落地的 DeFi 热潮中,公链们或殊途而同归

    联盟链或成政策暖风最大受益者,国产公链纷纷加入 DeFi 热潮 DeFi 或许是面向未来公链的必选项.在 2020 年的区块链热点中,DeFi (去中心化金融) 是最大的关键词.金融领域作为监管最严的 ...

  4. 融媒体落地区块链技术——安徽省安庆市岳西县采用SWTC公链承载融媒体内容数据安全防护系统

    VOV供享社 2019年3月11日,全国公共资源交易平台安庆市公共资源交易服务网发布了<岳西县融媒体信息服务平台及内容数据安全防护系统>成交公告,安徽智圣通信技术股份有限公司的" ...

  5. NAC公链 区块链技术寒冬已过,优质公链NA(Nirvana)Chain开启快速发展之行

    区块链的发展并不是一帆风顺.起伏不定的行情让区块链行业在2020年新年将至时经历了一场寒冬.当泡散去,市场回归理性阶段,众多怀揣坚定理想的公链项目开始仅专注于自身发展,并依靠这段沉淀期将性能在技术革新 ...

  6. 区块链模块化的大胆尝试,解读公链Celestia

    作为以链游为主的社区,暴躁兔也会时常关注加密行业的其他赛道和方向.对于目前市场而言,公链的机会与红利仍然存在,且相对而言,技术创新较多,同时资本也比较喜欢这样的赛道.今天为大家讲解的是Cosmos生态 ...

  7. php防止文件盗链,如何在PHP程序中防止盗链

    如何在PHP程序中防止盗链 example: 页面: dl.php ------------------------------------------------------------------ ...

  8. 艾达链(ASC)全球电商公链产业生态沙龙走进浙江宁波

    12月2日,由新加坡艾达链.美国硅谷区块链技术研究中心主办,小艾社区.币多多社区承办的"艾达链全球电商公链产业生态沙龙"如约走进浙江宁波,这次为宁波小艾粉丝们带来分享的是艾达链战略 ...

  9. 深脑链解决人工智能全行业痛点的公链

    点击上方 "蓝色字" 可关注我们! 近日,很火的人工智能+区块链项目深脑链获得了金沙江创投等3200万人民币元首轮融资.他是全球首创且唯一的,由区块链技术驱动的人工智能计算平台,主 ...

最新文章

  1. Android获取内部和SDCard的存储空间
  2. 独家 | 展望未来:数据科学、数据工程及技术(附链接)
  3. “景驰科技杯”2018年华南理工大学程序设计竞赛 H-对称与反对称(扩展欧几里得求逆元)
  4. 智能提示和那些值得崇拜的人
  5. 生成树协议(STP)原理与配置PVST+实现负载均衡
  6. (0,eval)('this')与eval的区别
  7. ubuntu 14.04 server 安装virtualbox (虚拟机)deb
  8. 幻想三国android官方版,幻想三国ol官方版
  9. Python求绝对值的三种方法
  10. 建筑企业收并购的三要素
  11. hao123首页源码 html,html css应用高仿hao123网站
  12. 移动端跨平台技术总结
  13. Unity教程 | 手把手教你拼一个3D“魔方”
  14. 第一批90后30岁了,该有多少存款?
  15. direct wifi 投屏_【教程】Microsoft Wi-Fi Direct Virtual关闭方法
  16. cron表达式写法,cron表达式例子,cron表达式详解,
  17. 【mind+】机器人对话互动游戏编程
  18. Mybatis-plus学习笔记
  19. 什么是带有SSCC的DESADV?
  20. 论文阅读——基于文档主题结构的关键词抽取方法研究(理解)

热门文章

  1. 微信小程序:智力考验看成语猜古诗句好玩解闷小游戏下载
  2. 真牛,大神将Windows 10改造成Windows XP(EXPERIENCE Freestyle)
  3. PTA作业记录1(计算存款利息)
  4. 一个IP账号,为啥通过路由器就可供多人同时使用?
  5. 微信免卸载降级安装方法
  6. ANSYS CFX19.0中的SA模型设置
  7. [CVPR 2020] D3Feat: Joint Learning of Dense Detection and Description of 3D Local Features
  8. 从淘宝 UWP 的新功能 -- 比较页面来谈谈 UWP 的窗口多开功能(转)
  9. 轰动全球,一个月7级博客大V是如何炼成的!
  10. 操作系统权限提升(十二)之绕过UAC提权-Windows UAC概述