区块链技术(五):以太坊核心概念(一)

2018 年 1 月 2 日 FinTech前哨 点我▷



以太坊虚拟机(EVM)



以太坊虚拟机(EVM)是以太坊中智能合约的运行环境。它不仅被沙箱封装起来,事实上它被完全隔离,也就是说运行在EVM内部的代码不能接触到网络、文件系统或者其它进程。甚至智能合约之间也只有有限的调用。


账户(Accounts)



以太坊中有两类账户,它们共用同一个地址空间。外部账户,该类账户被公钥-私钥对控制。合约账户,该类账户被存储在账户中的代码控制。 外部账户的地址是由公钥决定的,合约账户的地址是在创建合约时确定的(这个地址由合约创建者的地址和该地址发出过的交易数量计算得到,地址发出过的交易数量也被称作”nonce”)


两类账户唯一的区别是:合约账户存储了代码,外部账户则没有。


每个账户有一个key-value形式的持久化存储。key,value的长度都是256bit。


另外,每个账户都有一个以太币余额(单位是“Wei”),该账户余额可以通过向它发送带有以太币的交易来改变。


交易(Transactions)



一笔交易是一条消息,从一个账户发送到另一个账户。交易可以包含二进制数据(payload)和以太币。


如果目标账户包含代码,该代码和输入数据会被执行。


如果目标账户是零账户(账户地址是0),交易将创建一个新合约。正如上文所讲,这个合约地址不是零地址,而是由合约创建者的地址和该地址发出过的交易数量计算得到。创建合约交易的payload被当作EVM字节码执行。执行的输出做为合约代码被永久存储。这意味着,为了创建一个合约,你不需要向合约发送真正的合约代码,而是发送能够返回真正代码的代码。


Gas



以太坊上的每笔交易都会被收取一定数量的gas,gas的目的是限制执行交易所需的工作量,同时为执行支付费用。当EVM执行交易时,gas将按照特定规则被逐渐消耗。


gas price(gas价格,以太币计)是由交易创建者设置的,发送账户需要预付的交易费用 = gas price * gas amount。 如果执行结束还有gas剩余,这些gas将被返还给发送账户。


无论执行到什么位置,一旦gas被耗尽(比如降为负值),将会触发一个out-of-gas异常。当前调用帧所做的所有状态修改都将被回滚。


存储,主存和栈(Storage, Memory and the Stack)


每个账户有一块持久化内存区域被称为存储。其形式为key-value,key和value的长度均为256比特。在合约里,不能遍历账户的存储。相对于另外两种,存储的读操作相对来说开销较大,修改存储更甚。一个合约只能对它自己的存储进行读写。


第二个内存区被称为主存。合约执行每次消息调用时,都有一块新的,被清除过的主存。主存可以以字节粒度寻址,但是读写粒度为32字节(256比特)。操作主存的开销随着其增长而变大(平方级别)。


EVM不是基于寄存器,而是基于栈的虚拟机。因此所有的计算都在一个被称为栈的区域执行。栈最大有1024个元素,每个元素256比特。对栈的访问只限于其顶端,方式为:允许拷贝最顶端的16个元素中的一个到栈顶,或者是交换栈顶元素和下面16个元素中的一个。所有其他操作都只能取最顶的两个(或一个,或更多,取决于具体的操作)元素,并把结果压在栈顶。当然可以把栈上的元素放到存储或者主存中。但是无法只访问栈上指定深度的那个元素,在那之前必须要把指定深度之上的所有元素都从栈中移除才行。


下一篇文章将继续介绍以太坊核心概念。


下期预告

长按二维码关注公众号



明天将发布区块链技术(六)


以太坊核心概念(二)


FinTech热搜榜

编程能力PK麦肯锡预测2030年 银行大数据进展 

马云建“达摩院”互怼比特币涨18倍谷歌重返中国

 “抢女人”区块链撸猫金融圈“佛系”

 IT 界裁员任泽平分析2018无人经济香港保险


动画连载

区块链以太坊和智能合约区块链的六层模型

DAO公有链和私有链比特币挖矿和区块链共识机制


最新活动

程序员吹牛会

(第九期:1月10日;电话:180-2540-3416)

硅谷行

(电话:133-6006-5009)


一个彩蛋

公众号后台回复 “吹牛会彩蛋

 免费获取 程序员吹牛会(第七期)

嘉宾 刘爱华 分享会视频

登录查看更多
0

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
【硬核书】不完全信息决策理论,467页pdf
专知会员服务
337+阅读 · 2020年6月24日
专知会员服务
28+阅读 · 2020年5月20日
【北京大学】面向5G的命名数据网络物联网研究综述
专知会员服务
35+阅读 · 2020年4月26日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
资源|Blockchain区块链中文资源阅读列表
专知会员服务
43+阅读 · 2019年11月20日
【白皮书】“物联网+区块链”应用与发展白皮书-2019
专知会员服务
91+阅读 · 2019年11月13日
区块链隐私保护研究综述——祝烈煌详解
计算机研究与发展
22+阅读 · 2018年11月28日
终于有人把云计算、大数据和人工智能讲明白了
Python开发者
3+阅读 · 2018年6月13日
终于有人把云计算、大数据和人工智能讲明白了!
大数据技术
7+阅读 · 2018年4月2日
【区块链】区块链是什么?20问:读懂区块链
产业智能官
8+阅读 · 2018年1月10日
【动画连载】3分钟了解什么是区块链(中文动画)
一个人的企业安全建设之路
FreeBuf
5+阅读 · 2017年7月7日
Conceptualize and Infer User Needs in E-commerce
Arxiv
3+阅读 · 2019年10月8日
Learning Recommender Systems from Multi-Behavior Data
Arxiv
3+阅读 · 2018年9月12日
Arxiv
5+阅读 · 2017年11月13日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
98+阅读 · 2020年7月1日
【硬核书】不完全信息决策理论,467页pdf
专知会员服务
337+阅读 · 2020年6月24日
专知会员服务
28+阅读 · 2020年5月20日
【北京大学】面向5G的命名数据网络物联网研究综述
专知会员服务
35+阅读 · 2020年4月26日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
资源|Blockchain区块链中文资源阅读列表
专知会员服务
43+阅读 · 2019年11月20日
【白皮书】“物联网+区块链”应用与发展白皮书-2019
专知会员服务
91+阅读 · 2019年11月13日
Top
微信扫码咨询专知VIP会员