- A+
EVM 交易结构
交易数据主要包含如下字段:
●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 区块结构
以太坊平台正在快速发展和持续升级,文章中的数据结构信息可能已不再是最新版本。另外,不同区块链之间的数据结构也会有所差异。
钱包地址生成
●第一步:生成种子。种子是一个随机生成的数字序列,是后续的起点。种子可以由系统生成的随机数或用户提供的熵(比如随机移动鼠标产生的数据)来产生。
●第二步:生成助记词。助记词是将种子转换成的一系列方便记忆的单词。在以太坊中,有一个固定的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)
- 存放金额:大量
- 用途:
- 存放高价值资产
- 特点:
- 不进行任何批准
- 不与合约交互
- 仅限转账
- 使用明文签名
- 我的微信
- 这是我的微信扫一扫
- 我的电报
- 这是我的电报扫一扫