Skip to content

Conversation

@pcaversaccio
Copy link
Owner

@pcaversaccio pcaversaccio commented Sep 15, 2025

πŸ•“ Changelog

This PR adds support for the following additional chains:

  • Botanix (identifier: botanix, chain ID: 3637),
  • Codex (identifier: codex, chain ID: 81224),
  • Katana (identifier: katana, chain ID: 747474),
  • opBNB (identifier: opbnb, chain ID: 204),
  • peaq (identifier: peaq, chain ID: 3338),
  • XDC Network (identifier: xdc, chain ID: 50).

All supported chains that use the Safe transaction service API can be retrieved via:

curl -s https://safe-config.safe.global/api/v1/chains/ | jq ".results[].chainName"

which currently (17 September 2025) returns:

"Ethereum"
"Gnosis Chain"
"Polygon"
"Polygon zkEVM"
"BNB Chain"
"Arbitrum"
"Optimism"
"Base"
"Berachain"
"Botanix"
"Codex"
"Hemi"
"Ink"
"Katana"
"Lens"
"Linea"
"opBNB"
"peaq"
"Sonic"
"Unichain"
"XDC Network"
"zkSync Era"
"Scroll"
"X Layer"
"Celo"
"Avalanche"
"Mantle"
"World Chain"
"Aurora"
"Sepolia"
"Base Sepolia"
"Gnosis Chiado"

Furthermore, this PR ensures that all Safe API requests are throttled to one per second (implemented as sleep 1.2) to respect future limits and provide some buffer for subsequent requests. The API_URLS associative array is updated to use the new canonical Safe transaction service API for all supported networks, including the newly added chains (Botanix, Codex, Katana, opBNB, peaq, and XDC Network). Eventually, the script now collects and reports all missing tools and version errors before exiting.

Test Examples

Botanix

./safe_hashes.sh --network botanix --address 0xe1BefF4f60de58A4b27b6D0424E7e0d1316A138C --nonce 42

returns:

===================================
= Selected Network Configurations =
===================================

Network: botanix
Chain ID: 3637

========================================
= Transaction Data and Computed Hashes =
========================================

