working local merkle tree with new contract

This commit is contained in:
stubbsta 2025-04-15 12:38:06 +02:00
parent 20760be4ca
commit 7f9e8dd0c4
No known key found for this signature in database
5 changed files with 143 additions and 77 deletions

View File

@ -0,0 +1,46 @@
#!/bin/sh
set -e
# 1. Install foundry and pnpm
# curl -L https://foundry.paradigm.xyz | bash && . /root/.bashrc && foundryup &&
export PATH=$PATH:$HOME/.foundry/bin
export RLN_CONTRACT_REPO_COMMIT=64df4593c6a14e43b8b0e9b396d2f4772bb08b34
echo "installing pnpm..."
npm install -g pnpm
# 2. Clone and build the repository
if [ ! -d "waku-rlnv2-contract" ]; then
git clone https://github.com/waku-org/waku-rlnv2-contract.git
fi
if [ -z "$RLN_CONTRACT_REPO_COMMIT" ]; then
echo "RLN_CONTRACT_REPO_COMMIT is not set"
exit 1
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
echo "forge install..."
forge install
echo "pnpm install..."
pnpm install
echo "forge build..."
forge build
# 5. Export environment variables
export RCL_URL=https://sepolia.infura.io/v3/25ec875c07fe43f7b246d633ea76263c
export PRIVATE_KEY=7eef3db90edfb2cd6d733587317fb14521d7ef10391362639f5fb081046966f4
export ETH_FROM=0x0BFb9Db85a8b6eF81490B3Ad8f6f914570141a49
# Dummy values
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

View File

@ -57,38 +57,38 @@ CONTRACT_ADDRESS=0x5FC8d32690cc91D4c39d9d3abcBD16989F875707
# forge script test/TestToken.sol --broadcast -vvvv --rpc-url http://foundry:8545 --tc TestTokenFactory --private-key 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d
# export TOKEN2=0x0165878A594ca255338adfa4d48449f69242Eb8F
echo "Minting...1"
cast send $TOKEN_ADDRESS "mint(address,uint256)" $ETH_FROM 90000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
cast send $TOKEN_ADDRESS "approve(address,uint256)" $CONTRACT_ADDRESS 3000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
cast send $TOKEN_ADDRESS "mint(address,uint256)" $ETH_FROM 900000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
cast send $TOKEN_ADDRESS "approve(address,uint256)" $CONTRACT_ADDRESS 30000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
echo "Transfer tokens from account1 to others..."
# account1 transfers tokens to account2
# cast send $TOKEN_ADDRESS "transfer(address,uint256)" 0x70997970c51812dc3a010c7d01b50e0d17dc79c8 3000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
# cast send $TOKEN_ADDRESS "transfer(address,uint256)" 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC 3000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
# cast send $TOKEN_ADDRESS "transfer(address,uint256)" 0x90F79bf6EB2c4f870365E785982E1f101E93b906 1100000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
# cast send $TOKEN_ADDRESS "transfer(address,uint256)" 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 1000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
cast send $TOKEN_ADDRESS "transfer(address,uint256)" 0x70997970c51812dc3a010c7d01b50e0d17dc79c8 30000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
cast send $TOKEN_ADDRESS "transfer(address,uint256)" 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC 10000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
cast send $TOKEN_ADDRESS "transfer(address,uint256)" 0x90F79bf6EB2c4f870365E785982E1f101E93b906 10000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
cast send $TOKEN_ADDRESS "transfer(address,uint256)" 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 10000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
echo "Minting..2"
# account2 approves the smart contract
# cast send --from 0x70997970c51812dc3a010c7d01b50e0d17dc79c8 $TOKEN_ADDRESS "approve(address,uint256)" $CONTRACT_ADDRESS 3000000000000000000 --private-key 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d --rpc-url $RPC_URL
# echo "Allowance:"
# cast call $TOKEN_ADDRESS "allowance(address,address)" 0x70997970c51812dc3a010c7d01b50e0d17dc79c8 $CONTRACT_ADDRESS --rpc-url $RPC_URL --private-key $PRIVATE_KEY
cast send --from 0x70997970c51812dc3a010c7d01b50e0d17dc79c8 $TOKEN_ADDRESS "approve(address,uint256)" $CONTRACT_ADDRESS 30000000000000000000 --private-key 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d --rpc-url $RPC_URL
echo "Allowance:"
cast call $TOKEN_ADDRESS "allowance(address,address)" 0x70997970c51812dc3a010c7d01b50e0d17dc79c8 $CONTRACT_ADDRESS --rpc-url $RPC_URL --private-key $PRIVATE_KEY
export ID_COMMITMENT=1234
export RATE_LIMIT=20
export PATH=$PATH:$HOME/.foundry/bin
echo "REGISTERING"
# TX_HASH=$(cast send $CONTRACT_ADDRESS "register(uint256,uint32,uint256[])" $ID_COMMITMENT $RATE_LIMIT "[]" --rpc-url $RPC_URL --private-key $private_key)
# export ID_COMMITMENT=1234
# export RATE_LIMIT=20
# export PATH=$PATH:$HOME/.foundry/bin
# echo "REGISTERING"
# TX_HASH=$(cast send $CONTRACT_ADDRESS "register(uint256,uint32,uint256[])" $ID_COMMITMENT $RATE_LIMIT "[]" --rpc-url $RPC_URL --private-key $PRIVATE_KEY)
# echo "Transaction hash: $TX_HASH"
# echo "Minting..3"
# cast send --from 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC $TOKEN_ADDRESS "approve(address,uint256)" $CONTRACT_ADDRESS 2000000000000000000 --private-key 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a --rpc-url $RPC_URL
echo "Minting..3"
cast send --from 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC $TOKEN_ADDRESS "approve(address,uint256)" $CONTRACT_ADDRESS 2000000000000000000 --private-key 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a --rpc-url $RPC_URL
# cast call $TOKEN_ADDRESS "allowance(address,address)" 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC $CONTRACT_ADDRESS --rpc-url $RPC_URL --private-key 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a
# # echo "Minting..4"
# cast send --from 0x90F79bf6EB2c4f870365E785982E1f101E93b906 $TOKEN_ADDRESS "approve(address,uint256)" $CONTRACT_ADDRESS 1100000000000000000 --private-key 0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6 --rpc-url $RPC_URL
# cast send --from 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 $TOKEN_ADDRESS "approve(address,uint256)" $CONTRACT_ADDRESS 1000000000000000000 --private-key 0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a --rpc-url $RPC_URL
echo "Minting..4"
cast send --from 0x90F79bf6EB2c4f870365E785982E1f101E93b906 $TOKEN_ADDRESS "approve(address,uint256)" $CONTRACT_ADDRESS 2000000000000000000 --private-key 0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6 --rpc-url $RPC_URL
cast send --from 0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65 $TOKEN_ADDRESS "approve(address,uint256)" $CONTRACT_ADDRESS 2000000000000000000 --private-key 0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a --rpc-url $RPC_URL
# cast send $TOKEN_ADDRESS "mint(address,uint256)" 0x70997970c51812dc3a010c7d01b50e0d17dc79c8 3000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
# cast send $TOKEN_ADDRESS "approve(address,uint256)" 0x70997970c51812dc3a010c7d01b50e0d17dc79c8 3000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
# cast send $TOKEN_ADDRESS "approve(address,uint256)" $CONTRACT_ADDRESS 3000000000000000000 --private-key 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d --rpc-url $RPC_URL
# cast send $TOKEN_ADDRESS "approve(address,uint256)" $CONTRACT_ADDRESS 3000000000000000000 --private-key 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d --rpc-url $RPC_URL
# "private_keys":["0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80","0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d","0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a","0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6","0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a","0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba",
# echo "Minting...3"
# cast send $TOKEN_ADDRESS "mint(address,uint256)" 0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc 3000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL
# cast send $TOKEN_ADDRESS "approve(address,uint256)" 0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc 3000000000000000000 --private-key $PRIVATE_KEY --rpc-url $RPC_URL

