@df0/network v0.0.6
@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/networkyarn add @df0/networkWhen 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