77 Commits

Author SHA1 Message Date
Eric
a6aeb7ec49
add serialization for PastTransaction 2023-10-25 10:51:57 +11:00
Eric
35f80e78fe
Add PastTransaction with serialization and tests, clean up revertReason fetching 2023-10-25 10:51:57 +11:00
Eric
f52ce98c6d
Revert Transaction.data being optional, add better deserialization for Transaction object 2023-10-25 10:51:57 +11:00
Eric
45959cf608
debug logging 2023-10-25 10:51:57 +11:00
Eric
458e969397
Make Transaction.data optional
eth_getTransactionByHash responses from geth don't include data, and there was an exception raised, "key not found: data"
2023-10-25 10:51:56 +11:00
Eric
c39ce14502
fix tests 2023-10-25 10:51:56 +11:00
Eric
7cba9bd9be
prevent newHeads logs with no "data" field from killing sales state machine 2023-10-25 10:51:56 +11:00
Eric
f3d4d1cb82
add chronicles 2023-10-25 10:51:56 +11:00
Eric
6faab82ca9
debugging: switch echo to trace 2023-10-25 10:51:56 +11:00
Eric
a4fd152c8c
Add replay for failed txs to get revert reason 2023-10-25 10:51:56 +11:00
Eric
9536e5e5bf
more debug logging 2023-10-25 10:51:56 +11:00
Eric
e93549dbc2
temp debug info 2023-10-25 10:51:56 +11:00
Eric
7686ef4d1a
include nonce in JsonRpcProviderError
This would allow applications to use the nonce in case of an error, eg cancel the transaction to prevent stuck txs from occurring
2023-10-25 10:51:56 +11:00
Eric
9edb3d2fa7
cleanup -- combine ensureNonceSequence into populateTransaction 2023-10-25 10:51:56 +11:00
Eric
d88158c99a
PR feedback: remove auto-cancellation of failed transactions
- remove auto-cancellation of failed transaction (failed during estimate gas) to prevent stuck txs
- replace it with an 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
2023-10-25 10:51:31 +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
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
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
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
Adam Uhlíř
0321e6d7bd
fix: dont export json conversions of jsonrpc (#44) 2023-06-19 14:13: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
c5a40e5f9d Remove dependency on json-rpc provider for reverts 2022-09-21 10:29:31 +02:00
Mark Spanbroek
f545169331 Remove JSON wrapper from error in JSON RPC provider 2022-09-21 10:29:31 +02:00
Eric Mastro
f8ba91a297 Catch ValueError from nim-json-rpc 2022-09-20 13:15:15 +10:00
Mark Spanbroek
c72cdc5573 [wallet] cleanup 2022-08-08 15:07:41 +02:00
Mark Spanbroek
0483e1676a [provider] Rename sendRawTransaction -> sendTransaction
To be consistent with ethers.js
2022-08-08 15:07:41 +02:00
Jackie
b72fbb0ed9 small fixes 2022-08-08 12:40:36 +02:00
Jackie
2c9eb595d2 Add sendRawTransaction 2022-08-08 12:40:36 +02:00
Mark Spanbroek
16a3d25419 Remove duplication 2022-08-08 12:26:09 +02:00
Jackie
52f57894f5 Fix block subscription 2022-08-08 12:26:09 +02:00
Mark Spanbroek
95c5282b8a Raise EthersError when JSON-RPC fails 2022-06-30 10:52:12 +02:00
Mark Spanbroek
33df1e759d Move confirm from jsonrpc to provider 2022-05-25 09:28:15 +02:00
Mark Spanbroek
2653610b6b Raise EthersError instead of JsonRpcProviderError 2022-05-25 09:28:15 +02:00
Mark Spanbroek
346053e3f2 Turn confirm into proc instead of method 2022-05-25 09:28:15 +02:00
Mark Spanbroek
fff0d189a5 Ensure that confirm future is only finished once
Should fix CI failure
https://github.com/status-im/nim-ethers/runs/6557104597
2022-05-25 09:13:44 +02:00
Eric Mastro
c5c9534876 Refactor based on PR comments
- `TransactionReceipt.blockHash` is optional
- Block.number is optional (in case node doesn’t return this in the event)
- Refactor confirmations waiting such that there is no polling for a receipt at the start
- Make BlockHandler and SubscriptionHandler async
- change casing of constants
- change return type checking of contract method to check for `Confirmable` instead of `?TransactionRepsonse`
- Reduce miner sleep to 10ms
- Change `wait` and `Waitable` to `confirm` and `Confirmable` to avoid conflict with chrono’s `.wait`.
- Update params on `.confirm` so that the compiler can restrict values of the `int` to `Positive` and `Natural`.
- Add `Block` and `TransactionReceipt` conversion tests to test for missing block number and block hash.
- Add tests for confirmation calculations and determining if a tx has been mined from its receipt.
- Assume that blockNumber returned from node will be null or empty string, in which case we can parse as 0 and test for that condition.
2022-05-23 11:27:26 +10:00