137 Commits

Author SHA1 Message Date
Eric
d8bf5b0eae
deserialize key defaults to serialize key 2024-02-05 12:24:05 +11:00
Eric
1a6ab42434
cleanup 2024-02-02 18:43:56 +11:00
Eric
3b559a90de
handle exceptions during jsonrpc init
There are too many exceptions to catch individually, including chronos raising CatchableError exceptions in await expansion. There are also many other errors captured inside of the new proc with CatchableError. Instead of making it more complicated and harder to read, I think sticking with excepting CatchableError inside of convertError is a sensible solution
2024-02-02 18:43:47 +11:00
Eric
69f90a3d67
fix: specify raises for getAddress and sendTransaction
Fixes issue where getAddress and sendTransaction could not be found for MockSigner in tests. The problem was that the async: raises update had not been applied to the MockSigner.
2024-02-02 16:31:01 +11:00
Eric
502457633d
bump json-rpc to 0.4.0 and fix test 2024-02-01 19:01:18 +11:00
Eric
1b083e10ad
Add serde options to the json util, along with tests
next step is to:
1. change back any ethers var names that were changed for serialization purposes, eg `from` and `type`
2. move the json util to its own lib
2024-02-01 18:52:05 +11:00
Eric
64cc99442d
support nim 2.0 2024-01-30 19:25:24 +11:00
Eric
92b8ea028a
clean up - all tests passing 2024-01-30 17:41:47 +11:00
Eric
873124ccf7
Catch EstimateGasError before ProviderError
EstimateGasError is now a ProviderError (it is a SignerError, and SignerError is a ProviderError), so EstimateGasErrors were not being caught
2024-01-30 17:41:25 +11:00
Eric
1172b7e56a
remove raises from async annotation for dynamic dispatch
- removes async: raises from getAddress and signTransaction because derived JsonRpcSigner methods were not being used when dynamically dispatched. Once `raises` was removed from the async annotation, the dynamic dispatch worked again. This is only the case for getAddress and signTransaction.
- add gcsafe annotation to wallet.provider so that it matches the base method
2024-01-30 17:40:14 +11:00
Eric
59a7939e8f
Refactor exceptions for providers and signers, fix more tests
- signer procs raise SignerError, provider procs raise ProviderError
- WalletError now inherits from SignerError
- move wallet module under signers
- create jsonrpo moudle under signers
- bump nim-json-rpc for null-handling fixes
- All jsonrpc provider tests passing, still need to fix others
2024-01-29 22:20:48 +11:00
Eric
c261e96274
rename sender to from, update json error logging, add more conversions 2024-01-25 17:20:04 +11:00
Eric
526d954a01
Start fixing tests (mainly conversion fixes) 2024-01-24 18:09:47 +11:00
Eric
f6f0dbc07b
Update exceptions
Use {.async: (raises: [...].} where needed
Annotate provider with {.push raises:[].}
Format signatures
2024-01-24 14:36:53 +11:00
Eric
ad1fe90492
Fix json_rpc.call returning JsonString instead of JsonNode 2024-01-24 13:37:13 +11:00
Eric
71830221b6
More json conversion updates 2024-01-24 13:36:24 +11:00
Eric
d46db94f74
Add ethers implementation for setMethodHandler
Was removed in json-rpc
2024-01-24 11:55:44 +11:00
Eric
daa88cc8bf
Add json de/serialization lib from codex to handle conversions
json-rpc now requires nim-json-serialization to convert types to/from json. Use the nim-json-serialization signatures to call the json serialization lib from nim-codex (should be moved to its own lib)
2024-01-24 11:53:53 +11:00
Mark Spanbroek
c25de86656 remove upraises
we no longer support nim 1.2.x,
so upraises is no longer necessary
2023-12-12 09:28:06 +01:00
Mark Spanbroek
abe8585f53 Do not decrease nonce when it wasn't increased 2023-12-12 09:08:01 +01:00
Eric
16b28f4535 wrap try/finally around populateTransaction logic to ensure the lock is always released in the case of an error 2023-12-12 09:08:01 +01:00
Eric
2428b756d6
On transaction failure, fetch revert reason with replayed transaction (#57)
When transaction fails (receipt.status is Failed), fetch revert reason by replaying transaction.
2023-10-25 11:36:00 +11:00
Eric
7eac8410af
prevent stuck transactions by async locking nonce sequencing (+ estimate gas) (#55)
- async lock during nonce sequencing + gas estimation
- simplified cancelTransaction (still exported) such that the new transaction is populated using populateTransaction, so that all gas and fees are reset
- moved reverting contract function into its own testing helpers module, and refactored any tests to use it
- updated the test helper reverts to check EstimateGasErrors
- combine ensureNonceSequence into populateTransaction
2023-10-25 10:42:25 +11:00
Adam Uhlíř
620b402a7d
feat: (de/in)crease allowance (#56) 2023-10-16 10:23:58 +02:00
Eric
f0303473f6
Increment nonce count when populating transaction (#54)
Increment nonce count when populating transaction

Co-authored-by: markspanbroek <mark@spanbroek.net>
2023-09-15 09:54:08 +10:00
Mark Spanbroek
15ed76ebed Use Result to return error when wallet creation fails
Co-authored-by: Eric Mastro <eric.mastro@gmail.com>
2023-09-13 10:11:18 +02:00
Mark Spanbroek
81ec482fca Wallet: handle invalid key when instantiating new wallet 2023-09-13 10:11:18 +02:00
Mark Spanbroek
2b6f7b7a0d Fixes for Nim 2.0.0 2023-08-29 12:25:39 +02:00
Eric
12d7a35203
Query past contract events (#51)
Based on ethers.js's queryFilter, allows querying of past contract events, by querying the logs for a contract's event topic.

* queryFilter to query past logs
* Allow querying of past block log events
* Can query by block number or block hash
2023-07-20 15:51:28 +10:00
Mark Spanbroek
2b181aa0f7 Allow wallet to be instantiated with a PrivateKey 2023-07-05 15:08:35 +02:00
Mark Spanbroek
5ed3f15706 Return transaction response for ERC20 functions
Allows callers to wait for confirmation of the
transaction
2023-07-05 15:08:22 +02:00
Mark Spanbroek
d7b7f67afb Formatting 2023-07-05 15:08:22 +02:00
Mark Spanbroek
842bf4d0a2 Refactor wallet signing 2023-07-05 15:07:52 +02:00
Mark Spanbroek
f1a1221d14 Move WalletError into its own module 2023-07-05 15:07:52 +02:00
Mark Spanbroek
c89701016a Fix EIP-155 signatures 2023-07-05 15:07:52 +02:00
Mark Spanbroek
5127991117 Add "value" to Transaction object 2023-07-05 15:07:52 +02:00
Mark Spanbroek
09810e73ff Move confirm() override into contract module
And simplify its test
2023-07-04 12:58:48 +02:00
Mark Spanbroek
4e4a55b13e Cleanup 2023-07-04 12:58:48 +02:00
Mark Spanbroek
cb95cbc15a Make BlockHandler callback synchronous (breaking change)
Refactored the confirm() implementation to work
with a synchronous callback
2023-07-04 12:58:48 +02:00
Mark Spanbroek
82f6449374 Move JsonRpcSubscription type to jsonrpc module
Allows it to insert convertError to ensure that
any errors are re-raised as JsonRpcProviderError
2023-07-03 13:09:09 +02:00
Mark Spanbroek
738c6a87e2 Stop polling when provider is closed 2023-07-03 13:09:09 +02:00
Mark Spanbroek
a27c2de41c Close provider by unsubscribing and closing client 2023-07-03 13:09:09 +02:00
Mark Spanbroek
2481bda6e4 Subscribe to logs with polling 2023-07-03 13:09:09 +02:00
Mark Spanbroek
0aea16047c Ignore errors when retrieving block by hash 2023-07-03 13:09:09 +02:00
Mark Spanbroek
1b151d589d Add polling interval to constructor of provider 2023-07-03 13:09:09 +02:00
Mark Spanbroek
0322ae1451 Ignore errors while polling 2023-07-03 13:09:09 +02:00
Mark Spanbroek
50cfd9d9dd untilCancelled template 2023-07-03 13:09:09 +02:00
Mark Spanbroek
3a76fa74f1 Make polling interval configurable 2023-07-03 13:09:09 +02:00
Mark Spanbroek
6a034870f8 Polling block subscriptions for non-websocket connections 2023-07-03 13:09:09 +02:00
Mark Spanbroek
127c9c9b0d Formatting 2023-07-03 13:09:09 +02:00