以太坊官网
以太坊(Ethereum)简介
以太坊(Ethereum)是一个去中心化、开源并且具备智能合约功能的公共区块链平台,以太币(ETH)是以太坊的原生加密货币————摘自wikipedia 以太坊
以太坊的特点
相较于较大多数其他加密货币或区块链技术,以太坊的特点包括以下几点:
- 智能合约:存储在区块链上的程序,由各节点执行,需要执行程序的人支付手续费给节点的矿工或权益人。
- 分布式应用程序:以太坊上的分布式应用程序不会停机,也不能被关掉。
- 代币(tokens):智能合约可以创造代币供分布式应用程序使用。分布式应用程序的代币化让用户、投资者以及管理者的利益一致。代币也可以用来进行首次代币发行。
- 权益证明:相较于工作量证明更有效率,可节省大量在挖矿时浪费的电脑资源,并避免特殊应用集成电路造成网络中心化。2022年9月15日与主链合并。
- 燃料(gas):由交易手续费的概念扩展,在执行各种运算时需计算燃料消耗量,并缴交燃料费,包括发送以太币或者其他代币也被视为一种运算动作。
- 原丹克分片(Proto-Danksharding):在部分节点上暂存资料,以提升效率(尚未实现)。
- 叔块:此功能在转为权益证明后已停用。原本功能是使用有向无环图的相关技术,将因速度较慢而未及时被收入母链的较短区块链并入,用以提升交易量。
以太坊是可编程的?how
经常有问题会问道:以太坊与比特币有什么不同? 二者都是虚拟货币?
以太坊立足比特币创新之上,于 2015 年启动,两者之间有一些显著不同。
两者都允许你使用数字货币,而无需支付服务提供商或银行。但是以太坊是可编程的,所以你还可以在以太坊网络上构建和部署去中心化应用程序。
账户模型
这不得不提到账户模型。比特币有两种类型的账户:用户账户和合约账户。
以太坊的全局“共享状态”是有很多小对象(账户)来组成的,这些账户可以通过消息传递来与对方进行交互。每个账户都有一个与之关联的状态(state)和一个20字节的地址(address)。在以太坊中一个地址是160位的标识符,用来识别账户。
两种不同类型的账户:
- 外部拥有的账户,被私钥控制且没有任何代码与之关联
- 合约账户,被它们的合约代码控制且有代码与之关联
外部拥有账户与合约账户的比较
理解外部拥有账户和合约账户的基本区别是很重要的。一个外部拥有账户可以通过创建和用自己的私钥来对交易进行签名,来发送消息给另一个外部拥有账户或合约账户。在两个外部拥有账户之间传送的消息只是一个简单的价值转移。但是从外部拥有账户到合约账户的消息会激活合约账户的代码,允许它执行各种动作。(比如转移代币,写入内部存储,挖出一个新代币,执行一些运算,创建一个新的合约等等)。
不像外部拥有账户,合约账户不可以自己发起一个交易。相反,合约账户只有在接收到一个交易之后(从一个外部拥有账户或另一个合约账户处),为了响应此交易而触发一个交易。
因此,在以太坊上任何的动作,总是被外部拥有账户触发的交易所发动的。
这也是为什么以太坊被称为一个“智能合约”平台,叫做可编程的原因。因为合约账户的代码可以被外部拥有账户调用,这样就可以执行一些操作。
账户状态
账户状态有四个组成部分,不论账户类型是什么,都存在这四个组成部分:
- nonce:如果账户是一个外部拥有账户,nonce代表从此账户地址发送的交易序号。如果账户是一个合约账户,nonce代表此账户创建的合约序号
- balance: 此地址拥有Wei的数量。1Ether=10^18Wei
- storageRoot: Merkle Patricia树的根节点Hash值(我们后面在解释Merkle树)。Merkle树会将此账户存储内容的Hash值进行编码,默认是空值
- codeHash:此账户EVM(以太坊虚拟机,后面细说)代码的hash值。对于合约账户,就是被Hash的代码并作为codeHash保存。对于外部拥有账户,codeHash域是一个空字符串的Hash值