Ethereum 分为三部分:
区块链技术相关表包含了常见的区块链术语(概念)及其解释,及进一步阅读参考文章,以加深理解。 方便大家阅读博客或网络上其他文章时做快速索引,比特币相关术语参考比特币篇
以太坊
一个基于区块链的去中心化应用平台。阅读以太坊开发入门指南了解更多
以太币(Ether)
以太币是以太坊中货币的名称。以太币是用来支付交易和以太坊交易的计算费用。 ether也认为是以太币的单位,另一个常用的单位是wei。 1ether=1e18wei (1,000,000,000,000,000,000wei)
智能合约
一套以数字形式定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议。
以太坊虚拟机 EVM
是以太坊中智能合约的运行环境。
Solidity
是以太坊中用于开发智能合约的编程语言,目前开发智能合约用的最多的是Solidity。开发智能合约入门可参考智能合约开发环境搭建及Hello World合约。
Serpent
一门智能合约的编程语言,语法类似Python,不再建议使用,建议转换到Viper。
Viper
一门智能合约的编程语言,Vitalik最推崇的语言。取代Solidity的地位也是有可能的。 官方文档
Transaction 交易
包含一系列价值的转移,从一个地址转到另一个。
消息
合约能够向其他合约发送“消息”。消息是虚拟的,不能序列化,存在于以太坊执行环境中。可以被理解为函数调用。
以太坊客户端
也称钱包,提供账户管理、挖矿、转账、智能合约的部署和执行等等功能,以太坊节点利用以太坊客户端接入到以太坊网络。 现在以太坊客户端主要有:Wallent/Mist , Geth, Parity, Harmony,pyethapp等
Geth
开发中使用最广泛的客户端,使用Go语言实现。 了解geth命令用法
Parity
另一个较为常用的客户端,用Rust实现。
web3.js
web3.js是一个实现与以太坊节点JSON-RPC通信的JavaScript库。类似还有Java库web3j。 geth提供的JavaScript控制台中,就包含的web3.js库事例web3。
Gas
以太坊上用Gas机制来计费,Gas也可以认为是一个工作量单位,智能合约越复杂(计算步骤的数量和类型,占用的内存等),用来完成运行就需要越多Gas。
etherbase
在你的节点上的主账户默认名字,如果你在挖矿,那么挖矿的回报会被放到这个账户中。
coinbase
Coinbase是一个和etherbase类似的概念,但是对于众多的加密货币平台而言coinbase是一个更通用的术语。
balance(余额)
账户余额
GHOST协议
Greedy Heaviest Observed Subtree, GHOST协议就是让我们必须选择一个在其上完成计算最多的路径。一个方法确定路径就是使用最近一个区块(叶子区块)的区块号,区块号代表着当前路径上总的区块数(不包含创世纪区块)。区块号越大,路径就会越长,就说明越多的挖矿算力被消耗在此路径上以达到叶子区块。使用这种推理就可以允许我们赞同当前状态的权威版本。
梅克尔帕特里夏树(MPT:Merkle Patricia Tree)
一种数据结构,它会存储每个账户的状态(存储键值对关系)。这个树的建立是通过从每个节点开始,然后将节点分成多达16个组,然后散列每个组,然后对散列结果继续散列,直到整个树有一个最后的“根散列”。
Frontier(前沿)
以太坊(路线图)的第一阶段,在2015年7月30日发布。
Homestead(家园)
以太坊(路线图)的第二阶段,在2016年3月14日发布。
Metropolis(大都会)
以太坊(路线图)的第三阶段,引入四大特性:zk-Snarks(基于"零知识证明"),PoS(Proof of Stake,即权益证明)早期实施,智能合约跟灵活和稳定, 抽象账户。 大都会又拆分为两个阶段实施(两个硬分叉):拜占庭(Byzantium)及君士坦丁堡(Constantinople)
拜占庭
拜占庭硬分叉在第437万个区块高度发生,时间是2017年10月16日,引入了zk-Snarks 及 抽象账户等。
君士坦丁堡
预计在2018年实施, 主要的特性就是平滑处理掉所有由于"拜占庭"所引发的问题,并引入 PoW 和 PoS 的混合链模式。
Serenity(宁静)
以太坊(路线图)的第四阶段,
零知识证明
指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。 "零知识证明"实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。
PoS
一种共识协议:作为验证节点,首先你必须拥有一定数量的以太币,根据以太币的数量和时间会产生用于下注验证区块的权益。只有拥有权益的节点才能有效验证区块,当你验证的区块被打包进链,你将获得和你权益成正比的区块奖励。如果你验证恶意或错误的区块,那么你所下注的权益将被扣除。
Casper 的共识算法
以太坊中PoS协议的实现, 刚开始每100个区块将有一个采用PoS协议挖出
抽象账户
在的以太坊有两类账户:即外部账户和合约账户,以太坊正在试图模糊二者的界限,即你可以同时拥有合约账户和外部账户,这种做法本质上就是让用户按照合约账户的格式来定义外部账户。
难度炸弹
为了确保以太坊的矿工能加入到新链条中来,开发团队引入了"难度炸弹"机制。它会使难度系数呈指数增加以至于让挖矿变得几乎不可能的。
以太坊硬分叉
硬分叉是对以太坊底层协议的改变,创建新的规则,提高整个系统。协议改变在某个特定区块上被激活。所有的以太坊客户端都需要升级,否则将停留在遵循旧规则的老链上。
ERC-20
代币合约标准,一系列通过以太坊智能合约发布的代币制定了代币发放的通用规则。该标准是目前通过ICO发行代币的基础准则。 该标准能够确保基于以太坊的代币在整个生态系统中以一种可预测的方式进行,使去中心化应用程序和智能合约可以在整个平台上彼此协作,所有代币都遵循一个固定的安全标准。
EIPs
Ethereum Improvement Proposals - 以太坊改进协议
Ommer
是一个区块的父区块与当前区块父区块的父区块是相同的。 由于以太坊区块生产时间(大概15秒左右)比比特币(大概10分钟左右)要快很多。更短的区块生产时间的一个缺点就是:更多的竞争区块会被矿工发现。 这些竞争区块同样也被称为“孤区块”(也就是被挖出来但是不会被添加到主链上的区块) Ommers的目的就是为了帮助奖励矿工纳入这些孤区块,Ommer区块会收到比全区块少一点的奖励。
预言机
通过向智能合约提供数据,它现实世界和区块链之间的桥梁。
公有链
是任何节点都是向任何人开放的,每个人都可以参与到这个区块链中参与计算,而且任何人都可以下载获得完整区块链数据(全部账本)。
联盟链
是指参与每个节点的权限都完全对等,大家在不需要完全互信的情况下就可以实现数据的可信交换,联盟链的各个节点通常有与之对应的实体机构组织,通过授权后才能加入与退出网络。通常是公司与公司、组织与组织之间达成的联盟模式。
私有链
有些区块链的应用场景下,并不希望这个系统任何人都可以参与,不对外公开。 适用于特定机构的内部数据管理与审计或开发测试等。
测试网络
以太坊用来测试功能的网络,比如拜占庭分叉之前先在测试网络(Ropsten)上运行一段时间,稳定后再发布到公有链(正式网络)。 以太坊测试网络有:
- Olympic测试网络 - 早期的一个(预发布版本)测试网络,已不再使用
- Morden测试网络 - 以太坊第一个测试网络,已不再使用
- Ropsten测试网络 - 使用Pow,和当前的公有链环境一致,2016/11发布。
- Kovan测试网络 - 仅parity钱包支持,使用PoA共识
- Rinkeby测试网络 - 仅geth钱包支持,使用PoA共识 不同网络的特点可进一步查看这个问答
DAO(decentralized autonomous organization)去中心自治组织
DAO是建立在区块链之上的合约(或一系列合约),旨在制定规则、强制执行或使组织工作自动化,包括治理、筹资、运营、支出和扩张。