主页 > imtoken安装下载地址 > 第2章详细解释以太坊
第2章详细解释以太坊
以太坊原理
通过建立最终的抽象基础层——内置图灵完备编程语言的区块链——以太坊使任何人都可以创建合约和去中心化应用程序,并设置他们自由定义的所有权规则、交易方式和状态转换函数。
图灵完备性:它可以运行非常复杂的计算。 最简单的理解就是支持循环运算,而比特币的验证不支持循环运算。
以太坊虚拟机 (EVM) 是以太坊中智能合约的运行时环境。 它不仅是沙盒化的,而且实际上是完全隔离的,这意味着在 EVM 内运行的代码无法接触网络、文件系统或其他进程。 即使是智能合约,与其他智能合约的联系也很有限。
比较比特币
图片
外部账户:由私钥控制
合约账户:一旦创建,只能通过合约中的代码控制,无法手动控制,但可以手动触发
有向无环图 DAG(Directed Acyclic Graph)
图片
因为以太坊每12s出一个块,所以上图的情况可能会在12s内出现。 实际上,这两个高度为2的区块后面可能还有很多其他区块,我们选择最长的一个作为主链。 如果是比特币的话,没有被用作主链的区块是不会得到任何奖励的,如下图
图片
以以太坊为例,对于没有进入主链的区块,会给予适当的奖励,如下图所示
图片
状态转换
图片
以太坊区块链
图片
临时叉子
图片
图片
块头
图片
ommerHash:包含叔块的哈希
beneficiary:挖矿后奖励的存放地址
logsBloom:日志过滤器
number: 交易数量
gasLimit:运行以太坊的气体限制
gasUsed:运行以太坊的成本
mixHash:结合nonce进行挖矿操作
stateRoot:所有账户信息都会生成一棵Merkle patricia树,并将树根存放在里面
transactionsRoot:所有交易组成一棵Merkle patricia树,树根集中存储
receiptsRoot:为每笔交易制作收据目前比特币出块奖励是多少,并将收据收集起来形成Merkle patricia树
以太坊账户
包含四个部分:
账户信息称为world state,在db上进行管理
外部账户:用户通过公钥和私钥进行控制
合约账户:由合约编译的代码控制
tips: 外部账户和内部账户在同一个地址空间,相同的数据结构有不同的功能
重放攻击
图片
气体 什么是气体?
以太坊网络上交易产生的每一次计算都会产生费用。 这笔费用由所谓的“gas”支付。 Gas用于衡量特定计算中所需的成本单位。 最智能的合约原子操作的成本单位。
例如:一个置换操作需要1个gas,一个加法操作需要3个gas;
汽油价格
1 gas 和 ether 的交换价格 (wei)
交易的所有费用
total_fee= value(转入对方账户的以太币数量)
气体限制
允许的最大成本:以太坊中存在循环操作和其他一些复杂的操作目前比特币出块奖励是多少,限制了最大成本。
图片
贸易
图片
图片
图片
智能合约(Smart contract) 智能合约定义
“智能合约”——一种根据预先任意建立的规则自动转移数字资产的系统。
智能合约是存在于区块链上的代码片段
并按照他们被告知的方式执行命令。
智能合约是存储在区块链上以执行特定功能的代码。
例子:
if HAS_EVENT_X_HAPPENED() is true:
send(party_A,10000)
else:
send(party_B,10000)
运行在安全环境中,可以直接控制数字资产的计算机程序。
安全环境:
法律契约:“我保证如果发生X,给你10000元”。
智能合约:“我给一个电脑程序发10000元,如果X发生了,程序会发给你10000元,否则会退还给我”。
温馨提示:合法合同可能存在舞弊行为
运行在安全环境中,可以直接控制数字资产的计算机程序。
为什么使用智能合约:
智能合约与法律合约
法律合约智能合约
适用于主观性较好的请求(如需要人为判断)
适合客观性好(可以用数学来衡量价值)
高成本
低成本
执行后
预防
取决于惩罚
依赖抵押品或保证金
仅限于特定地理区域
全球的