Add a script to get stage1 participants with given validators
This commit is contained in:
parent
98e882bf28
commit
5af0500d18
@ -32,5 +32,14 @@
|
|||||||
yarn map-subscribers-to-participants --subscribers-csv <subscribers-csv-file> --output <output-csv-file>
|
yarn map-subscribers-to-participants --subscribers-csv <subscribers-csv-file> --output <output-csv-file>
|
||||||
|
|
||||||
# Example:
|
# Example:
|
||||||
# yarn map-subscribers-to-participants --subscribers-csv subscribers.csv --output result-$(date +"%Y-%m-%d%Y%m%d").csv
|
# yarn map-subscribers-to-participants --subscribers-csv subscribers.csv --output result-$(date +"%Y-%m-%dT%H%M%S").csv
|
||||||
|
```
|
||||||
|
|
||||||
|
- Generate a list of onboarded participants with given list of validators:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn participants-with-filtered-validators --validators-csv <validators-csv-file> --output <output-csv-file>
|
||||||
|
|
||||||
|
# Example:
|
||||||
|
# yarn participants-with-filtered-validators --validators-csv ./validators.csv --output stage1-participants-$(date +"%Y-%m-%dT%H%M%S").csv
|
||||||
```
|
```
|
||||||
|
73
scripts/src/participants-with-filtered-validators.ts
Normal file
73
scripts/src/participants-with-filtered-validators.ts
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
import * as fs from 'fs';
|
||||||
|
import * as path from 'path';
|
||||||
|
import yargs from 'yargs';
|
||||||
|
import { hideBin } from 'yargs/helpers';
|
||||||
|
import dotenv from 'dotenv';
|
||||||
|
|
||||||
|
import { Registry } from '@cerc-io/registry-sdk';
|
||||||
|
|
||||||
|
dotenv.config();
|
||||||
|
|
||||||
|
const LACONICD_GQL_ENDPOINT = process.env.LACONICD_GQL_ENDPOINT || 'https://laconicd.laconic.com/api';
|
||||||
|
const LACONICD_RPC_ENDPOINT = process.env.LACONICD_RPC_ENDPOINT || 'https://laconicd.laconic.com';
|
||||||
|
const LACONICD_CHAIN_ID = process.env.LACONICD_CHAIN_ID || 'laconic_9000-1';
|
||||||
|
|
||||||
|
async function main(): Promise<void> {
|
||||||
|
const argv = _getArgv();
|
||||||
|
|
||||||
|
const registry = new Registry(LACONICD_GQL_ENDPOINT, LACONICD_RPC_ENDPOINT, LACONICD_CHAIN_ID);
|
||||||
|
|
||||||
|
console.time('time_taken_getParticipants');
|
||||||
|
const participants = await registry.getParticipants();
|
||||||
|
console.timeEnd('time_taken_getParticipants');
|
||||||
|
|
||||||
|
const validators = await readValidators(argv.validatorsCsv);
|
||||||
|
console.log('Read validators, count:', validators.length);
|
||||||
|
|
||||||
|
const stage1Participants = participants.map((participant: any) => {
|
||||||
|
const outputParticipant: any = {
|
||||||
|
'cosmos_address': participant.cosmosAddress,
|
||||||
|
'nitro_address': participant.nitroAddress,
|
||||||
|
'kyc_id': participant.kycId
|
||||||
|
};
|
||||||
|
|
||||||
|
if ((validators as Array<string>).includes(participant.cosmosAddress)) {
|
||||||
|
outputParticipant.role = 'validator';
|
||||||
|
} else {
|
||||||
|
outputParticipant.role = 'participant';
|
||||||
|
}
|
||||||
|
|
||||||
|
return outputParticipant;
|
||||||
|
});
|
||||||
|
|
||||||
|
const outputFilePath = path.resolve(argv.output);
|
||||||
|
fs.writeFileSync(outputFilePath, JSON.stringify(stage1Participants, null, 2));
|
||||||
|
console.log(`Onboarded participants with filtered validators written to ${outputFilePath}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function readValidators(subscribersCsvPath: string): Promise<any> {
|
||||||
|
const fileContent = fs.readFileSync(path.resolve(subscribersCsvPath), { encoding: 'utf-8' });
|
||||||
|
return fileContent.split('\r\n').map(address => address.trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
function _getArgv (): any {
|
||||||
|
return yargs(hideBin(process.argv))
|
||||||
|
.option('validatorsCsv', {
|
||||||
|
alias: 'v',
|
||||||
|
type: 'string',
|
||||||
|
demandOption: true,
|
||||||
|
describe: 'Path to a CSV file with validators list',
|
||||||
|
})
|
||||||
|
.option('output', {
|
||||||
|
alias: 'o',
|
||||||
|
type: 'string',
|
||||||
|
demandOption: true,
|
||||||
|
describe: 'Path to the output CSV file',
|
||||||
|
})
|
||||||
|
.help()
|
||||||
|
.argv;
|
||||||
|
}
|
||||||
|
|
||||||
|
main().catch(err => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user