UNPKG

@infibridge/celo-sdk-base

Version:

EthersJS wrapper for Celo Blockchain. Based on https://github.com/celo-tools/celo-ethers-wrapper with small modifications.

57 lines 4.67 kB
import { BigNumber, providers, utils } from 'ethers'; import { parseCeloTransaction } from './CeloTransactionsWrapper'; export class CeloProvider extends providers.JsonRpcProvider { constructor(url, network) { super(url, network); // Override certain block formatting properties that don't exist on Celo blocks // Reaches into https://github.com/ethers-io/ethers.js/blob/master/packages/providers/src.ts/formatter.ts const blockFormat = this.formatter.formats.block; blockFormat.gasLimit = () => BigNumber.from(0); blockFormat.nonce = () => ''; blockFormat.difficulty = () => 0; } /** * Override to parse transaction correctly * https://github.com/ethers-io/ethers.js/blob/master/packages/providers/src.ts/base-provider.ts */ async sendTransaction(signedTransaction) { await this.getNetwork(); const signedTx = await Promise.resolve(signedTransaction); const hexTx = utils.hexlify(signedTx); const tx = parseCeloTransaction(signedTx); try { const hash = await this.perform('sendTransaction', { signedTransaction: hexTx, }); return this._wrapTransaction(tx, hash); } catch (error) { error.transaction = tx; error.transactionHash = tx.hash; throw error; } } /** * Override to handle alternative gas currencies * getGasPrice in https://github.com/ethers-io/ethers.js/blob/master/packages/providers/src.ts/base-provider.ts */ async getGasPrice(feeCurrencyAddress) { await this.getNetwork(); const params = feeCurrencyAddress ? { feeCurrencyAddress } : {}; return BigNumber.from(await this.perform('getGasPrice', params)); } /** * Override to handle alternative gas currencies * prepareRequest in https://github.com/ethers-io/ethers.js/blob/master/packages/providers/src.ts/json-rpc-provider.ts */ prepareRequest(method, params) { if (method === 'getGasPrice') { const param = params.feeCurrencyAddress ? [params.feeCurrencyAddress] : []; return ['eth_gasPrice', param]; } return super.prepareRequest(method, params); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2Vsb1Byb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NlbG9Qcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFFaEUsTUFBTSxPQUFPLFlBQWEsU0FBUSxTQUFTLENBQUMsZUFBZTtJQUN2RCxZQUNJLEdBQW1DLEVBQ25DLE9BQThCO1FBRTlCLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFFbkIsK0VBQStFO1FBQy9FLHlHQUF5RztRQUN6RyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUE7UUFDaEQsV0FBVyxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzlDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFBO1FBQzVCLFdBQVcsQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUNqQixpQkFBMkM7UUFFM0MsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDdkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDekQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNyQyxNQUFNLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN6QyxJQUFJO1lBQ0EsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFO2dCQUMvQyxpQkFBaUIsRUFBRSxLQUFLO2FBQzNCLENBQUMsQ0FBQTtZQUNGLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQTtTQUN6QztRQUFDLE9BQU8sS0FBVSxFQUFFO1lBQ2pCLEtBQUssQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFBO1lBQ3RCLEtBQUssQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTtZQUMvQixNQUFNLEtBQUssQ0FBQTtTQUNkO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsa0JBQTJCO1FBQ3pDLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUMvRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFBO0lBQ3BFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsTUFBVyxFQUFFLE1BQVc7UUFDbkMsSUFBSSxNQUFNLEtBQUssYUFBYSxFQUFFO1lBQzFCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0I7Z0JBQ25DLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtZQUNSLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUE7U0FDakM7UUFFRCxPQUFPLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQy9DLENBQUM7Q0FDSiJ9