Etherrum 学习笔记(1)
什么是以太坊(Ethereum)
以太坊是一个由世界各地的计算机组成的网络,遵循一套称为以太坊协议的规则。以太坊网络提供了一个基础,任何人都可以在上面构建和使用社区、应用程序、组织和数字资产。
个人理解,以太坊是区块链2.0,毫无疑问1.0是比特币,但是比特币实际上是空气币,什么实用功能也没有,但是它是一个个区块链,所以他的价值还是很高。而以太坊相当于是一个基于区块链技术的分布式计算平台,用户可以开发自己的分布式应用,也有相应的编程语言solidity。
实际上,以太坊被视作一个“状态机”,通过智能合约的代码更新其状态。执行这些智能合约代码,需要消耗以太币(ether),而这个过程是通过一种名为“权益证明”(Proof of Stake, PoS)的共识机制进行验证并在整个网络中广播同步的。
这里涉及到几个词:状态,智能合约,代币,共识机制。后续内容我们将深入了解这些概念。
账户模型
在以太坊中,主要有两种类型的账户:外部拥有账户(Externally Owned Accounts, EOAs)和合约账户(Contract Accounts)。这两种账户共同构成了以太坊的经济和应用生态系统。
外部账户相当于普通用户,买了以太币,存在里面。合约账户是可以运行智能合约代码的账户,以太坊区别于比特币的地方,就是可以部署,编写,运行智能合约软件。
外部拥有账户(EOAs)
- 控制方式:任何拥有私钥的人控制。
- 功能:用户可以通过创建和签署交易来发送消息,进行 ETH 转移或与智能合约互动。
- 地址:20 字节,由其公钥派生而来。
- 特点:EOAs 直接由用户控制,安全性依赖于私钥的保管。这类账户是以太坊网络中与人类用户直接相关的账户类型,允许用户参与以太坊网络的经济活动和应用生态系统。
账户字段
- Nonce:用于记录外部账户发起的交易数量或合约账户创建的合约数量。
外部账户的 nonce 从0开始计数,合约账户的 nonce 从1开始。
- Balance:账户拥有的以太币数量,以Wei为单位(1 ETH = 1e+18 Wei)。
- CodeHash:合约账户的 EVM 代码的哈希值。对于合约账户,CodeHash代表可执行的智能合约代码,该代码在账户接收到消息调用时执行。
对于外部账户,此字段为空字符串的哈希。
- StorageRoot:也称为存储哈希,是 Merkle Patricia Trie 根节点的256位哈希,编码了账户的存储内容。这个 Trie 树以键值对形式存储账户的数据,对于新账户,默认为空。