191 Commits

Author SHA1 Message Date
Eric
3b5483d37d
removes lastSeenNonce
Removes lastSeenNonce and updating/decreasing of the nonce, as this is not required if populateTransaction and sendTransaction are async locked.
2024-10-16 20:11:48 +11:00
Eric
a513d66f9b
fix nonce issues by locking populate and send transaction
Concurrent asynchronous population of transactions cause issues with nonces not being in sync with the transaction count for an account on chain. This was being mitigated by tracking a "last seen" nonce and locking inside of `populateTransaction` so that the nonce could be populated in a concurrent fashion. However, if there was an async cancellation before the transaction was sent, then the nonce would become out of sync. One solution was to decrease the nonce if a cancellation occurred. The other solution, in this commit, is simply to lock the populate and sendTransaction calls together, so that there will not be concurrent nonce discrepancies. This removes the need for "lastSeenNonce" and is overall more simple.
2024-10-16 20:06:07 +11:00
benbierens
5b170adcb1
Fixes isSyncing issue where object is evaluated as false 2024-03-08 12:55:54 +01:00
Mark Spanbroek
43cef2f7ca Fix warnings 2024-03-03 06:35:17 +01:00
Mark Spanbroek
6f2201e3cd Fix: overrides when simulating transaction 2024-03-03 06:34:21 +01:00
Mark Spanbroek
964ea428ed Fix: ensure that gas estimations are done using the "pending" block 2024-02-27 09:51:42 +01:00
Mark Spanbroek
4c7e351fd9 version 0.7.3 0.7.3 2024-02-27 09:19:41 +01:00
Ben Bierens
67ab667284 Adds isSyncing to provider (#62) 2024-02-27 09:17:45 +01:00
Mark Spanbroek
fd16d71ea5 version 0.7.1 0.7.1 2023-12-12 09:28:52 +01: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
04b91d9f65 Test with Nim 1.6.16 2023-12-12 09:17:52 +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
8fff63102a version 0.7.0 0.7.0 2023-09-13 13:54:41 +02: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
43041e7948 Small fix in Readme 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
2ec0313dd3 version 0.6.0
updated contractabi brings in breaking change in nimcrypto
0.6.0
2023-08-29 12:25:39 +02:00
Mark Spanbroek
9327294044 update contractabi to 0.6.0 2023-08-29 12:25:39 +02:00
Mark Spanbroek
2b6f7b7a0d Fixes for Nim 2.0.0 2023-08-29 12:25:39 +02:00
Mark Spanbroek
99c225caa1 Update latest nim 1.6.x in CI 2023-08-29 12:25:39 +02:00
Eric
9f4f762e21
version 0.5.0
Breaking change:
`Filter` has been changed to `EventFilter` to be inline with ethers.js. `Filter` is used for creating subscriptions in `nim-ethers`. All previously-created instances of `Filter` in your consuming application code should be changed to `EventFilter`.
0.5.0
2023-07-24 15:54:18 +10: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
c49311fca2 version 0.4.0 0.4.0 2023-07-05 15:09:31 +02:00
Mark Spanbroek
5f820fc971 Cleanup 2023-07-05 15:08:35 +02: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
e086b71b42 version 0.3.0 0.3.0 2023-07-04 12:58:48 +02:00
Mark Spanbroek
310b06dfe8 Fix warnings 2023-07-04 12:58:48 +02:00
Mark Spanbroek
cd32dffc73 Move JSON conversion tests into their own module 2023-07-04 12:58:48 +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
0674548ecc Update contractabi to 0.5.0 2023-07-03 13:09:09 +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
f8cac08cde Test that subscription stops after call to unsubscribe() 2023-07-03 13:09:09 +02:00
Mark Spanbroek
ceedf03c82 Subscriptions now also supported with http url 2023-07-03 13:09:09 +02:00
Mark Spanbroek
738d028fe3 Remove websockets url where not needed for tests 2023-07-03 13:09:09 +02:00
Mark Spanbroek
7e346914c0 Test contracts with polling 2023-07-03 13:09:09 +02:00