pulsar-contracts
Version:
42 lines • 1.56 kB
JavaScript
import { Mina, Poseidon, PrivateKey } from 'o1js';
export { generateKeys, generateKeysAndSort, fundKeys };
async function generateKeys(numKeys) {
const keys = [];
for (let i = 0; i < numKeys; i++) {
const privateKey = PrivateKey.random();
const publicKey = privateKey.toPublicKey();
keys.push({ privateKey, publicKey });
}
return { keys };
}
async function generateKeysAndSort(numKeys) {
const { keys } = await generateKeys(numKeys);
keys.sort((a, b) => {
const aHash = Poseidon.hash(a.publicKey.toFields());
const bHash = Poseidon.hash(b.publicKey.toFields());
return aHash.toBigInt() < bHash.toBigInt() ? -1 : 1;
});
return { keys };
}
async function fundKeys(keys, network = 'https://api.minascan.io/node/devnet/v1/graphql') {
Promise.all(keys.map(async ({ publicKey }) => {
Mina.faucet(publicKey, network)
.then(() => {
console.log(`Funded ${publicKey.toBase58()}`);
})
.catch((error) => {
console.error(`Error funding ${publicKey.toBase58()}:`, error);
});
}));
}
async function printKeys(keys) {
for (const { privateKey, publicKey } of keys) {
console.log(`[PrivateKey.fromBase58("${privateKey.toBase58()}"), PublicKey.fromBase58("${publicKey.toBase58()}")],`);
}
}
async function generateValidatorKeys(numKeys) {
const { keys } = await generateKeysAndSort(numKeys);
await printKeys(keys);
}
await generateValidatorKeys(60);
//# sourceMappingURL=mockKeyCreate.js.map