EVM 公链基础知识摘要

  • skysys.eth
  • 更新于 2024-08-12 21:01
  • 阅读 1236

本文来自我在HackQuest学习笔记的整理EVM交易结构交易数据主要包含如下字段:●nonce:发送方账户的交易计数器,统计该账户在此区块链中的总交易次数。●gasPrice:发送方愿意为每单位gas支付的价格。●gasLimit:发送方为这次交易设置的最大gas消耗

本文来自我在 HackQuest 学习笔记的整理

EVM 交易结构

image.png

交易数据主要包含如下字段: ●nonce:发送方账户的交易计数器,统计该账户在此区块链中的总交易次数。 ●gasPrice:发送方愿意为每单位 gas 支付的价格。 ●gasLimit:发送方为这次交易设置的最大 gas 消耗量。 ●to:接收方的账户地址。 ●value:要传输的以太币数量。 ●data:智能合约相关的字节码。 ●v, r, s:交易签名,由发送方的私钥生成。

交易数据构造完成后,钱包将使用用户的私钥对整个交易进行签名,并将签名结果( v, r, s )加入交易数据中,然后对整个交易数据(不包括签名)计算哈希值,交易哈希是交易数据的唯一标识符,确保了交易的唯一性和不可篡改。

在以太坊中,当一笔交易完成后,会生成“交易收据”( Transaction Receipt,又叫交易回执)。交易收据记录了交易执行的基本信息,是交易被包含在区块链中的重要证据。每个交易收据包含的信息有: ●transactionHash:交易哈希值,用于唯一标识一笔交易。 ●transactionIndex:交易在所在区块中的索引位置。 ●blockHash:包含该交易的区块哈希值。 ●blockNumber:包含该交易的区块编号。 ●from:发起交易的地址。 ●to:交易的目标地址。 ●cumulativeGasUsed:当前区块中累积消耗的 Gas 量。 ●gasUsed:这笔交易所消耗的 Gas 量。 ●contractAddress:如果交易用于创建合约,则表示合约地址;否则为 null。 ●logs:交易过程中产生的事件日志。 ●logsBloom:布隆过滤器,用于快速检索交易日志。 ●status:交易执行的状态码,表示成功或失败。

EVM 区块结构

image.png

以太坊平台正在快速发展和持续升级,文章中的数据结构信息可能已不再是最新版本。另外,不同区块链之间的数据结构也会有所差异。

image.png

钱包地址生成

image.png

●第一步:生成种子。种子是一个随机生成的数字序列,是后续的起点。种子可以由系统生成的随机数或用户提供的熵(比如随机移动鼠标产生的数据)来产生。

●第二步:生成助记词。助记词是将种子转换成的一系列方便记忆的单词。在以太坊中,有一个固定的2048个单词的单词库,首先将种子分割成多个二进制数据片段,每一个片段对应单词库中的一个单词,最终形成一串单词序列,即助记词。

●第三步:生成私钥。私钥是控制钱包地址的密钥。使用上一步的种子,通过 HMAC-SHA512 算法进行计算,可以得到私钥。

●第四步:生成公钥。有了私钥之后,通过椭圆曲线加密算法( ECDSA ),我们可以计算出对应的公钥。

●第五步:生成地址。最后一步是生成钱包地址。首先使用 Keccak-256 哈希函数计算公钥的哈希值,然后取哈希值的最后20个字节,就是一个以太坊钱包地址。

TAP(三地址协议)

TAP(三地址协议,Three Address Protocol) 是一种通过使用三个独立的钱包地址来保护数字资产的安全协议。建立以下三种钱包基本可以满足我们的日常使用需求:

1.铸币钱包(Mint Wallet)

  • 存放金额:非常少量
  • 用途:
    • 铸币合约
    • 投机活动
  • 特点:
    • 连接到不受信任网站的最小资金

2.交易钱包(Marketplace Wallet)

  • 存放金额:较Mint Wallet多,一般满足交易即可
  • 用途:
    • OpenSea / Blur / Uniswap
    • 在受信任的市场合约上批准
  • 特点:
    • 进行市场交易

3.保险库钱包(Vault Wallet)

  • 存放金额:大量
  • 用途:
    • 存放高价值资产
  • 特点:
    • 不进行任何批准
    • 不与合约交互
    • 仅限转账
    • 使用明文签名
点赞 1
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
skysys.eth
skysys.eth
0xfd8D...FD45
区块链研究员