当我们谈论以太坊(Ethereum)时,常常会接触到“账户”这个概念,与银行账户类似,以太坊账户也是你参与以太坊网络、管理资产、进行交互的起点,但与传统账户不同,以太坊账户以其独特的设计和结构,构建了去中心化金融和应用的基石,一个以太坊账户究竟是什么样子的呢?让我们一同揭开它的神秘面纱。

以太坊账户的两种“面孔”

以太坊网络中的账户主要分为两种类型,它们在结构、功能和权限上有着显著的区别:

  1. 外部账户 (Externally Owned Account, EOA)

    • “主人”:由用户通过私钥控制,就像你的数字钱包(如MetaMask、Ledger等)管理的账户。
    • “出生”:由用户创建,没有“智能合约”代码与之关联。
    • “权限”:私钥是控制该账户的唯一凭证,谁拥有私钥,谁就能控制账户中的资产和发起交易。
    • “功能”:主要用于发起交易(如发送ETH、调用智能合约)、接收资产,它们是网络中“行动”的发起者。
  2. 合约账户 (Contract Account)

    • “主人”:由智能代码控制,没有私钥,它的行为由部署时设定的代码逻辑决定。
    • “出生”:由外部账户或其他合约账户通过创建交易部署到网络上。
    • “权限”:没有私钥,不能主动发起交易(除了响应外部调用或触发内部事件),它们是被“调用”的对象。
    • “功能”:用于执行特定的逻辑和功能,如代币转移、投票、管理资金等,大多数去中心化应用(DApps)的核心逻辑都运行在合约账户中。

一个EOA账户的“身份证”与“密码”

对于我们日常接触最多的外部账户(EOA),其“长相”主要由以下几个核心要素构成:

  1. 地址 (Address)

    • “长相”:这是一个40位的十六进制字符串,以“0x”开头。0x742d35Cc6634C0532925a3b844Bc9e7595f8e5a
    • “作用”:可以理解为账户在以太坊网络中的“银行账号”或“邮箱地址”,你可以公开分享地址,用于接收ETH或其他代币,地址是由账户的私钥通过特定算法(椭圆曲线算法和Keccak-256哈希)生成的,并且从私钥可以推导出地址,但无法从地址反推私钥(保证了安全性)。
    • “本质”:地址实际上就是与该账户关联的公钥的最低20字节(40个十六进制字符)。
  2. 私钥 (Private Key)

    • “长相”:一个64位的十六进制字符串(有时会包含校验位,变成52位单词的助记词)。5f0258cdee8c879eb8b02eaa6723d9bd3d7eef8829e4a3a5d0bc7528ba1cbf14
    • “作用”:这是账户的“终极密码”和“所有权证明”,谁拥有了私钥,谁就拥有了该账户的绝对控制权,使用私钥可以对交易进行签名,证明你有权从该地址转移资产。
    • “安全”:私钥必须严格保密,一旦泄露,账户中的资产将面临被盗的风险,通常我们会通过助记词(12、18或24个单词)来备份和恢复私钥。
  3. 公钥 (Public Key)

    • “长相”随机配图