> Transaction Data:
Multisig address: 0xe1BefF4f60de58A4b27b6D0424E7e0d1316A138C
To: 0x9641d764fc13c8B624c04430C7356C1C7C8102e2
Value: 0
Data: 0x8d80ff0a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000033200b95fa51a2bbd4669408f1e139c45ad8a101b4977000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001443a66f901000000000000000000000000741145af40a46cd8b7653be09ec59ceb9c6c45e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000068b015b5000000000000000000000000000000000000000000000000000000000000001773657443435228616464726573732c75696e743235362900000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000d2437f93fed6ea64ef01ccde385fb1263910c56000000000000000000000000000000000000000000000000120a871cc002000000b95fa51a2bbd4669408f1e139c45ad8a101b4977000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001443a66f901000000000000000000000000741145af40a46cd8b7653be09ec59ceb9c6c45e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000068b015b500000000000000000000000000000000000000000000000000000000000000177365744d435228616464726573732c75696e743235362900000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000d2437f93fed6ea64ef01ccde385fb1263910c560000000000000000000000000000000000000000000000000f43fc2c04ee00000000000000000000000000000000
Operation: Delegatecall (trusted delegatecall)
Safe Transaction Gas: 0
Base Gas: 0
Gas Price: 0
Gas Token: 0x0000000000000000000000000000000000000000
Refund Receiver: 0x0000000000000000000000000000000000000000
Nonce: 42
Encoded message: 0xbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d80000000000000000000000009641d764fc13c8b624c04430c7356c1c7c8102e20000000000000000000000000000000000000000000000000000000000000000d07587004ac59b8c08f74d359a60820eaddfeb2f7b909dfa22fb89f1ca260cd4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a
Method: multiSend
Parameters: [
  {
    "name": "transactions",
    "type": "bytes",
    "value": "0x00b95fa51a2bbd4669408f1e139c45ad8a101b4977000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001443a66f901000000000000000000000000741145af40a46cd8b7653be09ec59ceb9c6c45e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000068b015b5000000000000000000000000000000000000000000000000000000000000001773657443435228616464726573732c75696e743235362900000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000d2437f93fed6ea64ef01ccde385fb1263910c56000000000000000000000000000000000000000000000000120a871cc002000000b95fa51a2bbd4669408f1e139c45ad8a101b4977000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001443a66f901000000000000000000000000741145af40a46cd8b7653be09ec59ceb9c6c45e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000068b015b500000000000000000000000000000000000000000000000000000000000000177365744d435228616464726573732c75696e743235362900000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000d2437f93fed6ea64ef01ccde385fb1263910c560000000000000000000000000000000000000000000000000f43fc2c04ee0000",
    "valueDecoded": [
      {
        "operation": 0,
        "to": "0xB95FA51A2BBd4669408F1e139C45Ad8A101B4977",
        "value": "0",
        "data": "0x3a66f901000000000000000000000000741145af40a46cd8b7653be09ec59ceb9c6c45e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000068b015b5000000000000000000000000000000000000000000000000000000000000001773657443435228616464726573732c75696e743235362900000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000d2437f93fed6ea64ef01ccde385fb1263910c56000000000000000000000000000000000000000000000000120a871cc0020000",
        "dataDecoded": {
          "method": "queueTransaction",
          "parameters": [
            {
              "name": "target",
              "type": "address",
              "value": "0x741145aF40A46cD8B7653Be09EC59CEb9c6c45e1"
            },
            {
              "name": "value",
              "type": "uint256",
              "value": "0"
            },
            {
              "name": "signature",
              "type": "string",
              "value": "setCCR(address,uint256)"
            },
            {
              "name": "data",
              "type": "bytes",
              "value": "0x0000000000000000000000000d2437f93fed6ea64ef01ccde385fb1263910c56000000000000000000000000000000000000000000000000120a871cc0020000"
            },
            {
              "name": "eta",
              "type": "uint256",
              "value": "1756370357"
            }
          ]
        }
      },
      {
        "operation": 0,
        "to": "0xB95FA51A2BBd4669408F1e139C45Ad8A101B4977",
        "value": "0",
        "data": "0x3a66f901000000000000000000000000741145af40a46cd8b7653be09ec59ceb9c6c45e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000068b015b500000000000000000000000000000000000000000000000000000000000000177365744d435228616464726573732c75696e743235362900000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000d2437f93fed6ea64ef01ccde385fb1263910c560000000000000000000000000000000000000000000000000f43fc2c04ee0000",
        "dataDecoded": {
          "method": "queueTransaction",
          "parameters": [
            {
              "name": "target",
              "type": "address",
              "value": "0x741145aF40A46cD8B7653Be09EC59CEb9c6c45e1"
            },
            {
              "name": "value",
              "type": "uint256",
              "value": "0"
            },
            {
              "name": "signature",
              "type": "string",
              "value": "setMCR(address,uint256)"
            },
            {
              "name": "data",
              "type": "bytes",
              "value": "0x0000000000000000000000000d2437f93fed6ea64ef01ccde385fb1263910c560000000000000000000000000000000000000000000000000f43fc2c04ee0000"
            },
            {
              "name": "eta",
              "type": "uint256",
              "value": "1756370357"
            }
          ]
        }
      }
    ]
  }
]

> Hashes:
Domain hash: 0xC772330CB9CF493E05ACA7E9DF974B6097C05E7D6C5F1A3532AF4F76092E18E5
Message hash: 0xAA6C67D0CBD719A820F1F6C1DACEC0867B7DF21709279242B8A9B1B92307755C
Safe transaction hash: 0xc38f8d54eb1d2ae62c7035da62fed09ae9c9dba74ee8c74f0318a187ed8a1ee4

Now compare with https://app.safe.global/transactions/tx?safe=btc:0xe1BefF4f60de58A4b27b6D0424E7e0d1316A138C&id=multisig_0xe1BefF4f60de58A4b27b6D0424E7e0d1316A138C_0xc38f8d54eb1d2ae62c7035da62fed09ae9c9dba74ee8c74f0318a187ed8a1ee4.

Codex

./safe_hashes.sh --network codex --address 0xFd917dE2A4fEB1bEdDCEc293530666e08F17BF43 --nonce 1

returns:

===================================
= Selected Network Configurations =
===================================

Network: codex
Chain ID: 81224

