logo

OpenZeppelin 5.1.0 の簡単な解説

Solidityも早く1.0.0出て欲しい
profile photo
TaniguchiAkira

今北産業

  • P256とRSAの暗号ライブラリ追加
  • Merkle Treeのライブラリ機能強化
  • ReentrancyGuardTransientなどの新しいユーティリティ追加

OpenZeppelinのマイナーバージョンがアップした

OpenZeppelinも昔に比べてだいぶ使いやすくなりました。
Solidityがいつまで現役で動き続けるかはわかりませんが、少なくとも今は必須のライブラリなので、情報を追っかけていても損はないな、というお気持ちです。

知っておいた方がいいこと(主観)

カスタムエラーの名前が変わっている

変更がかかったカスタムエラー一覧
いくつかのカスタムエラーの名前が変わっている。
単体テストを組んでいたり、フロントの呼び出し部分で特定のエラーのみ決まった処理をする、といった流れがあった場合、その修正が必要になってくることがある。
その対象にSafeERC20が入っているのがでかい。みんなSafeERC20大好き。でも容赦なく仕様変わる。辛い。

ERC20TemporaryApproval

ERC20TemporaryApprovalのソースコード
ガスコストの削減と、通常のERC20承認プロセスに対する柔軟性の向上を目指した新しいERC20が出てきた。まだdraftだけど。
  1. temporaryApproveを実行し、100トークンtransfer可能にする
  1. transferFromを実行し、10トークンtransferする
    1. このタイミングで90トークンはまだtransfer可能
  1. また別の宛先にtransferFromを実行する
    1. このタイミングで1で実行した90は無効になる
っぽい動き。知らんけど。まさにtemporary。

MerkleProof

MerkleProofのソースコード
verifyやprocessProofに独自のハッシュ関数を渡すことができるようになっている。
また、verifyCalldataやprocessProofCalldataなどCalldata対応もなされていて、ガス代対策ができている。

その他小ネタ

  • AccessControlEnumerableにgetRoleMembersという、ロールを保持するアドレスを返す関数が追加
  • P256RSAの暗号系ライブラリが追加
  • EnumerableMapに新しいキーマップタイプの追加(address型のキーとaddress型の値のマップなど)
主だったものはこんな感じ。もっと詳しく知りたい場合は下記参考リンクのGitHubのリリース情報をどうぞ。

参考リンク

npm: @openzeppelin/contracts
Secure Smart Contract library for Solidity. Latest version: 5.1.0, last published: 13 hours ago. Start using @openzeppelin/contracts in your project by running `npm i @openzeppelin/contracts`. There are 3314 other projects in the npm registry using @openzeppelin/contracts.
npm: @openzeppelin/contracts
github.com/OpenZeppelin/openzeppelin-contracts/releases/tag/v5.1.0
Related posts
post image
Aptos Japanがないのはなぜなのか
post image
いまだに俺のAptosは一向に火を吹かない
post image
俺のAptosは一向に火を吹かない
Powered by Notaku