View File

@ -44,7 +44,8 @@ services:
- ETH_FROM=${ETH_FROM}
- MAX_MESSAGE_LIMIT=${MAX_MESSAGE_LIMIT:-20}
entrypoint: sh
tty: true
command:
- '/opt/deploy_rln_contract.sh'
volumes:
- ./deploy_rln_contract.sh:/opt/deploy_rln_contract.sh
depends_on:
@ -53,7 +54,7 @@ services:
- simulation
bootstrap:
image: ${NWAKU_IMAGE:-wakuorg/nwaku:latest}
image: ubuntu:24.04
restart: on-failure
labels:
com.centurylinklabs.watchtower.enable: '${WATCHTOWER_ENABLED:-false}'
@ -67,46 +68,50 @@ services:
command:
- '/opt/run_bootstrap.sh'
volumes:
- /home/stubbsta/work-repos/nwaku_jswaku_keystore/nwaku/build/wakunode2:/usr/bin/wakunode:Z
- ./run_bootstrap.sh:/opt/run_bootstrap.sh:Z
- /home/stubbsta/work-repos/nwaku_jswaku_keystore/nwaku/libnegentropy.so:/usr/bin/libnegentropy.so:Z
networks:
- simulation
# nwaku:
# image: ${NWAKU_IMAGE:-wakuorg/nwaku:latest}
# restart: on-failure
# labels:
# com.centurylinklabs.watchtower.enable: '${WATCHTOWER_ENABLED:-false}'
# deploy:
# replicas: ${NUM_NWAKU_NODES:-5}
# entrypoint: sh
# environment:
# - RPC_URL=${RPC_URL:-http://foundry:8545}
# - 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}
# command:
# - '/opt/run_nwaku.sh'
# volumes:
# - ./run_nwaku.sh:/opt/run_nwaku.sh:Z
# - privatekeys-volume:/shared
# depends_on:
# contract-repo-deployer:
# condition: service_completed_successfully
# networks:
# - simulation
nwaku:
image: ubuntu:24.04
restart: on-failure
labels:
com.centurylinklabs.watchtower.enable: '${WATCHTOWER_ENABLED:-false}'
deploy:
replicas: ${NUM_NWAKU_NODES:-5}
entrypoint: sh
environment:
- RPC_URL=${RPC_URL:-http://foundry:8545}
- 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}
command:
- '/opt/run_nwaku.sh'
volumes:
- /home/stubbsta/work-repos/nwaku_jswaku_keystore/nwaku/build/wakunode2:/usr/bin/wakunode:Z
- ./run_nwaku.sh:/opt/run_nwaku.sh:Z
- privatekeys-volume:/shared
- /home/stubbsta/work-repos/nwaku_jswaku_keystore/nwaku/libnegentropy.so:/usr/bin/libnegentropy.so:Z
depends_on:
contract-repo-deployer:
condition: service_completed_successfully
networks:
- simulation
# rest-traffic:
# image: alrevuelta/rest-traffic:28430f8
# command:
# --multiple-nodes=http://waku-simulator-nwaku-[1..${NUM_NWAKU_NODES:-5}]:8645
# --msg-size-kbytes=${MSG_SIZE_KBYTES:-10}
# --delay-seconds=${TRAFFIC_DELAY_SECONDS:-15}
# networks:
# - simulation
# depends_on:
# - nwaku
rest-traffic:
image: alrevuelta/rest-traffic:28430f8
command:
--multiple-nodes=http://waku-simulator-nwaku-[1..${NUM_NWAKU_NODES:-5}]:8645
--msg-size-kbytes=${MSG_SIZE_KBYTES:-10}
--delay-seconds=${TRAFFIC_DELAY_SECONDS:-15}
networks:
- simulation
depends_on:
- nwaku
prometheus:
image: prom/prometheus:latest

