Facebook Libra 存储(Storage)简介

存储

存储模块为 Libra 区块链上的整个数据集提供了可靠且高效的持久化存储,以及 Libra Core 内部核心所必要的数据。

概观

存储模块旨在实现两个主要目的:

  • 持久化区块链数据,特别是通过验证器的共识协议完成的交易,还有持久化交易的输出数据。
  • 为区块链数据的查询提供 Merkle 凭证(Merkle proofs)的响应。如果客户端已获得正确的根哈希(Root Hash),则客户端可以轻松校验响应的完整性。

Libra 区块链可以被视为 Merkle 树(译注:Merkle Tree,通常也被称作 Hash Tree,顾名思义,就是存储 hash 值的一棵树,
参考),它包含以下组件:
在这里插入图片描述

账本历史 Ledger History

账本历史指的就是 Merkle 累加器。每笔交易添加到区块链的时候都包含 TransactionInfo 结构,在执行交易之后 Merkle 树会修改状态,根哈希也会修改,同时被添加到累加器上,显然这个根哈希是由交易生成的。

账本状态 Ledger State

一个稀疏 Merkle 树(Sparse Merkle Tree,默克尔树)就保存了账本所有的版本,该树也反映了全部帐户的状态。密钥是那个地址的 256 位散列,地址反映了整个帐户的状态,它被序列化为二进制 blob。虽然大小为 2^256 的树难以处理,但全部都是空节点的子树替换为占位符值,而包含一个叶子的子树将替换为单个节点。

当每个 TransactionInfo 结构指向不同的状态树,新树可以重用前一树的未改变部分,形成持久数据结构。

事件

每个交易都会发出一个事件列表,这些事件形成一个 Merkle 累加器。类似于状态 Merkle 树,交易的事件累加器的根哈希记录在相应的 TransactionInfo 结构中。

账本信息和签名

LedgerInfo 结构在某个版本和其他元数据中具有账本历史记录累加器的根哈希值,是对此版本之前的账本历史记录的绑定承诺。验证器在每次就一组交易及其执行结果达成一致时签署相应的 LedgerInfo 结构。对于被存储的每个 LedgerInfo 结构,还会存储来自验证器的此结构上的一组签名,因此客户端可以验证结构是否已获取每个验证器的公钥。

实施细节

存储模块使用 RocksDB 作为物理存储引擎。由于存储模块需要存储多种类型的数据,而 RocksDB 中的键值对却是字节数组的,于是我们在 RocksDB 上提供一个包装器来处理键和值的序列化。数据库中所有进进出出的数据结构都是根据预设定的模式(schemas)来定义的,并且是强制执行的。

LibraDB 是实现核心功能的主要模块。尽管我们使用单个 RocksDB 实例来存储整个数据集,但相关数据被分组到不同的逻辑存储中 - 例如,分类帐存储,状态存储和交易存储等。

对于管理分类帐状态的稀疏 Merkle 树,我们使用具有16个子节点的分支节点来优化磁盘布局,这些子节点表示4级子树,而扩展节点表示没有分支的路径。但是在计算根哈希和凭证时,我们仍会模拟二叉树。这样的做法使得凭证比以太坊的 Merkle Patricia 树生成的凭证短。

模块组织

storage
        └── accumulator      # Merkle 累加器的实现
        └── libradb          # LibraDB 的实现
        └── schemadb         # RocksDB 之上的模式包装器
        └── scratchpad       # Libra 核心数据结构,执行在内存的
        └── sparse_merkle    # 稀疏 Merkle 树的实现
        └── state_view       #  状态快照的抽象层,用于 Move VM 读取数据
        └── storage_client   #  gRPC 客户端的 Rust 包装器
        └── storage_proto    # 存储模块提供的所有接口
        └── storage_service  # gRPC 服务的存储模块.

译自 https://developers.libra.org/docs/crates/storage

展开阅读全文

Facebook简介

12-24

