navio-blsct
Version:
TypeScript bindings for the `libblsct` library used by the [Navio](https://nav.io/) blockchain to construct confidential transactions based on the BLS12-381 curve.
63 lines (56 loc) • 1.67 kB
text/typescript
import {
fromChildKeyToBlindingKey,
fromChildKeyToTokenKey,
fromChildKeyToTxKey,
fromSeedToChildKey,
} from '../blsct'
import { Scalar } from '../scalar'
import { TxKey } from './txKey'
/** Represents a child key. A child key is a Scalar and introduces no new functionality; it serves purely as a semantic alias. BlindingKey, TokenKey and TxKey are exclusively derived from a ChildKey.
*
* Examples:
* ```ts
* const { Scalar, ChildKey } = require('navio-blsct')
* const s = Scalar.random()
* const ck = new ChildKey(s)
* ck.toBlindingKey()
* ck.toTokenKey()
* ck.toTxKey()
* ```
*/
export class ChildKey extends Scalar {
/**
* Creates a new `ChildKey` derived from the given `Scalar`.
*
* @param obj - The `Scalar` to derive the `ChildKey` from.
*/
constructor(obj?: Scalar) {
if (obj === undefined || obj === null) {
super(obj)
} else {
const childKeyObj = fromSeedToChildKey(obj.value())
super(childKeyObj)
}
}
/** Derives a ChildKey from a Scalar.
* @returns A new ChildKey instance derived from the provided Scalar.
*/
toBlindingKey(): Scalar {
const obj = fromChildKeyToBlindingKey(this.value())
return Scalar.fromObj(obj)
}
/** Derives a TokenKey from a ChildKey.
* @returns A new TokenKey instance derived from the ChildKey.
*/
toTokenKey(): Scalar {
const obj = fromChildKeyToTokenKey(this.value())
return Scalar.fromObj(obj)
}
/** Derives a TxKey from a ChildKey.
* @returns A new TxKey instance derived from the ChildKey.
*/
toTxKey(): TxKey {
const obj = fromChildKeyToTxKey(this.value())
return TxKey.fromObj(obj)
}
}