Run deploy scripts for new incentivized contract and mint tokens per account

This commit is contained in:
stubbsta 2025-06-25 15:24:21 +02:00
parent 5f0dfb50ea
commit 2aa54603b6
No known key found for this signature in database
2 changed files with 71 additions and 15 deletions

View File

@ -2,7 +2,9 @@
set -e
# 1. Install foundry and pnpm
# 1. Install foundry, pnpm, and required tools
apt update && apt install -y jq
curl -L https://foundry.paradigm.xyz | bash && . /root/.bashrc && foundryup && export PATH=$PATH:$HOME/.foundry/bin
echo "installing pnpm..."
@ -21,10 +23,7 @@ fi
cd /waku-rlnv2-contract
git checkout $RLN_CONTRACT_REPO_COMMIT
#3. Replace the hardcoded MAX_MESSAGE_LIMIT
sed -i "s/\b100\b/${MAX_MESSAGE_LIMIT}/g" script/Deploy.s.sol
# 4. Compile
# 3. Compile Contract Repo
echo "forge install..."
forge install
echo "pnpm install..."
@ -32,7 +31,7 @@ pnpm install
echo "forge build..."
forge build
# 5. Export environment variables
# 4. Export environment variables
export RCL_URL=$RCL_URL
export PRIVATE_KEY=$PRIVATE_KEY
export ETH_FROM=$ETH_FROM
@ -41,5 +40,61 @@ export API_KEY_ETHERSCAN=123
export API_KEY_CARDONA=123
export API_KEY_LINEASCAN=123
# 6. Deploy the contract
forge script script/Deploy.s.sol:Deploy --rpc-url $RPC_URL --broadcast -vv --private-key $PRIVATE_KEY --sender $ETH_FROM
# 5. Deploy the TestToken
echo "\nDeploying TestToken (ERC20 Token Contract)...\n"
forge script test/TestToken.sol --broadcast -vv --rpc-url http://foundry:8545 --tc TestTokenFactory --private-key $PRIVATE_KEY
export TOKEN_ADDRESS=0x5FbDB2315678afecb367f032d93F642f64180aa3
echo "\nDeploying LinearPriceCalculator Contract..."
forge script script/Deploy.s.sol --broadcast -vv --rpc-url http://foundry:8545 --tc DeployPriceCalculator --private-key $PRIVATE_KEY
echo "\nDeploying RLN contract..."
forge script script/Deploy.s.sol --broadcast -vv --rpc-url http://foundry:8545 --tc DeployWakuRlnV2 --private-key $PRIVATE_KEY
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"

View File

@ -38,16 +38,17 @@ services:
labels:
com.centurylinklabs.watchtower.enable: '${WATCHTOWER_ENABLED:-false}'
environment:
- RLN_CONTRACT_REPO_COMMIT=${RLN_CONTRACT_REPO_COMMIT:-64df4593c6a14e43b8b0e9b396d2f4772bb08b34}
- RLN_CONTRACT_REPO_COMMIT=${RLN_CONTRACT_REPO_COMMIT:-ad0dc9a81d892864ac2576d74e628ce93da592ef}
- PRIVATE_KEY=${PRIVATE_KEY}
- RPC_URL=${RPC_URL:-http://foundry:8545}
- ETH_FROM=${ETH_FROM}
- MAX_MESSAGE_LIMIT=${MAX_MESSAGE_LIMIT:-20}
- NUM_NWAKU_NODES=${NUM_NWAKU_NODES:-5}
entrypoint: sh
command:
- '/opt/deploy_rln_contract.sh'
- '/opt/deploy_new_contract.sh'
volumes:
- ./deploy_rln_contract.sh:/opt/deploy_rln_contract.sh
- ./deploy_new_contract.sh:/opt/deploy_new_contract.sh
- privatekeys-volume:/shared
depends_on:
- foundry
networks:
@ -82,11 +83,11 @@ services:
entrypoint: sh
environment:
- RPC_URL=${RPC_URL:-http://foundry:8545}
- RLN_CONTRACT_ADDRESS=0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9
- RLN_CONTRACT_ADDRESS=0x5FC8d32690cc91D4c39d9d3abcBD16989F875707
- RLN_CREDENTIAL_PATH=/keystore.json
- RLN_CREDENTIAL_PASSWORD=passw123
- RLN_RELAY_MSG_LIMIT=${RLN_RELAY_MSG_LIMIT:-10}
- RLN_RELAY_EPOCH_SEC=${RLN_RELAY_EPOCH_SEC:-60}
- RLN_RELAY_MSG_LIMIT=${RLN_RELAY_MSG_LIMIT:-100}
- RLN_RELAY_EPOCH_SEC=${RLN_RELAY_EPOCH_SEC:-600}
command:
- '/opt/run_nwaku.sh'
volumes: