月亮链 月亮链
Ctrl+D收藏月亮链
首页 > XLM > 正文

区块链:ArcBlock 博客 | 区块链和数据库:致虚极,守静笃_BLOCK

作者:

时间:1900/1/1 0:00:00

作者:陈天

前言:为纪念中本聪发表比特币白皮书10周年,ArcBlock研发副总裁陈天特撰此文阐述他对区块链与数据库的关系的独特观察和思考。

10月31日,陈天发朋友圈感慨自己投身区块链创业“半年过去了,无数打了鸡血的三点钟群已经悄无声息,一票在泡沫里仰泳的投机者消失了,而我,像钻进了兔子洞的爱丽丝,徜徉在这个奇妙的世界里……”

如果说牛顿的经典物理是爱因斯坦相对论在低速环境下的一种体现的话,我们所熟知的数据库技术,可以认为是区块链技术在弱分布式环境下的一个特例。

「弱分布式」环境是我胡扯的一个词,你可以将其理解为节点数量极其有限,运行环境高度可控的一种分布式环境。一个数据库集群运行在同一数据中心,或者不同数据中心,只要是同一个管理者,那么这就是可控的运行环境。在可控的运行环境下,默认不存在「作恶」的节点,也就无所谓BFT,因此我们不需要复杂的共识算法,一般两阶段提交或者paxos/raft就能收敛共识,满足需要。所以,数据库的共识算法是区块链共识算法的特例。

在区块链的世界里,交易和交易产生的状态是严格分离的。若干交易由被共识算法选择出来的矿工验证并打包成为区块并广播出去,然后网络里其他参与者验证区块中每个交易的合法性,并写入自己的statedb。在bitcoin里,statedb是UTXO,在ethereum里,则是其worldstate。

数据库的世界里仿佛没有类似于区块链的交易记录,但仔细想想,它的交易历史其实就是WAL。从外界接收到的请求,数据库会先将其写入WAL,确保其进入持久化存储,才会往它自己的“states”里面写入。从这个角度,我们可以认为WAL里的每一个记录,就对应区块链里的一个交易,它是区块链交易的特例。

法庭文件:2022年前Alameda Research和FTX净亏损达37亿美元:11月22日消息,据破产法院相关动议,2022年之前Alameda Research和FTX自成立以来的净亏损高达37亿美元。而去年SBF告诉福布斯Alameda在2020年获得了10亿美元的利润,且据CNBC报道FTX泄露的2021年财务业绩表明它在2021年是盈利的,净收入为3.88亿美元。(福布斯)[2022/11/22 7:54:53]

如果你再认真思考一下,WAL,blockchain,以及MartinFowler很早就提倡的CQRS在这个层面上其实都是「一中各表」:大家都强调「事件」和「状态」的分离,通过前一个状态+当前事件,可以推演出当前状态。这样,我们只要有一个初始的「状态」,然后记录系统发生过的所有的「事件」,就可以复原任意一个时刻的「状态」。

我们回到交易和容纳交易的「区块」。你会发现,「区块」是一个怪怪的存在,为什么数据库不需要「区块」这样的概念作为容器装载「交易」,而区块链却需要呢?我们知道,在区块链的世界里,不确定性和确定性仿佛一对孪生兄弟,确定的是规则,不确定的是规则的执行者。所谓矿工轮流做,下回到我家,那怎么定义一个「回合」呢?为了回答这个问题,我们需要某种机制明确一个回合矿工地位的起止——这个起止就是一个「区块」。不仅如此,在一个物理时钟并不一致的分布式环境下,「区块」还承载着全局时钟的功能,滴答滴答将整个网络往前推进。「区块」的概念是如此重要,以至于它当仁不让地成为共识算法的基础——大家先得对下一个要出的区块序号达成共识,否则这个游戏无法进行。反观数据库系统,在一个数据库集群中,master是固定的,master令旗一挥,slave就迅速跟进,指哪打哪,不存在轮流坐庄,也就无所谓回合,所以其实每个「交易」就是一个「区块」。所以在数据库的世界里,逻辑上每个交易,或者说WAL的每个记录,自成一个隐性的「区块」。

