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
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
Ben Bierens
67ab667284
Adds isSyncing to provider ( #62 )
2024-02-27 09:17:45 +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
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
Mark Spanbroek
16fa0cfcf8
Use new subscription handling in JSON RPC provider
2023-07-03 13:09:09 +02:00
Mark Spanbroek
a7dc0ac9eb
Move subscription handling to its own module
2023-07-03 13:09:09 +02:00
Mark Spanbroek
0b951ce146
Set correct content-type for JSON-RPC
2023-07-03 11:29:31 +02:00
Eric Mastro
34b7a82565
fix: pending blocks may not contains block hash
...
Pending blocks may not contain a block hash and therefore Block.hash should be optional.
2023-07-03 11:29:09 +02:00
Adam Uhlíř
0321e6d7bd
fix: dont export json conversions of jsonrpc ( #44 )
2023-06-19 14:13:44 +02:00
Adam Uhlíř
18e225607c
fix: eth_call use signers address ( #43 )
2023-06-13 16:24:59 +02:00
Mark Spanbroek
1ca90d0b3c
Allow contract calls to override the block tag
2023-04-19 10:03:50 +02:00
Adam Uhlíř
3c12a65769
feat: erc20 module ( #38 )
...
Co-authored-by: Eric Mastro <github@egonat.me>
2023-03-29 13:41:44 +02:00
Ben Bierens
577e02b8a2
enables stylecheck ( #36 )
...
* enables stylecheck
* applies style check
* Applying style check
* uses alias to fix ambiguity
2023-03-09 10:58:54 +01:00
Mark Spanbroek
e8592bb922
Remove unnecessary error check
2022-09-21 10:29:31 +02:00
Mark Spanbroek
7d2acd65e8
Fix imports
2022-09-21 10:29:31 +02:00
Mark Spanbroek
a62ea4fb8f
Ensure that `reverts` works with functions with a return type
2022-09-21 10:29:31 +02:00