diff --git a/bridge-proxy/src/esdt_safe_proxy.rs b/bridge-proxy/src/esdt_safe_proxy.rs index 3e56f004..d0cd9f65 100644 --- a/bridge-proxy/src/esdt_safe_proxy.rs +++ b/bridge-proxy/src/esdt_safe_proxy.rs @@ -80,18 +80,21 @@ where pub fn upgrade< Arg0: ProxyArg>, Arg1: ProxyArg>, - Arg2: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg>, >( self, fee_estimator_contract_address: Arg0, multi_transfer_contract_address: Arg1, - eth_tx_gas_limit: Arg2, + bridge_proxy_contract_address: Arg2, + eth_tx_gas_limit: Arg3, ) -> TxTypedUpgrade { self.wrapped_tx .payment(NotPayable) .raw_upgrade() .argument(&fee_estimator_contract_address) .argument(&multi_transfer_contract_address) + .argument(&bridge_proxy_contract_address) .argument(ð_tx_gas_limit) .original_result() } diff --git a/bridged-tokens-wrapper/src/esdt_safe_proxy.rs b/bridged-tokens-wrapper/src/esdt_safe_proxy.rs index 3e56f004..d0cd9f65 100644 --- a/bridged-tokens-wrapper/src/esdt_safe_proxy.rs +++ b/bridged-tokens-wrapper/src/esdt_safe_proxy.rs @@ -80,18 +80,21 @@ where pub fn upgrade< Arg0: ProxyArg>, Arg1: ProxyArg>, - Arg2: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg>, >( self, fee_estimator_contract_address: Arg0, multi_transfer_contract_address: Arg1, - eth_tx_gas_limit: Arg2, + bridge_proxy_contract_address: Arg2, + eth_tx_gas_limit: Arg3, ) -> TxTypedUpgrade { self.wrapped_tx .payment(NotPayable) .raw_upgrade() .argument(&fee_estimator_contract_address) .argument(&multi_transfer_contract_address) + .argument(&bridge_proxy_contract_address) .argument(ð_tx_gas_limit) .original_result() } diff --git a/esdt-safe/src/lib.rs b/esdt-safe/src/lib.rs index b50c3e52..06e6c73d 100644 --- a/esdt-safe/src/lib.rs +++ b/esdt-safe/src/lib.rs @@ -65,12 +65,15 @@ pub trait EsdtSafe: &self, fee_estimator_contract_address: ManagedAddress, multi_transfer_contract_address: ManagedAddress, + bridge_proxy_contract_address: ManagedAddress, eth_tx_gas_limit: BigUint, ) { self.fee_estimator_contract_address() .set(&fee_estimator_contract_address); self.multi_transfer_contract_address() .set(&multi_transfer_contract_address); + self.bridge_proxy_contract_address(). + set(&bridge_proxy_contract_address); self.eth_tx_gas_limit().set(ð_tx_gas_limit); diff --git a/multi-transfer-esdt/src/bridge_proxy_contract_proxy.rs b/multi-transfer-esdt/src/bridge_proxy_contract_proxy.rs index 842e5d22..5f30fb71 100644 --- a/multi-transfer-esdt/src/bridge_proxy_contract_proxy.rs +++ b/multi-transfer-esdt/src/bridge_proxy_contract_proxy.rs @@ -110,16 +110,12 @@ where .original_result() } - pub fn cancel< - Arg0: ProxyArg, - >( + pub fn update_lowest_tx_id( self, - tx_id: Arg0, ) -> TxTypedCall { self.wrapped_tx .payment(NotPayable) - .raw_call("cancel") - .argument(&tx_id) + .raw_call("updateLowestTxId") .original_result() } diff --git a/multi-transfer-esdt/src/esdt_safe_proxy.rs b/multi-transfer-esdt/src/esdt_safe_proxy.rs index 3e56f004..d0cd9f65 100644 --- a/multi-transfer-esdt/src/esdt_safe_proxy.rs +++ b/multi-transfer-esdt/src/esdt_safe_proxy.rs @@ -80,18 +80,21 @@ where pub fn upgrade< Arg0: ProxyArg>, Arg1: ProxyArg>, - Arg2: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg>, >( self, fee_estimator_contract_address: Arg0, multi_transfer_contract_address: Arg1, - eth_tx_gas_limit: Arg2, + bridge_proxy_contract_address: Arg2, + eth_tx_gas_limit: Arg3, ) -> TxTypedUpgrade { self.wrapped_tx .payment(NotPayable) .raw_upgrade() .argument(&fee_estimator_contract_address) .argument(&multi_transfer_contract_address) + .argument(&bridge_proxy_contract_address) .argument(ð_tx_gas_limit) .original_result() } diff --git a/multi-transfer-esdt/tests/multi_transfer_blackbox_test.rs b/multi-transfer-esdt/tests/multi_transfer_blackbox_test.rs index 8f967610..70f0cc7e 100644 --- a/multi-transfer-esdt/tests/multi_transfer_blackbox_test.rs +++ b/multi-transfer-esdt/tests/multi_transfer_blackbox_test.rs @@ -164,6 +164,7 @@ impl MultiTransferTestState { .upgrade( ManagedAddress::zero(), MULTI_TRANSFER_ADDRESS.to_address(), + BRIDGE_PROXY_ADDRESS.to_address(), ESDT_SAFE_ETH_TX_GAS_LIMIT, ) .code(ESDT_SAFE_CODE_PATH) diff --git a/multisig/interaction/config/menu_functions.cfg b/multisig/interaction/config/menu_functions.cfg index b920c9d7..48c727c5 100644 --- a/multisig/interaction/config/menu_functions.cfg +++ b/multisig/interaction/config/menu_functions.cfg @@ -7,17 +7,12 @@ source $SCRIPTPATH/config/multisig-snippets.sh source $SCRIPTPATH/config/multitransfer-snippets.sh source $SCRIPTPATH/config/proxy-snippets.sh source $SCRIPTPATH/config/relayers-snippets.sh -source $SCRIPTPATH/config/upgrade-snippets.sh source $SCRIPTPATH/config/wrapped-snippets.sh source $SCRIPTPATH/config/safe-snippets.sh source $SCRIPTPATH/config/testing.sh CHECK_VARIABLES ALICE PROXY CHAIN_ID -function upgrade-wrapper { - wrapper-upgrade -} - function upgrade-wrapper-universal-token { wrapper-updateWrappedToken } @@ -54,9 +49,9 @@ function deploy-bridge-contracts { confirmation-with-skip setEsdtSafeOnSCProxy confirmation-with-skip setEsdtSafeOnWrapper - confirmation-with-skip setSCProxyOnWrapper confirmation-with-skip setBridgedTokensWrapperOnEsdtSafe + confirmation-with-skip setSCProxyOnEsdtSafe confirmation-with-skip changeChildContractsOwnershipSafe confirmation-with-skip changeChildContractsOwnershipMultiTransfer @@ -182,6 +177,29 @@ function upgrade-aggregator { aggregator-upgrade } +function upgrade-wrapper { + wrapper-upgrade +} + +function upgrade-safe { + confirmation-with-skip deploySafeForUpgrade + confirmation-with-skip upgradeSafeContract +} + +function upgrade-multi-transfer { + confirmation-with-skip deployMultiTransferForUpgrade + confirmation-with-skip upgradeMultiTransferContract +} + +function upgrade-proxy { + confirmation-with-skip deployBridgeProxyForUpgrade + confirmation-with-skip upgradeBridgeProxyContract +} + +function upgrade-multisig { + confirmation-with-skip upgradeMultisig +} + function faucet-deposit { confirmation-with-skip deployFaucet echo -e diff --git a/multisig/interaction/config/multisig-snippets.sh b/multisig/interaction/config/multisig-snippets.sh index 3eb939eb..a0dade83 100644 --- a/multisig/interaction/config/multisig-snippets.sh +++ b/multisig/interaction/config/multisig-snippets.sh @@ -228,3 +228,18 @@ initSupplyMintBurn() { --arguments str:${CHAIN_SPECIFIC_TOKEN} ${MINT} ${BURN} \ --send --proxy=${PROXY} --chain=${CHAIN_ID} } + +upgradeMultisig() { + CHECK_VARIABLES SAFE MULTI_TRANSFER BRIDGE_PROXY MULTISIG_WASM + + mxpy --verbose contract upgrade ${MULTISIG} --bytecode=${MULTISIG_WASM} --recall-nonce --pem=${ALICE} \ + --gas-limit=100000000 --send \ + --arguments ${SAFE} ${MULTI_TRANSFER} ${BRIDGE_PROXY} \ + --outfile="upgrade-multisig-child-sc.json" --proxy=${PROXY} --chain=${CHAIN_ID} || return + + TRANSACTION=$(mxpy data parse --file="./upgrade-multisig-child-sc.json" --expression="data['emitted_tx']['hash']") + ADDRESS=$(mxpy data parse --file="./upgrade-multisig-child-sc.json" --expression="data['contractAddress']") + + echo "" + echo "Multisig contract updated: ${ADDRESS}" +} diff --git a/multisig/interaction/config/multitransfer-snippets.sh b/multisig/interaction/config/multitransfer-snippets.sh index 61f1d10c..68958542 100644 --- a/multisig/interaction/config/multitransfer-snippets.sh +++ b/multisig/interaction/config/multitransfer-snippets.sh @@ -29,4 +29,27 @@ setBridgedTokensWrapperOnMultiTransfer() { --gas-limit=60000000 --function="setWrappingContractAddress" \ --arguments ${BRIDGED_TOKENS_WRAPPER} \ --send --proxy=${PROXY} --chain=${CHAIN_ID} -} \ No newline at end of file +} + +deployMultiTransferForUpgrade() { + CHECK_VARIABLES MULTI_TRANSFER_WASM + + mxpy --verbose contract deploy --bytecode=${MULTI_TRANSFER_WASM} --recall-nonce --pem=${ALICE} \ + --gas-limit=100000000 --metadata-payable \ + --send --outfile="deploy-multitransfer-upgrade.interaction.json" --proxy=${PROXY} --chain=${CHAIN_ID} || return + + TRANSACTION=$(mxpy data parse --file="./deploy-multitransfer-upgrade.interaction.json" --expression="data['emittedTransactionHash']") + ADDRESS=$(mxpy data parse --file="./deploy-multitransfer-upgrade.interaction.json" --expression="data['contractAddress']") + + echo "" + echo "New multi transfer contract address: ${ADDRESS}" +} + +upgradeMultiTransferContract() { + local NEW_MULTI_TRANSFER_ADDR=$(mxpy data parse --file="./deploy-multitransfer-upgrade.interaction.json" --expression="data['contractAddress']") + + mxpy --verbose contract call ${MULTISIG} --recall-nonce --pem=${ALICE} \ + --gas-limit=400000000 --function="upgradeChildContractFromSource" \ + --arguments ${MULTI_TRANSFER} ${NEW_MULTI_TRANSFER_ADDR} 0x00 \ + --send --outfile="upgrade-multitransfer-child-sc.json" --proxy=${PROXY} --chain=${CHAIN_ID} +} diff --git a/multisig/interaction/config/proxy-snippets.sh b/multisig/interaction/config/proxy-snippets.sh index ffad8187..507815d0 100644 --- a/multisig/interaction/config/proxy-snippets.sh +++ b/multisig/interaction/config/proxy-snippets.sh @@ -43,3 +43,27 @@ setEsdtSafeOnSCProxy() { --arguments ${SAFE} \ --send --proxy=${PROXY} --chain=${CHAIN_ID} } + +deployBridgeProxyForUpgrade() { + CHECK_VARIABLES PROXY_WASM MULTI_TRANSFER + + mxpy --verbose contract deploy --bytecode=${PROXY_WASM} --recall-nonce --pem=${ALICE} \ + --gas-limit=200000000 \ + --arguments ${MULTI_TRANSFER} \ + --send --outfile="deploy-proxy-upgrade.interaction.json" --proxy=${PROXY} --chain=${CHAIN_ID} || return + + TRANSACTION=$(mxpy data parse --file="./deploy-proxy-upgrade.interaction.json" --expression="data['emittedTransactionHash']") + ADDRESS=$(mxpy data parse --file="./deploy-proxy-upgrade.interaction.json" --expression="data['contractAddress']") + + echo "" + echo "New proxy contract address: ${ADDRESS}" +} + +upgradeBridgeProxyContract() { + local NEW_BRIDGE_PROXY_ADDR=$(mxpy data parse --file="./deploy-proxy-upgrade.interaction.json" --expression="data['contractAddress']") + + mxpy --verbose contract call ${MULTISIG} --recall-nonce --pem=${ALICE} \ + --gas-limit=400000000 --function="upgradeChildContractFromSource" \ + --arguments ${BRIDGE_PROXY} ${NEW_BRIDGE_PROXY_ADDR} 0x00 \ + --send --outfile="upgrade-proxy-child-sc.json" --proxy=${PROXY} --chain=${CHAIN_ID} +} diff --git a/multisig/interaction/config/safe-snippets.sh b/multisig/interaction/config/safe-snippets.sh index 988d14af..2adf00fd 100644 --- a/multisig/interaction/config/safe-snippets.sh +++ b/multisig/interaction/config/safe-snippets.sh @@ -43,3 +43,37 @@ setBridgedTokensWrapperOnEsdtSafe() { --arguments ${BRIDGED_TOKENS_WRAPPER} \ --send --proxy=${PROXY} --chain=${CHAIN_ID} } + +setSCProxyOnEsdtSafe() { + CHECK_VARIABLES SAFE BRIDGE_PROXY + + mxpy --verbose contract call ${SAFE} --recall-nonce --pem=${ALICE} \ + --gas-limit=60000000 --function="setBridgeProxyContractAddress" \ + --arguments ${BRIDGE_PROXY} \ + --send --proxy=${PROXY} --chain=${CHAIN_ID} +} + +deploySafeForUpgrade() { + CHECK_VARIABLES SAFE_WASM MULTI_TRANSFER AGGREGATOR BRIDGE_PROXY + + mxpy --verbose contract deploy --bytecode=${SAFE_WASM} --recall-nonce --pem=${ALICE} \ + --gas-limit=150000000 \ + --arguments ${AGGREGATOR} ${MULTI_TRANSFER} 1 \ + --send --outfile="deploy-safe-upgrade.interaction.json" --proxy=${PROXY} --chain=${CHAIN_ID} || return + + TRANSACTION=$(mxpy data parse --file="./deploy-safe-upgrade.interaction.json" --expression="data['emittedTransactionHash']") + ADDRESS=$(mxpy data parse --file="./deploy-safe-upgrade.interaction.json" --expression="data['contractAddress']") + + echo "" + echo "New safe contract address: ${ADDRESS}" +} + +upgradeSafeContract() { + local NEW_SAFE_ADDR=$(mxpy data parse --file="./deploy-safe-upgrade.interaction.json" --expression="data['contractAddress']") + + mxpy --verbose contract call ${MULTISIG} --recall-nonce --pem=${ALICE} \ + --gas-limit=400000000 --function="upgradeChildContractFromSource" \ + --arguments ${SAFE} ${NEW_SAFE_ADDR} 0x00 \ + ${AGGREGATOR} ${MULTI_TRANSFER} ${BRIDGE_PROXY} 1 \ + --send --outfile="upgrade-safe-child-sc.json" --proxy=${PROXY} --chain=${CHAIN_ID} +} diff --git a/multisig/interaction/config/upgrade-snippets.sh b/multisig/interaction/config/upgrade-snippets.sh deleted file mode 100644 index 60c9fa62..00000000 --- a/multisig/interaction/config/upgrade-snippets.sh +++ /dev/null @@ -1,60 +0,0 @@ -#TODO: check & updates upgrade snippets -deploySafeForUpgrade() { - getAggregatorAddressHex - - local ESDT_SAFE_ETH_TX_GAS_LIMIT=20000 # gives us 200$ for multiversx->eth - - mxpy --verbose contract deploy --project=${PROJECT_SAFE} --recall-nonce --pem=${ALICE} \ - --gas-limit=150000000 \ - --arguments 0x${AGGREGATOR_ADDRESS_HEX} ${ESDT_SAFE_ETH_TX_GAS_LIMIT} \ - --send --outfile="deploy-safe-upgrade.interaction.json" --proxy=${PROXY} --chain=${CHAIN_ID} || return - - ADDRESS=$(mxpy data parse --file="./deploy-safe-upgrade.interaction.json" --expression="data['contractAddress']") - - echo "" - echo "Safe contract address: ${ADDRESS}" -} - - -upgradeSafeContract() { - getEsdtSafeAddressHex - getAggregatorAddressHex - local ESDT_SAFE_ETH_TX_GAS_LIMIT=20000 - - local NEW_SAFE_BECH=$(mxpy data parse --file="./deploy-safe-upgrade.interaction.json" --expression="data['contractAddress']") - local NEW_SAFE_ADDR=$(mxpy wallet bech32 --decode $NEW_SAFE_BECH) - - - - mxpy --verbose contract call ${ADDRESS} --recall-nonce --pem=${ALICE} \ - --gas-limit=400000000 --function="upgradeChildContractFromSource" \ - --arguments 0x${ESDT_SAFE_ADDRESS_HEX} 0x${NEW_SAFE_ADDR} 0x00 \ - 0x${AGGREGATOR_ADDRESS_HEX} ${ESDT_SAFE_ETH_TX_GAS_LIMIT} \ - --send --outfile="upgradesafe-child-sc-spam.json" --proxy=${PROXY} --chain=${CHAIN_ID} -} - -upgrade() { - mxpy --verbose contract upgrade ${ADDRESS} --project=${PROJECT} --recall-nonce --pem=${ALICE} \ - --gas-limit=100000000 --send --outfile="upgrade.json" --proxy=${PROXY} --chain=${CHAIN_ID} || return -} - -upgradeMultisig() { - CHECK_VARIABLES RELAYER_ADDR_0 RELAYER_ADDR_1 RELAYER_ADDR_2 RELAYER_ADDR_3 \ - RELAYER_ADDR_4 RELAYER_ADDR_5 RELAYER_ADDR_6 RELAYER_ADDR_7 RELAYER_ADDR_8 \ - RELAYER_ADDR_9 SAFE MULTI_TRANSFER RELAYER_REQUIRED_STAKE SLASH_AMOUNT QUORUM MULTISIG MULTISIG_WASM - - MIN_STAKE=$(echo "$RELAYER_REQUIRED_STAKE*10^18" | bc) - mxpy --verbose contract upgrade ${MULTISIG} --bytecode=${MULTISIG_WASM} --recall-nonce --pem=${ALICE} \ - --gas-limit=200000000 \ - --arguments ${SAFE} ${MULTI_TRANSFER} ${BRIDGE_PROXY} \ - --send --outfile="deploy-testnet.interaction.json" --proxy=${PROXY} --chain=${CHAIN_ID} || return - - TRANSACTION=$(mxpy data parse --file="./deploy-testnet.interaction.json" --expression="data['emitted_tx']['hash']") - ADDRESS=$(mxpy data parse --file="./deploy-testnet.interaction.json" --expression="data['contractAddress']") - - mxpy data store --key=address-testnet-multisig --value=${ADDRESS} - mxpy data store --key=deployTransaction-testnet --value=${TRANSACTION} - - echo "" - echo "Multisig contract address: ${ADDRESS}" -} \ No newline at end of file diff --git a/multisig/interaction/config/wrapped-snippets.sh b/multisig/interaction/config/wrapped-snippets.sh index 60bba5e6..87a1fc0e 100644 --- a/multisig/interaction/config/wrapped-snippets.sh +++ b/multisig/interaction/config/wrapped-snippets.sh @@ -137,12 +137,3 @@ setEsdtSafeOnWrapper() { --arguments ${SAFE} \ --send --proxy=${PROXY} --chain=${CHAIN_ID} } - -setSCProxyOnWrapper() { - CHECK_VARIABLES BRIDGED_TOKENS_WRAPPER BRIDGE_PROXY - - mxpy --verbose contract call ${BRIDGED_TOKENS_WRAPPER} --recall-nonce --pem=${ALICE} \ - --gas-limit=60000000 --function="setBridgeProxyContractAddress" \ - --arguments ${BRIDGE_PROXY} \ - --send --proxy=${PROXY} --chain=${CHAIN_ID} -} diff --git a/multisig/interaction/script.sh b/multisig/interaction/script.sh index 1fe0cd7f..84e5fb17 100755 --- a/multisig/interaction/script.sh +++ b/multisig/interaction/script.sh @@ -13,10 +13,6 @@ case "$1" in confirmation deploy-bridge-contracts ;; -'upgrade-wrapper') - confirmation upgrade-wrapper - ;; - 'add-relayer') confirmation addBoardMember ;; @@ -95,6 +91,26 @@ case "$1" in confirmation upgrade-aggregator ;; +'upgrade-wrapper') + confirmation upgrade-wrapper + ;; + +'upgrade-safe') + confirmation upgrade-safe + ;; + +'upgrade-multi-transfer') + confirmation upgrade-multi-transfer + ;; + +'upgrade-proxy') + confirmation upgrade-proxy + ;; + +'upgrade-multisig') + confirmation upgrade-multisig + ;; + 'whitelist-native-token') confirmation whitelist-native-token ;; @@ -111,7 +127,8 @@ case "$1" in echo "Usage: Invalid choice: '"$1"'" echo -e echo "Choose from:" - echo " { \"deploy-bridge-contracts\", \"upgrade-aggregator\", \"upgrade-wrapper\", " + echo " { \"deploy-bridge-contracts\", " + echo " \"upgrade-aggregator\", \"upgrade-wrapper\", \"upgrade-safe\", \"upgrade-multi-transfer\", \"upgrade-proxy\", \"upgrade-multisig\" " echo " \"pause-contracts\", \"unpause-contracts\", \"add-relayer\", \"remove-relayer\", " echo " \"set-safe-max-tx\", \"set-safe-batch-block-duration\", \"change-quorum\", \"set-swap-fee\", " echo " \"whitelist-token\", \"whitelist-native-token\", \"remove-whitelist-token\", \"upgrade-wrapper-universal-token\", \"upgrade-wrapper-chain-specific-token\", " diff --git a/multisig/src/bridge_proxy_contract_proxy.rs b/multisig/src/bridge_proxy_contract_proxy.rs index 842e5d22..5f30fb71 100644 --- a/multisig/src/bridge_proxy_contract_proxy.rs +++ b/multisig/src/bridge_proxy_contract_proxy.rs @@ -110,16 +110,12 @@ where .original_result() } - pub fn cancel< - Arg0: ProxyArg, - >( + pub fn update_lowest_tx_id( self, - tx_id: Arg0, ) -> TxTypedCall { self.wrapped_tx .payment(NotPayable) - .raw_call("cancel") - .argument(&tx_id) + .raw_call("updateLowestTxId") .original_result() } diff --git a/multisig/src/esdt_safe_proxy.rs b/multisig/src/esdt_safe_proxy.rs index 3e56f004..d0cd9f65 100644 --- a/multisig/src/esdt_safe_proxy.rs +++ b/multisig/src/esdt_safe_proxy.rs @@ -80,18 +80,21 @@ where pub fn upgrade< Arg0: ProxyArg>, Arg1: ProxyArg>, - Arg2: ProxyArg>, + Arg2: ProxyArg>, + Arg3: ProxyArg>, >( self, fee_estimator_contract_address: Arg0, multi_transfer_contract_address: Arg1, - eth_tx_gas_limit: Arg2, + bridge_proxy_contract_address: Arg2, + eth_tx_gas_limit: Arg3, ) -> TxTypedUpgrade { self.wrapped_tx .payment(NotPayable) .raw_upgrade() .argument(&fee_estimator_contract_address) .argument(&multi_transfer_contract_address) + .argument(&bridge_proxy_contract_address) .argument(ð_tx_gas_limit) .original_result() } diff --git a/multisig/tests/multisig_blackbox_test.rs b/multisig/tests/multisig_blackbox_test.rs index 14aadfff..fba5a36c 100644 --- a/multisig/tests/multisig_blackbox_test.rs +++ b/multisig/tests/multisig_blackbox_test.rs @@ -207,6 +207,7 @@ impl MultiTransferTestState { .upgrade( ManagedAddress::zero(), MULTI_TRANSFER_ADDRESS.to_address(), + BRIDGE_PROXY_ADDRESS.to_address(), ESDT_SAFE_ETH_TX_GAS_LIMIT, ) .code(ESDT_SAFE_CODE_PATH)