加密做市商Radkl前交易员成立新的量化对冲基金“F9 Research”:金色财经报道,消息人士透露,来自加密货币做市商 Radkl 的交易员 Jim Greco、Jason Bell 和 Allan Erskine 已离职,以推出他们自己的以数字资产为重点的量化投资基金。新基金名为 F9 Research,将在去中心化和中心化加密市场进行交易,Greco 担任新基金的首席执行官。一位消息人士表示,F9 Research 已经吸引了 30 多家投资者,其中包括几家大型机构,Greco 拒绝就管理资产规模置评。

Jim Greco是加密货币交易所 Gemini 的董事会成员,曾在高频交易商 Getco 任职,Jason Bell之前是纽约梅隆银行的董事总经理,Allan Erskine 曾在 Citadel、瑞士信贷和 Gemini 任职。(The Block)[2022/2/7 9:34:48]

我们从另一个角度来探讨这个结论。「区块」的另一个重要的作用是crashrecovery。在一个区块链网路中,某个节点无论是断网还是崩溃,其状态和网络中达成共识的状态必不一致,那么,如何从这种不一致的状态恢复同步的状态呢?答案是「区块」,因为它是唯一明确的共识的产物。节点总是能够找到最近的commit的和网络中一致的区块高度,然后从这个高度往后一个区块一个区块同步,依次运行区块中包含的所有交易并更新本地的状态,最终可以保证和网络中的状态达成一致。在这里,「区块」就是检测和达成状态一致的最小单元。而在数据库系统中,在崩溃发生后,系统会从其他节点同步最新的WAL,并从上次commit的WAL的位置往后一个记录一个记录执行命令,直到所有记录运行完毕,这时数据库状态恢复到集群的当前状态。在这里,WAL的记录是检测和达成一致的最小单元,所以我们称其为隐性的「区块」,没毛病。

加密交易所CoinMENA完成950万美元种子轮融资,Alameda Research等参投:11月8日消息,总部位于巴林的法币-加密交易所CoinMENA完成950万美元种子轮融资,BECO Capital、Kenetic Capital、Arab Bank Switzerland、Bunat Ventures、Alameda Research、Girnas Capital参投。

据悉,CoinMENA于2021年初由Dina Saman、Talal Tabbaa、Yazan Barghuthi推出,旨在促进在海湾地区便捷和安全地进行加密投资,重点关注巴林、阿拉伯联合酋长国、沙特阿拉伯和中东和北非市场的其他地区。该公司是一家由巴林中央银行授权的完全受监管的境内加密交易所。(福布斯)[2021/11/8 6:38:32]

在区块链的世界里,一笔交易需要被验证。这里的验证有两重含义:1)身份验证——交易是由其发起人正确签名的;2)完整性验证——交易对状态的变更是合法的。身份验证好理解,你用自己钱包的私钥签名给我转1个ABT的交易,系统会验证你的确是你;完整性验证则是指在statesdb里,你的账号下的确有超过1个ABT的token,才能发起这个交易。在数据库的世界里,身份验证直接赤果果用诸如RBAC的访问控制系统解决了,而完整性验证和区块链类似。

接下来我们看看确定性。所谓确定性,就是在同一个状态Sn-1下,大家拿着同样一笔交易,不依赖任何第三方信息独立执行,执行的结果完全一致。这一点仅就纯粹的从交易到statesdb的处理来说,区块链和数据库是完全一致的,大家都能保证确定性。然而,如果某个区块链要支持交易中携带额外信息,这些信息触发某些链上部署好的代码的执行,那么,我们就得注意代码本身需要具备确定性。所谓确定性,无非是:

比特币公司NYDIG宣布收购Arctos Capital:Stone Ridge资产管理公司旗下的比特币公司NYDIG宣布收购商业贷方Arctos Capital公司,收购金额尚未披露。Arctos Capital执行合伙人Trevor Smyth在一份声明中说:“我们很高兴能加入NYDIG,将继续构建融资解决方案和其他服务,以支持NYDIG北美比特币挖矿业务的发展。”(CoinDesk)[2021/4/22 20:48:29]

代码中不要使用不确定的随机数生成器——比如使用计算机的时钟作为种子生成随机数,这就是不确定的。因为交易在被执行的那一刻,我们无法保证所有参与者的时钟是精确同步的。

代码避免使用多线程。多线程引发的racecondition具有不确定性。

