请选择 进入手机版 | 继续访问电脑版
火币网
区块链游戏
以太坊游戏
HebiEx交易所
比特币挖矿
比特币交易所
比特币虎符
OKEX交易所
比特币龙网
币安

区块链技术(六):以太坊核心概念(二)

所在版块: 区块链 2018-01-04 11:23 [复制链接] 查看: 17745|回复: 44
esMgg5rO0rQ5C56r.jpg


nSsyBs7lsb8Sc2LY.jpg


上一篇文章介绍了以太坊5个核心概念:以太坊虚拟机(EVM)、账户(Accounts)、交易(Transactions)、Gas、存储,主存和栈(Storage, Memory and the Stack)。这篇文章将谈谈其他几个核心概念。
指令集
Instruction Set
EVM的指令集被刻意保持在最小规模,以尽可能避免可能导致共识问题的错误实现。所有的指令都是针对256比特这个基本的数据类型的操作。具备常用的算术,位,逻辑和比较操作。也可以做到条件和无条件跳转。此外,合约可以访问当前区块的相关属性,比如它的编号和时间戳。
消息调用
Message Calls
合约可以通过消息调用的方式来调用其它合约或者发送以太币到非合约账户。消息调用和交易非常类似,它们都有一个源,一个目标,数据负载,以太币,gas和返回数据。事实上每个交易都可以被认为是一个顶层消息调用,这个消息调用会依次产生更多的消息调用。
一个合约可以决定剩余gas的分配。比如内部消息调用时使用多少gas,或者期望保留多少gas。如果在内部消息调用时发生了out-of-gas异常(或者其他异常),合约将会得到通知,一个错误码被压在栈上。这种情况只是内部消息调用的gas耗尽。在solidity中,这种情况下发起调用的合约默认会触发一个人工异常。这个异常会打印出调用栈。
就像之前说过的,被调用的合约(发起调用的合约也一样)会拥有崭新的主存并能够访问调用的负载。调用负载被存储在一个单独的被称为calldata的区域。调用执行结束后,返回数据将被存放在调用方预先分配好的一块内存中。
调用层数被限制为1024,因此对于更加复杂的操作,我们应该使用循环而不是递归。
代码调用和库
Delegatecall / Callcode and Libraries
存在一种特殊类型的消息调用,被称为callcode。它跟消息调用几乎完全一样,只是加载自目标地址的代码将在发起调用的合约上下文中运行。
这意味着一个合约可以在运行时从另外一个地址动态加载代码。存储,当前地址和余额都指向发起调用的合约,只有代码是从被调用地址获取的。
这使得Solidity可以实现”库“。可复用的库代码可以应用在一个合约的存储上,可以用来实现复杂的数据结构。
日志
Logs
在区块层面,可以用一种特殊的可索引的数据结构来存储数据。这个特性被称为日志,Solidity用它来实现事件。合约创建之后就无法访问日志数据,但是这些数据可以从区块链外高效的访问。因为部分日志数据被存储在布隆过滤器(Bloom filter) 中,我们可以高效并且安全的搜索日志,所以那些没有下载整个区块链的网络节点(轻客户端)也可以找到这些日志。
创建
Create
合约甚至可以通过一个特殊的指令来创建其他合约(不是简单的向零地址发起调用)。创建合约的调用跟普通的消息调用的区别在于,负载数据执行的结果被当作代码,调用者/创建者在栈上得到新合约的地址。
自毁
Selfdestruct
只有在某个地址上的合约执行自毁操作时,合约代码才会从区块链上移除。合约地址上剩余的以太币会发送给指定的目标,然后其存储和代码被移除。 注意,即使一个合约的代码不包含自毁指令,依然可以通过代码调用(callcode)来执行这个操作。
好了,通过前面的2篇文章,我们了解了以太坊的核心概念,接下来就可以通过编程来深入理解这些概念了。
下期预告
TOCr27OkqccI5oSj.jpg


FinTech热搜榜
动画连载
最新活动
一个彩蛋
H623jAZsog6wgASJ.jpg
回复

使用道具 举报

195159234

发表于 2018-1-5 02:48:27 | 显示全部楼层
赞!!!!
回复

使用道具 举报

cjm27

发表于 2018-1-7 17:42:49 | 显示全部楼层
确实是干货,但是好理解
回复

使用道具 举报

kevin5599

发表于 2018-1-8 14:33:35 | 显示全部楼层
确实是干货,但是好理解
回复

使用道具 举报

桃花下酒

发表于 2018-1-9 16:24:15 | 显示全部楼层
这还不是一样需要账号和密码 平台不就是中心了吗?
回复

使用道具 举报

沉醉的童年

发表于 2018-1-10 10:36:27 | 显示全部楼层
干货,小编辛苦了今晚加个鸡腿
回复

使用道具 举报

jixie2008

发表于 2018-1-11 04:25:59 | 显示全部楼层
去中心化,点对点,不可篡改,区块链的特性
回复

使用道具 举报

小楼__夜听春雨

发表于 2018-1-12 01:40:51 | 显示全部楼层
去中心化,点对点,不可篡改,区块链的特性
回复

使用道具 举报

曾勇辉aa

发表于 2018-1-12 13:20:47 | 显示全部楼层
区块链以后游戏开不了挂了,没有服务器可以骗了
回复

使用道具 举报

香草精灵

发表于 2018-1-12 15:06:32 | 显示全部楼层
比特币只是区块链应用的一种!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

    0
    威望
    16
    金币
    0
    活跃
注册用户加小楼微信,入VIP群

QQ|滇ICP备15005918号-2|Archiver|小黑屋|手机版|比特币 ( 滇ICP备15005918号-2|关于我们

GMT+8, 2019-9-23 11:25 , Processed in 0.875000 second(s), 106 queries .

Powered by Discuz! X3.2

© 2001-2020 Comsenz Inc.

快速回复 返回列表