Skip to content

Commit 6d6f448

Browse files
authored
Fix rlp encoding bug when submitting partial uncomitted headers (#56)
* fix wrong encoding when submitting partial uncomitted headers * fix wrong env config import * add retry to initialization * dont init if not enabled * add headers to not get rate limited by some rpcs
1 parent 6ddfa80 commit 6d6f448

7 files changed

Lines changed: 34 additions & 8 deletions

File tree

src/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ const getZeroConfig = (): XdcZeroConfig => {
7979
}
8080
let subnetWalletPk = "";
8181
if (isReverseEnabled){
82-
subnetWalletPk = process.env.SUBNET_ZERO_WALLET_PK.startsWith("0x") ? process.env.SUBNET_ZERO_WALLET_PK : `0x${process.env.SUBNET_WALLET_PK}`;
82+
subnetWalletPk = process.env.SUBNET_ZERO_WALLET_PK.startsWith("0x") ? process.env.SUBNET_ZERO_WALLET_PK : `0x${process.env.SUBNET_ZERO_WALLET_PK}`;
8383
}
8484
return {
8585
isEnabled,

src/processors/lite.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export class Lite extends BaseProcessor {
102102
await this.liteMainnetService.commitHeader(
103103
scHash,
104104
results.map((item) => {
105-
return "0x" + item.encodedRLP;
105+
return "0x" + Buffer.from(item.encodedRLP, "base64").toString("hex");
106106
})
107107
);
108108
} else {

src/processors/reverseZero.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@ export class ReverseZero extends BaseProcessor {
2020
}
2121
init() {
2222
this.logger.info("Initialising Reverse-XDC-Zero");
23-
this.zeroService.init();
23+
if (config.xdcZero.isReverseEnabled) {
24+
this.zeroService.init().catch((error) => {
25+
this.logger.error("Fail to init Reverse-XDC-Zero service", { message: error.message });
26+
});
27+
}
2428
this.queue.process(async (_, done) => {
2529
this.logger.info("⏰ Executing reverse-xdc-zero periodically");
2630
try {

src/processors/zero.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@ export class Zero extends BaseProcessor {
2020
}
2121
init() {
2222
this.logger.info("Initialising XDC-Zero");
23-
this.zeroService.init();
23+
if (config.xdcZero.isEnabled) {
24+
this.zeroService.init().catch((error) => {
25+
this.logger.error("Fail to init XDC-Zero service", { message: error.message });
26+
});
27+
}
2428
this.queue.process(async (_, done) => {
2529
this.logger.info("⏰ Executing xdc-zero periodically");
2630
try {

src/server.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,25 @@ serverAdapter.setBasePath('/');
2828
// "/" route show the relayer job status
2929
app.use('/', serverAdapter.getRouter());
3030

31+
const bootstrap = async (): Promise<void> => {
32+
try {
33+
await processors.reset();
34+
logger.info("Bootstrap complete");
35+
} catch (error) {
36+
logger.error(
37+
`Bootstrap failed, retrying in ${config.reBootstrapWaitingTime}ms`,
38+
{ message: error.message }
39+
);
40+
await new Promise((r) => setTimeout(r, config.reBootstrapWaitingTime));
41+
return bootstrap();
42+
}
43+
};
44+
3145
app.listen(config.port, async () => {
3246
logger.info(`Relayer running on port ${config.port}`);
3347
await checkConnection();
34-
await processors.init(serverAdapter).reset();
48+
processors.init(serverAdapter);
49+
await bootstrap();
3550
});
3651

3752

src/service/mainnet/index.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export class MainnetService {
4141
const provider = new Web3.providers.HttpProvider(config.url, {
4242
keepAlive: true,
4343
agent: { https: keepaliveAgent },
44+
headers: [{ name: "User-Agent", value: "xdc-relayer" }],
4445
});
4546
this.web3 = new Web3(provider).extend(mainnetExtensions);
4647
this.smartContractInstance = new this.web3.eth.Contract(
@@ -303,7 +304,7 @@ export class MainnetService {
303304

304305
async Mode(): Promise<"lite"| "full"| "reverse_full"> {
305306
try {
306-
return this.smartContractInstance.methods.MODE().call();
307+
return await this.smartContractInstance.methods.MODE().call();
307308
} catch (error) {
308309
this.logger.error("Fail to get mode from PARENTNET smart contract");
309310
throw error;
@@ -324,6 +325,7 @@ export class LiteMainnetService {
324325
const provider = new Web3.providers.HttpProvider(config.url, {
325326
keepAlive: true,
326327
agent: { https: keepaliveAgent },
328+
headers: [{ name: "User-Agent", value: "xdc-relayer" }],
327329
});
328330
this.web3 = new Web3(provider);
329331
this.liteSmartContractInstance = new this.web3.eth.Contract(
@@ -505,7 +507,7 @@ export class LiteMainnetService {
505507
}
506508
async Mode(): Promise<"lite"| "full"| "reverse_full"> {
507509
try {
508-
return this.liteSmartContractInstance.methods.MODE().call();
510+
return await this.liteSmartContractInstance.methods.MODE().call();
509511
} catch (error) {
510512
this.logger.error("Fail to get mode from mainnet smart contract");
511513
throw error;

src/service/subnet/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export class SubnetService {
4141
const provider = new Web3.providers.HttpProvider(config.url, {
4242
keepAlive: true,
4343
agent: { https: keepaliveAgent },
44+
headers: [{ name: "User-Agent", value: "xdc-relayer" }],
4445
});
4546
this.web3 = new Web3(provider).extend(subnetExtensions);
4647
this.smartContractInstance = new this.web3.eth.Contract(
@@ -340,7 +341,7 @@ export class SubnetService {
340341

341342
async Mode(): Promise<"lite"| "full"| "reverse_full"> {
342343
try {
343-
return this.smartContractInstance.methods.MODE().call();
344+
return await this.smartContractInstance.methods.MODE().call();
344345
} catch (error) {
345346
this.logger.error("Fail to get mode from SUBNET smart contract");
346347
throw error;

0 commit comments

Comments
 (0)