6月份的ethers.js亮點更新
關鍵的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帶來的落地機遇。敬請關注我們的微信公眾號 “去中心化金融社區” 。
- 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 函數?