@infibridge/celo-sdk-base
Version:
EthersJS wrapper for Celo Blockchain. Based on https://github.com/celo-tools/celo-ethers-wrapper with small modifications.
61 lines • 4.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CeloProvider = void 0;
const ethers_1 = require("ethers");
const CeloTransactionsWrapper_1 = require("./CeloTransactionsWrapper");
class CeloProvider extends ethers_1.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 = () => ethers_1.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 = ethers_1.utils.hexlify(signedTx);
const tx = (0, CeloTransactionsWrapper_1.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 ethers_1.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);
}
}
exports.CeloProvider = CeloProvider;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2Vsb1Byb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NlbG9Qcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBb0Q7QUFDcEQsdUVBQWdFO0FBRWhFLE1BQWEsWUFBYSxTQUFRLGtCQUFTLENBQUMsZUFBZTtJQUN2RCxZQUNJLEdBQW1DLEVBQ25DLE9BQThCO1FBRTlCLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFFbkIsK0VBQStFO1FBQy9FLHlHQUF5RztRQUN6RyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUE7UUFDaEQsV0FBVyxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxrQkFBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5QyxXQUFXLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQTtRQUM1QixXQUFXLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FDakIsaUJBQTJDO1FBRTNDLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3pELE1BQU0sS0FBSyxHQUFHLGNBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDckMsTUFBTSxFQUFFLEdBQUcsSUFBQSw4Q0FBb0IsRUFBQyxRQUFRLENBQUMsQ0FBQTtRQUN6QyxJQUFJO1lBQ0EsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFO2dCQUMvQyxpQkFBaUIsRUFBRSxLQUFLO2FBQzNCLENBQUMsQ0FBQTtZQUNGLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQTtTQUN6QztRQUFDLE9BQU8sS0FBVSxFQUFFO1lBQ2pCLEtBQUssQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFBO1lBQ3RCLEtBQUssQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTtZQUMvQixNQUFNLEtBQUssQ0FBQTtTQUNkO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsa0JBQTJCO1FBQ3pDLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUMvRCxPQUFPLGtCQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYyxDQUFDLE1BQVcsRUFBRSxNQUFXO1FBQ25DLElBQUksTUFBTSxLQUFLLGFBQWEsRUFBRTtZQUMxQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsa0JBQWtCO2dCQUNuQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUM7Z0JBQzdCLENBQUMsQ0FBQyxFQUFFLENBQUE7WUFDUixPQUFPLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ2pDO1FBRUQsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0NBQ0o7QUE5REQsb0NBOERDIn0=