From 54c66db82769d6835c8d2f01bd089f4c5e0fffc2 Mon Sep 17 00:00:00 2001 From: Mark Spanbroek Date: Mon, 24 Jan 2022 12:12:52 +0100 Subject: [PATCH] Adds Signer.getGasPrice() --- ethers.nim | 2 ++ ethers/provider.nim | 3 +++ ethers/providers/jsonrpc.nim | 7 +++++++ ethers/providers/rpccalls/signatures.nim | 1 + ethers/signer.nim | 9 ++++++++- testmodule/testJsonRpcSigner.nim | 5 +++++ 6 files changed, 26 insertions(+), 1 deletion(-) diff --git a/ethers.nim b/ethers.nim index 7c5af0f..f926969 100644 --- a/ethers.nim +++ b/ethers.nim @@ -1,7 +1,9 @@ import ./ethers/provider +import ./ethers/signer import ./ethers/providers/jsonrpc import ./ethers/contract export provider +export signer export jsonrpc export contract diff --git a/ethers/provider.nim b/ethers/provider.nim index 5d9436d..7d27b98 100644 --- a/ethers/provider.nim +++ b/ethers/provider.nim @@ -14,3 +14,6 @@ method getBlockNumber*(provider: Provider): Future[UInt256] {.base.} = method call*(provider: Provider, tx: Transaction): Future[seq[byte]] {.base.} = doAssert false, "not implemented" + +method getGasPrice*(provider: Provider): Future[UInt256] {.base.} = + doAssert false, "not implemented" diff --git a/ethers/providers/jsonrpc.nim b/ethers/providers/jsonrpc.nim index c45a81d..27a4ac5 100644 --- a/ethers/providers/jsonrpc.nim +++ b/ethers/providers/jsonrpc.nim @@ -64,8 +64,15 @@ method call*(provider: JsonRpcProvider, let client = await provider.client return await client.eth_call(tx) +method getGasPrice*(provider: JsonRpcProvider): Future[UInt256] {.async.} = + let client = await provider.client + return await client.eth_gasprice() + # Signer +method provider*(signer: JsonRpcSigner): Provider = + signer.provider + method getAddress*(signer: JsonRpcSigner): Future[Address] {.async.} = if address =? signer.address: return address diff --git a/ethers/providers/rpccalls/signatures.nim b/ethers/providers/rpccalls/signatures.nim index 3fdc397..a053415 100644 --- a/ethers/providers/rpccalls/signatures.nim +++ b/ethers/providers/rpccalls/signatures.nim @@ -1,3 +1,4 @@ proc eth_accounts: seq[Address] proc eth_blockNumber: UInt256 proc eth_call(tx: Transaction): seq[byte] +proc eth_gasPrice(): UInt256 diff --git a/ethers/signer.nim b/ethers/signer.nim index e1a0618..37e5ee4 100644 --- a/ethers/signer.nim +++ b/ethers/signer.nim @@ -1,8 +1,15 @@ import ./basics +import ./provider export basics type Signer* = ref object of RootObj -method getAddress*(signer: Signer): Future[Address] {.base, async.} = +method provider*(signer: Signer): Provider {.base.} = doAssert false, "not implemented" + +method getAddress*(signer: Signer): Future[Address] {.base.} = + doAssert false, "not implemented" + +method getGasPrice*(signer: Signer): Future[UInt256] {.base.} = + signer.provider.getGasPrice() diff --git a/testmodule/testJsonRpcSigner.nim b/testmodule/testJsonRpcSigner.nim index 544c2c5..fa34e5b 100644 --- a/testmodule/testJsonRpcSigner.nim +++ b/testmodule/testJsonRpcSigner.nim @@ -16,3 +16,8 @@ suite "JsonRpcSigner": let account = (await provider.listAccounts())[1] let signer = provider.getSigner(account) check (await signer.getAddress()) == account + + test "can retrieve gas price": + let signer = provider.getSigner() + let gasprice = await signer.getGasPrice() + check gasprice > 0.u256