diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index d27c21e..a78bd67 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -18,7 +18,6 @@ jobs: - name: Start and test chainlog containers id: start-containers env: - INFURA_KEY: ${{ secrets.INFURA_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} working-directory: ./ run: | diff --git a/api.html b/api.html index d22fa6f..5ce0f09 100644 --- a/api.html +++ b/api.html @@ -44,7 +44,7 @@

Code examples

Please note that the above code will only retreive the latest data.

You can also ditch web3 libraries and perform low-level JSON RPC calls. Here is an example with Python:
-  keys = requests.post("https://mainnet.infura.io/v3/" + infura_key, json={
+  keys = requests.post("https://chain.techops.live/eth-mainnet", json={
       "jsonrpc": "2.0",
       "method": "eth_call",
       "params": [{
@@ -55,7 +55,7 @@ 

Code examples

}).json()["result"][130:] result = {} for i in range(0, len(keys), 64): - address = "0x" + requests.post("https://mainnet.infura.io/v3/" + infura_key, json={ + address = "0x" + requests.post("https://chain.techops.live/eth-mainnet", json={ "jsonrpc": "2.0", "method": "eth_call", "params": [{ diff --git a/deploy/prod/chainlog-logger.yaml b/deploy/prod/chainlog-logger.yaml index bd60d7e..ce5a487 100644 --- a/deploy/prod/chainlog-logger.yaml +++ b/deploy/prod/chainlog-logger.yaml @@ -28,10 +28,6 @@ env: PYTHONUNBUFFERED: type: kv value: "1" - INFURA_KEY: - type: parameterStore - name: infura-key - parameter_name: /eks/maker-prod/chainlog-logger/infura-key GITHUB_TOKEN: type: parameterStore name: github-token diff --git a/deploy/staging/chainlog-logger.yaml b/deploy/staging/chainlog-logger.yaml index ec9f7fc..9f31715 100644 --- a/deploy/staging/chainlog-logger.yaml +++ b/deploy/staging/chainlog-logger.yaml @@ -29,10 +29,6 @@ env: PYTHONUNBUFFERED: type: kv value: "1" - INFURA_KEY: - type: parameterStore - name: infura-key - parameter_name: /eks/maker-staging/chainlog-logger/infura-key GITHUB_TOKEN: type: parameterStore name: github-token diff --git a/docker-compose.yml b/docker-compose.yml index b5e8568..704ef79 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,7 +20,6 @@ services: image: chainlog-logger container_name: chainlog-logger environment: - INFURA_KEY: $INFURA_KEY GITHUB_TOKEN: $GITHUB_TOKEN CHAINLOG_REPO: "makerdao/chainlog-ui" PYTHONUNBUFFERED: 1 diff --git a/examples/python.py b/examples/python.py index 97ce019..785759d 100755 --- a/examples/python.py +++ b/examples/python.py @@ -2,8 +2,7 @@ import os, requests -infura_key = os.environ["INFURA_KEY"] -keys = requests.post("https://mainnet.infura.io/v3/" + infura_key, json={ +keys = requests.post("https://chain.techops.live/eth-mainnet", json={ "jsonrpc": "2.0", "method": "eth_call", "params": [{ @@ -14,7 +13,7 @@ }).json()["result"][130:] result = {} for i in range(0, len(keys), 64): - address = "0x" + requests.post("https://mainnet.infura.io/v3/" + infura_key, json={ + address = "0x" + requests.post("https://chain.techops.live/eth-mainnet", json={ "jsonrpc": "2.0", "method": "eth_call", "params": [{ diff --git a/index.html b/index.html index 11b8448..356c883 100644 --- a/index.html +++ b/index.html @@ -40,7 +40,7 @@ "0x1": "Ethereum mainnet", "0x3": "Ropsten", "0x4": "Rinkeby", - "0x5": "Görli", + "0xaa36a7": "Sepolia", "0x2a": "Kovan" } @@ -48,7 +48,7 @@ "0x1": "", "0x3": "ropsten.", "0x4": "rinkeby.", - "0x5": "goerli.", + "0xaa36a7": "sepolia.", "0x2a": "kovan." } @@ -56,15 +56,15 @@ "0x1": "", "0x3": "-ropsten", "0x4": "-rinkeby", - "0x5": "-goerli", + "0xaa36a7": "-sepolia", "0x2a": "-kovan" } -const infuraPrefixes = { +const chainSuffixes = { "0x1": "mainnet", "0x3": "ropsten", "0x4": "rinkeby", - "0x5": "goerli", + "0xaa36a7": "sepolia", "0x2a": "kovan" } @@ -79,13 +79,13 @@ }, draw); } -let provider, chain, chainPrefix, chainApiPrefix, infuraPrefix, notice; +let provider, chain, chainPrefix, chainApiPrefix, chainSuffix, notice; window.addEventListener("load", () => { if (typeof window.ethereum !== "undefined") { setTimeout(() => { if (!window.ethereum.isConnected()) { - console.log("Metamask connection timed out. Falling back to Infura mainnet"); - setInfura(); + console.log("Metamask connection timed out. Falling back to TechOps mainnet"); + setDefaultRPC(); } }, 1000); window.ethereum.on("connect", conn => { @@ -94,8 +94,8 @@ if (!chain) chain = "Unknown"; chainPrefix = chainPrefixes[conn.chainId]; chainApiPrefix = chainApiPrefixes[conn.chainId]; - infuraPrefix = infuraPrefixes[conn.chainId]; - endpoint = "https://" + infuraPrefix + ".infura.io/v3/633f64adbe364bb88127348d4fcc21ef"; + chainSuffix = chainSuffixes[conn.chainId]; + endpoint = chainSuffix === "mainnet" ? "https://chain.techops.live/eth-mainnet" : "https://chain.techops.live/eth-" + chainSuffix; notice = "change this in your Metamask plugin (you don’t need to unlock Metamask)"; setUp(); }); @@ -104,25 +104,25 @@ if (!chain) chain = "Unknown"; chainPrefix = chainPrefixes[chainId]; chainApiPrefix = chainApiPrefixes[chainId]; - infuraPrefix = infuraPrefixes[chainId]; - endpoint = "https://" + infuraPrefix + ".infura.io/v3/633f64adbe364bb88127348d4fcc21ef"; + chainSuffix = chainSuffixes[chainId]; + endpoint = chainSuffix === "mainnet" ? "https://chain.techops.live/eth-mainnet" : "https://chain.techops.live/eth-" + chainSuffix; notice = ""; setUp(); }); } else { - setInfura(); + setDefaultRPC(); } }); -const setInfura = () => { - provider = "Infura"; +const setDefaultRPC = () => { + provider = "TechOps"; chain = "Ethereum mainnet"; chainPrefix = ""; chainApiPrefix = ""; - infuraPrefix = "mainnet"; + chainSuffix = "mainnet"; notice = ""; chainSelect.removeAttribute("disabled"); - chainSelect.append(chainGoerli); + chainSelect.append(chainSepolia); setUp(); } @@ -170,14 +170,14 @@ chainOption.innerHTML = "loading…"; chainOption.setAttribute("value", "mainnet"); chainSelect.append(chainOption); -const chainGoerli = document.createElement("option"); -chainGoerli.innerHTML = "Görli"; -chainGoerli.setAttribute("value", "goerli"); +const chainSepolia = document.createElement("option"); +chainSepolia.innerHTML = "Sepolia"; +chainSepolia.setAttribute("value", "sepolia"); chainSelect.addEventListener("change", () => { - infuraPrefix = chainSelect.value; - chainPrefix = infuraPrefix === "mainnet" ? "" : "goerli."; - chainApiPrefix = infuraPrefix === "mainnet" ? "" : "-goerli"; - endpoint = "https://" + infuraPrefix + ".infura.io/v3/633f64adbe364bb88127348d4fcc21ef"; + chainSuffix = chainSelect.value; + chainPrefix = chainSuffix === "mainnet" ? "" : "sepolia."; + chainApiPrefix = chainSuffix === "mainnet" ? "" : "-sepolia"; + endpoint = chainSuffix === "mainnet" ? "https://chain.techops.live/eth-mainnet" : "https://chain.techops.live/eth-" + chainSuffix; setUp(); }); chainValue.append(chainSelect); @@ -191,7 +191,7 @@ canvas.innerHTML = "loading…"; document.body.append(canvas); -let endpoint = 'https://mainnet.infura.io/v3/633f64adbe364bb88127348d4fcc21ef'; +let endpoint = 'https://chain.techops.live/eth-mainnet'; const chainlog = "0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F"; const hex2a = hexx => { // adapted from https://stackoverflow.com/a/3745677/15857007 @@ -205,9 +205,12 @@ return str; } -const infuraCall = (params, callback) => { +const rpcCall = (params, callback) => { const options = { method: "POST", + headers: { + "Content-Type": "application/json" + }, body: '{"jsonrpc": "2.0", "method": "eth_call", "params": [' + JSON.stringify(params) + ', "latest"], "id": 0}' }; fetch(endpoint, options).then(response => { @@ -215,7 +218,7 @@ response.json().then(content => callback(content.result)) } else { response.json().then(content => { - console.error("Infura: " + content.error.message); + console.error("RPC: " + content.error.message); canvas.innerHTML = "error"; }); } @@ -229,11 +232,11 @@ params: [ params, "latest" ] }).then(response => callback(response)) .catch(error => { - console.log("falling back to Infura " + infuraPrefix); - infuraCall(params, callback) + console.log("falling back to TechOps RPC " + chainSuffix); + rpcCall(params, callback) }); } else { - infuraCall(params, callback); + rpcCall(params, callback); } } diff --git a/index.ipfs.html b/index.ipfs.html index 032620b..c80d14f 100644 --- a/index.ipfs.html +++ b/index.ipfs.html @@ -40,7 +40,7 @@ "0x1": "Ethereum mainnet", "0x3": "Ropsten", "0x4": "Rinkeby", - "0x5": "Görli", + "0xaa36a7": "Sepolia", "0x2a": "Kovan" } @@ -48,7 +48,7 @@ "0x1": "", "0x3": "ropsten.", "0x4": "rinkeby.", - "0x5": "goerli.", + "0xaa36a7": "sepolia.", "0x2a": "kovan." } @@ -56,15 +56,15 @@ "0x1": "", "0x3": "-ropsten", "0x4": "-rinkeby", - "0x5": "-goerli", + "0xaa36a7": "-sepolia", "0x2a": "-kovan" } -const infuraPrefixes = { +const chainSuffixes = { "0x1": "mainnet", "0x3": "ropsten", "0x4": "rinkeby", - "0x5": "goerli", + "0xaa36a7": "sepolia", "0x2a": "kovan" } @@ -79,13 +79,13 @@ }, draw); } -let provider, chain, chainPrefix, chainApiPrefix, infuraPrefix, notice; +let provider, chain, chainPrefix, chainApiPrefix, chainSuffix, notice; window.addEventListener("load", () => { if (typeof window.ethereum !== "undefined") { setTimeout(() => { if (!window.ethereum.isConnected()) { - console.log("Metamask connection timed out. Falling back to Infura mainnet"); - setInfura(); + console.log("Metamask connection timed out. Falling back to TechOps mainnet"); + setDefaultRPC(); } }, 1000); window.ethereum.on("connect", conn => { @@ -94,8 +94,8 @@ if (!chain) chain = "Unknown"; chainPrefix = chainPrefixes[conn.chainId]; chainApiPrefix = chainApiPrefixes[conn.chainId]; - infuraPrefix = infuraPrefixes[conn.chainId]; - endpoint = "https://" + infuraPrefix + ".infura.io/v3/633f64adbe364bb88127348d4fcc21ef"; + chainSuffix = chainSuffixes[conn.chainId]; + endpoint = chainSuffix === "mainnet" ? "https://chain.techops.live/eth-mainnet" : "https://chain.techops.live/eth-" + chainSuffix; notice = "change this in your Metamask plugin (you don’t need to unlock Metamask)"; setUp(); }); @@ -104,25 +104,25 @@ if (!chain) chain = "Unknown"; chainPrefix = chainPrefixes[chainId]; chainApiPrefix = chainApiPrefixes[chainId]; - infuraPrefix = infuraPrefixes[chainId]; - endpoint = "https://" + infuraPrefix + ".infura.io/v3/633f64adbe364bb88127348d4fcc21ef"; + chainSuffix = chainSuffixes[chainId]; + endpoint = chainSuffix === "mainnet" ? "https://chain.techops.live/eth-mainnet" : "https://chain.techops.live/eth-" + chainSuffix; notice = ""; setUp(); }); } else { - setInfura(); + setDefaultRPC(); } }); -const setInfura = () => { - provider = "Infura"; +const setDefaultRPC = () => { + provider = "TechOps"; chain = "Ethereum mainnet"; chainPrefix = ""; chainApiPrefix = ""; - infuraPrefix = "mainnet"; + chainSuffix = "mainnet"; notice = ""; chainSelect.removeAttribute("disabled"); - chainSelect.append(chainGoerli); + chainSelect.append(chainSepolia); setUp(); } @@ -170,14 +170,14 @@ chainOption.innerHTML = "loading…"; chainOption.setAttribute("value", "mainnet"); chainSelect.append(chainOption); -const chainGoerli = document.createElement("option"); -chainGoerli.innerHTML = "Görli"; -chainGoerli.setAttribute("value", "goerli"); +const chainSepolia = document.createElement("option"); +chainSepolia.innerHTML = "Sepolia"; +chainSepolia.setAttribute("value", "sepolia"); chainSelect.addEventListener("change", () => { - infuraPrefix = chainSelect.value; - chainPrefix = infuraPrefix === "mainnet" ? "" : "goerli."; - chainApiPrefix = infuraPrefix === "mainnet" ? "" : "-goerli"; - endpoint = "https://" + infuraPrefix + ".infura.io/v3/633f64adbe364bb88127348d4fcc21ef"; + chainSuffix = chainSelect.value; + chainPrefix = chainSuffix === "mainnet" ? "" : "sepolia."; + chainApiPrefix = chainSuffix === "mainnet" ? "" : "-sepolia"; + endpoint = chainSuffix === "mainnet" ? "https://chain.techops.live/eth-mainnet" : "https://chain.techops.live/eth-" + chainSuffix; setUp(); }); chainValue.append(chainSelect); @@ -191,7 +191,7 @@ canvas.innerHTML = "loading…"; document.body.append(canvas); -let endpoint = 'https://mainnet.infura.io/v3/633f64adbe364bb88127348d4fcc21ef'; +let endpoint = 'https://chain.techops.live/eth-mainnet'; const chainlog = "0xdA0Ab1e0017DEbCd72Be8599041a2aa3bA7e740F"; const hex2a = hexx => { // adapted from https://stackoverflow.com/a/3745677/15857007 @@ -205,9 +205,12 @@ return str; } -const infuraCall = (params, callback) => { +const rpcCall = (params, callback) => { const options = { method: "POST", + headers: { + "Content-Type": "application/json" + }, body: '{"jsonrpc": "2.0", "method": "eth_call", "params": [' + JSON.stringify(params) + ', "latest"], "id": 0}' }; fetch(endpoint, options).then(response => { @@ -215,7 +218,7 @@ response.json().then(content => callback(content.result)) } else { response.json().then(content => { - console.error("Infura: " + content.error.message); + console.error("RPC: " + content.error.message); canvas.innerHTML = "error"; }); } @@ -229,11 +232,11 @@ params: [ params, "latest" ] }).then(response => callback(response)) .catch(error => { - console.log("falling back to Infura " + infuraPrefix); - infuraCall(params, callback) + console.log("falling back to TechOps RPC " + chainSuffix); + rpcCall(params, callback) }); } else { - infuraCall(params, callback); + rpcCall(params, callback); } } diff --git a/logger.py b/logger.py index 573f5db..29cda5c 100755 --- a/logger.py +++ b/logger.py @@ -9,8 +9,12 @@ from github import Github, GithubException def call(chain, calldata): - infura_key = os.environ["INFURA_KEY"] - endpoint = "https://{}.infura.io/v3/{}".format(chain, infura_key) + if chain == "mainnet": + endpoint = "https://chain.techops.live/eth-mainnet" + elif chain == "sepolia": + endpoint = "https://chain.techops.live/eth-sepolia" + else: + endpoint = "https://chain.techops.live/eth-{}".format(chain) response = requests.post(endpoint, json={ "jsonrpc": "2.0", "method": "eth_call",