EIP712 在安全性和可用性方面向前迈进了一大步,因为用户不再需要对难以理解的十六进制字符串签名(这是一种令人困惑、不安全的做法)。 EIP712 已合并到以太坊改进提案库[5],主流钱包也已支持。 EIP712 之前 - 图 1: 不使用 EIP712 的 dApp 的签名请求 - 加密货币领域的格言是:不信任;验证。 EIP712 的改进 - 图 2: 使用 EIP712 的 DApp 的签名请求 - EIP712 在可用性和安全性方面有很大的改进。 如何实现 EIP712 标准引入了几个开发人员必须熟悉的概念,本节将详细介绍如何在 DApp 中实现它。 MetaMask 支持 EIP712 后关于“legacy” 的说明 另一件需要注意的事情是,当 MetaMask 发布对 EIP712 支持时,它将不再支持一个实验性的“legacy”类型化数据签名,
我立即注意到此注释: // — — EIP712 niceties — - 有了这个,我钻进了兔子洞[5],却无望地迷路了。现在,我已经理解了,我可以用简单的方式来解释它。 EIP712[6]描述了如何以通用方式构建函数签名。其他EIP描述了如何将EIP712[7]应用。 例如,EIP2612[8]描述了如何使用EIP712[9]的签名应用于permit函数,其功能应与ERC20代币中的approve功能相同。 签名组成 EIP712[14]签名的早期实现可以在dai.sol[15]源码中找到 。 它是由EIP712域(EIP712Domain)的字符串,包含代币合约的名称,版本,所在的chainId以及合约部署的地址构成。
基于基础资产的治理投票扩展 对 Solidity 中的内存错误进行模糊测试[23] wagmi v0.3.0[24] (React hooks):缓存、React 18 支持, vanilla JS 客户端 EIP712 Codegen[25]:为 EIP712 解码生成 Solidity IntelliJ[26] Solidity 调试器插件 MetaMask Snaps 教程[27],用于管理 Snap 中的状态并添加 fuzzing-for-memory-bugs-in-solidity [24] v0.3.0: https://twitter.com/awkweb/status/1518607778209751041 [25] EIP712
我立刻注意到了一个注释: // — — EIP712 niceties — - 看起来是一个以太坊规范,因此我就研究了一下,不过当时并没有理解。现在我已经理解,并且可以用浅显的话语来解释了。 EIP712(https://github.com/ethereum/EIPs/blob/master/EIPS/eip-712.md)描述了为合约方法生成签名的通用方式。 其他的EIP则描述如何在特定的用例中运用EIP712。 例如EIP2612(https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2612.md)描述如何将EIP712签名用于permit方法,该方法和ERC20 3、签名构成 在dai.sol中可以看到EIP712的一个早期实现,它允许dai持有者在链下计算签名并交由spender代为执行approve方法,而不是由dai持有者直接调用approve方法。
并提供开发人员友好的API支持BEP20/BEP20、BNB/BEP20等各种交易对的流动性添加、移除与兑换交易支持自动做市价格计算与滑点计算支持BSC交易gas用量与gas价格的自动估算与手动设定支持EIP712
hardhat-ignore-warnings[35]:插件,用于将 warning 转为 error ,忽略不需要的警告 web3.js v1.8.0[36]:PoS 所需的安全和最终区块标签 ABIType[37] : ABI 和 EIP712 Ethernaut Good Samaritan 关卡[45] 安全 Profanity 地址生成器[46]漏洞,私钥可以恢复,已被利用[47],将所有资产转移到不同的钱包 PoW 分叉重放攻击[48],可能通过 EIP712
这个哈希根据EIP712[4]对订单计算出来的: const orderHashHex = orderHashUtils.getOrderHashHex(order); 获取订单的哈希后,挂单者使用0x.js github.com/0xProject/0x-monorepo/blob/development/contracts/asset-proxy/contracts/src/ERC721Proxy.sol [4] EIP712
为特定区块和次序交易添加模拟 ABI parser[27]: 为通过验证的合约的事件和函数生成 BigQuery SQL wagmi v0.7[28] (React hooks): 根据 ABI 和 EIP712
contract GovToken is ERC20Votes { /** * @notice 构造函数,初始化治理代币 * @dev 铸造 1,000,000 个代币给部署者,并设置 EIP712 域名 */ constructor() ERC20("Governance Token", "GOV") EIP712("Governance Token",
创建账号•account_list 列表账号列表•account_signTransaction 交易签名•account_signData 签名数据•account_signTypedData 对符合EIP712
EIP5219[15]: 去中心化 HTTP EIP5247[16]: 智能提案 EIP5252[17]: 去中心化金融的智能合约设计模式,eip-5114 的扩展 EIP5267[18]: 检索 EIP712
js v1.7.5[32]: 依赖项的安全更新、文档更新,修复 bug snekmate[33]: Vyper 构建区块; ECDSA, CreateAddress, Create2Address 和 EIP712
titanoboa(Vyper 解释器)用户可定义的预编译[47] Nethereum v4.8.0[48]:支持钱包 RPC 方法、批处理 RPC、AWS Key Manager 外部签名者、支持 EIP712
permit2 [9] EIP-712: https://eips.ethereum.org/EIPS/eip-712 [10] 相关文章: https://learnblockchain.cn/tags/EIP712