不要使用系统时钟。不解释。

不要使用未初始化的内存。鬼知道上面是陈冠希还是诸子百家。

不要使用浮点数——这个很奇葩,因为不同的CPUarch,编译器,甚至不同CPU型号间,由于支持的浮点数指令集不同,会导致结果不同。

不要使用编程语言的可能有随机行为的数据结构。比如遍历一个map

基本上避免了这些,代码就具备了确定性,可以在区块链上执行。那么,为什么数据库中的存储过程可以允许没有确定性的代码的执行?比如,一个存储过程里可以使用当前时间插入一条记录?我们如果再回归本源,从「交易」的角度看待问题,可以发现,存储过程类似于“off-chain”执行的代码,它虽然植根于数据库之中,但其实是「交易」的源头,存储过程的执行产生真正的交易,也就是WAL记录,然后同步给其它节点。所以存储过程可以non-deterministic,因为其产生的WAL记录已经是deterministic的——添加一条带当前时间的记录这件事情,在master执行时,已经将取「当前时间」这个动作完成并得到一个确定的值,携带于WAL之中。这跟区块链的smartcontract的概念有本质的区别,这也是为什么存储过程可以不必具备确定性,而“on-chain”执行的smartcontract需要确定性。从这个角度来讲,数据库系统也是一个弱化的区块链系统。

动态 | Blockforce Capital与纽约证券交易所Arca向SEC提交新的ETF申请:据coindesk报道,周一,Blockforce Capital的分支机构Reality Shares ETF Trust与纽约证券交易所Arca合作,共向美国证券交易委员会(SEC)提交N1-A的比特币ETF文件申请,希望可以获得SEC批准,使其推出Reality Shares Blockforce全球货币策略ETF。具体文件内容,用户可点击“查看详情”在SEC官网查看。[2019/2/12]

既然区块链和数据库存储的对象都是数据,那么,提过了数据的完整性和确定性,接下来就是数据的一致性。区块链显然是最终一致性的典范——网络越大,参与的节点越多,区块的扩散就越慢,任何时刻在不同的节点上读取状态就很大几率出现不一致的情况。然而,只要节点能同步到最新的区块,整个网络的状态是收敛的,最终大家能够得到一个一致的状态数据。其实,按照这个道理,所有使用WAL,CQRS思想的分布式系统,其数据的状态都是最终一致的——这似乎和我们对经典数据库强一致性的印象不匹配。然而,如果我们把视角拉到数据库内部,可以发现,强一致性只不过是最终一致性之上添加了一些条件,是个特例。如果我们假定一个区块链满足下面的条件:

任何节点收到新的区块,必须在交易执行完成,写入statesdb中之后,给矿工节点发送确认

矿工节点在收到所有确认之后广播给网络中所有节点这个区块大家已经commit成功

在一个区块没有收到矿工节点的上述广播之前,客户端发送来的查询进入队列排队

那么在外界看来,它也是强一致性。当然,第三点有些过于苛刻,一般的数据库实现都会采用MVCC,让每个client看到当前状态的一个snapshot,因而存在一个很小的窗口,大家看到的数据是不一致的。如果较真,MVCC不算强一致性,当然没人会这么认为。

通过上面的规则,数据库可以通过牺牲一些性能来打造对外而言的强一致性。但有时候,为了一些崇(wo)高(chuo)的理想,数据库系统也可以打破这些规则来号称更高的性能。mongdb可以在cluster的环境下,写操作不需要节点确认即可返回,于是有了美其名曰的,如薛定谔的猫一般的「弱一致性」。

一个区块链网络理论上可以通过上述规则把自己营造成对外强一致性的感觉,但这实际上没有可操作性。能力越大,责任越大网络越大,延迟越大,所以,实际可操作的强一致性只能发生在节点数量很少,且节点都在同一个datacenter的环境下。从数据一致性的角度来说,数据库也是区块链在特殊场景下的一个特例。

