Issuer
Requirements
Prepare environment
-
Add the ABI source for generating contract bindings. This procedure is requested only when the contract definition changes. You just need to copy the
artifacts/contracts/IDentity.sol/Identity.json
ABI file in thesmart-contracts
directory. Abi sources are generated in the smart contracts repo. -
Create a
.env
file starting from.env.example
and update the values accordingly to your development enviroment.
# Example from .env.example
# Rust flags
RUST_BACKTRACE=1
RUST_LOG=debug # minimum level of logging, also "info" is a possible value
# HTTP SERVER SETUP
HOST_ADDRESS=127.0.0.1 # "0.0.0.0" for deploying, "127.0.0.1" for dev
HOST_PORT=3213
# DLT CONFIG
NODE_URL="https://api.testnet.shimmer.network"
FAUCET_API_ENDPOINT="https://faucet.testnet.shimmer.network/api/enqueue"
RPC_PROVIDER="https://json-rpc.evm.testnet.shimmer.network"
CHAIN_ID=1073
# KEY STORAGE CONFIGURATION
KEY_STORAGE_STRONGHOLD_SNAPSHOT_PATH="./key_storage.stronghold"
KEY_STORAGE_STRONGHOLD_PASSWORD="some_hopefully_secure_password"
KEY_STORAGE_MNEMONIC="<key storage mnemonic>"
ISSUER_PRIVATE_KEY="<issuer_private_key>"
IDENTITY_SC_ADDRESS="<address of the Identity smart contract>"
# DATABASE CONNECTION CONFIG
DB_USER="<db_user>"
DB_PASSWORD="<db_password>"
DB_NAME="identity"
DB_HOST=<issuer db hostname> # "issuer-postgres" for deploying, "127.0.0.1 " for dev
DB_PORT=5432 # "5432" for deploying, "5433" for dev
DB_MAX_POOL_SIZE=16
Running the Application
- Start up the database by running:
docker compose --profile dev up -d
- Run the issuer service
# Run command in debug mode
cd server
cargo run --profile develop
Sometimes it may be useful to override .env
parameters using cli args.
The complete list of parameters is available typing the cargo run --profile develop -- --help
command
For example, it is possible to define parameters for testing on different nodes:
cd server
# For local node Provider
cargo run --profile develop -- --rpc-provider "http://127.0.0.1:8545/" --chain-id 31337
# For Shimmer Provider
cargo run --profile develop -- --rpc-provider "https://json-rpc.evm.testnet.shimmer.network" --chain-id 1073
# For Sepolia
cargo run --profile develop -- --rpc-provider https://sepolia.infura.io/v3/<API_KEY> --chain-id 11155111
Run everything via Docker
Beware of the configuration of the environment variables. In addition, update the docker-compose.yaml
accordingly.
Copy the smart contract json files to create the Rust bindings (mandatory if the smart contracts change. There is already a copy in this repo).
# assuming the mediterraneus-smart-contracts folder is located in the same root folder of mediterraneus-connector-rs
cp ../mediterraneus-smart-contracts/artifacts/contracts/Identity.sol/Identity.json ./smart-contracts
Commands to build the app’s container image and launch the app container:
docker compose --profile deploy up -d