From d4fc1a7e74b114c83eb79804fa1ea5769d61be14 Mon Sep 17 00:00:00 2001 From: Spablob Date: Tue, 20 May 2025 11:11:28 -0700 Subject: [PATCH 1/4] adjust safe-propose --- script/hardhat/utils/safePropose.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/script/hardhat/utils/safePropose.ts b/script/hardhat/utils/safePropose.ts index db1f6b7c..ae552cec 100644 --- a/script/hardhat/utils/safePropose.ts +++ b/script/hardhat/utils/safePropose.ts @@ -14,15 +14,15 @@ task("safe-propose", "Propose a Safe transaction") .addParam("newversion", "The next version") .setAction(async (taskArgs, hre) => { const chainId = parseInt(taskArgs.chainid) - if (chainId !== Number(process.env.STORY_CHAINID) && chainId !== Number(process.env.STORY_CHAINID_MAINNET)) { - throw new Error('Invalid chainId') - } + const MAINNET_CHAIN_ID = 1514 + const TESTNET_CHAIN_ID = 1315 + if (chainId !== MAINNET_CHAIN_ID && chainId !== TESTNET_CHAIN_ID) throw new Error('Invalid chainId') - const RPC_URL = chainId === Number(process.env.STORY_CHAINID_MAINNET) ? process.env.STORY_URL_MAINNET : process.env.STORY_URL - const SAFE_ADDRESS = chainId === Number(process.env.STORY_CHAINID_MAINNET) ? process.env.SAFE_MULTISIG_MAINNET_ADDRESS : process.env.SAFE_MULTISIG_AENEID_ADDRESS - const SAFE_PROPOSER_ADDRESS = chainId === Number(process.env.STORY_CHAINID_MAINNET) ? process.env.SAFE_PROPOSER_MAINNET_ADDRESS : process.env.SAFE_PROPOSER_AENEID_ADDRESS - const SAFE_PROPOSER_PRIVATE_KEY = chainId === Number(process.env.STORY_CHAINID_MAINNET) ? process.env.SAFE_PROPOSER_MAINNET_PRIVATE_KEY : process.env.SAFE_PROPOSER_AENEID_PRIVATE_KEY - const TX_SERVICE_URL = chainId === Number(process.env.STORY_CHAINID_MAINNET) ? 'https://transaction.safe.story.foundation/api' : 'https://transaction-testnet.safe.story.foundation/api' + const SAFE_PROPOSER_ADDRESS = process.env.SAFE_MULTISIG_PROPOSER_ADDRESS + const SAFE_PROPOSER_PRIVATE_KEY = process.env.SAFE_MULTISIG_PROPOSER_PRIVATE_KEY + const RPC_URL = chainId === MAINNET_CHAIN_ID ? "https://mainnet.storyrpc.io" : "https://aeneid.storyrpc.io" + const SAFE_ADDRESS = chainId === MAINNET_CHAIN_ID ? process.env.SAFE_MULTISIG_MAINNET_ADDRESS : process.env.SAFE_MULTISIG_AENEID_ADDRESS + const TX_SERVICE_URL = chainId === MAINNET_CHAIN_ID ? 'https://transaction.safe.story.foundation/api' : 'https://transaction-testnet.safe.story.foundation/api' const apiKit = new SafeApiKit({ chainId: BigInt(chainId), From fbd6975487bdff47c292443fe1d8388d4f7278da Mon Sep 17 00:00:00 2001 From: Spablob Date: Tue, 20 May 2025 11:20:00 -0700 Subject: [PATCH 2/4] adjust safe-propose --- script/hardhat/utils/safePropose.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/hardhat/utils/safePropose.ts b/script/hardhat/utils/safePropose.ts index ae552cec..952889aa 100644 --- a/script/hardhat/utils/safePropose.ts +++ b/script/hardhat/utils/safePropose.ts @@ -20,7 +20,7 @@ task("safe-propose", "Propose a Safe transaction") const SAFE_PROPOSER_ADDRESS = process.env.SAFE_MULTISIG_PROPOSER_ADDRESS const SAFE_PROPOSER_PRIVATE_KEY = process.env.SAFE_MULTISIG_PROPOSER_PRIVATE_KEY - const RPC_URL = chainId === MAINNET_CHAIN_ID ? "https://mainnet.storyrpc.io" : "https://aeneid.storyrpc.io" + const RPC_URL = chainId === MAINNET_CHAIN_ID ? 'https://mainnet.storyrpc.io' : 'https://aeneid.storyrpc.io' const SAFE_ADDRESS = chainId === MAINNET_CHAIN_ID ? process.env.SAFE_MULTISIG_MAINNET_ADDRESS : process.env.SAFE_MULTISIG_AENEID_ADDRESS const TX_SERVICE_URL = chainId === MAINNET_CHAIN_ID ? 'https://transaction.safe.story.foundation/api' : 'https://transaction-testnet.safe.story.foundation/api' From a60aefcaf071924674c18d6bf35a665ca7617d27 Mon Sep 17 00:00:00 2001 From: Spablob Date: Tue, 20 May 2025 13:05:43 -0700 Subject: [PATCH 3/4] adjust hardhat config --- hardhat.config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hardhat.config.ts b/hardhat.config.ts index bf936570..8a3c844c 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,9 +1,7 @@ import "@nomicfoundation/hardhat-ethers" import "@nomicfoundation/hardhat-foundry" import "@nomicfoundation/hardhat-verify" -import "@tenderly/hardhat-tenderly" import { TenderlyConfig } from "@tenderly/hardhat-tenderly/dist/tenderly/types" -import * as tdly from "@tenderly/hardhat-tenderly" // also import tdly for setup, in addition to global import above import "@typechain/hardhat" // import "@openzeppelin/hardhat-upgrades" import "hardhat-gas-reporter" @@ -40,6 +38,8 @@ const STORY_USER1 = process.env.STORY_USER1 || bytes32Zero const STORY_USER2 = process.env.STORY_USER2 || bytes32Zero if (USE_TENDERLY) { + require("@tenderly/hardhat-tenderly") + const tdly = require("@tenderly/hardhat-tenderly") tdly.setup({ automaticVerifications: true, }) @@ -67,7 +67,7 @@ const config: HardhatUserConfig = { cache: "./cache", artifacts: "./artifacts", }, - defaultNetwork: "tenderly", + defaultNetwork: USE_TENDERLY ? "tenderly" : "hardhat", networks: { hardhat: { chainId: 31337, From f9c985280d3f5abf09aa10910ad26a0091a4190e Mon Sep 17 00:00:00 2001 From: Spablob Date: Tue, 20 May 2025 14:26:53 -0700 Subject: [PATCH 4/4] adjust gha --- .github/workflows/foundry_runScript.yml | 8 +++++--- script/hardhat/utils/safePropose.ts | 10 +++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/foundry_runScript.yml b/.github/workflows/foundry_runScript.yml index f0efe527..ccb5f436 100644 --- a/.github/workflows/foundry_runScript.yml +++ b/.github/workflows/foundry_runScript.yml @@ -9,8 +9,10 @@ permissions: contents: read env: - SENDER_ADDRESS: ${{ secrets.SAFE_MULTISIG_PROPOSER_ADDRESS }} - PRIVATE_KEY: ${{ secrets.SAFE_MULTISIG_PROPOSER_PRIVATE_KEY }} + SAFE_MULTISIG_PROPOSER_ADDRESS: ${{ secrets.SAFE_MULTISIG_PROPOSER_ADDRESS }} + SAFE_MULTISIG_PROPOSER_PRIVATE_KEY: ${{ secrets.SAFE_MULTISIG_PROPOSER_PRIVATE_KEY }} + SAFE_MULTISIG_MAINNET_ADDRESS: ${{ secrets.SAFE_MULTISIG_MAINNET_ADDRESS }} + SAFE_MULTISIG_AENEID_ADDRESS: ${{ secrets.SAFE_MULTISIG_AENEID_ADDRESS }} GH_TOKEN: ${{ github.token }} jobs: @@ -68,4 +70,4 @@ jobs: - name: Run safe propose script if: ${{ steps.check_pr.outputs.should_run }} == 'true' run: | - npx hardhat safe-propose --chainid 1315 --operation schedule --previousversion 1.5.0 --newversion 1.5.1 + npx hardhat safe-propose --chainid 1315 --operation schedule --previousversion 1.5.0 --newversion 1.5.1 --safeproposeraddress ${{ env.SAFE_MULTISIG_PROPOSER_ADDRESS }} --safeproposerprivatekey ${{ env.SAFE_MULTISIG_PROPOSER_PRIVATE_KEY }} --safemultisigaddressmainnet ${{ env.SAFE_MULTISIG_MAINNET_ADDRESS }} --safemultisigaddressaeneid ${{ env.SAFE_MULTISIG_AENEID_ADDRESS }} diff --git a/script/hardhat/utils/safePropose.ts b/script/hardhat/utils/safePropose.ts index 952889aa..e6a7cccb 100644 --- a/script/hardhat/utils/safePropose.ts +++ b/script/hardhat/utils/safePropose.ts @@ -12,16 +12,20 @@ task("safe-propose", "Propose a Safe transaction") .addParam("operation", "The operation type: schedule, execute or cancel") .addParam("previousversion", "The previous version") .addParam("newversion", "The next version") + .addParam("safeproposeraddress", "The address of the Safe multisig proposer") + .addParam("safeproposerprivatekey", "The private key of the Safe multisig proposer") + .addParam("safemultisigaddressmainnet", "The address of the Safe in mainnet") + .addParam("safemultisigaddressaeneid", "The address of the Safe in aeneid") .setAction(async (taskArgs, hre) => { const chainId = parseInt(taskArgs.chainid) const MAINNET_CHAIN_ID = 1514 const TESTNET_CHAIN_ID = 1315 if (chainId !== MAINNET_CHAIN_ID && chainId !== TESTNET_CHAIN_ID) throw new Error('Invalid chainId') - const SAFE_PROPOSER_ADDRESS = process.env.SAFE_MULTISIG_PROPOSER_ADDRESS - const SAFE_PROPOSER_PRIVATE_KEY = process.env.SAFE_MULTISIG_PROPOSER_PRIVATE_KEY + const SAFE_PROPOSER_ADDRESS = taskArgs.safeproposeraddress + const SAFE_PROPOSER_PRIVATE_KEY = taskArgs.safeproposerprivatekey const RPC_URL = chainId === MAINNET_CHAIN_ID ? 'https://mainnet.storyrpc.io' : 'https://aeneid.storyrpc.io' - const SAFE_ADDRESS = chainId === MAINNET_CHAIN_ID ? process.env.SAFE_MULTISIG_MAINNET_ADDRESS : process.env.SAFE_MULTISIG_AENEID_ADDRESS + const SAFE_ADDRESS = chainId === MAINNET_CHAIN_ID ? taskArgs.safemultisigaddressmainnet : taskArgs.safemultisigaddressaeneid const TX_SERVICE_URL = chainId === MAINNET_CHAIN_ID ? 'https://transaction.safe.story.foundation/api' : 'https://transaction-testnet.safe.story.foundation/api' const apiKit = new SafeApiKit({