Nullifying Precipitation Machine

    @dcspark/catalyst-registration-js
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.2 • Public • Published

    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";
    
    // either get a user-selected PIN code or random one
    const pin = cip15.generatePin(); // ex: [1,1,1,1]
    
    // encryption key from the pin
    const passBuff = Buffer.from(pin);
    
    // generate a key for Catalyst
    const catalystKey = cip15.generatePrivateKeyForCatalyst(CSL);
    
    // encrypt the key with the pin
    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 = ... // CSL.PrivateKey
    const stakePrivateKey = ... // CSL.PrivateKey
    const rewardAddresss = ... // CSL.RewardAddress
    const slotNumber = ... // number
    
    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 = ... // CSL.PrivateKey
    const stakePrivateKey = ... // CSL.PrivateKey
    const rewardAddresss = ... // CSL.RewardAddress
    const slotNumber = ... // number
    
    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) => {
          // for hardware wallets, we have to include dummy data
          // since the signature will be replaced later by the hardware wallet itself
          return '0'.repeat(64 * 2);
        }
      );
     
    // you will have to call the above-function twice. Once with mock data (as shown) and once with data you get from the hw wallet

    Install

    npm i @dcspark/catalyst-registration-js

    DownloadsWeekly Downloads

    10

    Version

    1.0.2

    License

    Apache-2.0 OR MIT

    Unpacked Size

    17.1 kB

    Total Files

    14

    Last publish

    Collaborators

    • nicolasdp
    • ycl1
    • robkorn
    • sebastiengllmt