========================================
= Transaction Data and Computed Hashes =
========================================

> Transaction Data:
Multisig address: 0xFd917dE2A4fEB1bEdDCEc293530666e08F17BF43
To: 0x9641d764fc13c8B624c04430C7356C1C7C8102e2
Value: 0
Data: 0x8d80ff0a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000013200fd917de2a4feb1beddcec293530666e08f17bf43000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440d582f1300000000000000000000000030941fe71ea3eb348dcf5643b2af570f6383981e000000000000000000000000000000000000000000000000000000000000000200fd917de2a4feb1beddcec293530666e08f17bf43000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440d582f1300000000000000000000000007913270b3b198b3854df9463d646ce145e0234900000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000
Operation: Delegatecall (trusted delegatecall)
Safe Transaction Gas: 0
Base Gas: 0
Gas Price: 0
Gas Token: 0x0000000000000000000000000000000000000000
Refund Receiver: 0x0000000000000000000000000000000000000000
Nonce: 1
Encoded message: 0xbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d80000000000000000000000009641d764fc13c8b624c04430c7356c1c7c8102e20000000000000000000000000000000000000000000000000000000000000000bcdda2a4060a285f7c2cda9f6d8736335a91e332611d8c4cc455643bea0630a80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
Method: multiSend
Parameters: [
  {
    "name": "transactions",
    "type": "bytes",
    "value": "0x00fd917de2a4feb1beddcec293530666e08f17bf43000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440d582f1300000000000000000000000030941fe71ea3eb348dcf5643b2af570f6383981e000000000000000000000000000000000000000000000000000000000000000200fd917de2a4feb1beddcec293530666e08f17bf43000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440d582f1300000000000000000000000007913270b3b198b3854df9463d646ce145e023490000000000000000000000000000000000000000000000000000000000000002",
    "valueDecoded": [
      {
        "operation": 0,
        "to": "0xFd917dE2A4fEB1bEdDCEc293530666e08F17BF43",
        "value": "0",
        "data": "0x0d582f1300000000000000000000000030941fe71ea3eb348dcf5643b2af570f6383981e0000000000000000000000000000000000000000000000000000000000000002",
        "dataDecoded": {
          "method": "addOwnerWithThreshold",
          "parameters": [
            {
              "name": "owner",
              "type": "address",
              "value": "0x30941fe71Ea3Eb348dCf5643b2aF570f6383981e"
            },
            {
              "name": "_threshold",
              "type": "uint256",
              "value": "2"
            }
          ]
        }
      },
      {
        "operation": 0,
        "to": "0xFd917dE2A4fEB1bEdDCEc293530666e08F17BF43",
        "value": "0",
        "data": "0x0d582f1300000000000000000000000007913270b3b198b3854df9463d646ce145e023490000000000000000000000000000000000000000000000000000000000000002",
        "dataDecoded": {
          "method": "addOwnerWithThreshold",
          "parameters": [
            {
              "name": "owner",
              "type": "address",
              "value": "0x07913270B3B198b3854Df9463d646Ce145E02349"
            },
            {
              "name": "_threshold",
              "type": "uint256",
              "value": "2"
            }
          ]
        }
      }
    ]
  }
]

WARNING: The "addOwnerWithThreshold" function modifies the owners or threshold of the Safe! Proceed with caution!

WARNING: The "addOwnerWithThreshold" function modifies the owners or threshold of the Safe! Proceed with caution!

> Hashes:
Domain hash: 0x5A1A48528485945EDB364A4B7E66A34158618F2544EA42427D421731CE865EB2
Message hash: 0xF340D19FEBD3DB1D6BDC8E5383DA8C7DF8A6A4DB304FF24986949E83DCBFD165
Safe transaction hash: 0x724183fbf6567945f180a4f2322e2c3e82459b3a831e82f8c9eee0356a4b54f9

Now compare with https://app.safe.global/transactions/tx?safe=codex:0xFd917dE2A4fEB1bEdDCEc293530666e08F17BF43&id=multisig_0xFd917dE2A4fEB1bEdDCEc293530666e08F17BF43_0x724183fbf6567945f180a4f2322e2c3e82459b3a831e82f8c9eee0356a4b54f9.

Katana

