6月份的ethers.js亮点更新
![](http://mdimg.wxwenku.com/getimg/6b990ce30fa9193e296dd37902816f4b3e426729a009ffd3fc7a93a5dae925ec1ae850eccca6f6073f5f4b9a3e07a42d.jpg)
关键的BigNumber修复
本季度最大的新闻,就是在BN.js库中发现了一个关键的字符串序列化漏洞,由Alex Dupre发现,他也提供了必要的补丁。
v5的ethers库使用BN.js,其理由是以太坊操作需要一个VLI库,同时也是因为JavaScript只提供IEEE 754浮点数。椭圆需要BN.js,ethers使用的是椭圆曲线密码术(ECC)库,所以对secp256k1和BigNumber重复使用意味着我们只需要一个VLI库。
此外,由于ether中的所有对象都是不可变的,所以BigNumber对象将所有值存储为十六进制字符串,其原因就是因为它们是快速而简单的不可变对象,同时又可以高效地转换回数学中的大数字。
然而,幸运的是,该错误只会在非常大的值上表现出来,远远超出了大多数以太坊用途的范围。以太坊中的所有值都是256位,当值超过337位时,这个bug才成为问题。
当然,在极少数情况下,这也仍然会产生问题,因为256位的数字乘以另一个256位的数字会得到512位的数字,这可能会受到影响,或者如果将大量的值相加(例如,在计算平均值时),分子的大小可能会超过337位。
但是,EVM的大多数值都不接近256位。例如,1ether (10 ^ 18 wei)只是一个60位的值(EVM中前196位为0)。
尽管这个bug不太可能成为一个问题,但仍然强烈建议每个人都更新到最新版本。
现在,原生VLI在大多数JavaScript环境中都是一个可行的方案,以及使用它们的现代ECC库,v6使用了Paul Miller的noble库,这些库都非常棒,快速,并已被充分审计。
其他一些零零碎碎
这只是对v5版本中添加的一些更新的快速总结。
- WebWorker ESM 支持
- Skynet 和 IPNS Content Hash支持
- 默认的L2支持:Matic, Optimism,等等
- Hardhat的兼容性
- 遗留环境的子类支持
- 将Ankr加入到默认后端家族中
当前的v5文档将大多数ether函数和类链接到相关的TypeScript源代码上,但仍然需要在源代码和文档之间来回切换,而且有很多地方的文档要么不同步,要么就在源代码或文档中才进行了完整描述。
通过向Flatworm添加JSDoc提取,现在文档将保持同步,并为所有功能提供文档。在构建时,如果有未归档的操作或缺少导出的话,就会发出警告,
Source: http://medium.com/ricmoo/highlights-ethers-js-june-2022-f5328932e35d
关于
ChinaDeFi– ChinaDeFi.com 是一个研究驱动的DeFi创新组织,同时我们也是区块链开发团队。每天从全球超过500个优质信息源的近900篇内容中,寻找思考更具深度、梳理更为系统的内容,以最快的速度同步到中国市场提供决策辅助材料。
Layer 2道友– 欢迎对Layer 2感兴趣的区块链技术爱好者、研究分析人与Gavin(微信: chinadefi)联系,共同探讨Layer 2带来的落地机遇。敬请关注我们的微信公众号 “去中心化金融社区” 。
![](http://mdimg.wxwenku.com/getimg/ccdf080c7af7e8a10e9b88444af983938cd7990609bbb418086e5263fa5eb56101ad623c9900f1a7d171e7f7d84e3294.jpg)
- Web5:旨在将数据和身份管理权归还给用户
- 6月份的ethers.js亮点更新
- Optimism上的AMM:Velodrome的推出和空投细节
- 以太坊合并后,L2是否还有存在的必要?
- 当公钥和对称密钥一起工作时
- 如何计算NFT的稀有度?
- Solidity 智能合约安全性:防止重入攻击的 4 种方法
- 被Terra崩盘影响的加密领域
- 这些GitHub 存储库可提高Web3技能
- 使用 Solidity 和 Node.js 构建简单的区块链预言机
- 使用 Truffle for VS Code Extension 创建 Web3 项目
- 使用 Solidity 智能合约实现 NFT 代币门控
- 使用荷兰式拍卖模型以最优惠的价格出售您的 NFT
- ECDSA——比特币和以太坊的信任基础设施的核心
- Instagram:支持以太坊、Solana 和其他公司的 NFT
- 使用 OpenZeppelin 和 Ethers.js 在 Solidity 中使用 ECDSA 验证链下结果和白名单
- 智能合约安全测试指南
- 卡牌NFT游戏的角逐:Shiryo能否脱颖而出?
- 勒索软件和 Rust
- 如何使用 Solidity 编写 PayNow 函数?