本文来自我在HackQuest学习笔记的整理EVM交易结构交易数据主要包含如下字段:●nonce:发送方账户的交易计数器,统计该账户在此区块链中的总交易次数。●gasPrice:发送方愿意为每单位gas支付的价格。●gasLimit:发送方为这次交易设置的最大gas消耗
本文来自我在 HackQuest 学习笔记的整理
交易数据主要包含如下字段: ●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:交易执行的状态码,表示成功或失败。
以太坊平台正在快速发展和持续升级,文章中的数据结构信息可能已不再是最新版本。另外,不同区块链之间的数据结构也会有所差异。
●第一步:生成种子。种子是一个随机生成的数字序列,是后续的起点。种子可以由系统生成的随机数或用户提供的熵(比如随机移动鼠标产生的数据)来产生。
●第二步:生成助记词。助记词是将种子转换成的一系列方便记忆的单词。在以太坊中,有一个固定的2048个单词的单词库,首先将种子分割成多个二进制数据片段,每一个片段对应单词库中的一个单词,最终形成一串单词序列,即助记词。
●第三步:生成私钥。私钥是控制钱包地址的密钥。使用上一步的种子,通过 HMAC-SHA512 算法进行计算,可以得到私钥。
●第四步:生成公钥。有了私钥之后,通过椭圆曲线加密算法( ECDSA ),我们可以计算出对应的公钥。
●第五步:生成地址。最后一步是生成钱包地址。首先使用 Keccak-256 哈希函数计算公钥的哈希值,然后取哈希值的最后20个字节,就是一个以太坊钱包地址。
TAP(三地址协议,Three Address Protocol) 是一种通过使用三个独立的钱包地址来保护数字资产的安全协议。建立以下三种钱包基本可以满足我们的日常使用需求:
1.铸币钱包(Mint Wallet)
2.交易钱包(Marketplace Wallet)
3.保险库钱包(Vault Wallet)
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!