./safe_hashes.sh --network katana --address 0x67C912fF560951526BffDff66dFbD4DF8AE23756 --nonce 346

returns:

===================================
= Selected Network Configurations =
===================================

Network: katana
Chain ID: 747474

========================================
= Transaction Data and Computed Hashes =
========================================

> Transaction Data:
Multisig address: 0x67C912fF560951526BffDff66dFbD4DF8AE23756
To: 0x9641d764fc13c8B624c04430C7356C1C7C8102e2
Value: 0
Data: 0x8d80ff0a000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002fd00b24e3035d1fcbc0e43cf3143c3fd92e53df2009b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c000000000000000000000000000000000000000000000026be6a88556a541029000913da6da4b42f538b445599b46bb4622342cf5200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c000000000000000000000000000000000000000000000000000000000000d846009b8df6e244526ab5f6e6400d331db28c8fdddb5500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c00000000000000000000000000000000000000000000000000aac1d4a3cadc7d001e5efca3d0db2c6d5c67a4491845c43253eb9e4e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c0000000000000000000000000000000000000000000000018a37ed6be038b84300209eb64da95a7830878ecc4e89baee7076f153b200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c00000000000000000000000000000000000000000000005150ae84a8cdf00000000000
Operation: Delegatecall (trusted delegatecall)
Safe Transaction Gas: 0
Base Gas: 0
Gas Price: 0
Gas Token: 0x0000000000000000000000000000000000000000
Refund Receiver: 0x0000000000000000000000000000000000000000
Nonce: 346
Encoded message: 0xbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d80000000000000000000000009641d764fc13c8b624c04430c7356c1c7c8102e200000000000000000000000000000000000000000000000000000000000000007bc496645ca0e04623174b261b17134200edc17629445d47476931b7e3b38900000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015a
Method: multiSend
Parameters: [
  {
    "name": "transactions",
    "type": "bytes",
    "value": "0x00b24e3035d1fcbc0e43cf3143c3fd92e53df2009b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c000000000000000000000000000000000000000000000026be6a88556a541029000913da6da4b42f538b445599b46bb4622342cf5200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c000000000000000000000000000000000000000000000000000000000000d846009b8df6e244526ab5f6e6400d331db28c8fdddb5500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c00000000000000000000000000000000000000000000000000aac1d4a3cadc7d001e5efca3d0db2c6d5c67a4491845c43253eb9e4e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c0000000000000000000000000000000000000000000000018a37ed6be038b84300209eb64da95a7830878ecc4e89baee7076f153b200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c00000000000000000000000000000000000000000000005150ae84a8cdf00000",
    "valueDecoded": [
      {
        "operation": 0,
        "to": "0xb24e3035d1FCBC0E43CF3143C3Fd92E53df2009b",
        "value": "0",
        "data": "0xa9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c000000000000000000000000000000000000000000000026be6a88556a541029",
        "dataDecoded": {
          "method": "transfer",
          "parameters": [
            {
              "name": "to",
              "type": "address",
              "value": "0x227D9Ea843910Edd305c42e7bB9Ce6D9f369238c"
            },
            {
              "name": "value",
              "type": "uint256",
              "value": "714697203916138090537"
            }
          ]
        }
      },
      {
        "operation": 0,
        "to": "0x0913DA6Da4b42f538B445599b46Bb4622342Cf52",
        "value": "0",
        "data": "0xa9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c000000000000000000000000000000000000000000000000000000000000d846",
        "dataDecoded": {
          "method": "transfer",
          "parameters": [
            {
              "name": "to",
              "type": "address",
              "value": "0x227D9Ea843910Edd305c42e7bB9Ce6D9f369238c"
            },
            {
              "name": "value",
              "type": "uint256",
              "value": "55366"
            }
          ]
        }
      },
      {
        "operation": 0,
        "to": "0x9B8Df6E244526ab5F6e6400d331DB28C8fdDdb55",
        "value": "0",
        "data": "0xa9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c00000000000000000000000000000000000000000000000000aac1d4a3cadc7d",
        "dataDecoded": {
          "method": "transfer",
          "parameters": [
            {
              "name": "to",
              "type": "address",
              "value": "0x227D9Ea843910Edd305c42e7bB9Ce6D9f369238c"
            },
            {
              "name": "value",
              "type": "uint256",
              "value": "48063865066019965"
            }
          ]
        }
      },
      {
        "operation": 0,
        "to": "0x1e5eFCA3D0dB2c6d5C67a4491845c43253eB9e4e",
        "value": "0",
        "data": "0xa9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c0000000000000000000000000000000000000000000000018a37ed6be038b843",
        "dataDecoded": {
          "method": "transfer",
          "parameters": [
            {
              "name": "to",
              "type": "address",
              "value": "0x227D9Ea843910Edd305c42e7bB9Ce6D9f369238c"
            },
            {
              "name": "value",
              "type": "uint256",
              "value": "28406434222241790019"
            }
          ]
        }
      },
      {
        "operation": 0,
        "to": "0x209eB64dA95a7830878Ecc4E89baEe7076f153B2",
        "value": "0",
        "data": "0xa9059cbb000000000000000000000000227d9ea843910edd305c42e7bb9ce6d9f369238c00000000000000000000000000000000000000000000005150ae84a8cdf00000",
        "dataDecoded": {
          "method": "transfer",
          "parameters": [
            {
              "name": "to",
              "type": "address",
              "value": "0x227D9Ea843910Edd305c42e7bB9Ce6D9f369238c"
            },
            {
              "name": "value",
              "type": "uint256",
              "value": "1500000000000000000000"
            }
          ]
        }
      }
    ]
  }
]

