Iris Wallet manages RGB assets from issuance to spending and receiving, wrapping all functionality in a familiar-looking wallet application and abstracting away as many technical details as possible.
The RGB functionality is provided by rgb-lightning-node.
Before you begin, ensure you have the following installed:
- Python 3.12
- Poetry (Python dependency management tool)
- Rust (latest version for compiling the Lightning Node binary)
- Docker (required for running the regtest environment)
Open your terminal and clone the Iris Wallet Desktop repository:
git clone https://github.com/RGB-Tools/iris-wallet-desktop.git
This creates a directory named iris-wallet-desktop
.
Change into the cloned directory:
cd iris-wallet-desktop
Install Poetry using pip:
pip install poetry
Run the following command to install all required dependencies:
poetry install
Compile the resources with PySide6:
poetry shell
pyside6-rcc src/resources.qrc -o src/resources_rc.py
Create a directory for the Lightning Node binary in the iris-wallet-desktop
root directory:
mkdir ln_node_binary
In a different location, clone the RGB Lightning Node repository:
git clone https://github.com/RGB-Tools/rgb-lightning-node --recurse-submodules --shallow-submodules
Navigate to the root folder of the cloned RGB Lightning Node project:
cd rgb-lightning-node
cargo install --debug --path . --locked
Locate the rgb-lightning-node
binary in the target/debug
directory and copy it to the ln_node_binary
folder in the iris-wallet-desktop
directory.
Create a config.py
file in the iris-wallet-desktop
directory and add the following configuration. Replace placeholders with your actual credentials:
# Config file for Google Drive access
client_config = {
'installed': {
'client_id': 'your_client_id_from_google_drive',
'project_id': 'your_project_id',
'auth_uri': 'https://accounts.google.com/o/oauth2/auth',
'token_uri': 'https://oauth2.googleapis.com/token',
'auth_provider_x509_cert_url': 'https://www.googleapis.com/oauth2/v1/certs',
'client_secret': 'your_client_secret',
},
}
-
Log In:
- Access the Google Developer Console.
- Sign in with the Google account for which you want to create credentials.
-
Create a New Project:
- Click on Select a Project in the top right corner.
- Click on New Project, enter a name for your project, and click Create.
-
Enable Google Drive API:
- Once logged in, use the search bar to find and enable Google Drive API.
-
Create Credentials:
- After enabling the API, click on Create Credentials.
- Provide the required information. When setting up the OAuth consent screen, select the Desktop app.
-
Download the JSON File:
- Once the credentials are created, download the JSON file. It will look something like this:
{ "installed": { "client_id": "your_client_id", "project_id": "your_project_id", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_secret": "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", "redirect_uris": ["redirect_uris"] } }
- Important: Remove the
"redirect_uris"
field from the JSON file.
- Once the credentials are created, download the JSON file. It will look something like this:
-
Update Your Configuration:
- Save the modified JSON file and add it to your
config.py
file.
- Save the modified JSON file and add it to your
You can now start the Iris Wallet application using:
poetry run iris-wallet --network=<NETWORK>
Replace <NETWORK>
with either regtest
or testnet
:
-
For Testnet:
poetry run iris-wallet --network=testnet
-
For Regtest:
- First, run the
regtest.sh
script in thergb-lightning-node
directory:./regtest.sh
- Then, start the application:
poetry run iris-wallet --network=regtest
- First, run the
To build the application, ensure you have completed all previous steps and enter the Poetry shell:
poetry shell
build-iris-wallet --network=<NETWORK> --distribution=<DISTRIBUTION> --ldk-port=<port> [optional]
<DISTRIBUTION>
:{appimage,deb}
- If you want the application to run on a specific port, use the
--ldk-port
argument. This is optional and can be ignored if no specific port is required.
poetry run pytest
poetry run pytest unit_tests/tests<TEST_FILE.py>