@df0/network
v0.0.6
Published
This package contains functions and classes useful for communicating with the blockchain.
Downloads
2
Readme
@df0/network
This package contains functions and classes useful for communicating with the blockchain.
Installation
You can install this package using npm
or
yarn
by running:
npm install --save @df0/network
yarn add @df0/network
When using this in a plugin, you might want to load it with skypack
import * as network from 'http://cdn.skypack.dev/@df0/network';
Table of contents
Classes
Interfaces
Type Aliases
Functions
- aggregateBulkGetter
- assertProperlySigned
- callWithRetry
- createContract
- createEthConnection
- ethToWei
- getAutoGasPrices
- getGasSettingGwei
- gweiToWei
- isPurchase
- makeProvider
- neverResolves
- verifySignature
- waitForTransaction
- weiToEth
- weiToGwei
Type Aliases
AfterTransaction
Ƭ AfterTransaction: (transactionRequest
: Transaction
, performanceMetrics
: unknown
) => Promise
<void
>
Type declaration
▸ (transactionRequest
, performanceMetrics
): Promise
<void
>
TxExecutor calls this after executing a transaction.
Parameters
| Name | Type |
| :------------------- | :------------ |
| transactionRequest
| Transaction
|
| performanceMetrics
| unknown
|
Returns
Promise
<void
>
BeforeQueued
Ƭ BeforeQueued: (id
: TransactionId
, intent
: TxIntent
, overrides?
: providers.TransactionRequest
) => Promise
<void
>
Type declaration
▸ (id
, intent
, overrides?
): Promise
<void
>
TxExecutor calls this before queueing a function to determine whether or not that function should be queued. If this function rejects, a transaction is not queued.
Parameters
| Name | Type |
| :----------- | :----------------------------- |
| id
| TransactionId
|
| intent
| TxIntent
|
| overrides?
| providers.TransactionRequest
|
Returns
Promise
<void
>
BeforeTransaction
Ƭ BeforeTransaction: (transactionRequest
: Transaction
) => Promise
<void
>
Type declaration
▸ (transactionRequest
): Promise
<void
>
TxExecutor calls this before executing a function to determine whether or not that function should execute. If this function rejects, the transaction is cancelled.
Parameters
| Name | Type |
| :------------------- | :------------ |
| transactionRequest
| Transaction
|
Returns
Promise
<void
>
ContractLoader
Ƭ ContractLoader<T
>: (address
: string
, provider
: providers.JsonRpcProvider
, signer?
: Wallet
) => Promise
<T
>
Type parameters
| Name | Type |
| :--- | :----------------- |
| T
| extends Contract
|
Type declaration
▸ (address
, provider
, signer?
): Promise
<T
>
Parameters
| Name | Type |
| :--------- | :-------------------------- |
| address
| string
|
| provider
| providers.JsonRpcProvider
|
| signer?
| Wallet
|
Returns
Promise
<T
>
GasPriceSettingProvider
Ƭ GasPriceSettingProvider: (transactionRequest
: Transaction
) => AutoGasSetting
| string
Type declaration
▸ (transactionRequest
): AutoGasSetting
| string
Returns either a string that represents the gas price we should use by default for transactions, or a string that represents the fact that we should be using one of the automatic gas prices.
Parameters
| Name | Type |
| :------------------- | :------------ |
| transactionRequest
| Transaction
|
Returns
AutoGasSetting
| string
RetryErrorHandler
Ƭ RetryErrorHandler: (i
: number
, e
: Error
) => void
Type declaration
▸ (i
, e
): void
Parameters
| Name | Type |
| :--- | :------- |
| i
| number
|
| e
| Error
|
Returns
void
Functions
aggregateBulkGetter
▸ aggregateBulkGetter<T
>(total
, querySize
, getterFn
, onProgress?
, offset?
): Promise
<T
[]>
A useful utility function that breaks up the proverbial number line (defined by {@code total} and {@code querySize}), and calls {@code getterFn} for each of the sections on the number line.
Type parameters
| Name |
| :--- |
| T
|
Parameters
| Name | Type | Default value | Description |
| :------------ | :-------------------------------------------------------------- | :------------ | :---------------------------------------------------------------------------------------------------------------------- |
| total
| number
| undefined
| the total amount of of items to get |
| querySize
| number
| undefined
| the chunk size |
| getterFn
| (startIdx
: number
, endIdx
: number
) => Promise
<T
[]> | undefined
| a function that fetches something, given a start index and end index |
| onProgress?
| (fractionCompleted
: number
) => void
| undefined
| whenever a chunk is loaded, this function is called with the fraction of individual items that have been loaded so far. |
| offset
| number
| 0
| the index to start fetching, can be used to skip previously fetched elements. |
Returns
Promise
<T
[]>
a list of each of the individual items that were loaded.
assertProperlySigned
▸ assertProperlySigned(message
): void
Ensures that the given message was properly signed.
Parameters
| Name | Type |
| :-------- | :-------------------------- |
| message
| SignedMessage
<unknown
> |
Returns
void
callWithRetry
▸ callWithRetry<T
>(fn
, args?
, onError?
, maxRetries?
, retryInterval?
): Promise
<T
>
Calls the given function, retrying it if there is an error.
todo
Get rid of this, and make use of ContractCaller.
Type parameters
| Name |
| :--- |
| T
|
Parameters
| Name | Type | Default value |
| :-------------- | :------------------------------------------------- | :------------------------- |
| fn
| (...args
: any
[]) => Promise
<T
> | undefined
|
| args
| any
[] | []
|
| onError?
| RetryErrorHandler
| undefined
|
| maxRetries
| 12
| DEFAULT_MAX_CALL_RETRIES
|
| retryInterval
| number
| 1000
|
Returns
Promise
<T
>
createContract
▸ createContract<C
>(contractAddress
, contractABI
, provider
, signer?
): C
Type parameters
| Name | Type |
| :--- | :----------------------- |
| C
| extends Contract
<C
> |
Parameters
| Name | Type | Description |
| :---------------- | :------------------ | :------------------------------------------------- |
| contractAddress
| string
| the address of the contract you want to connect to |
| contractABI
| ContractInterface
| a javacript object representing the ABI |
| provider
| JsonRpcProvider
| - |
| signer?
| Wallet
| - |
Returns
C
createEthConnection
▸ createEthConnection(rpcUrl
): Promise
<EthConnection
>
Parameters
| Name | Type |
| :------- | :------- |
| rpcUrl
| string
|
Returns
Promise
<EthConnection
>
ethToWei
▸ ethToWei(eth
): BigNumber
Returns the given amount of eth in wei as a big integer.
Parameters
| Name | Type |
| :---- | :------- |
| eth
| number
|
Returns
BigNumber
getAutoGasPrices
▸ getAutoGasPrices(): Promise
<GasPrices
>
Gets the current gas prices from xDai's price oracle. If the oracle is broken, return some sane defaults.
Returns
Promise
<GasPrices
>
getGasSettingGwei
▸ getGasSettingGwei(setting
, gasPrices
): number
| undefined
Given the user's auto gas setting, and the current set of gas prices on the network, returns the preferred gas price. If an invalid {@link AutoGasSetting} is provided, then returns undefined.
Parameters
| Name | Type |
| :---------- | :--------------- |
| setting
| AutoGasSetting
|
| gasPrices
| GasPrices
|
Returns
number
| undefined
gweiToWei
▸ gweiToWei(gwei
): BigNumber
Returns the given amount of gwei in wei as a big integer.
Parameters
| Name | Type |
| :----- | :------- |
| gwei
| number
|
Returns
BigNumber
isPurchase
▸ isPurchase(tx?
): boolean
Whether or not some value is being transferred in this transaction.
Parameters
| Name | Type |
| :---- | :------------------- |
| tx?
| TransactionRequest
|
Returns
boolean
makeProvider
▸ makeProvider(rpcUrl
): providers.JsonRpcProvider
Creates a new {@link JsonRpcProvider}, and makes sure that it's connected to xDai if we're in production.
Parameters
| Name | Type |
| :------- | :------- |
| rpcUrl
| string
|
Returns
providers.JsonRpcProvider
neverResolves
▸ neverResolves(): Promise
<void
>
A function that just never resolves.s
Returns
Promise
<void
>
verifySignature
▸ verifySignature(message
, signature
, addr
): boolean
Returns whether or not the given message was signed by the given address.
Parameters
| Name | Type |
| :---------- | :-------------------------- |
| message
| string
|
| signature
| string
|
| addr
| undefined
| EthAddress
|
Returns
boolean
waitForTransaction
▸ waitForTransaction(provider
, txHash
): Promise
<providers.TransactionReceipt
>
Given a transaction hash and a JsonRpcProvider, waits for the given transaction to complete.
Parameters
| Name | Type |
| :--------- | :---------------- |
| provider
| JsonRpcProvider
|
| txHash
| string
|
Returns
Promise
<providers.TransactionReceipt
>
weiToEth
▸ weiToEth(wei
): number
Returns the given amount of wei in gwei as a number.
Parameters
| Name | Type |
| :---- | :---------- |
| wei
| BigNumber
|
Returns
number
weiToGwei
▸ weiToGwei(wei
): number
Returns the given amount of wei in gwei as a number.
Parameters
| Name | Type |
| :---- | :---------- |
| wei
| BigNumber
|
Returns
number