View File

@ -1,9 +1,18 @@
#!/bin/sh
IP=$(ip a | grep "inet " | grep -Fv 127.0.0.1 | sed 's/.*inet \([^/]*\).*/\1/')
echo "I am a bootstrap node"
apt update
apt upgrade
apt -y install wget
apt -y install libpq-dev
apt -y install libpcre3
IP=$(ip a | grep "inet " | grep -Fv 127.0.0.1 | sed 's/.*inet \([^/]*\).*/\1/')
MY_EXT_IP=$(wget -qO- https://api4.ipify.org)
chmod a+x /usr/bin/wakunode
exec /usr/bin/wakunode\
--relay=false\
--rest=true\
@ -16,5 +25,5 @@ exec /usr/bin/wakunode\
--metrics-server=True\
--metrics-server-address=0.0.0.0\
--nodekey=30348dd51465150e04a5d9d932c72864c8967f806cce60b5d26afeca1e77eb68\
--nat=extip:${IP}\
--nat=extip:${MY_EXT_IP}\
--cluster-id=66

View File

@ -1,5 +1,14 @@
#!/bin/sh
apt update
apt upgrade
apt -y install wget
apt -y install libpq-dev
apt -y install libpcre3
apt -y install dnsutils
apt -y install jq
apt -y install iproute2
# Check Linux Distro Version - it can differ depending on the nwaku image used
OS=$(cat /etc/os-release)
if echo $OS | grep -q "Debian"; then
@ -94,25 +103,22 @@ if test -f .$RLN_CREDENTIAL_PATH; then
echo "$RLN_CREDENTIAL_PATH already exists. Use it instead of creating a new one."
else
# private_key="$(get_private_key)"
# echo "Private key: $private_key"
private_key="$(get_private_key)"
echo "Private key: $private_key"
# echo "Generating RLN keystore"
# /usr/bin/wakunode generateRlnKeystore \
# --rln-relay-eth-client-address="$RPC_URL" \
# --rln-relay-eth-private-key=$private_key \
# --rln-relay-eth-contract-address=$RLN_CONTRACT_ADDRESS \
# --rln-relay-cred-path=$RLN_CREDENTIAL_PATH \
# --rln-relay-cred-password=$RLN_CREDENTIAL_PASSWORD \
# --rln-relay-user-message-limit=$RLN_RELAY_MSG_LIMIT \
# --rln-relay-epoch-sec=$RLN_RELAY_EPOCH_SEC \
# --log-level=DEBUG \
# --execute
echo "Generating RLN keystore"
/usr/bin/wakunode generateRlnKeystore \
--rln-relay-eth-client-address="$RPC_URL" \
--rln-relay-eth-private-key=$private_key \
--rln-relay-eth-contract-address=$RLN_CONTRACT_ADDRESS \
--rln-relay-cred-path=$RLN_CREDENTIAL_PATH \
--rln-relay-cred-password=$RLN_CREDENTIAL_PASSWORD \
--rln-relay-user-message-limit=$RLN_RELAY_MSG_LIMIT \
--rln-relay-epoch-sec=$RLN_RELAY_EPOCH_SEC \
--log-level=TRACE \
--execute
fi
echo "File list:"
ls -al
echo "I am a nwaku node"
RETRIES=${RETRIES:=10}