> Hashes:
Domain hash: 0x8BB8EFD89EB6714E717F02065F0864BFA0E34276AD1AFC65B791DBA798E65EEB
Message hash: 0x56CE1D9BBE03A2D57FC8E2D5D1FFBD91A3F06CA6920705EA15DA93B2D66144E6
Safe transaction hash: 0x5097153af66bd25844c9ce000c0fb6d1a7e94e59f5956a644e52269794cbe416

Now compare with https://app.safe.global/transactions/tx?safe=katana:0x67C912fF560951526BffDff66dFbD4DF8AE23756&id=multisig_0x67C912fF560951526BffDff66dFbD4DF8AE23756_0x5097153af66bd25844c9ce000c0fb6d1a7e94e59f5956a644e52269794cbe416.

opBNB

./safe_hashes.sh --network opbnb --address 0x8888897D5C471f0193d817E1b13f2f1a41A649F1 --nonce 1

returns:

===================================
= Selected Network Configurations =
===================================

Network: opbnb
Chain ID: 204

========================================
= Transaction Data and Computed Hashes =
========================================

> Transaction Data:
Multisig address: 0x8888897D5C471f0193d817E1b13f2f1a41A649F1
To: 0x9641d764fc13c8B624c04430C7356C1C7C8102e2
Value: 0
Data: 0x8d80ff0a000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001cb008888897d5c471f0193d817e1b13f2f1a41a649f1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440d582f13000000000000000000000000ddddd75045209cff941e07457409cbd73ba6769f0000000000000000000000000000000000000000000000000000000000000002008888897d5c471f0193d817e1b13f2f1a41a649f1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440d582f13000000000000000000000000000057d71b568bcc218496a7a552a11c4ea86c140000000000000000000000000000000000000000000000000000000000000002008888897d5c471f0193d817e1b13f2f1a41a649f1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440d582f13000000000000000000000000883e4d97ec1fee46945f87e61a44f25e72fc70880000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000
Operation: Delegatecall (trusted delegatecall)
Safe Transaction Gas: 0
Base Gas: 0
Gas Price: 0
Gas Token: 0x0000000000000000000000000000000000000000
Refund Receiver: 0x0000000000000000000000000000000000000000
Nonce: 1
Encoded message: 0xbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d80000000000000000000000009641d764fc13c8b624c04430c7356c1c7c8102e20000000000000000000000000000000000000000000000000000000000000000ced2b712d4457de48e73771685a046d3d411d3ac07e26316da086edcfd419fce0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
Method: multiSend
Parameters: [
  {
    "name": "transactions",
    "type": "bytes",
    "value": "0x008888897d5c471f0193d817e1b13f2f1a41a649f1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440d582f13000000000000000000000000ddddd75045209cff941e07457409cbd73ba6769f0000000000000000000000000000000000000000000000000000000000000002008888897d5c471f0193d817e1b13f2f1a41a649f1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440d582f13000000000000000000000000000057d71b568bcc218496a7a552a11c4ea86c140000000000000000000000000000000000000000000000000000000000000002008888897d5c471f0193d817e1b13f2f1a41a649f1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440d582f13000000000000000000000000883e4d97ec1fee46945f87e61a44f25e72fc70880000000000000000000000000000000000000000000000000000000000000002",
    "valueDecoded": [
      {
        "operation": 0,
        "to": "0x8888897D5C471f0193d817E1b13f2f1a41A649F1",
        "value": "0",
        "data": "0x0d582f13000000000000000000000000ddddd75045209cff941e07457409cbd73ba6769f0000000000000000000000000000000000000000000000000000000000000002",
        "dataDecoded": {
          "method": "addOwnerWithThreshold",
          "parameters": [
            {
              "name": "owner",
              "type": "address",
              "value": "0xddddD75045209CFf941E07457409CBd73bA6769F"
            },
            {
              "name": "_threshold",
              "type": "uint256",
              "value": "2"
            }
          ]
        }
      },
      {
        "operation": 0,
        "to": "0x8888897D5C471f0193d817E1b13f2f1a41A649F1",
        "value": "0",
        "data": "0x0d582f13000000000000000000000000000057d71b568bcc218496a7a552a11c4ea86c140000000000000000000000000000000000000000000000000000000000000002",
        "dataDecoded": {
          "method": "addOwnerWithThreshold",
          "parameters": [
            {
              "name": "owner",
              "type": "address",
              "value": "0x000057D71B568bcc218496a7a552A11C4ea86C14"
            },
            {
              "name": "_threshold",
              "type": "uint256",
              "value": "2"
            }
          ]
        }
      },
      {
        "operation": 0,
        "to": "0x8888897D5C471f0193d817E1b13f2f1a41A649F1",
        "value": "0",
        "data": "0x0d582f13000000000000000000000000883e4d97ec1fee46945f87e61a44f25e72fc70880000000000000000000000000000000000000000000000000000000000000002",
        "dataDecoded": {
          "method": "addOwnerWithThreshold",
          "parameters": [
            {
              "name": "owner",
              "type": "address",
              "value": "0x883e4D97EC1FEE46945f87e61A44f25e72fc7088"
            },
            {
              "name": "_threshold",
              "type": "uint256",
              "value": "2"
            }
          ]
        }
      }
    ]
  }
]

