diff --git a/deploy_rln_contract.sh b/deploy_rln_contract.sh index 894a9e6..8872e44 100644 --- a/deploy_rln_contract.sh +++ b/deploy_rln_contract.sh @@ -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" \ No newline at end of file +# 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." \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index f278514..d9476e5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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 diff --git a/wakusim.env b/wakusim.env index 36c1782..77334dc 100644 --- a/wakusim.env +++ b/wakusim.env @@ -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