- Libra区块链论文解析6-交易的执行-part 1
- 来源:格密链
▼
本文由陈智罡博士撰写
整个技术论文分为10部分:
1 Introduction--引言
2 Logical Data Model--逻辑数据模型
3 Executing Transactions--交易的执行
4 Authenticated Data Structures and Storage--可认证的数据结构和存储
5 Byzantine Fault Tolerant Consensus--拜占庭容错共识
6 Networking--网络
7 Libra Core Implementation-- Libra 内核实现
8 Performance--性能
9 Implementing Libra Ecosystem Policies with Move--使用Move实现Libra生态系统规则
10 What's Next for Libra?-- Libra发展规划
我们开始分析第3节。很多人看完我们的分析文章后问:为什么能把这篇论文的本质分析的这么清楚。
这个问题只有一个答案,如果你对区块链的本质很清楚的话,所有后续的方案全是“换汤不换药”。
那么如何搞清区块链技术的本质呢?
我想如果把比特币的白皮书理解的非常透彻的话,你已经理解了区块链的本质。可以参考我们以前公众号的文章:解读比特币白皮书。
说实在的,比特币的技术要比Libra技术有趣得多。比特币是一个公链,完全没有中心,全要靠各方博弈最后形成共识,有很多很有趣的数字,例如:每隔10分钟出一个块,每6个块确认后就认可该交易等等。在Libra中你几乎看不到这样的数字。因为它更像是一个数据库,操作规范而单一。
言归正传,分析第3节。
本节第一话就开宗明义的指出:在Libra协议中,改变区块链状态的唯一方式就是执行交易。千万别忘了Libra是一个支付系统,是基于区块链的支付系统,所有的内容都是围绕着这个主题在转。
本节概括了交易的执行条件,定义了交易的结构,解释了Move虚拟机如何执行一个交易,描述了Move 语言的核心概念。
在Libra 协议的最初版本里,只对用户提供了很小一部分Move语言功能。事实上,Move语言通常用来定义系统的核心概念,例如Libra币。用户是不允许发布模块来声明自己的资源类型。这种设计理念让Move语言在构建Libra 核心系统中逐步成熟,而且也回避了在智能合约中,执行交易与数据存储所带来的扩展性问题的挑战。
可见,在Libra 系统构建中,采用的是逐步求精的原则,尽量简单实用,不断进化。采取的很务实的态度。
至于Move语言的全部功能特性,将在第10节展开描述。如果你着急知道,可以跳到第10节,不过是英文的。
由于最近比较忙,我会坚持更新。写作和跑步对于我来说,都是一种放松和愉悦。
比特币里有创世块的概念,即区块链中第一个块(称为创世块)是如何形成的呢?在Libra 系统中,系统一开始就设置好了创世状态,所有验证者默认即可,非常方便。
在Libra创世状态里,通过“模块”定义了系统的核心对象,例如:账户间的逻辑关系、交易验证、验证者的选择、Libra币等。在Libra创世状态中,必须考虑周全,例如至少有一个账户,能够支付得起第一笔交易产生的费用;必须要有一些验证者,能够对交易的认证进行签名确认。
账本的初始状态是什么?创世状态如何产生呢?注意,初始状态是系统原始状态,而创世状态是系统开始第一笔交易的状态,也就是启动系统的状态。
为了简化设计,系统的初始状态通过“空状态”表示。而创世状态是通过一个特殊的交易T0所创建,并且定义了所需要的模块与资源。注意,这里并没有通过正常的交易过程来建立创世状态,系统直接默认的设置执行特殊交易T0。因此,客户和验证者也被设置为只接受T0开始的账本记录,可以通过密码学的哈希技术标识T0的开始。
值得注意的是像T0 这样的特殊交易,只能通过设置的方式加入账本记录,而不能通过正常的共识算法加入账本记录。
这种方式的好处是处理简单,例如通过设置一个特殊交易来定义分叉的开始。像客户也可以设置一个特殊交易对模块和资源进行改变。这种特殊交易的执行都是在正常交易执行之外进行的,增加了系统对特殊事件的响应处理能力。当然,中心化的色彩就很浓了。不过,凡事都通过共识来完成,效率也太低。
●确定性
交易的执行具有确定性和封闭性。这意味着交易的输出结果完全是可以预计的,仅依赖于交易包含的信息和账本的当前状态。而且交易的执行不受外部的影响。
对于相同的交易序列号,确定性和封闭性使得不同验证者产生相同的验证结果。所以从创世块开始执行交易,一直到当前账本状态,可以重复获得相同的区块链的交易历史记录。
●可度量的
为了管理对计算资源的需求,Libra协议对每一笔交易收取交易费,通过Libra 币支付该费用。该方法遵循了以太坊的Gas理念。
在Libra系统中,选择具有充分计算资源的验证者,以满足Libra系统的正常运行。收取交易费用的唯一目的,是为了当资源需求超过系统所能提供的资源时,降低系统资源的需求量,从而保证系统正常的运行。
系统正常运行时,对于正常的操作只收取较低的费用。这与目前一些区块链的思路不同,有些区块链选取不具有充分计算资源的验证者。当资源需求变高的时候,交易费急剧增加,对于验证者能得到可观的回报,但是对于客户就是成本。
一笔交易的执行是以消耗的Gas成本来表示所消耗的计算资源的多少,该成本是动态的,因每个用户而不同。验证者会优先选择价格更高的交易执行,当系统繁忙时可能会漏掉价格低的交易。
交易中包含一个Gas的最大值,该值说明了在某个具体Gas价格下,发送者愿意支付的最大数量Gas。
在交易执行期间,虚拟机会跟踪Gas使用数量。如果在执行完成前,最大Gas数量用完,则虚拟机立刻终止。该交易不会对当前账本状态有任何影响,但是交易任然会出现在交易历史中,并且会对发送者收取交易费。
在这节我们看到,区块链中的核心逻辑的许多部分都是使用Move进行定义的,包括Gas费的扣除。为了避免循环扣除费用,虚拟机禁止在核心组件执行期间对扣Gas费。这些核心组件都是在创世状态下定义的,而且具有写保护以防止恶意交易触发的高额交易费用的代码执行。执行核心组件的费用将包含在后面对交易的收费中,是一项基础费用。
●资产语义
账本状态直接通过现实世界的数值对数字资产进行编码。交易执行中必须保证Libra币不能够被复制、丢失以及非授权转移。Libra协议只用Move虚拟机来实现交易和客户资产具有这些安全属性。
一个交易是通过数字签名认证的信息,其内容如下:
发送者的地址:就是交易发送者的账户地址。虚拟机通过存储在发送者地址下的LibraAccount.T资源,来读取序列号、认证公钥、余额等内容。
发送者的公钥:该公钥对应于该交易数字签名所使用的私钥。公钥的哈希值与存储在LibraAccount.T资源中的认证公钥相匹配。
程序:包括用于执行交易脚本的Move字节编码,脚本所需的输入参数列表,所需发布的Move字节编码模块列表。
Gas价格:执行交易是需要掏钱的,和我们用的银行转账不一样。为了执行交易,发送者需要给出愿意支付每一Gas单元的Libra币数量。
Gas数量的最大值:执行交易允许被消耗的最大Gas数量值。
序列号:是一个无符号型整数,与在发送者在LibraAccount.T resource下的序列号相同。交易执行完后,序列号加1。由于每个交易有唯一一个序列号,所以不能重复交易。
▼
欢迎收听“区块链杂谈”节目,国内最有质量的区块链知识分享节目。
◆ ◆ ◆ ◆ ◆
格密链
专注于区块链上的密码学技术
长按扫码可关注
区块
-
- 6张拓扑图揭秘中心化交易所的5种行为, 原来中心化比你想象的重要!
- 来源 Hackernoon 编译 火火酱 Carol 出品 | 区块链大本营(blockchain_camp) 中心化交易所可以说是加密资产市场中最难分析的部分之一。虽然加密领域中很多参与者的
- 区块链大本营
-
- Vitalik 亲诉以太坊生态最新进展:过去成绩斐然,未来尤为可期!
- 点击上方“Unitimes” 可以订阅哦! unitimes.io 全球视角,独到见解 来源 | 火星财经 本文旨在传递更多市场信息,不构成任何投资建议。 9月18日,由万向区块链实验室主办的
- Unitimes
-
- 央行推数字货币,比特币要完?
- “可以说,央行数字货币已经呼之欲出。” 8月 10 日,在“第三届中国金融四十人伊春论坛”中,中国人民银行支付结算司副司长穆长春作出上述重磅预告。 尽管央行明面上对加密货币持强硬立场(戳这里复习令币圈
- Yesbit区块链投资
-
- 烦立停第43期:分手!狗庄虐我千百遍,我待狗庄如初恋!
- 2019年已经过了一大半,又到了贴秋膘的季节,刚过完中秋假期的我,去重庆转了一圈,回深圳胖了三圈。 如果,哪天生活出卖了我,那我希望是按斤算的。 扯扯扯扯远了......最近一直在思考一个问题,怎
- 陀螺财经
-
- KuCoin没有资本寒冬,IDG、经纬等顶级创投敏锐的视角“捕获”了什么?
- 自加密市场寒冬以来,资本对加密领域保持着前所未有的克制,加密项目们亦纷纷“勒紧”裤腰带。唯独有一个赛道里的项目始终“热火朝天”,仿佛熊市从未来过,不断有顶级创投资本蜂拥布局。这就是之前白话文章《比特币
- 白话区块链
-
- 比特币交易:从投资组合中分离情绪的7个小窍门
- 人类天生就有情感——我们爱,我们恨,我们感到恐惧,我们经历贪婪,我们质疑我们的决定。所有这些情绪都是成功交易者的敌人。 菜鸟区块链 文 | 菜鸟区块链 “交易成功的关键是情感纪律。如果智力是关键,将
- 菜鸟区块链
-
- 比原项目周报(2019.09.20更新)
- 点击蓝字关注 比原链公众号 技术开发进展 Bystack: 1. 解决OSS服务上传文件名相同会覆盖的问题; 2. 提供用户基础信息API:/api/account/user; 3. 定义版
- 比原链Bytom
-
- Vitalik最新演讲: 以太坊2.0呼之欲出!
- 关注我们 后台接收最新白皮书及研究报告 关注 “以太坊2.0的规范已经写好,只要再等待几个月的时间,以太坊2.0就可以推出了。” 本文旨在传递更多市场信息,不构成任何投资建议。 9月18日,由
- 区委会
-
- 9-20|媒体:“ICC钱包”疑似跑路,钱包资产大量转移”
- 蜜蜂查mifengcha.com行情 数据采集于9-20 8:00 1)BTC现价:$10280.92,24小时涨跌 1.03%,交易量$151.94亿 2)ETH现价:$221.34,24小时涨跌
- 币圈情报社
-
- 你的压力有多大?赶紧来测测!
- 当今社会,竞争激烈。不管是学习还是工作。压力无时无刻不环绕在大家周围。 咱们做一个简单的测试,看看你压力有多大? 下列20道题,如果感到“经常是”,得2分;“是”,得1分;“完全没有”,得零分。 记住
- 全球区块链早讯
-
- 说说最近的BNB行情和主流币的“文艺复兴”
- 同志们好,这里是狗哥的第387篇日记。 昨天到了苏州, 第一天在老城区晃悠,很有年代感,可能类似武汉的老汉口,重庆的渝中区。 顺便逛了一下苏州博物馆, 苏州博物馆最值得看的是博物馆建筑本身,
- 狗哥币圈实盘日记
-
- 9-19|朝鲜正在开发加密货币,规避美国主导的金融体系
- 蜜蜂查mifengcha.com行情 数据采集于9-19 8:00 1)BTC现价:$10173.51,24小时涨跌 -0.22%,交易量$108.93亿 2)ETH现价:$210.67,24小时涨
- 币圈情报社
-
- 以太坊创始人V神:以太坊2.0呼之欲出 看好零知识证明(全文)
- 来源 | 互链脉搏 一件圆领T恤、一条窄瘦黑裤、一双隐露的花袜,一个清瘦的“大男孩”,在9月18日下午,悄悄进入2019第五届区块链全球峰会会场,入座嘉宾席。这个大男孩就是以太坊创始人Vitalik
- 陀螺财经
-
- 全球区块链早讯(9.19)
- 每日行情快讯:币世界早行情:BTC在10200美元附近震荡整理 BTC凌晨围绕10200美元宽幅震荡,目前仍在10200美元附近盘整,主流币凌晨走势跌多涨少。BTC在币安现报10175.95美元,24
- 全球区块链早讯
-
- 解析比原链MOV:下一代去中心跨链Layer2价值交换协议
- 点击蓝字关注 比原链公众号 1、什么是MOV协议? MOV 是基于 Bystack 主侧链架构的下一代去中心跨链 Layer 2 价值交换协议,由价值交换引擎磁力合约(Magnet)、去中心
- 比原链Bytom
朋友会在“发现-看一看”看到你“在看”的内容