Commit Graph

26 Commits

Author SHA1 Message Date
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 a27c2de41c Close provider by unsubscribing and closing client 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
Mark Spanbroek c5a40e5f9d Remove dependency on json-rpc provider for `reverts` 2022-09-21 10:29:31 +02:00
Mark Spanbroek 0483e1676a [provider] Rename sendRawTransaction -> sendTransaction
To be consistent with ethers.js
2022-08-08 15:07:41 +02:00
Jackie 1af3ab1a0a Make wallet use Provider not JsonRpcProvider 2022-08-08 12:40:36 +02:00
Mark Spanbroek 801bf19157 Remove calls to Option.get 2022-05-25 09:28:15 +02:00
Mark Spanbroek 33df1e759d Move `confirm` from `jsonrpc` to `provider` 2022-05-25 09:28:15 +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
Eric Mastro a3e888128c feat: Allow contract transactions to be waited on
Allow waiting for a specified number of confirmations for contract transactions.

This change only requires an optional TransactionResponse return type to be added to the contract function. This allows the transaction hash to be passed to `.wait`.

For example, previously the `mint` method looked like this without a return value:
```
method mint(token: TestToken, holder: Address, amount: UInt256) {.base, contract.}
```
it still works without a return value, but if we want to wait for a 3 confirmations, we can now define it like this:
```
method mint(token: TestToken, holder: Address, amount: UInt256): ?TransactionResponse {.base, contract.}
```
and use like this:
```
let receipt = await token.connect(signer0)
                    .mint(accounts[1], 100.u256)
                    .wait(3) # wait for 3 confirmations
```
2022-05-23 11:27:26 +10:00
Eric Mastro 2f97a03fe2 feat: Can wait for transaction confirmations
Allows specified number of transaction confirmations to be awaited before a transaction is considered finalised. Polls for a transaction receipt then listens for new blocks and calculates the number of blocks between the receipt and the new block.

Notes
1. Only works with websockets currently
2. Replaced transaction not supported yet
2022-05-23 11:27:26 +10:00
Mark Spanbroek bbf133725f Subscribe to new blocks 2022-05-17 09:08:02 +02:00
Michael Bradley, Jr 073924d3f5 supply block parameter to eth_call, default being BlockTag.latest 2022-04-11 09:56:49 +02:00
Mark Spanbroek c53d2235e6 Fix method signature 2022-03-17 10:30:42 +01:00
Mark Spanbroek ce435f8791 Add Provider.getBlock()
Only returns hash, number and timestamp for now.
2022-03-16 14:20:00 +01:00
Mark Spanbroek ff5a35aac0 Define and subscribe to solidity events 2022-02-09 14:50:51 +01:00
Mark Spanbroek 4acc6ef45c Add Signer.getChainId() 2022-01-24 17:29:25 +01:00
Mark Spanbroek 7e32f5ee51 Add Signer.estimateGas() 2022-01-24 14:40:47 +01:00
Mark Spanbroek 30bea4759c Adds Signer.getTransactionCount() 2022-01-24 12:14:31 +01:00
Mark Spanbroek 54c66db827 Adds Signer.getGasPrice() 2022-01-24 12:12:52 +01:00
Mark Spanbroek 04ff046553 Introduce Contract abstraction 2022-01-20 12:56:18 +01:00
Mark Spanbroek 177ed78d65 Ensure that no unexpected exceptions are raised 2022-01-18 14:51:53 +01:00
Mark Spanbroek 7bc102a421 Provider.getBlockNumber() 2022-01-18 14:26:41 +01:00
Mark Spanbroek 05366c4a49 Introduce JsonRpcProvider 2022-01-18 12:10:20 +01:00