本文原标题为“《区块链所预示的未来,需要什么样的基础设施?》”。之后我想了很久,突然一个有趣的想法牢牢抓住了我。所以,我完全陷入其中无法自拔,所以我不得不放弃原来的写作和概要,但我试图清楚地解释他的想法。我做到了。当然,这远不是白皮书。
1.区块链的本质是什么?
有人说它是“分布式数据库”,有人说它是“分布式账本”,还有人进一步解释,“它是一个以分布式方式记录账本的数据库。但是,这个数据库有附加且只能读取,未修改”或删除。
正当我苦苦思索的时候,我突然想到什么是“账本”,它完全就是一个版本控制系统。
除了初始提交之外,每个提交还包含其父提交——的整个提交历史记录,这也形成了一条链。每次提交也可以称为一个块。除非你做一些特殊的事情,否则所有传输都不会消失,但这只会使—— 区块链在这方面更具限制性。换句话说,了解版本控制系统可能有助于您了解区块链。
2.联想:SVN和Git的区别
我不会在这里讨论版本控制系统,只讨论SVN 和Git 之间的区别。
SVN版本号是自动递增的数字,所以只能有一条链。
因为Git 版本号是散列值的字符串,并且不受自身增长的限制,所以Git 版本树可以具有非常多样化的形状,通常称为有向无环图(DAG)。
由于每个节点都会记录世界各地的一批交易,我们发现两种模式(SVN 和Git)之间的性能存在显着差异。 SVN记录的交易必须是顺序的,因此无论全球范围内同时发生多少笔交易,它们都必须按顺序记录。相比之下,Git 版本不必按严格的顺序存在,并且合并最终版本要容易得多,大大提高了Git 的并发性能。
如果我理解正确的话,IOTA的DAG Tangle应该深受Git的影响。
3.不断完善你的想法—— 基于Git的分布式记账系统1.创建初始账户
建立一个空的git仓库,并创建一个内容为100000000的root账户文件。进行初始提交:init root account, 1000000002。添加新帐户A 并从root 获取转发。
创建一个新文件A,内容为:+20 from root。修改root文件,在A中添加行:-20。创建第二个提交:root到A,203。同时创建第二个帐户B。从root 获取转发
创建一个新文件B,内容为:+20 from root,修改root文件,在B中添加一行:-20,创建第三次提交:root to B,204.全部创建一个包含原始账本的分叉仓库。继续交易发生在原仓库
创建一个新文件C,内容为:+20 from root。修改root文件,在C中添加行:-20。创建第四个提交:root到C,206。Folkware 房子里发生了另一笔交易。
修改文件A。内容为-10至B。修改文件B。内容是+10到A。创建一个新的提交。 A到B,107.从原仓库改为叉仓库
分叉仓库发起pull request,原仓库接受pull request。双方的文件改动没有冲突,所以直接完成合并。从A到B的转账交易也包含在主线分叉中。仓库(git pull)同步原仓库版本fork仓库账本会同步到最新版本4.基于Git ——的分布式记账系统要点1.每台Git服务器都是一个账本库
因此,交易双方都可以选择记录交易的服务器。假设是:
该服务器上的分类账是最新的(至少它存储了交易双方的最新版本的分类账)。交易双方都相信该服务器的记录是准确和及时的。理论上,该服务器可能会收取转账和记账服务费用。 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、最可靠的服务器通常需要大量投资来保证数据的及时性和准确性,而且交易服务费用也比较高(好的服务自然应该是昂贵的)。
简而言之,我们现在拥有一个无害的、去中心化的、多中心的交易账本系统。
5. 三种类型的交易以及如何处理1. 最简单的交易是发生在两个账户之间的交易
参考复式记账方法,一笔交易至少必须同时更改两个文件,因此您需要确保该git 服务器上的两个帐户文件都已经是最新版本。
账户A说:我的账户地址是XXXX1,最新版本是YYYY1。您可以通过访问以下服务器进行检查:
账户B说:我的账户地址是XXXX2,最新版本是YYYY2。您可以通过访问以下服务器进行检查:
两个账户都可以选择更保守的策略,在更多的服务器上检查对方的账户版本,以确保它们是最新的,并最终为双方协商一个相互认可的交易服务器。
如果您找不到存储两个帐户最新版本的服务器,您唯一的选择是等到特定服务器最终同步到最新版本后再执行交易。
2、对于收付款频繁的账户,如果双方每次都需要进行版本对账,交易成本会过高。
例如,一个经常收款的账户可以将其支付地址和服务器地址公开。所有付款人都访问该服务器与他进行交易。
付款人向指定服务器发送支付请求,指定服务器首先将付款人的账户同步到最新版本,交易服务器完成交易。
对于接收方来说,同时的支付请求会被批量处理并记录在交易服务器上。无需严格遵循交易顺序,只要所有交易最终都被记录且数据一致即可。
经常支出的账户也可以类似的方式处理。
3.从个人账户到银行账户
对于个人之间的交易,每个人都从我的钱包转移到你的钱包,但这样的交易并不绑定到特定的交易服务器,你可以为每笔交易选择任何交易服务器。然而,如果您经常进出您的账户,那么选择在特定“银行”开设账户就变得很自然。
此前,交易是从个人钱包发起的,每次都会选择交易记账服务。今后,进场和出场的完成将直接委托给交易服务器。然后,您不仅可以将数字货币转入和转出,还可以将部分数字货币存储在该“银行”中。当然,这样会更方便、更快捷。
在未来的发展中,我们可以想象现在的银行可以为客户提供哪些服务,未来数字货币银行也将有机会提供这些服务。
6. 相关性和结论1. 本文的不完整性
我并没有真正考虑过如何建立信任。换句话说,我认为用算法来保证信任实际上是非常危险的。这是因为大多数人无法真正理解算法,最终只能盲目地信任它们。所以,信任不就是建立在历史是否干净、没有污点的基础上的吗?发布算法还不够。你必须公开你的数据,你必须公开你的流程,你必须公开你的所有历史数据。只有这样,才能赢得信任。
换句话说,信任是X%的事情,而不是0/1的选择。我对这项服务有80% 的信任,所以我愿意冒20% 的风险,仅此而已。
我没有深入思考算法和协议的细节。实现一个漏洞很少的架构只需要完成1% 的工作,就可以开始了。如果有对这个架构很感兴趣的朋友,可以一起研究一下。
2. 未来数字货币架构
一个渐进式改进的架构应该分层、划分模块,多个组件可以组合或替换。当前大多数公链都希望构建完整且完全可用的架构,但我认为大多数都失败了。但是谁能建立一个类似于TCP/IP的协议簇呢?我很兴奋!
作者:庄碧薇
链接:https://www.jianshu.com/p/d2f1e9bd56ea
本文经@shobiaowei 授权发布于人人都是产品经理。它禁止未经授权的复制
标题图片取自网络。
标题:区块链公链有哪些,区块链的公链是什么意思
链接:https://yyuanw.com/news/xydt/6224.html
版权:文章转载自网络,如有侵权,请联系删除!