WARNING: The "addOwnerWithThreshold" function modifies the owners or threshold of the Safe! Proceed with caution!

WARNING: The "addOwnerWithThreshold" function modifies the owners or threshold of the Safe! Proceed with caution!

WARNING: The "addOwnerWithThreshold" function modifies the owners or threshold of the Safe! Proceed with caution!

> Hashes:
Domain hash: 0x545C7554B14257695BB2F5CD81DDBC0C3C878C2012D2B5A8F8A903FC63AC01B1
Message hash: 0xAB0B9E4A3F6EE873152AEB846A85DECFBFE32CFAA7F3C7F0D809F73B2B7809D2
Safe transaction hash: 0xc17ef8a7c1ca2b063c02c77e5d5a7f37bc49d6c0f1c8d3c653ef0a1c2572827d

Now compare with https://app.safe.global/transactions/tx?safe=opbnb:0x8888897D5C471f0193d817E1b13f2f1a41A649F1&id=multisig_0x8888897D5C471f0193d817E1b13f2f1a41A649F1_0xc17ef8a7c1ca2b063c02c77e5d5a7f37bc49d6c0f1c8d3c653ef0a1c2572827d.

peaq

./safe_hashes.sh --network peaq --address 0xEaA234e20627dF4f7B26E871876050f30E22495E --nonce 1

returns:

===================================
= Selected Network Configurations =
===================================

Network: peaq
Chain ID: 3338

========================================
= Transaction Data and Computed Hashes =
========================================

