102 Commits

Author SHA1 Message Date
Eric
0ad648efdd
rename subscriptions.init > subscriptions.start 2024-02-19 16:33:35 +11:00
Eric
fc2ffff279
address PR feedback
- add comments to hashes shim
- remove .catch from callback condition
- derive SignerError from EthersError instead of ProviderError. This allows Providers and Signers to be separate, as Ledger does it, to isolate functionality. Some signer functions now raise both ProviderError and SignerError
- Update reverts to check for SignerError
- Update ERC-20 method comment
2024-02-12 13:15:05 +11:00
Eric
f5b26f69c1
Move hash* shim to its own module 2024-02-08 14:54:32 +11:00
Eric
fae4339ab6
use nim-serde instead of json util
Allows aliasing of de/serialized fields, so revert changes of sender to `from` and transactionType to `type`
2024-02-08 13:02:02 +11:00
Eric
4a5028f295
Add more tests for OptIn/OptOut/Strict modes, fix logic 2024-02-06 15:42:11 +11:00
Eric
d8bf5b0eae
deserialize key defaults to serialize key 2024-02-05 12:24:05 +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
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
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
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
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
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
c89701016a Fix EIP-155 signatures 2023-07-05 15:07:52 +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
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
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
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
Mark Spanbroek
76bd3090d1 Fix intermittently failing test
eth_getFilterChanges returns the current block for
new subscriptions, which made the test fail.
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
88d60b14b0 Test JSON-RPC Provider with polling 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
beac903a3f Remove duplication in tests 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
a7dc0ac9eb Move subscription handling to its own module 2023-07-03 13:09:09 +02:00
Mark Spanbroek
67c2d631d7 Update asynctest to 0.4.0 2023-07-03 13:09:09 +02:00
Mark Spanbroek
f0ac7065ed Move tests for JSON RPC provider into their own folder 2023-07-03 13:09:09 +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
Mark Spanbroek
a62ea4fb8f Ensure that reverts works with functions with a return type 2022-09-21 10:29:31 +02: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
Mark Spanbroek
cac6026b34 Change reverts API
- Enables postfix syntax: `call().reverts(reason)`
- Removes doesNotRevert etc; uses `check not` instead
- Removes waitFor(); return Future instead
2022-09-21 10:29:31 +02:00
Eric Mastro
4d7e40eb0e remove en/decoding for distinct types
The changes to `nim-contract-abi` in https://github.com/status-im/nim-contract-abi/pull/5 have allowed for distinct type en/decoding procs to not need to be defined.
2022-09-21 10:27:45 +10:00