账户
浏览 186 | 评论 0 | 字数 1168
硝基苯
2023年06月02日
  • 帐户类型

    以太坊有两种帐户类型:

    • 外部所有的帐户 (EOA) – 由任何拥有私钥的人控制
    • 合约帐户 — 部署到网络上的智能合约,由代码控制。
      这两种帐户类型都能:
    • 接收、持有和发送 ETH 和 token
    • 与已部署的智能合约进行交互

    主要区别

    外部持有账户

    • 创建帐户是免费的
    • 可以发起交易
    • 外部所有的帐户之间只能进行以太币和代币交易
    • 由一对加密密钥组成:控制帐户活动的公钥和私钥
      合约账户
    • 创建合约存在成本,因为需要使用网络存储空间
    • 只能在收到交易时发送交易
    • 从外部帐户向合约帐户发起的交易能触发可执行多种操作的代码,例如转移代币甚至创建新合约
    • 合约帐户没有私钥。 相反,它们由智能合约代码逻辑控制

    理解帐户

    以太坊帐户有四个字段:

    • nonce – 显示从帐户发送的交易数量的计数器。 这将确保交易只处理一次。 在合约帐户中,这个数字代表该帐户创建的合约数量
    • balance – 这个地址拥有的 Wei 数量。 Wei 是以太币的计数单位,每个 ETH 有 1e+18 Wei。
    • codeHash - 该哈希表示以太坊虚拟机 (EVM) 上的帐户代码。 合约帐户具有编程的代码片段,可以执行不同的操作。 如果帐户收到消息调用,则执行此 EVM 代码。 与其他帐户字段不同,不能更改。 所有代码片段都被保存在状态数据库的相应哈希下,供后续检索。 此哈希值称为 codeHash。 对于外部所有的帐户,codeHash 字段是空字符串的哈希。
    • storageRoot – 有时被称为存储哈希。 Merkle Patricia trie 根节点的 256 位哈希已编码了帐户的存储内容(256 位整数值映射),并编码为 Trie,作为来自 256 的 Keccak 256 位哈希的映射位整数键,用于 RLP 编码的 256 位整数值。 此 Trie 对此帐户存储内容的哈希进行编码,默认情况下为空。

    帐户创建

    当你想要创建一个帐户时,大多数库将生成一个随机的私钥。
    私钥由 64 个十六进制字符组成,可以用密码加密保存。

    合约帐户

    合约帐户也有一个 42 个字符组成的十六进制地址:
    例如:
    0x06012c8cf97bead5deae237070f9587f8e7a266d
    合约地址通常在将合约部署到以太坊区块链时给出。 地址产生自创建人的地址和从创建人地址发送的交易数量(“nonce”)。

    来自 https://ethereum.org/zh/developers/docs/accounts/

    本文作者:硝基苯
    本文链接:https://www.c6sec.com/index.php/archives/810/
    最后修改时间:2023-06-02 16:40:47
    本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
    评论已关闭
    评论列表
    暂无评论