Bytom设计结构解读

一、引文

设计Bytom 数据结构,组合了许多技术点,如 patricia tree,utxo, bvm, account model,protobuf,sql,memcache 等。本文会对一些技术点做以下两点分析。

  1. Bytom 为什么要采用该技术点?
  2. Bytom 如何应用该技术点?

最后介绍综合这些技术点如何实现Bytom。

[patricial tree](http://www.allisons.org/ll/AlgDS/Tree/PATRICIA/)

二、为什么要采用PAT树?

•PAT树具有[基数树](https://en.wikipedia.org/wiki/Radix_tree) 的特点,内容可快速追踪。

radix_tree

•PAT树具有[merkle树](https://en.wikipedia.org/wiki/Merkle_tree) 的特点,数据可快速证明。

merkle_tree

在分布式系统中,一致性和有效性是十分关键的点。bytom采用PAT树,其中的数据可快速证明,可以快速证明每一份状态机是否一致。内容可快速追踪,可以使bytom在每一个快照状态下,快速查找其数据,并检验数据的有效性。

Bytom 如何用PAT树?

Ethereum的PAT树是16叉基数树,分两层,第一层管理的是所有的账户,第二层管理是各账户的存储内容。

ethereum_pat

Bytom 的PAT树与Ethereum 不同?

  1. Bytom 的PAT树是二叉基数树。
  2. Bytom的PAT树是用来管理未花费的outputs。

三、UTXO

为什么要使用UTXO?

UTXO诞生于比特币,和现实世界的RMB一样,从央行诞生的那一刻起,他流转无数人的账户,但他的价值面额始终和原来一样,这样以币为中心,而不是以人为中心,资产便于监管和统计。Bytom 就是用于资产的发布和管理的,所以,UTXO的这种以资产为中心的设计模式,是很适合Bytom上面的资产管理。

怎么使用UTXO?

相比比特币的UTXO, bytom的UTXO多了三个字段

  1. assertid, 因为bytom是一个多资产发布与管理的平台,所以使用该字段来唯一确定各种资产。
  2. accountid, 这是便于各账户对utxo的索引和管理,bytom 相比bitcoin,引入了账户模型,后面会介绍。
  3. program, 拥有该utxo的账户可以用Ivy语言编写自己想要的程序放在该字段,以便在交易时,图灵完备的BVM会执行该程序。

四、BVM


BVM是在状态机的转化过程被启动运行,也就是excute(transaction)这一步骤。

为什么需要使用BVM?

bitcoin 中的非图灵完备栈式脚本语言,所表达的功能极少,很难实现一些稍微复杂的功能,如verify_spv(跨链锚定验证的功能,如btc_relay),再如简单的去实现multi_lock(M人加密,只要收集N人私钥就能解密,0 < N < M)功能。
ethereum中的evm能简单的用solidity语言编写程序实现这些功能,但EVM过于复杂,它号称超级世界计算机,对于bytom这种只对资产有兴趣的区块链是没必要的。因此bytom不如基于[Chain](https://chain.com/) 公司的能用[Ivy](https://chain.com/docs/1.2/ivy-playground/docs) 高级语言编程的CVM去做自己的扩展,灵活易用。

如何使用BVM?

bytom_bvm

用户在发送每一笔交易时,可以自己编写自己所需要的程序,等到交易打包进块时,BVM会去执行该代码,由于BVM是图灵完备的虚拟机,所以需要加入feed计价机制(feed 等同于ethereum的gas * gasprice)来解决停机问题。

五、账户模型

为什么要采用账户模型?

账户模型易于管理相关数据,是以人为中心,十分的直观。对于BVM来说,基于账户代码去执行也十分便捷。再者我们引入了资产模型,类似于账户模型,这样易于资产的监管和查询。

bytom怎么去实现账户模型?

bytom 中的账户模型也分两类,但不同于ethereum中的个人帐户和合约账户, 它是指资产账户和个人账户。
资产账户:

bytom_asset
  1. assetid 是全局唯一的资产识别id。
  2. alias 是资产的别名,可便于记忆,如(gold, silver) 。
  3. vmversion 是为了软分叉时,做到动态过度。
  4. program 是指发布该资产时需要执行的程序。
  5. initialblockhash 是指该资产是在哪个块高度被登记。
  6. signer 管理公私钥对,以便用该资产的私钥签名,只有拥有该资产私钥的人才能发布该资产。
  7. definition 对该资产的解释说明等。

个人账户:

  1. accountid 全局唯一可识别账户id。
  2. alais 帐户名。
  3. signer, 私钥对,用于发送交易。
  4. *utxos 该账户所有的未花费交易的索引,便于快速管理该账户下资产。
  5. program, 该账户发送交易时可插入需要的程序。

综述

bytom_asset_account

UTXO的物理结构,用memcache 存着。UTXO的逻辑结构则是用二叉PAT树来管理。

个人账户 根据AccountId 能够快速的索引其相关的utxo。资产账户根据AssetId能够快速的管理相关的utxo。

bytom_uml

上图是描述bytom主要数据结构的uml图。

Bytom用PAT树来组织utxo作为世界状态树。

账户模型分两种,资产账户和个人账户,账户可以索引管理其相关的utxo。

UTXO 池会采用如memcache的内存数据库,落盘数据库会选择关系型数据库,数据会选择protobuf来序列化。

在账户做交易时,每个账户都可以从世界状态树去查找选择自己的utxo,并编写自己所需的资产程序,将其做为TxInput。

在交易打包进块时,验证节点会去实例化BVM,并执行该交易中所有TxInput中的程序。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容