2024-03-18 14:21:52 +05:30
|
|
|
#/bin/bash
|
|
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
|
|
poseidon_hasher_bytecode="0x608060405234801561001057600080fd5b50613e58806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063b189fd4c1461003b578063e493ef8c1461006b575b600080fd5b61005560048036038101906100509190613dcb565b610089565b6040516100629190613e07565b60405180910390f35b61007361009b565b6040516100809190613e07565b60405180910390f35b6000610094826100bf565b9050919050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000017f09c46e9ec68e9bd4fe1faaba294cba38a71aa177534cdd1b6c7dc0dbd0abd7a77f0c0356530896eec42a97ed937f3135cfc5142b3ae405b8343c1d83ffa604cb81840182828309838385838409099250838283099050838285838409099150837f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e88309847f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad58509019050837f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c88309847f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff985090191508092507f1e28a1d935698ad1142e51182bb54cf4a00ea5aabd6268bd317ea977cc154a30830192507f27af2d831a9d2748080965db30e298e40e5757c3e008db964cf9e2b12b91251f82019150838384099050838385838409099250838283099050838285838409099150837f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e88309847f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad58509019050837f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c88309847f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff985090191508092507f1e6f11ce60fc8f513a6a3cfe16ae175a41291462f214cd0879aaf43545b74e03830192507f2a67384d3bbd5e438541819cb681f0be04462ed14c3613d8f719206268d142d382019150838384099050838385838409099250838283099050838285838409099150837f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e88309847f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad58509019050837f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c88309847f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff985090191508092507f0b66fdf356093a611609f8e12fbfecf0b985e381f025188936408f5d5c9f45d0830192507f012ee3ec1e78d470830c61093c2ade370b26c83cc5cebeeddaa6852dbdb09e2182019150838384099050838385838409099250838283099050838285838409099150837f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e88309847f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad58509019050837f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c88309847f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff985090191508092507f0252ba5f6760bfbdfd88f67f8175e3fd6cd1c431b099b6bb2d108e7b445bb1b9830192507f179474cceca5ff676c6bec3cef54296354391a8935ff71d6ef5aeaad7ca932f182019150838384099050838385838409099250837f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e88309847f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad58509019050837f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c88309847f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff985090191508092507f2c24261379a51bfa9228ff4a503fd4ed9c1f974a264969b37e1a2589bbed2b91830192507f1cc1d7b62692e63eac2f288bd0695b43c2f63f5001fc0fc553e66c0551801b0582019150838384099050838385838409099250837f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e88309847f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad58509019050837f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c88309847f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff985090191508092507f255059301aada98bb2ed55f852979e9600784dbf17fbacd05d9eff5fd9c91b56830192507f28437be3ac1cb2e479e1f5c0eccd32b3aea24234970a8193b11c29ce7e59efd982019150838384099050838385838409099250837f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e88309847f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad58509019050837f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c88309847f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff985090191508092507f28216a442f2e1f711ca4fa6b53766eb118548da8fb4f78d4338762c
|
|
|
|
|
|
|
|
|
|
waku_rln_registry_impl_bytecode="0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506000606760006101000a81548161ffff021916908361ffff16021790555034801561006157600080fd5b506080516142c36100996000396000818161059e0152818161062f015281816107bf01528181610850015261090901526142c36000f3fe608060405260043610620001165760003560e01c80638da5cb5b11620000a3578063d44fda1f116200006d578063d44fda1f1462000315578063ef653d5e146200032f578063f184ef4c146200035d578063f2fde38b146200038d578063f554214714620003bb5762000116565b80638da5cb5b1462000259578063ab02492a1462000289578063c4d66de814620002b7578063cf61637414620002e55762000116565b80634f1ef28611620000e55780634f1ef28614620001c157806352d1902d14620001e1578063715018a614620002115780637a34289d146200022b5762000116565b806326e0fc1f146200011b578063331b6ab314620001495780633659cfe6146200017957806342f542e214620001a7575b600080fd5b3480156200012857600080fd5b5062000147600480360381019062000141919062001cf0565b620003ff565b005b3480156200015657600080fd5b506200016162000576565b60405162000170919062001dc2565b60405180910390f35b3480156200018657600080fd5b50620001a560048036038101906200019f919062001e24565b6200059c565b005b348015620001b457600080fd5b50620001bf62000734565b005b620001df6004803603810190620001d9919062001fb8565b620007bd565b005b348015620001ee57600080fd5b50620001f962000905565b60405162000208919062002039565b60405180910390f35b3480156200021e57600080fd5b5062000229620009c1565b005b3480156200023857600080fd5b50620002576004803603810190620002519190620020bf565b620009d9565b005b3480156200026657600080fd5b506200027162000c95565b60405162000280919062002125565b60405180910390f35b3480156200029657600080fd5b50620002b56004803603810190620002af919062002142565b62000cbf565b005b348015620002c457600080fd5b50620002e36004803603810190620002dd919062001e24565b62000dc2565b005b348015620002f257600080fd5b50620002fd62000f50565b6040516200030c9190620021bd565b60405180910390f35b3480156200032257600080fd5b506200032d62000f64565b005b3480156200033c57600080fd5b506200035b600480360381019062000355919062001e24565b620010ce565b005b3480156200036a57600080fd5b506200037562001366565b604051620003849190620021bd565b60405180910390f35b3480156200039a57600080fd5b50620003b96004803603810190620003b3919062001e24565b6200137a565b005b348015620003c857600080fd5b50620003e76004803603810190620003e19190620021da565b62001404565b604051620003f6919062002125565b60405180910390f35b606560009054906101000a900461ffff1661ffff168261ffff161062000451576040517fd23276a200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600167ffffffffffffffff81111562000471576200047062001e71565b5b604051908082528060200260200182016040528015620004a05781602001602082028036833780820191505090505b5090508181600081518110620004bb57620004ba6200220c565b5b602002602001018181525050606660008461ffff1661ffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637a34289d826040518263ffffffff1660e01b81526004016200053d919062002309565b600060405180830381600087803b1580156200055857600080fd5b505af11580156200056d573d6000803e3d6000fd5b50505050505050565b606760029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16036200062d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062490620023b4565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166200066e62001437565b73ffffffffffffffffffffffffffffffffffffffff1614620006c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006be906200244c565b60405180910390fd5b620006d28162001490565b6200073181600067ffffffffffffffff811115620006f557620006f462001e71565b5b6040519080825280601f01601f191660200182016040528015620007285781602001600182028036833780820191505090505b5060006200149d565b50565b6200073e6200161c565b6000606760029054906101000a900473ffffffffffff
|
|
|
|
|
|
|
|
|
|
waku_rln_registry_proxy_bytecode="0x608060405260405162000c6438038062000c6483398181016040528101906200002991906200058a565b6200003d828260006200004560201b60201c565b5050620007e1565b62000056836200008860201b60201c565b600082511180620000645750805b156200008357620000818383620000df60201b620000371760201c565b505b505050565b62000099816200011560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606200010d838360405180606001604052806027815260200162000c3d60279139620001eb60201b60201c565b905092915050565b6200012b816200027d60201b620000641760201c565b6200016d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001649062000677565b60405180910390fd5b80620001a77f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620002a060201b620000871760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051620002179190620006e6565b600060405180830381855af49150503d806000811462000254576040519150601f19603f3d011682016040523d82523d6000602084013e62000259565b606091505b50915091506200027286838387620002aa60201b60201c565b925050509392505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000819050919050565b606083156200031a5760008351036200031157620002ce856200027d60201b60201c565b62000310576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000307906200074f565b60405180910390fd5b5b8290506200032d565b6200032c83836200033560201b60201c565b5b949350505050565b600082511115620003495781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200037f9190620007bd565b60405180910390fd5b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003c9826200039c565b9050919050565b620003db81620003bc565b8114620003e757600080fd5b50565b600081519050620003fb81620003d0565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000456826200040b565b810181811067ffffffffffffffff821117156200047857620004776200041c565b5b80604052505050565b60006200048d62000388565b90506200049b82826200044b565b919050565b600067ffffffffffffffff821115620004be57620004bd6200041c565b5b620004c9826200040b565b9050602081019050919050565b60005b83811015620004f6578082015181840152602081019050620004d9565b8381111562000506576000848401525b50505050565b6000620005236200051d84620004a0565b62000481565b90508281526020810184848401111562000542576200054162000406565b5b6200054f848285620004d6565b509392505050565b600082601f8301126200056f576200056e62000401565b5b8151620005818482602086016200050c565b91505092915050565b60008060408385031215620005a457620005a362000392565b5b6000620005b485828601620003ea565b925050602083015167ffffffffffffffff811115620005d857620005d762000397565b5b620005e68582860162000557565b9150509250929050565b600082825260208201905092915050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b60006200065f602d83620005f0565b91506200066c8262000601565b604082019050919050565b60006020820190508181036000830152620006928162000650565b9050919050565b600081519050919050565b600081905092915050565b6000620006bc8262000699565b620006c88185620006a4565b9350620006da818560208601620004d6565b80840191505092915050565b6000620006f48284620006af565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b600062000737601d83620005f0565b91506200074482620006ff565b602082019050919050565b600060208201905081810360008301526200076a8162000728565b9050919050565b600081519050919050565b6000620007898262000771565b620007958185620005f0565b9350620007a7818560208601620004d6565b620007b2816200040b565b840191505092915050565b60006020820190508181036000830152620007d981846200077c565b905092915050565b61044c80620007f16000396
|
|
|
|
|
|
|
|
|
|
|
2024-03-18 16:48:36 +02:00
|
|
|
echo "Deploying RLN contracts..."
|
2024-03-18 14:21:52 +05:30
|
|
|
|
|
|
|
|
# 1. Deploy Poseidon Hasher
|
|
|
|
|
poseidon_address=$(cast send --rpc-url $RPC_URL --private-key $PRIVATE_KEY --create $poseidon_hasher_bytecode | grep contractAddress | cut -d' ' -f10)
|
|
|
|
|
|
|
|
|
|
# 2. Deploy Waku Rln Registry Implementation
|
|
|
|
|
implementation_address=$(cast send --rpc-url $RPC_URL --private-key $PRIVATE_KEY --create $waku_rln_registry_impl_bytecode | grep contractAddress | cut -d' ' -f10)
|
|
|
|
|
|
|
|
|
|
# 3. Concatenate Waku Rln Registry Proxy Bytecode with constructor arguments in the form of
|
|
|
|
|
# constructor(address implementation, bytes memory data)
|
|
|
|
|
# where data = abi.encodeWithSignature("initialize(address)", address(poseidonHasher))
|
|
|
|
|
|
|
|
|
|
constructor_arguments=$(cast abi-encode "constructor(address impl, bytes data)" "$implementation_address" $(cast calldata "initialize(address)" "$poseidon_address") | cut -c 3-)
|
|
|
|
|
waku_rln_registry_proxy_bytecode_with_constructor_arguments="$waku_rln_registry_proxy_bytecode$constructor_arguments"
|
|
|
|
|
|
|
|
|
|
# 4. Deploy Waku Rln Registry Proxy
|
|
|
|
|
waku_rln_registry_proxy_address=$(cast send --rpc-url $RPC_URL --private-key $PRIVATE_KEY --create $waku_rln_registry_proxy_bytecode_with_constructor_arguments | grep contractAddress | cut -d' ' -f10)
|
|
|
|
|
|
|
|
|
|
# 5. Deploy New Storage
|
|
|
|
|
deploy_new_storage_out=$(cast send --rpc-url $RPC_URL --private-key $PRIVATE_KEY $waku_rln_registry_proxy_address "newStorage()")
|
|
|
|
|
# Fetch the new storage address
|
|
|
|
|
new_storage_address=$(cast call --rpc-url $RPC_URL $waku_rln_registry_proxy_address "storages(uint16)(address)" 0)
|
|
|
|
|
|
|
|
|
|
printf "%-50s %s\n" "Contract" "Contract Address"
|
|
|
|
|
printf "%-50s %s\n" "--------" "----------------"
|
|
|
|
|
|
|
|
|
|
# Print data in table format
|
|
|
|
|
printf "%-50s %s\n" "PoseidonHasher" "$poseidon_address"
|
|
|
|
|
printf "%-50s %s\n" "Waku_Rln_Registry_Implementation" "$implementation_address"
|
|
|
|
|
printf "%-50s %s\n" "Waku_Rln_Registry_Proxy" "$waku_rln_registry_proxy_address"
|
|
|
|
|
printf "%-50s %s\n" "New_Storage" "$new_storage_address"
|