最后说说性能。性能这事,和网络规模成反比。两个主要原因:1)节点越多,达成共识的难度就越大。2)节点越多,「交易」在网络中传播所需的时间就越长。那想要达到宇宙无敌的TPS怎么办?其实不难——既然数据库是一个弱分布式环境下的特例,那么,咱就把区块链往数据库的方向退化就好。PoW说「王侯将相,宁有种乎」,让全网参与铁王座的竞争,PoS就让「一小部分人先富起来」,DPoS再进一步,「让领导先走」,也许不久的将来,有人会则憋出终极大招,全网就一个九五之尊,把数据库里能用的招数,replicaSet,Sharding等等统统用上,再使用兵法中不战而屈人之兵之术:「今治水军八十万众,方与将军会猎于吴」…于是,可以名正言顺地抢下性能的桂冠。

只不过…就像非诚勿扰里车晓问葛优:那事儿,就那么有意思吗?

ArcBlockTechnicalLearningSeries第七期

Tendermint:ConsensusMadeEasy

下周三,11月7日下周三上午8时,由ArcBlock研发副总裁陈天授课,介绍Tendermint及其架构,共识算法如何工作,以及如何复制应用程序数据。

主讲

陈天

ArcBlock研发副总裁

●前旧金山创业公司TubiTV研发副总裁,比图科技(TubiTV中国全资子公司)总经理,创建中国团队,并领导TubiTV研发团队在过去两年半时间帮助业务成长数十倍

●前JuniperNetworksTechLead&Sr.StaffEngineer

●2011-2013曾在北京创立在线旅游创业公司途客圈,获创新工场和金沙江投资,在结束途客圈的创业生涯后,将创业经历撰写成《途客圈创业记》一书,由人邮出版社出版。

●技术爱好者,涉猎网络安全,云计算,分布式系统和区块链。主力语言:elixir,nodejs和python。github:tyrchen。

●公众号「程序人生」(programmer_life)作者,知乎专栏「迷思」作者。自2014年以来,撰写技术文章近四百篇,很多文章被知乎日报推荐。

报名听课,登录官网注册:

https://hack.arcblock.io/learning/

或登陆掘金注册:

https://juejin.im/events/all

或扫描二维码注册:

ArcBlock课堂①|IntrotoGraphQLandAbsinthe

ArcBlock课堂②|IntrotoEthereumSmartContract

ArcBlock课堂③|IntrotoAWSDataPipelineServices

ArcBlock课堂④|IntrotoAWSAthena

ArcBlock课堂⑤|WhatisAWSKinesis

ArcBlock课堂⑥|多步验证那些事

ArcBlock课堂⑦|IntrotoCQRSandCommanded

标签:区块链BLOCBLOCKBLO银行区块链币有什么用Blockchain Valley VirtualsmarthomeblockDoubloon

XLM热门资讯
XMX:BikiCoin关于上线XMX的公告_MAX

尊敬的用户:????BikiCoin即将上线知名泛娱乐公链XMAX代币XMX,并开放XMX/BTC和XMX/ETH的交易对.

1900/1/1 0:00:00
OPX:资管新标OPX上线,壕送奔驰 BTC 1,000,000OPX_lbank交易所清退

尊敬的LBank用户:??在11月13日16:00-11月20日16:00期间,LBank将举办OPX的交易返利与交易大赛活动,具体活动规则如下1.买入壕送活动期间,将每日净买入量进行排名.

1900/1/1 0:00:00
DASH:干货 | 从巴塞罗那到上海,来自一万两百里的灵感与思考_CHA

本篇文章源起于巴塞罗那世界物联网解决方案大会的所见所感以及关于CPChain数据交易平台PDash的一些感想.

1900/1/1 0:00:00
ZEE:智品ZEEPIN项目进展通报9.1-10.25_Fanzee

本次项目进展通报包括五个板块:智品大事件、运营情况、dApp生态、社区活动、智品微问答,对9-10月智品公链整个生态的发展进行总结.

1900/1/1 0:00:00
COM:“火箭计划“第四弹:全球多家知名数字资产交易平台即将上线RNT_ROOT

火箭计划第四弹强势来袭!ONEROOT全球战略取得新突破,RNT交易版图再次扩张,六家知名数字资产交易平台TOKOK、InfluenceExchange、6X、bitget、JB.com、Bha.

1900/1/1 0:00:00
AND:Trade ‘on the go’ with the new Bitfinex mobile app_Happy Land

AbrandnewBitfinexappiscomingforonthegotradersandwe''reexcitedtoletyoutry.

1900/1/1 0:00:00