Compile você mesmo
Todo cliente do Rand Wallet é compilado a partir de um único repositório público, randprotocol/clients, sob a licença GPL-3.0-only. Os downloads publicados são gerados pelos comandos desta página e por nada além deles, de modo que você pode gerar os mesmos pacotes na sua própria máquina. A versão 0.8.0 é a tag v0.8.0.
O que instalar
Apenas as linhas do cliente que você deseja. A primeira compilação de qualquer cliente compila o prover e leva vários minutos; depois disso, uma recompilação é rápida.
1. Obtenha o código-fonte
Clone o repositório com seu único submódulo, o full node, cujo código é a criptografia da carteira. Faça o checkout da tag da versão para compilar exatamente o que foi publicado, ou permaneça em main para a versão mais recente. Não é necessária conta no GitHub nem chave SSH.
git clone --recurse-submodules https://github.com/randprotocol/clients.git
cd clients
git checkout v0.8.0 && git submodule update --init # a versão publicada, em vez de main Sem git: baixe rand-wallet-0.8.0-source.tar.gz da versão publicada e descompacte-o. Ele traz o submódulo incluído, o que os arquivos “Source code” do próprio GitHub não trazem.
2. Teste o núcleo (opcional)
O núcleo é a biblioteca Rust que todo cliente encapsula. Seus testes geram uma prova real e a verificam com o próprio verifier da cadeia, o que leva cerca de um minuto após a primeira compilação.
cd core && cargo test --release && cd .. 3. Desktop: Linux, Windows, macOS
Um único script compila os pacotes do sistema operacional em que é executado, com os nomes usados nas versões publicadas. No Linux: um AppImage, um .deb, um .rpm e o binário puro em um .tar.gz. No Windows, a partir do Git Bash: o .msi e o -setup.exe. No macOS: o .dmg. Cada plataforma compila apenas os seus próprios pacotes.
cargo install tauri-cli --version "^2" --locked # uma vez
scripts/release/build-desktop.sh # → dist/release/v<version>/
scripts/release/build-desktop.sh --target x86_64-apple-darwin # o .dmg para Intel, a partir de um Mac com Apple silicon
cd desktop/src-tauri && cargo tauri dev # ou apenas execute, sem empacotar A primeira compilação compila o prover e leva vários minutos.
4. Extensões para Chrome e Firefox
O núcleo é compilado para WebAssembly; em seguida, o script de empacotamento de cada navegador copia os arquivos para dist/ e os compacta em um zip. Não há bundler nem minificador: exceto pelo módulo WebAssembly, os arquivos que você carrega são os arquivos do repositório.
core/scripts/build-wasm.sh # → extension/shared/core/
chrome/pack.sh # → dist/chrome/ e dist/rand-wallet-chrome-<version>.zip
firefox/pack.sh # → dist/firefox/ e 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
O núcleo é compilado como uma biblioteca nativa para arm64 e x86_64; em seguida, o Gradle compila o aplicativo em torno dela. Uma compilação de depuração é instalada em qualquer celular ou emulador; uma compilação de release é assinada com uma chave que você mesmo cria.
Mais em Android.
core/scripts/build-android.sh # → android/app/src/main/jniLibs/
cd android
echo "sdk.dir=$HOME/Android/Sdk" > local.properties # onde quer que esteja o seu SDK
./gradlew assembleDebug # → app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apk 6. iOS
O núcleo é compilado como um XCFramework para dispositivo e simulador, e o aplicativo é um projeto Xcode comum. Para executá-lo no seu próprio iPhone, é preciso ter o seu Apple ID em Xcode → Settings → Accounts e a sua equipe escolhida em Signing & Capabilities.
Mais em iOS.
core/scripts/build-ios.sh # → ios/Frameworks/RandWalletCore.xcframework
open ios/RandWallet.xcodeproj # escolha um simulador ou o seu dispositivo e, em seguida, Run 7. A carteira web local
A mesma carteira em uma aba do navegador, servida a você por um pequeno servidor que escuta somente em 127.0.0.1.
Mais em Web.
web/wallet/serve.sh # compila e, em seguida, serve http://127.0.0.1:8787/ 8. Execute os testes
A interface compartilhada, a carteira web e a extensão têm uma única suíte em JavaScript; o aplicativo desktop e o aplicativo Android têm as suas próprias.
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 ) Como os arquivos publicados são gerados
Em uma tag de versão, os runners do GitHub executam os mesmos scripts: o aplicativo desktop no macOS, no Windows e no Linux, os dois zips de extensão e o arquivo do código-fonte, anexados à versão com o SHA256SUMS. O workflow é .github/workflows/release.yml, e um Jenkinsfile executa o mesmo pipeline em outro lugar. O pacote Android é compilado e assinado na máquina de um mantenedor, porque a sua chave de assinatura não está em nenhum CI.
E o que ele não informa
Um download cujo SHA-256 confere é o arquivo que foi publicado. As compilações ainda não são reproduzíveis bit a bit, portanto a sua própria compilação não terá a mesma soma da publicada, e uma soma que confere não prova de qual código-fonte um arquivo veio. Se essa é a dúvida, a resposta é esta página: compile-o e execute o que você compilou.