[img=http://www.yeeyan.com/img/fb_hq.jpg][/img]rnrn(Facebook在Palo Alto市的总部)rnrnrnrnrnrn简介rnrnFacebook是一个社会化网络站点。它于2004年2月4日上线。rnrnFacebook的创始人是Mark Zuckerberg,他是哈佛大学的学生,之前毕业于Asdsley高中。最初,网站的注册仅限于哈佛学院(译者注:哈佛大学的本科生部)的学生。在之后的两个月内,注册扩展到波士顿地区的其他高校(波士顿学院 Boston College、波士顿大学 Boston University、麻省理工学院 MIT、特福茨大学 Tufts)以及罗切斯特大学 Rochester、斯坦福 Stanford、纽约大学 NYU、西北大学和所有的长春藤名校。第二年,很多其他学校也被加入进来。最终,在全球范围内有一个大学后缀电子邮箱的人(如 .edu, .ac.uk等)都可以注册。之后,在Facebook中也可以建立起高中和公司的社会化网络。而从2006年9月11日起,任何用户输入有效电子邮件地址和自己的年龄段,即可加入。用户可以选择加入一个或多个网络,比如中学的、公司的、或地区的。rnrn据2007年7月数据,Facebook在所有以服务于大学生为主要业务的网站中,拥有最多的用户:三千四百万活跃用户(包括在非大学网络中的用户)。从2006年9月到2007年9月间,该网站在全美网站中的排名由第60名上升至第7名。同时Facebook是美国排名第一的照片分享站点,每天上载八百五十万张照片。这甚至超过其他专门的照片分享站点,如Flickr。rnrn网站的名字Facebook来自传统的纸质“花名册”。通常美国的大学和预科学校把这种印有学校社区所有成员的“花名册”发放给新来的学生和教职员工,帮助大家认识学校的其他成员。rnrn运营状况rnrn网站对用户是免费的,其收入来自广告。广告包括横幅广告和由商家赞助的小组(2006年4月,有消息称Facebook每周的收入超过一百五十万美元)。用户建立自己的档案页,其中包括照片和个人兴趣;用户之间可以进行公开或私下留言;用户还可以加入其他朋友的小组。用户详细的个人信息只有同一个社交网络(如学校或公司)的用户或被认证了的朋友才可以查看。据TechCrunch(译者:硅谷最著名的IT新闻博客。)报道,“在Facebook覆盖的所有学校中,85%的学生有Facebook档案;(所有这些加入Facebook的学生中)60%每天都登陆Facebook,85%至少每周登陆一次,93%至少每个月一次。”据Facebooke 发言人Chris Hughes说,“用户平均每天在Facebook上花19分钟。”据新泽西州一家专门进行大学市场调研的公司“学生监听”在2006年进行的调研显示,Facebook在“本科生认为最in的事”中排名第二,仅次于苹果的iPod,和啤酒与性并列。rnrn起步和发展rnrnMark Zuckerberg在Andrew McCollum和Eduardo Saverin的支持下,于2004年2月创办了“The Facebook”。当时他是哈佛大学的学生。月底的时候,半数以上的哈佛本科生已经成了注册用户。其时,Dustin Moskovitz和Chris Hughes加入进来,帮助网站的推广,将Facebook扩展到麻省理工学院、波士顿大学和波士顿学院。扩展一直持续到2004年4月,包括了所有长春藤院校和其他一些学校。之后的一个月,Zuckerberg,McCollum和Moskovitz搬到加利福尼亚州的Palo Alto市(译者:斯坦福大学所在地,硅谷的发源地),在Adam D'Angelo和Sean Parker(译者:著名的第一代P2P音乐分享网站Napster的创始人)的帮助下继续Facebook的发展。同年9月,另一个社会化网络站点ConnectU的合伙人Divya Narendra,Cameron Winklevoss和Tyler Winlevoss把Facebook告上法庭。他们称Zuckerberg非法使用了他们在让他帮助建站时开发的源代码。与此同时,Facebook获得了PayPal创始人Peter Thiel提供的约五十万美金的天使投资。到12月时,Facebook的用户数超过100万。rnrn2005rnrn2005年5月,Facebook获得Accel Partners的一千两百七十万美元风险投资。2005年8月23日,Facebook从AboutFace公司手中以20万美元购得facebook.com域名,从此从名字中把The去掉了。网站当时进行了重大改进。据Zuckerberg称,目的是提高用户档案页面的用户友好性。在这个月,McCollum回哈佛大学继续学业,同时仍旧以顾问的身份继续为Facebook工作,并在暑假来公司工作。Hughes则继续在剑桥市(译者:哈佛大学所在地)履行他公司发言人的职责。2005年9月2日,Zuckerberg推出了Facebook高中版,并称这是最合乎逻辑的下一步。虽然最初,这被定位为需要邀请才能加入的社区,仅15天以后,大部分高中的网络不需要密码也可以加入了(虽然Facebook账户还是需要的)。到10月份,Facebook已经扩展到大部分美国和加拿大的规模更小的大学和学院。除此之外,还扩展到英国的21所大学、墨西哥的ITESM、波多黎各大学、及维京群岛大学。2005年12月11日,澳大利亚和新西兰的大学也加入了Facebook,至此,Facebook中共有超过2000所大学和高中。rnrn2006rnrn2006年2月27日,应用户要求,Facebook允许大学生把高中生加为他们的朋友。约一个月后,2006年3月28日,《新闻周刊》报道Facebook可能被收购,谈判正在进行中。据报道,Facebook拒绝了一个七亿五千万美金的收购条件,甚至有传闻收购价格达到了20亿美金。同年四月,Peter Thiel、Greylock Partners和Meritech Capital Partners额外投资了两千五百万美元。5月,Facebook扩展到印度的印度理工学院和印度管理学院。6月,Facebook状告Quizsender.com抄袭其设计风格,要求赔偿十万美元。7月25日,Facebook增加了更多提高收入机会的功能。和苹果iTunes的合作推广活动中,加入“苹果学生小组”的用户可以在9月10日之前每周下载25首单曲。这个推广活动的目的是让学生们在秋季学期开学前对苹果和Facebook的服务都更熟悉和喜爱。8月,Facebook又加入了德国的大学和以色列的高中。8月22日,Facebook推出Facebook记事本功能--一个可以加标签、嵌入图片、评论的博客服务。同时用户可以从其他博客服务中导入。2006年9月11日,Facebook对所有互联网用户开放,这引起了很多现有用户的抗议。但两周后,Facebook注册仍旧对所有拥有有效电子邮件地址的人开放。rnrn2007rnrn2007年5月10日,Facebook宣布了一个提供免费分类广告的计划,直接和其他分类广告站点,如Craigslist竞争。这个被称为“Facebook市场”的功能,于2007年5月14日上线。2007年5月24日,Facebook推出应用编程接口(API)。通过这个API,第三方软件开发者可以开发在Facebook网站运行的应用程序。这被称为Facebook开放平台(Facebook Platform)。同年6月,和iTunes的合作继续为用户提供免费音乐单曲下载。7月,Facebook完成了第一次对其他公司的收购,从Blake Ross和Joe Hewitt手中收购了Parakey(译者:Ross和Hewitt是火狐浏览器的作者,Parakey是一个被称为网络操作系统的平台)。7月24日,Facebook聘用YouTube的前CFO Gideon Yu为CFO,替换了Michael Sheridan。8月,Facebook成为新闻周刊的封面故事。rnrn2007年9月25日,微软宣布他们可能会收购Facebook的部分股份。据称Facebook被完全收购可能性不大,因为其创始人Mark Zuckerberg希望保持独立。rnrn网站功能rnrn墙(The Wall)rnrn墙就是用户档案页上的留言板。有权浏览某一个用户完整档案页的其他用户,都可以看到该用户的墙。用户墙上的留言还会用Feed输出。很多用户通过他们朋友的墙,留短信儿。更私秘的交流则通过“消息(Messages)”进行。消息发送到用户的个人信箱,就象电子邮件,只有收信人和发信人可以看到。rnrn2007年7月起,用户可以在墙上贴附件。之前,只允许文本内容。rnrn礼物(Gift)rnrnrnrn(Facebook礼物)rnrn2007年2月,Facebook新增了“礼物”功能。朋友们可以互送“礼物”--一些由前苹果设计师Susan Kare设计的有趣的小图标。礼物从Facebook的虚拟礼品店选择,赠送时附上一条消息。收到的礼物以及所附的消息会显示在收礼者的“墙”上,除非送礼者设定这个礼物是私秘的。另外,在墙的上方还有一个“礼盒”。用户收到的所有礼物都在礼盒中。公开的礼物显示送礼者的名字,私秘的礼物则显示“私人”。rnrn另有一个“匿名”的选项。虽然所有人都可以看到礼物,但只有收礼者可以看到送礼者的名字和消息。这种礼物只在礼盒中,而不在墙上显示。rnrnFacebook用户注册时免费获得一个礼物。以后的每个礼物一美元。最初推出时的礼物是有关“情人节”的。同年2月由此产生收入的50%捐献给Susan G. Komen乳腺癌基金会。之后,Facebook每天推出一款新礼物,大多数都是限量版,或只是限期供应。用户个人主页会显示每日礼物的广告。随着Facebook开放平台应用程序的出现,第三方开发的应用程序对1美元购买礼物的模式构成威胁。请注意,Zachary Allia(译者:一个第三方程序开发员)开发的“免费礼物”,与Facebook的官方礼物是不同的。rnrn市场(Marketplace)rnrn2007年5月,Facebook推出Facebook 市场。用户可以免费发布下列分类广告:卖二手货、租房、工作,等。供求两方均可发布。所有Facebook用户都可以使用这个功能。目前是免费的。rnrn捅(Pokes)rnrnFacebook提供一个“捅(Poke)”别的用户的功能,让用户可以给别人发送一个“Poke”。Facebook常见问题中这样解释:“Poke是你和朋友互动的一种方式。当我们设计这个功能时,我们觉得提供这么一个什么意思也没有的功能其时挺酷。用户们给Poke不同的解释。我们鼓励你给它你自己的解释。”实际上这个功能的目的只是让用户能引起别的用户的注意。尽管很多用户确实用这个功能来引起别的用户注意,或说声“嘿”,但有些用户仍把它理解为“性”的意味。这个解释造成了一个很热门的Facebook小组的产生--“Poke”够了,咱们干脆做爱吧。到2007年9月,这个小组共有二十五万用户。rnrn有时朋友之间会进行一种被称为“Poke仗”的游戏--两个用户间用“Poke回”功能,互相Poke来、Poke去。rnrn另有一些衍生出来的新功能,如“X 我”,和“超级Poke”,让用户可以把Poke替换成任何动作。rnrn状态(Status)rnrn状态,让用户向他们的朋友和Facebook社区显示他们现在在哪里、做什么。Facebook让用户填入状态的提示是“(某某用户)正在。。。”,用户填入剩下的部分。在用户好友列表的“新近更新”区,显示这些状态。rnrn活动(Events)rnrnFacebook活动的功能帮助用户通知朋友们将发生的活动,帮助用户组织线下的社交活动。rnrn开放平台上的应用(Application)rnrn2007年5月24日,Facebook推出Facebook 开放平台。利用这个框架,第三方软件开发者可以开发与Facebook核心功能集成的应用程序。rnrn最流行的应用程序包括:rnrn顶级朋友:用户可以选择和显示他们最好的朋友 rn涂鸦板:一个图形效果的“墙” rn我喜欢:一个社会化音乐发现和分享服务,包括音乐会信息和有关音乐知识的小游戏rn甚至有象棋、拼字游戏之类的游戏出现。而第三方网站如进行Facebook应用数据统计的Adonomics,相关博客如AppRate、Inside Facebook、Face Reviews等等或应运而生或对Facebook应用青眼有加。rnrn2007年7月4日,Altura 风投宣布“Altura 1 Facebook投资基金”,成为第一个只投资Facebook相关项目的风险投资。2007年7月10日,Bay Partners宣布成立“应用工厂(AppFactory)”,一个只投资Facebook应用的种子基金。rnrn2007年8月29日,Facebook改变了他们对应用程序热度的衡量标准,更倾斜于那些有深度价值的应用。因为之前,衡量标准仅以用户数为标准,使得那些高度“病毒传播”(译者:指极易于在用户间口口相传)但没什么用处的程序排名很高。著名IT博客Valleywag曾批评Facebook 应用是“一大堆垃圾”。rnrn截止2007年9月26日,共有超过4500个Facebook应用出现。rnrnFacebook标识语言(Facebook Markup Language)rnrnFacebook 标识语言是HTML的子集。Facebook应用的开发者可以用这种语言定制他们的应用程序的外观。rnrnFacebook视频rnrn与Facebook开放平台同时推出的,还有一个Facebook自己开发的应用程序--视频分享。用户可以上传视频、通过“Facebook移动”上传手机视频,以及用摄像头录像。同时用户可以给视频中的朋友加“标签”。这一功能被认为会与MySpace的相关功能竞争。但Facebook的视频只能在Facebook网络内观看。然而,一段发表在Userscripts.org上的Greasemonkey代码让用户可以下载Facebook视频或将之转贴在其他网站。rnrnFacebook的域模型rnrn下图(点击看大图)用UML类图的形式,显示了Facebook系统所管理的信息。它提炼出了Facebook数据库中的实体、关系、字段。rnrnrnrn(Facebook域模型,点击看大图)rnrn比如,图中显示了有关工作、学校、信用卡、显示用户名等的字段。(黄色方框代表类)rnrn请注意该图为概念类图,而不是具体实施的细节。如欲了解更多数据模型的细节,请参考Facebook查询语言(FQL)--一种类似SQL的查询语言的相关资料。rnrn技术构架rnrnFacebook使用LAMP(Linux、 Apache、 MySQL、 PHP)作为技术构架。Facebook的一个技术构架工程师Steven Grimm在博客中写到:rnrn几乎我们所有的服务器都运行开源软件。我们的Web服务器是Linux,Apache和PHP。我们数据库是MySQL。我们使用memchached来保证网站的快速反应。一些后台应用Python、Perl和Java,以及一些gcc和Boost。程序员用Subversion和git来进行代码管理。还有很多--象很多网站一样,从头到脚都是开源软件。rnrn收购传闻rnrn2006年随着MySpace被新闻集团收购,关于Facebook会被一家大的媒体公司收购的传闻出现。Facebook的创始人Zuckerberg说过他不想出售公司,并否认了这些传闻。他已经拒绝了九亿七千五百万美元左右的收购价格,不知还有谁愿意出高出这个的价格收购Facebook。分析师Steve Rosenbush猜测是维亚康姆(Viacom)。2006年9月,Facebook和Yahoo开始进行关于收购的认真谈判,价格约10亿美元。同年10月,随着Google以16亿美元收购YouTube,有传闻说Google开价23亿美元欲从Yahoo手中抢购Facebook。 rnrnFacebook的董事Peter Thiel暗示,根据2015年10亿美元收入的估计,Facebook内部的估值是80亿美元。这一估值依据对与Facebook用户构成类似的维亚康姆的MTV品牌的估值。 rnrn2007年9月,微软向Facebook示好,欲以3-5亿美元投资该公司5%的股份。(译者:这使得Facebook的估值在60-100亿美元左右)其他公司,如Google也表示过类似兴趣。rnrnrn摘自 http://www.yeeyan.com/articles/view/thunder/2346rnrn 论坛

没有更多推荐了,返回首页