Rand Protocol
ソースからビルド

自分でコンパイルする

Rand Wallet のクライアントはすべて、GPL-3.0-only のもとで公開されている一つのリポジトリ randprotocol/clients からビルドされます。公開されているダウンロードは、このページのコマンドだけで作られています。したがって、同じパッケージを自分のマシンで作ることができます。バージョン 0.8.0 はタグ v0.8.0 です。

始める前に

インストールするもの

必要なのは、ビルドしたいクライアントの行だけです。どのクライアントでも最初のビルドではプルーバーをコンパイルするため、数分かかります。以降の再ビルドは短時間で終わります。

すべてのクライアント
git、rustup、Node 22 以降。rustup は、チェックアウト内で初めて cargo を実行したときに、リポジトリが固定している Rust 1.98.1 をインストールします。
デスクトップ(全 OS)
tauri-cli 2: cargo install tauri-cli --version "^2" --locked
Linux のデスクトップ
sudo apt install build-essential libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev patchelf rpm file(Debian と Ubuntu でのパッケージ名です。ほかのディストリビューションにも同等のものがあります)
Windows のデスクトップ
「Desktop development with C++」を含む Visual Studio Build Tools と、Git Bash でスクリプトを実行するための Git for Windows
macOS のデスクトップ
Xcode Command Line Tools: xcode-select --install
Chrome、Firefox、Web ウォレット
追加で必要なものはありません。ビルド時に wasm-bindgen-cli が自動でインストールされます。
Android
JDK 17 以降、およびプラットフォーム 36、build-tools 36、NDK 27 を含む Android SDK
iOS
Xcode 16 以降を搭載した Mac

1. ソースを取得する

リポジトリを、唯一のサブモジュールであるフルノードとともにクローンします。フルノードのコードが、このウォレットの暗号処理そのものです。公開されたものを正確にビルドするにはリリースタグをチェックアウトし、最新の状態を使うには main のままにします。GitHub アカウントも SSH 鍵も不要です。

ソースを取得する
bash
git clone --recurse-submodules https://github.com/randprotocol/clients.git
cd clients
git checkout v0.8.0 && git submodule update --init   # main ではなく、リリース

git を使わない場合は、リリースから rand-wallet-0.8.0-source.tar.gz をダウンロードして展開してください。サブモジュールが含まれています。GitHub 標準の「Source code」アーカイブには含まれません。

2. コアをテストする(任意)

コアは、すべてのクライアントがラップしている Rust ライブラリです。そのテストでは実際に証明を生成し、チェーン自身のベリファイアで検証します。最初のコンパイル後、所要時間はおよそ 1 分です。

コアをテストする(任意)
bash
cd core && cargo test --release && cd ..

3. デスクトップ: Linux、Windows、macOS

スクリプトが一つあり、実行した OS 向けのパッケージを、リリースで使われているのと同じ名前で作成します。Linux では AppImage、.deb、.rpm、そして .tar.gz に入ったバイナリ単体です。Windows では、Git Bash から .msi と -setup.exe を作成します。macOS では .dmg です。各プラットフォームでは、そのプラットフォーム自身のパッケージだけがビルドされます。

詳細: Linux, Windows, macOS.

デスクトップ: Linux、Windows、macOS
bash
cargo install tauri-cli --version "^2" --locked   # 初回のみ
scripts/release/build-desktop.sh   # → dist/release/v<version>/
scripts/release/build-desktop.sh --target x86_64-apple-darwin   # Apple シリコンの Mac から作成する Intel 向けの .dmg

cd desktop/src-tauri && cargo tauri dev   # パッケージ化せず、そのまま実行する場合

最初のビルドではプルーバーをコンパイルするため、数分かかります。

4. Chrome と Firefox の拡張機能

コアを WebAssembly にコンパイルし、続いて各ブラウザーのパック用スクリプトがファイルを dist/ にコピーして zip にまとめます。バンドラーもミニファイアーも使いません。WebAssembly モジュールを除けば、読み込むファイルはリポジトリにあるファイルそのものです。

詳細: Chrome, Firefox.

Chrome と Firefox の拡張機能
bash
core/scripts/build-wasm.sh   # → extension/shared/core/
chrome/pack.sh   # → dist/chrome/ と dist/rand-wallet-chrome-<version>.zip
firefox/pack.sh   # → dist/firefox/ と dist/rand-wallet-firefox-<version>.zip

Chrome: chrome://extensions → Developer mode → Load unpacked → dist/chrome。Firefox: about:debugging → This Firefox → Load Temporary Add-on… → dist/firefox/manifest.json。

5. Android

コアを arm64 と x86_64 向けのネイティブライブラリとしてビルドし、そのうえで Gradle がアプリをビルドします。デバッグビルドはどのスマートフォンやエミュレーターにもインストールできます。リリースビルドには、自分で作成した鍵で署名します。

詳細: Android.

Android
bash
core/scripts/build-android.sh   # → android/app/src/main/jniLibs/
cd android
echo "sdk.dir=$HOME/Android/Sdk" > local.properties   # SDK のある場所を指定
./gradlew assembleDebug   # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk

6. iOS

コアを実機用とシミュレーター用の XCFramework としてビルドします。アプリは通常の Xcode プロジェクトです。自分の iPhone で実行するには、Xcode → Settings → Accounts に Apple ID を登録し、Signing & Capabilities でチームを選択する必要があります。

詳細: iOS.

iOS
bash
core/scripts/build-ios.sh   # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj   # シミュレーターまたは実機を選び、Run を押します

7. ローカルの Web ウォレット

同じウォレットをブラウザーのタブで使えます。127.0.0.1 のみで待ち受ける小さなサーバーが配信します。

詳細: Web.

ローカルの Web ウォレット
bash
web/wallet/serve.sh   # ビルドしてから http://127.0.0.1:8787/ で配信します

8. テストを実行する

共有インターフェース、Web ウォレット、拡張機能には JavaScript のテストスイートが一つあります。デスクトップアプリと Android アプリには、それぞれ独自のものがあります。

テストを実行する
bash
npm ci --prefix ui
node --test "ui/test/**/*.test.mjs" "web/wallet/test/**/*.test.mjs" "extension/test/*.test.mjs"
( cd desktop/src-tauri && cargo test )
( cd android && ./gradlew testDebugUnitTest )
リリース

公開ファイルの作られ方

リリースタグが付くと、GitHub のランナーが同じスクリプトを実行します。macOS・Windows・Linux 向けのデスクトップアプリ、両方の拡張機能の zip、ソースアーカイブが対象で、SHA256SUMS とともにリリースに添付されます。ワークフローは .github/workflows/release.yml で、Jenkinsfile は同じパイプラインを別の環境で実行します。Android パッケージは、署名鍵がどの CI にも置かれていないため、メンテナーのマシンでビルドと署名を行います。

チェックサムでわかること

わからないこと

SHA-256 が一致するダウンロードは、公開されたファイルそのものです。ビルドはまだビット単位では再現できないため、自分でビルドしたものの合計値は公開されたものと同じにはなりません。また、合計値が一致しても、そのファイルがどのソースから作られたかの証明にはなりません。それが知りたいことであれば、答えはこのページにあります。自分でビルドし、ビルドしたものを実行してください。