Gnosis Safe – How to Run the Safe-Global/Safe-Infrastructure Service for a Sample Test

gnosis-safe

My goal is to run the safe-infrastructure service for a sample test by following the Guide to run our services locally.

I believe I followed the instructions correctly on the main branch (or commit 476c42d) with the Georli chain, which is officially supported and should not have any compatibility or support issues.

However, the service isn’t working.

PROBLEM

Chrome DevTools Console
GET http://localhost:8000/cgw/v1/chains/5/safes/0x38b3aE5977220a8081De42a9045d8D2537e73871 404 (Not Found)
Chrome DevTools Headers
[General]
Request URL: http://localhost:8000/cgw/v1/chains/5/safes/0x38b3aE5977220a8081De42a9045d8D2537e73871
Request Method: GET
Status Code: 404 Not Found (from service worker)
Referrer Policy: strict-origin-when-cross-origin

[Response Headers]
access-control-allow-credentials: true
access-control-allow-headers: X-Requested-With, Content-Type, Authorization
access-control-allow-methods: POST, GET, OPTIONS
access-control-allow-origin: *
Connection: keep-alive
Content-Length: 26
Content-Type: application/json
Date: Wed, 22 Mar 2023 15:11:21 GMT
permissions-policy: interest-cohort=()
Server: nginx/1.23.3
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN

[Request Headers]
Provisional headers are shown
Learn more
Referer: http://localhost:8080/
sec-ch-ua: "Brave";v="111", "Not(A:Brand";v="8", "Chromium";v="111"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "macOS"
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
Chrome DevTools Response
{"code":42,"message":""}
Screenshot

image

REPRODUCE

Conditions

Step 1: setup your .env

REVERSE_PROXY_PORT=8000
REVERSE_PROXY_UI_PORT=8080

CFG_VERSION=latest
CGW_VERSION=latest
TXS_VERSION=latest
UI_VERSION=latest

RPC_NODE_URL=https://goerli.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161

Step 2: Setup Django superusers

# Option #1 - Automated way
cd scripts
sh run_locally.sh

Step 3: Add your ChainInfo

Referred to the ChainInfo available in the official production information at https://safe-config.gnosis.io/api/v1/chains/

safe-infrastructure on  main
❯ curl -s http://localhost:8000/cfg/api/v1/chains/ | jq
{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "chainId": "5",
      "chainName": "Goerli",
      "shortName": "gor",
      "description": "Ethereum Testnet Görli",
      "l2": true,
      "rpcUri": {
        "authentication": "NO_AUTHENTICATION",
        "value": "https://goerli.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161"
      },
      "safeAppsRpcUri": {
        "authentication": "NO_AUTHENTICATION",
        "value": "https://goerli.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161"
      },
      "publicRpcUri": {
        "authentication": "NO_AUTHENTICATION",
        "value": "https://goerli.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161"
      },
      "blockExplorerUriTemplate": {
        "address": "https://goerli.etherscan.io/address/{{address}}",
        "txHash": "https://goerli.etherscan.io/tx/{{txHash}}",
        "api": "https://api-goerli.etherscan.io/api?module={{module}}&action={{action}}&address={{address}}&apiKey={{apiKey}}"
      },
      "nativeCurrency": {
        "name": "Goerli Ether",
        "symbol": "GOR",
        "decimals": 18,
        "logoUri": "/media/chains/5/currency_logo.png"
      },
      "transactionService": "http://nginx:8000/txs",
      "vpcTransactionService": "http://nginx:8000/txs",
      "theme": {
        "textColor": "#ffffff",
        "backgroundColor": "#000000"
      },
      "gasPrice": [
        {
          "type": "fixed",
          "weiValue": "100000000000"
        }
      ],
      "ensRegistryAddress": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
      "recommendedMasterCopyVersion": "1.3.0",
      "disabledWallets": [],
      "features": [
        "CONTRACT_INTERACTION",
        "DOMAIN_LOOKUP",
        "ERC1155",
        "ERC721",
        "SAFE_APPS",
        "SPENDING_LIMIT"
      ]
    }
  ]
}

Step 4: Add your webhooks

  • Url: http://nginx:8000/cgw/v1/chains/5/hooks/events
  • Authorization: Basic some_random_token

Safe Web App

1. Connect to http://localhost:8080/welcome using a browser

2. Select the Goerli chain from the dropdown menu in the top right corner

3. Connect MetaMask wallet

4.1. Click the + Create New Safe button

4.2. Select network and name your Safe -> Click the Next button

image

4.3 Owners and confirmations -> Click the Next button
image

4.4.1. Create new Safe -> Click the Next button: the Est. network fee is not being updated and is still showing the initial value of 0.001 GOR
image

4.4.2. Transaction
image

4.4.3. Error
image

Best Answer

Service will take a lot of time to index the chain, you can check the status on the indexer worker. If you are only interested in new Safes and you don't care about previous created Safes you can go to the admin panel of the Safe Transaction Service and increase the tx block number (which is the last indexed block number) for every master copy:

tx service admin panel

Related Topic