以太坊
作者:毫末科技
邮箱:hxg@haomo-studio.com
微信二维码:
1 系统概述
1.1 什么是以太坊
以太坊(英语:Ethereum)是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币(Ether,又称“以太币”)提供去中心化的虚拟机(称为“以太虚拟机”Ethereum Virtual Machine)来处理点对点合约。 以太坊的概念首次在2013至2014年间由程序员Vitalik Buterin,受比特币启发后提出,大意为“下一代加密货币与去中心化应用平台”,在2014年通过ICO众筹得以开始发展。 截至2018年2月,以太币是市值第二高的加密货币,仅次于比特币。
1.2 发展历史
1.3 发展现状
1.4 未来趋势
2 系统目标及意义
3 系统组成
以太坊采用:KECCAK-256 哈希算法 以太坊的全局状态就是由账户地址和账户状态的一个映射组成。这个映射被保存在一个叫做Merkle Patricia树的数据结构中。Merkle Tree(也被叫做Merkle trie)是一种由一系列节点组成的二叉树
以太坊系统主要组成部分:
- 账户(accounts)
- 状态(state)
- 损耗和费用(gas and fees):
- 交易(transactions)
- 区块(blocks)
- 交易执行(transaction execution)
- 挖矿(mining)
- 工作量证明(proof of work)
账户状态有四个组成部分:
- nonce:如果账户是一个外部拥有账户,nonce代表从此账户地址发送的交易序号。如果账户是一个合约账户,nonce代表此账户创建的合约序号
- balance: 此地址拥有Wei的数量。1Ether=10^18Wei
- storageRoot: Merkle Patricia树的根节点Hash值(我们后面在解释Merkle树)。Merkle树会将此账户存储内容的Hash值进行编码,默认是空值
- codeHash:此账户EVM(以太坊虚拟机,后面细说)代码的hash值。对于合约账户,就是被Hash的代码并作为codeHash保存。对于外部拥有账户,codeHash域是一个空字符串的Hash值
两种节点类型:
- 全节点:一个全节点包含了整个链。如矿工节点,挖矿需要整个链。
- 轻节点:仅仅下载链的头,从创世纪块到当前块的头,不执行任何的交易或检索任何相关联的状态。依然可以很容易生成和接收关于交易、事件、余额等可验证的答案。
单位换算:
1Ether = 10^18Wei
1gwei = 1,000,000,000 Wei
假设发送者设置gas limit为50,000,gas price为20gwei。这就表示发送者愿意最多支付50,000*20gwei= 1,000,000,000,000,000 Wei = 0.001 Ether来执行此交易。
以太坊交易: