Etherrum 学习笔记(1)

in #cn4 months ago

什么是以太坊(Ethereum)

以太坊是一个由世界各地的计算机组成的网络,遵循一套称为以太坊协议的规则。以太坊网络提供了一个基础,任何人都可以在上面构建和使用社区、应用程序、组织和数字资产。

image.png

个人理解,以太坊是区块链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 树以键值对形式存储账户的数据,对于新账户,默认为空。