logo

Soldeer

〜foundryが強すぎて〜
profile photo
TaniguchiAkira
2024/08/15時点での情報です

Soldeerってなに?

Solidityのパッケージマネージャ。Rust製。
現在の最新バージョンは0.3.0。
作者曰く、「foundryは依存関係を管理するための良いソリューションではなく、npmはそもそもjsのためのもの」だそうで。
君は、生き延びることができるか。

準備

shell
cargo install soldeer
この後、
shell
soldeer -V
を実行して、
shell
soldeer 0.2.19
的な感じで表示されればOK。最新版は0.3.0らしいが、なぜかそうじゃないバージョンがインストールされる。最終的な破壊的変更は0.2.19らしいので、そこに合わせていると思われる。

使い方

例えば、openzeppelin-contractsのversion5.0.2を使いたい場合、任意のフォルダで
shell
soldeer install @openzeppelin-contracts~5.0.2
途中、foundry.tomlを使うか、soldeer.tomlを使うか質問をされたが、ここではsoldeer.tomlを選択。
すると、ファイルやフォルダが合計4つ出来上がる

作成されたファイル/フォルダ説明

dependencies

中に「@openzeppelin-contracts-5.0.2」というフォルダが存在する。おそらくインストールされたライブラリが配置されていると思われる

remappings.txt

内部にライブラリとそのキーが設定されている。Solidity側のimportでキーを指定すればパスが通ると思われる

soldeer.lock

インストールしたライブラリの詳細が記録されている

soldeer.toml

リマッピングの有効設定など、システム設定が存在する

コントラクトやtestの実行方法

ここから、「コントラクトのフォルダ構成どうするの?」とか「testはどうやって実行するの?」とか「どうやってデプロイするの?」とか色々あると思うが、その方法がreadmeに乗ってない。各種設定を見る感じ、多分ここから先はfoundryのお世話になる想定な気がする。
ライブラリのimport方法だけは載ってて、Solidity側で
shell
import from 'openzeppelin-4.9.2/token/ERC20/ERC20.sol';
というように、バージョンを指定してコンパイルする形になるらしい。

所感

まだまだ発展途上感があるので、いきなりプロダクトで使う気分にはなれない。
ただ、同一ライブラリの別バージョンを同一プロジェクトで管理できるっぽいので、一時的に古いライブラリを使いたい時などに効果を発揮するかもしれない。
そのような状況にはあんまりなりたくないけど。

参考リンク

Soldeer - Solidity Package Manager
Soldeer is a lightweight package manager for Solidity built in Rust.
github.com/mario-eth/soldeer
Related posts
post image
Solidityも早く1.0.0出て欲しい
post image
Aptos Japanがないのはなぜなのか
post image
いまだに俺のAptosは一向に火を吹かない
Powered by Notaku