Skip to content

Commit 94af745

Browse files
Merge pull request #6384 from BitGo/BTC-2223.tweak-sync-script
feat(utxo-staking): simplify params fetching and improve error handling
2 parents 5d10194 + 0834800 commit 94af745

File tree

4 files changed

+22
-18
lines changed

4 files changed

+22
-18
lines changed

modules/utxo-staking/scripts/babylon-params.ts

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import assert from 'node:assert';
12
import * as fs from 'fs/promises';
23

34
import yargs from 'yargs';
@@ -12,27 +13,17 @@ function getBaseUrl(network: 'mainnet' | 'testnet') {
1213

1314
type BabylonNetwork = 'mainnet' | 'testnet';
1415

15-
async function getParams(network: BabylonNetwork, version: number): Promise<unknown> {
16-
const url = `${getBaseUrl(network)}/babylon/btcstaking/v1/params/${version}`;
16+
async function getAllParams(network: BabylonNetwork): Promise<unknown[]> {
17+
const url = `${getBaseUrl(network)}/babylon/btcstaking/v1/params_versions`;
1718
const resp = await fetch(url);
1819
if (!resp.ok) {
1920
throw new Error(`Failed to fetch ${url}: ${resp.status} ${resp.statusText}`);
2021
}
21-
return await resp.json();
22-
}
23-
24-
async function getAllParams(network: BabylonNetwork): Promise<unknown[]> {
25-
const params: unknown[] = [];
26-
for (let i = 0; ; i++) {
27-
try {
28-
const p = await getParams(network, i);
29-
params.push(p);
30-
} catch (e) {
31-
console.error(`error fetching ${network} params version ${i}: ${e.message}`);
32-
break;
33-
}
34-
}
35-
return params;
22+
const result = await resp.json();
23+
assert(result && typeof result === 'object', `Invalid response from ${url}`);
24+
assert('params' in result, `Response from ${url} does not contain 'params'`);
25+
assert(Array.isArray(result.params), `Response from ${url} 'params' is not an array`);
26+
return result.params;
3627
}
3728

3829
async function syncParams(network: BabylonNetwork | undefined): Promise<void> {

modules/utxo-staking/src/babylon/params.mainnet.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[
22
{
3+
"version": 0,
34
"params": {
45
"covenant_pks": [
56
"d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",
@@ -29,6 +30,7 @@
2930
}
3031
},
3132
{
33+
"version": 1,
3234
"params": {
3335
"covenant_pks": [
3436
"d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",
@@ -58,6 +60,7 @@
5860
}
5961
},
6062
{
63+
"version": 2,
6164
"params": {
6265
"covenant_pks": [
6366
"d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",
@@ -87,6 +90,7 @@
8790
}
8891
},
8992
{
93+
"version": 3,
9094
"params": {
9195
"covenant_pks": [
9296
"d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",
@@ -116,6 +120,7 @@
116120
}
117121
},
118122
{
123+
"version": 4,
119124
"params": {
120125
"covenant_pks": [
121126
"d45c70d28f169e1f0c7f4a78e2bc73497afe585b70aa897955989068f3350aaa",

modules/utxo-staking/src/babylon/params.testnet.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[
22
{
3+
"version": 0,
34
"params": {
45
"covenant_pks": [
56
"49766ccd9e3cd94343e2040474a77fb37cdfd30530d05f9f1e96ae1e2102c86e",
@@ -29,6 +30,7 @@
2930
}
3031
},
3132
{
33+
"version": 1,
3234
"params": {
3335
"covenant_pks": [
3436
"09585ab55a971a231c945790a0a81df754e5a07263a5c20829931cc24683bbb7",
@@ -58,6 +60,7 @@
5860
}
5961
},
6062
{
63+
"version": 2,
6164
"params": {
6265
"covenant_pks": [
6366
"fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
@@ -87,6 +90,7 @@
8790
}
8891
},
8992
{
93+
"version": 3,
9094
"params": {
9195
"covenant_pks": [
9296
"fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
@@ -116,6 +120,7 @@
116120
}
117121
},
118122
{
123+
"version": 4,
119124
"params": {
120125
"covenant_pks": [
121126
"fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
@@ -145,6 +150,7 @@
145150
}
146151
},
147152
{
153+
"version": 5,
148154
"params": {
149155
"covenant_pks": [
150156
"fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",
@@ -174,6 +180,7 @@
174180
}
175181
},
176182
{
183+
"version": 6,
177184
"params": {
178185
"covenant_pks": [
179186
"fa9d882d45f4060bdb8042183828cd87544f1ea997380e586cab77d5fd698737",

modules/utxo-staking/src/babylon/stakingParams.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import jsonMainnetParams from './params.mainnet.json';
1717
import jsonTestnetParams from './params.testnet.json';
1818
import { BabylonNetworkLike, toBabylonNetwork } from './network';
1919

20+
/** @see https://docs.babylonlabs.io/api/babylon-gRPC/params/ */
2021
const BabylonParamsJSON = t.type({
2122
covenant_pks: t.array(t.string),
2223
covenant_quorum: t.number,
@@ -63,7 +64,7 @@ function toVersionedParamsFromJson(jsonParams: unknown[]): VersionedStakingParam
6364
const result = t.type({ params: BabylonParamsJSON }).decode(p);
6465
if (isLeft(result)) {
6566
const msg = PathReporter.report(result).join('\n');
66-
throw new Error(`Invalid testnet params: ${msg}`);
67+
throw new Error(`Invalid params: ${msg}`);
6768
}
6869
return result.right.params;
6970
})

0 commit comments

Comments
 (0)