> Transaction Data:
Multisig address: 0xEaA234e20627dF4f7B26E871876050f30E22495E
To: 0xEaA234e20627dF4f7B26E871876050f30E22495E
Value: 0
Data: 0x0d582f13000000000000000000000000e6653fe3280fbaf6681ce820d3928286188929390000000000000000000000000000000000000000000000000000000000000003
Operation: Call
Safe Transaction Gas: 0
Base Gas: 0
Gas Price: 0
Gas Token: 0x0000000000000000000000000000000000000000
Refund Receiver: 0x0000000000000000000000000000000000000000
Nonce: 1
Encoded message: 0xbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d8000000000000000000000000eaa234e20627df4f7b26e871876050f30e22495e0000000000000000000000000000000000000000000000000000000000000000c2d1f1740fea6b9db46624394191a81c47ed1d8cb494bafadc6d7c9dff945e190000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
Method: addOwnerWithThreshold
Parameters: [
  {
    "name": "owner",
    "type": "address",
    "value": "0xe6653fE3280fBAF6681CE820d392828618892939"
  },
  {
    "name": "_threshold",
    "type": "uint256",
    "value": "3"
  }
]

WARNING: The "addOwnerWithThreshold" function modifies the owners or threshold of the Safe. Proceed with caution!

> Hashes:
Domain hash: 0x36B88B39066EC5BD4BA670C7E81FA51051B49BE298B111932302A1988851AE82
Message hash: 0x64FF00D54E59C3BE25824F0702A22148CED455B3B3857129D471B97EF68D775F
Safe transaction hash: 0x6bed0dd1001ae38bbdbdb96a650afa777f2faa2ac5744f6410e59f9b16bb0d70

Now compare with https://app.safe.global/transactions/tx?safe=peaq:0xEaA234e20627dF4f7B26E871876050f30E22495E&id=multisig_0xEaA234e20627dF4f7B26E871876050f30E22495E_0x6bed0dd1001ae38bbdbdb96a650afa777f2faa2ac5744f6410e59f9b16bb0d70.

XDC Network

./safe_hashes.sh --network xdc --address 0xddddD75045209CFf941E07457409CBd73bA6769F --nonce 0

returns:

===================================
= Selected Network Configurations =
===================================

Network: xdc
Chain ID: 50

========================================
= Transaction Data and Computed Hashes =
========================================

> Transaction Data:
Multisig address: 0xddddD75045209CFf941E07457409CBd73bA6769F
To: 0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B
Value: 0
Data: 0x8d80ff0a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000015200ddddd75045209cff941e07457409cbd73ba6769f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064e318b52b000000000000000000000000000057d71b568bcc218496a7a552a11c4ea86c14000000000000000000000000f53f4c39f6e69b77da4752af4298161fd8bccc280000000000000000000000009c48b6864ce9ceaf82abe0d2b435620aef575ccc00ddddd75045209cff941e07457409cbd73ba6769f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440d582f1300000000000000000000000083bfa053b29a1d6f3e57af266b99844d3fc9bcbf00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000
Operation: Delegatecall (trusted delegatecall)
Safe Transaction Gas: 0
Base Gas: 0
Gas Price: 0
Gas Token: 0x0000000000000000000000000000000000000000
Refund Receiver: 0x0000000000000000000000000000000000000000
Nonce: 0
Encoded message: 0xbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d8000000000000000000000000a1dabef33b3b82c7814b6d82a79e50f4ac44102b0000000000000000000000000000000000000000000000000000000000000000df58998d280dd99b4b9c497dbddc61348ff9dc301e9b4914e1b6be900642b56a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Method: multiSend
Parameters: [
  {
    "name": "transactions",
    "type": "bytes",
    "value": "0x00ddddd75045209cff941e07457409cbd73ba6769f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064e318b52b000000000000000000000000000057d71b568bcc218496a7a552a11c4ea86c14000000000000000000000000f53f4c39f6e69b77da4752af4298161fd8bccc280000000000000000000000009c48b6864ce9ceaf82abe0d2b435620aef575ccc00ddddd75045209cff941e07457409cbd73ba6769f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000440d582f1300000000000000000000000083bfa053b29a1d6f3e57af266b99844d3fc9bcbf0000000000000000000000000000000000000000000000000000000000000002",
    "valueDecoded": [
      {
        "operation": 0,
        "to": "0xddddD75045209CFf941E07457409CBd73bA6769F",
        "value": "0",
        "data": "0xe318b52b000000000000000000000000000057d71b568bcc218496a7a552a11c4ea86c14000000000000000000000000f53f4c39f6e69b77da4752af4298161fd8bccc280000000000000000000000009c48b6864ce9ceaf82abe0d2b435620aef575ccc",
        "dataDecoded": {
          "method": "swapOwner",
          "parameters": [
            {
              "name": "prevOwner",
              "type": "address",
              "value": "0x000057D71B568bcc218496a7a552A11C4ea86C14"
            },
            {
              "name": "oldOwner",
              "type": "address",
              "value": "0xF53F4c39F6E69B77DA4752aF4298161Fd8BcCc28"
            },
            {
              "name": "newOwner",
              "type": "address",
              "value": "0x9c48b6864cE9CeAF82Abe0d2B435620aeF575ccc"
            }
          ]
        }
      },
      {
        "operation": 0,
        "to": "0xddddD75045209CFf941E07457409CBd73bA6769F",
        "value": "0",
        "data": "0x0d582f1300000000000000000000000083bfa053b29a1d6f3e57af266b99844d3fc9bcbf0000000000000000000000000000000000000000000000000000000000000002",
        "dataDecoded": {
          "method": "addOwnerWithThreshold",
          "parameters": [
            {
              "name": "owner",
              "type": "address",
              "value": "0x83BFA053b29A1d6F3e57af266B99844d3FC9bCbf"
            },
            {
              "name": "_threshold",
              "type": "uint256",
              "value": "2"
            }
          ]
        }
      }
    ]
  }
]

