███████╗███████╗ █████╗ ██╗ ██╗ ██╗ █████╗ ██╗ ██╗██╗ ████████╗
██╔════╝██╔════╝██╔══██╗██║ ██║ ██║██╔══██╗██║ ██║██║ ╚══██╔══╝
███████╗█████╗ ███████║██║ ██║ ██║███████║██║ ██║██║ ██║
╚════██║██╔══╝ ██╔══██║██║ ╚██╗ ██╔╝██╔══██║██║ ██║██║ ██║
███████║███████╗██║ ██║███████╗╚████╔╝ ██║ ██║╚██████╔╝███████╗██║
╚══════╝╚══════╝╚═╝ ╚═╝╚══════╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝
SealVault is an open source project to build a self-custody Web3 key manager app that is primarily used for everyday browsing with social and gaming dapps.
Learn more on the website or subscribe to our newsletter.
Documentation for SealVault developers containing design documents on the security and privacy models of the application and more.
Cross-platform key and transaction management for Web3 written in Rust. Uses SQLite for storage and depends on platform-specific keychain to store key encryption keys. Exposed to host languages via uniffi-rs.
iOS Web3 key manager app with a built-in web browser. Written in Swift with the SwiftUI framework.
Contains various development tools:
- Development server for integration testing in-page providers
- Fuzzer
- TLA+ models
Provides landing page and features for end users, developer documentation for SealVault developers and the SealVault blog. Powered by Material for MkDocs.
On first time setup, install the requirements
listed below and then run ./ci.py
from the repo root to check if everything
was installed correctly. (:warning: The CI script will reset all iOS simulators
on your machine.)
The CI script will also create the generated files for you that are a
prerequisites for an Xcode build. Alternatively you can generate these files by
running fastlane pre_build
in the ios
directory.
- MacOS Monterey and an Apple Silicon Mac for iOS development. You may be able to work on an Intel Mac, but we won't be able to help you with Rust-related build issues as the maintainers are on Apple Silicon.
- XCode 14 IDE and CLI tools get the Xcode IDE from the app store and then run
xcode-select --install
to install CLI tools. - The Homebrew macOS package manager, then run
brew bundle
from the repo root to install the dependencies specified in theBrewfile
. - Run
rustup-init
which was installed from theBrewfile
toolchain and follow the instructions to set up your Rust toolchain. - The Diesel ORM CLI that we use to manage Sqlite (it's
very important to use the bundled Sqlite version as outdated Sqlite make cause
migrations to fail):
cargo install diesel_cli --no-default-features --features sqlite-bundled
- The Solidity compiler
version manager and
solc 0.8.16
that are needed to compile test contracts for unit tests:cargo install svm-rs
thensvm install 0.8.16
- The Foundry Ethereum development tools of which Anvil is needed for unit tests.
- Get Ankr account to get a free Advanced API endpoint and then set up development secrets.
Navigate to the Ankr Advanced API console, copy the endpoint that looks like this: https://rpc.ankr.com/multichain/1234abcde. Extract the API key which is the last part of the URL.
Once you have the API key create the ios/Config.xcconfig
file that is ignored
by git with the following contents:
ANKR_API_KEY=1234abcde
Run all tests from the repo root with: ./ci.py
. (:warning: The CI script will
reset all iOS simulators on your machine.)
- Update Rust toolchain to latest nightly:
rustup update
.- We need nightly for iOS simulator on MacOS Apple Silicon.
- If the CI fails for you locally, make sure you're on the latest nightly.
- Clean Rust build from repo root:
cargo clean
. - Rebuild Rust XCFramework for iOS and regenerate Swift bindings from
ios
directory:fastlane pre_build
- Clean Xcode build from
ios
directory:fastlane clean
.