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