WARNING: The "swapOwner" function modifies the owners or threshold of the Safe! Proceed with caution!

WARNING: The "addOwnerWithThreshold" function modifies the owners or threshold of the Safe! Proceed with caution!

> Hashes:
Domain hash: 0x757FDBDC2B6C3E75007E6A8AEC6A089529710AF4AADE65F51DCD134168BD2137
Message hash: 0x5E8C0B19D47D66507196C92404720B6F5FBB6CFC899D49169CB065BF38B2C8C3
Safe transaction hash: 0xb68acf7d6e3166c642bc72a6717b82cd26d414ce1c274401f9f86be83c8f0f9e

Now compare with https://app.safe.global/transactions/tx?safe=xdc:0xddddd75045209cff941e07457409cbd73ba6769f&id=multisig_0xddddD75045209CFf941E07457409CBd73bA6769F_0xb68acf7d6e3166c642bc72a6717b82cd26d414ce1c274401f9f86be83c8f0f9e.

Signed-off-by: Pascal Marco Caversaccio <pascal.caversaccio@hotmail.ch>
@pcaversaccio pcaversaccio self-assigned this Sep 15, 2025
@pcaversaccio pcaversaccio added documentation πŸ“– Improvements or additions to documentation feature πŸ’₯ New feature or request labels Sep 15, 2025
Signed-off-by: Pascal Marco Caversaccio <pascal.caversaccio@hotmail.ch>
Signed-off-by: Pascal Marco Caversaccio <pascal.caversaccio@hotmail.ch>
Signed-off-by: Pascal Marco Caversaccio <pascal.caversaccio@hotmail.ch>
@pcaversaccio pcaversaccio changed the title ✨ Add Support for Botanix, Codex, Katana, opBNB, peaq, and XDC Network ✨ Add Support for New Chains and Throttle Safe API Requests Sep 15, 2025
Signed-off-by: Pascal Marco Caversaccio <pascal.caversaccio@hotmail.ch>
Signed-off-by: Pascal Marco Caversaccio <pascal.caversaccio@hotmail.ch>
Signed-off-by: Pascal Marco Caversaccio <pascal.caversaccio@hotmail.ch>
Signed-off-by: Pascal Marco Caversaccio <pascal.caversaccio@hotmail.ch>
Signed-off-by: Pascal Marco Caversaccio <pascal.caversaccio@hotmail.ch>
Signed-off-by: Pascal Marco Caversaccio <pascal.caversaccio@hotmail.ch>
@pcaversaccio pcaversaccio merged commit c9a5d22 into main Sep 17, 2025
4 of 6 checks passed
@pcaversaccio pcaversaccio deleted the feat/add-new-chains branch September 17, 2025 10:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation πŸ“– Improvements or additions to documentation feature πŸ’₯ New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants