@ericnordelo/cross-chain-bridge-helpers
Version:
This package is intented to be used alongside the Openzeppelin cross-chain libraries, to create the corresponding required bridge config for multiple bridges.
52 lines • 2.33 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.L2Bridge = void 0;
const ethers_1 = require("ethers");
const constants_1 = require("../../constants");
class L2Bridge {
constructor(bridge) {
this.bridge = bridge;
// bridge Id is the firts 4 bytes of the keccak256 of the bridge (without the testnet)
this.bridgeId = ethers_1.utils.id(this._formatBridgeForId(bridge)).slice(0, 10);
}
loadProviders(providers) {
return __awaiter(this, void 0, void 0, function* () {
this.l1Provider = providers.l1Provider;
this.l2Provider = providers.l2Provider;
// check the chain Id to avoid using the wrong providers
const l1Network = yield this.l1Provider.getNetwork();
const l2Network = yield this.l2Provider.getNetwork();
this._checkNetworks(l1Network, l2Network);
});
}
_checkNetworks(l1Network, l2Network) {
if (l1Network.chainId != constants_1.bridges[this.bridge].l1ChainId) {
console.log('Error: Invalid l1 provider chain Id');
process.exit(0);
}
if (l2Network.chainId != constants_1.bridges[this.bridge].l2ChainId) {
console.log('Error: Invalid l2 provider chain Id');
process.exit(0);
}
}
_formatBridgeForId(bridge) {
if (bridge.endsWith('-Rinkeby')) {
return bridge.slice(0, -8);
}
else if (bridge.endsWith('-Kovan')) {
return bridge.slice(0, -6);
}
return bridge;
}
}
exports.L2Bridge = L2Bridge;
//# sourceMappingURL=L2Bridge.js.map