mirror of
https://github.com/logos-messaging/logos-messaging-simulator.git
synced 2026-01-10 01:43:07 +00:00
Add service to manage RLN contract token minting per nwaku service
This commit is contained in:
parent
2aa54603b6
commit
c6b201d264
@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
@ -55,46 +55,8 @@ echo "\nDeploying Proxy contract..."
|
||||
forge script script/Deploy.s.sol --broadcast -vvv --rpc-url http://foundry:8545 --tc DeployProxy --private-key $PRIVATE_KEY
|
||||
export CONTRACT_ADDRESS=0x5FC8d32690cc91D4c39d9d3abcBD16989F875707
|
||||
|
||||
# 6. Setup tokens for nwaku nodes
|
||||
echo "\nSetting up tokens for nwaku nodes..."
|
||||
|
||||
# Read anvil config to get addresses and private keys
|
||||
ANVIL_CONFIG=$(cat /shared/anvil-config.txt)
|
||||
ADDRESSES=$(echo "$ANVIL_CONFIG" | jq -r '.available_accounts[]')
|
||||
echo "Available addresses: $ADDRESSES"
|
||||
PRIVATE_KEYS=$(echo "$ANVIL_CONFIG" | jq -r '.private_keys[]')
|
||||
|
||||
# Get number of nwaku nodes from environment (default 5)
|
||||
NUM_NODES=${NUM_NWAKU_NODES:-5}
|
||||
|
||||
echo "Setting up tokens for $NUM_NODES nwaku nodes"
|
||||
|
||||
# Process each account sequentially to ensure reliability
|
||||
node_index=1
|
||||
address_index=1
|
||||
|
||||
echo "$ADDRESSES" | while read ADDRESS; do
|
||||
if [ $node_index -le $NUM_NODES ]; then
|
||||
# Get corresponding private key
|
||||
PRIV_KEY=$(echo "$PRIVATE_KEYS" | sed -n "${address_index}p")
|
||||
|
||||
echo "Setting up tokens for node $node_index: $ADDRESS"
|
||||
|
||||
# Mint tokens to the address
|
||||
echo " Minting tokens..."
|
||||
cast send $TOKEN_ADDRESS "mint(address,uint256)" $ADDRESS 5000000000000000000 --private-key $PRIVATE_KEY --from $ETH_FROM --rpc-url $RPC_URL
|
||||
|
||||
# Approve the RLN contract to spend tokens
|
||||
echo " Approving contract..."
|
||||
cast send $TOKEN_ADDRESS "approve(address,uint256)" $CONTRACT_ADDRESS 5000000000000000000 --private-key $PRIV_KEY --from $ADDRESS --rpc-url $RPC_URL
|
||||
|
||||
echo "✓ Node $node_index setup complete"
|
||||
node_index=$((node_index + 1))
|
||||
else
|
||||
break
|
||||
fi
|
||||
|
||||
address_index=$((address_index + 1))
|
||||
done
|
||||
|
||||
echo "Token setup complete for all nwaku nodes"
|
||||
# 6. Contract deployment completed
|
||||
echo "\nContract deployment completed successfully"
|
||||
echo "TOKEN_ADDRESS: $TOKEN_ADDRESS"
|
||||
echo "CONTRACT_ADDRESS: $CONTRACT_ADDRESS"
|
||||
echo "\nEach account registering a membership needs to first mint the token and approve the contract to spend it on their behalf."
|
||||
@ -26,6 +26,8 @@ services:
|
||||
--allow-origin=*
|
||||
--block-time=12
|
||||
--chain-id=1234
|
||||
--gas-limit=30000000
|
||||
--gas-price=1
|
||||
--silent
|
||||
--config-out=/shared/anvil-config.txt
|
||||
volumes:
|
||||
@ -45,9 +47,9 @@ services:
|
||||
- NUM_NWAKU_NODES=${NUM_NWAKU_NODES:-5}
|
||||
entrypoint: sh
|
||||
command:
|
||||
- '/opt/deploy_new_contract.sh'
|
||||
- '/opt/deploy_rln_contract.sh'
|
||||
volumes:
|
||||
- ./deploy_new_contract.sh:/opt/deploy_new_contract.sh
|
||||
- ./deploy_rln_contract.sh:/opt/deploy_rln_contract.sh
|
||||
- privatekeys-volume:/shared
|
||||
depends_on:
|
||||
- foundry
|
||||
@ -88,11 +90,36 @@ services:
|
||||
- RLN_CREDENTIAL_PASSWORD=passw123
|
||||
- RLN_RELAY_MSG_LIMIT=${RLN_RELAY_MSG_LIMIT:-100}
|
||||
- RLN_RELAY_EPOCH_SEC=${RLN_RELAY_EPOCH_SEC:-600}
|
||||
- TOKEN_ADDRESS=0x5FbDB2315678afecb367f032d93F642f64180aa3
|
||||
- PRIVATE_KEY=${PRIVATE_KEY}
|
||||
command:
|
||||
- '/opt/run_nwaku.sh'
|
||||
volumes:
|
||||
- ./run_nwaku.sh:/opt/run_nwaku.sh:Z
|
||||
- privatekeys-volume:/shared
|
||||
init: true
|
||||
depends_on:
|
||||
contract-repo-deployer:
|
||||
condition: service_completed_successfully
|
||||
nwaku-token-init:
|
||||
condition: service_completed_successfully
|
||||
networks:
|
||||
- simulation
|
||||
|
||||
nwaku-token-init:
|
||||
build:
|
||||
context: ./tools/token-mint-service
|
||||
dockerfile: Dockerfile
|
||||
environment:
|
||||
- RPC_URL=${RPC_URL:-http://foundry:8545}
|
||||
- TOKEN_ADDRESS=0x5FbDB2315678afecb367f032d93F642f64180aa3
|
||||
- CONTRACT_ADDRESS=0x5FC8d32690cc91D4c39d9d3abcBD16989F875707
|
||||
- PRIVATE_KEY=${PRIVATE_KEY}
|
||||
- NUM_NWAKU_NODES=${NUM_NWAKU_NODES:-5}
|
||||
deploy:
|
||||
replicas: ${NUM_NWAKU_NODES:-5}
|
||||
volumes:
|
||||
- privatekeys-volume:/shared
|
||||
depends_on:
|
||||
contract-repo-deployer:
|
||||
condition: service_completed_successfully
|
||||
|
||||
@ -4,7 +4,7 @@ NWAKU_IMAGE=harbor.status.im/wakuorg/nwaku:latest
|
||||
NUM_NWAKU_NODES=50
|
||||
# Simulation traffic.
|
||||
MSG_SIZE_KBYTES=10
|
||||
TRAFFIC_DELAY_SECONDS=30
|
||||
TRAFFIC_DELAY_SECONDS=6
|
||||
# Enable automatic Docker image updates.
|
||||
WATCHTOWER_ENABLED=true
|
||||
# Anvil RPC Node external IP and port
|
||||
@ -12,8 +12,7 @@ RPC_URL=http://foundry:8545
|
||||
# Contract-deployment
|
||||
PRIVATE_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
|
||||
ETH_FROM=0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266
|
||||
MAX_MESSAGE_LIMIT=100
|
||||
# RLNv2 limits
|
||||
RLN_RELAY_MSG_LIMIT=100
|
||||
RLN_RELAY_EPOCH_SEC=600
|
||||
RLN_CONTRACT_REPO_COMMIT=64df4593c6a14e43b8b0e9b396d2f4772bb08b34
|
||||
RLN_CONTRACT_REPO_COMMIT=ad0dc9a81d892864ac2576d74e628ce93da592ef
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user