Skip to content

Commit b7f36ba

Browse files
committed
a few more scripts to help with brige migrations
1 parent 6c8a5f3 commit b7f36ba

File tree

2 files changed

+183
-3
lines changed

2 files changed

+183
-3
lines changed

tasks/deploy/chain_bridge.js

Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,15 @@ const {
2323
deployChainBridgeSatelliteChainGatewayContracts,
2424
} = require('../../helpers/deploy');
2525

26+
const {
27+
XC_REBASE_RESOURCE_ID,
28+
XC_TRANSFER_RESOURCE_ID,
29+
CB_FUNCTION_SIG_baseChainReportRebase,
30+
CB_FUNCTION_SIG_satelliteChainReportRebase,
31+
CB_FUNCTION_SIG_baseChainTransfer,
32+
CB_FUNCTION_SIG_satelliteChainTransfer,
33+
} = require('../../sdk/chain_bridge');
34+
2635
task(
2736
'deploy:chain_bridge_use_deployed',
2837
'Generates deployment files for a deployed instance of Bridge',
@@ -307,3 +316,173 @@ cbDeployTask(
307316
xcAmpleController.address,
308317
]);
309318
});
319+
320+
txTask(
321+
'deploy:chain_bridge:add_handlers',
322+
'Prepares bridge transactions to update bridge contracts',
323+
)
324+
.addParam(
325+
'satelliteChainNetworks',
326+
'List of satellite chain hardhat networks',
327+
[],
328+
types.json,
329+
)
330+
.setAction(async (args, hre) => {
331+
const deployer = await loadSignerSync(args, hre.ethers.provider);
332+
const deployerAddress = await deployer.getAddress();
333+
334+
const network = hre.network.name;
335+
const provider = hre.ethers.provider;
336+
const txParams = { gasPrice: args.gasPrice, gasLimit: args.gasLimit };
337+
if (txParams.gasPrice == 0) {
338+
txParams.gasPrice = await provider.getGasPrice();
339+
}
340+
341+
const bridge = await getDeployedContractInstance(
342+
network,
343+
'chainBridge/bridge',
344+
provider,
345+
);
346+
const genericHandler = await getDeployedContractInstance(
347+
network,
348+
'chainBridge/genericHandler',
349+
provider,
350+
);
351+
const rebaseGateway = await getDeployedContractInstance(
352+
network,
353+
'chainBridge/rebaseGateway',
354+
provider,
355+
);
356+
const transferGateway = await getDeployedContractInstance(
357+
network,
358+
'chainBridge/rebaseGateway',
359+
provider,
360+
);
361+
362+
// Base chain
363+
const adminRole = await bridge.DEFAULT_ADMIN_ROLE();
364+
const isAdmin = await bridge.hasRole(adminRole, deployerAddress);
365+
const reportRebaseFnSig = CB_FUNCTION_SIG_baseChainReportRebase(
366+
rebaseGateway,
367+
);
368+
const transferFnSig = CB_FUNCTION_SIG_baseChainTransfer(transferGateway);
369+
370+
if (isAdmin) {
371+
await (
372+
await bridge
373+
.connect(deployer)
374+
.adminSetGenericResource(
375+
genericHandler.address,
376+
XC_REBASE_RESOURCE_ID,
377+
rebaseGateway.address,
378+
...reportRebaseFnSig,
379+
txParams,
380+
)
381+
).wait();
382+
383+
await (
384+
await bridge
385+
.connect(deployer)
386+
.adminSetGenericResource(
387+
genericHandler.address,
388+
XC_TRANSFER_RESOURCE_ID,
389+
transferGateway.address,
390+
...transferFnSig,
391+
txParams,
392+
)
393+
).wait();
394+
} else {
395+
console.log('Execute the following on-chain', network);
396+
console.log('adminSetGenericResource', [
397+
genericHandler.address,
398+
XC_REBASE_RESOURCE_ID,
399+
rebaseGateway.address,
400+
...reportRebaseFnSig,
401+
]);
402+
console.log('adminSetGenericResource', [
403+
genericHandler.address,
404+
XC_TRANSFER_RESOURCE_ID,
405+
transferGateway.address,
406+
...transferFnSig,
407+
]);
408+
}
409+
410+
// sat chains
411+
for (let n in args.satelliteChainNetworks) {
412+
const network = args.satelliteChainNetworks[n];
413+
const provider = await getEthersProvider(network);
414+
415+
const txParams = { gasPrice: args.gasPrice, gasLimit: args.gasLimit };
416+
if (txParams.gasPrice == 0) {
417+
txParams.gasPrice = await provider.getGasPrice();
418+
}
419+
420+
const bridge = await getDeployedContractInstance(
421+
network,
422+
'chainBridge/bridge',
423+
provider,
424+
);
425+
const genericHandler = await getDeployedContractInstance(
426+
network,
427+
'chainBridge/genericHandler',
428+
provider,
429+
);
430+
const rebaseGateway = await getDeployedContractInstance(
431+
network,
432+
'chainBridge/rebaseGateway',
433+
provider,
434+
);
435+
const transferGateway = await getDeployedContractInstance(
436+
network,
437+
'chainBridge/rebaseGateway',
438+
provider,
439+
);
440+
const adminRole = await bridge.DEFAULT_ADMIN_ROLE();
441+
const isAdmin = await bridge.hasRole(adminRole, deployerAddress);
442+
const reportRebaseFnSig = CB_FUNCTION_SIG_satelliteChainReportRebase(
443+
rebaseGateway,
444+
);
445+
const transferFnSig = CB_FUNCTION_SIG_satelliteChainTransfer(
446+
transferGateway,
447+
);
448+
449+
if (isAdmin) {
450+
await (
451+
await bridge
452+
.connect(deployer)
453+
.adminSetGenericResource(
454+
genericHandler.address,
455+
XC_REBASE_RESOURCE_ID,
456+
rebaseGateway.address,
457+
...reportRebaseFnSig,
458+
txParams,
459+
)
460+
).wait();
461+
await (
462+
await bridge
463+
.connect(deployer)
464+
.adminSetGenericResource(
465+
genericHandler.address,
466+
XC_TRANSFER_RESOURCE_ID,
467+
transferGateway.address,
468+
...transferFnSig,
469+
txParams,
470+
)
471+
).wait();
472+
} else {
473+
console.log('Execute the following on-chain', network);
474+
console.log('adminSetGenericResource', [
475+
genericHandler.address,
476+
XC_REBASE_RESOURCE_ID,
477+
rebaseGateway.address,
478+
...reportRebaseFnSig,
479+
]);
480+
console.log('adminSetGenericResource', [
481+
genericHandler.address,
482+
XC_TRANSFER_RESOURCE_ID,
483+
transferGateway.address,
484+
...transferFnSig,
485+
]);
486+
}
487+
}
488+
});

tasks/deploy/rebase_reporter.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ txTask(
104104
);
105105

106106
const satelliteChainIDs = [];
107+
let totalFee = hre.ethers.BigNumber.from('0');
107108
for (let n in args.satelliteChainNetworks) {
108109
const network = args.satelliteChainNetworks[n];
109110
const provider = await getEthersProvider(network);
@@ -114,16 +115,16 @@ txTask(
114115
);
115116
const satelliteChainID = await satelliteChainBridge._chainID();
116117
satelliteChainIDs.push(satelliteChainID);
118+
119+
const fee = await baseChainBridge.getFee(satelliteChainID);
120+
totalFee = totalFee.add(fee);
117121
}
118-
const fee = await baseChainBridge._fee();
119-
const totalFee = fee.mul(satelliteChainIDs.length);
120122
const tx = await cbBatchRebaseReporter.populateTransaction.execute(
121123
policy.address,
122124
baseChainBridge.address,
123125
satelliteChainIDs,
124126
XC_REBASE_RESOURCE_ID,
125127
);
126-
127128
txDestination = cbBatchRebaseReporter.address;
128129
txValue = totalFee;
129130
txData = tx.data;

0 commit comments

Comments
 (0)