From 53fdc88def1e2ee01456a12e49eaaec87a71e336 Mon Sep 17 00:00:00 2001 From: Ben Bierens <39762930+benbierens@users.noreply.github.com> Date: Fri, 1 Mar 2024 08:50:29 +0100 Subject: [PATCH] Feature/eth syncing (#721) * Delays starting of codex until eth provider is synced * bumps nim-ethers to 0.7.2 * bumps nim-ethers to 0.7.3 * Adds increasing delay to waitForSync --- codex.nimble | 2 +- codex/codex.nim | 9 +++++++++ vendor/nim-ethers | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/codex.nimble b/codex.nimble index 41da92b7..42347710 100644 --- a/codex.nimble +++ b/codex.nimble @@ -12,7 +12,7 @@ requires "bearssl >= 0.1.4" requires "chronicles >= 0.7.2" requires "chronos >= 2.5.2" requires "confutils" -requires "ethers >= 0.7.1 & < 0.8.0" +requires "ethers >= 0.7.3 & < 0.8.0" requires "libbacktrace" requires "libp2p" requires "metrics" diff --git a/codex/codex.nim b/codex/codex.nim index e5f1bfba..c5bcb7b6 100644 --- a/codex/codex.nim +++ b/codex/codex.nim @@ -56,6 +56,14 @@ type CodexPrivateKey* = libp2p.PrivateKey # alias EthWallet = ethers.Wallet +proc waitForSync(provider: Provider): Future[void] {.async.} = + var sleepTime = 1 + while await provider.isSyncing: + notice "Waiting for Ethereum provider to sync..." + await sleepAsync(sleepTime.seconds) + if sleepTime < 10: + inc sleepTime + proc bootstrapInteractions( s: CodexServer): Future[void] {.async.} = ## bootstrap interactions and return contracts @@ -79,6 +87,7 @@ proc bootstrapInteractions( quit QuitFailure let provider = JsonRpcProvider.new(config.ethProvider) + await waitForSync(provider) var signer: Signer if account =? config.ethAccount: signer = provider.getSigner(account) diff --git a/vendor/nim-ethers b/vendor/nim-ethers index fd16d71e..4c7e351f 160000 --- a/vendor/nim-ethers +++ b/vendor/nim-ethers @@ -1 +1 @@ -Subproject commit fd16d71ea58e8d3e5a7f41e5dfdaa3a9b693a815 +Subproject commit 4c7e351fd95af779786705eac0612b6a52b13380