Catalyst Registration
This is a JS implementation of the Catalyst registration logic as defined in CIP15.
This package requires you to inject cardano-serialization-lib for the cryptography.
Install
npm i @dcSpark/catalyst-registration-js --save
Usage
Create encrypted key
import * as cip15 from "@dcSpark/catalyst-registration-js";
import CSL from "@emurgo/cardano-serialization-lib-nodejs";
const pin = cip15.generatePin();
const passBuff = Buffer.from(pin);
const catalystKey = cip15.generatePrivateKeyForCatalyst(CSL);
const encryptedKey = await cip15.encryptWithPassword(passBuff, catalystKey.as_bytes());
Create registration metadata (software wallet)
import * as cip15 from "@dcSpark/catalyst-registration-js";
import CSL from "@emurgo/cardano-serialization-lib-nodejs";
const catalystKey = ...
const stakePrivateKey = ...
const rewardAddresss = ...
const slotNumber = ...
const metadata = cip15.generateRegistrationMetadata(
CSL,
Buffer.from(catalystKey.to_public().as_bytes()).toString(
"hex"
),
Buffer.from(stakePrivateKey.to_public().as_bytes()).toString("hex"),
Buffer.from(rewardAddresss.to_address().to_bytes()),
slotNumber,
(hashedMetadata) => stakePrivateKey.sign(hashedMetadata).to_hex()
);
Create registration metadata (hardware wallet)
import * as cip15 from "@dcSpark/catalyst-registration-js";
import CSL from "@emurgo/cardano-serialization-lib-nodejs";
const catalystKey = ...
const stakePrivateKey = ...
const rewardAddresss = ...
const slotNumber = ...
const metadata = cip15.generateRegistrationMetadata(
CSL,
Buffer.from(catalystKey.to_public().as_bytes()).toString(
"hex"
),
Buffer.from(stakePrivateKey.to_public().as_bytes()).toString("hex"),
Buffer.from(rewardAddresss.to_address().to_bytes()),
slotNumber,
(_hashedMetadata) => {
return '0'.repeat(64 * 2);
}
);