UNPKG

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.

62 lines (51 loc) 1.47 kB
import { castToCTxOut, freeObj, getCTxOutBlindingKey, getCTxOutEphemeralKey, getCTxOutSpendingKey, getCTxOutRangeProof, getCTxOutViewTag, } from './blsct' import { BlindingKey } from './keys/childKeyDesc/blindingKey' import { ManagedObj } from './managedObj' import { Point } from './point' import { RangeProof } from './rangeProof' import { SpendingKey } from './keys/childKeyDesc/txKeyDesc/spendingKey' export class CTxOutBlsctData extends ManagedObj { rangeProofCache?: RangeProof constructor(obj: any) { super(obj) this.fi.isBorrow = true } override value(): any { // all the properties provided by this class // are actually properties of CTxOut return castToCTxOut(this.obj) } getSpendingKey(): SpendingKey { const obj = getCTxOutSpendingKey(this.value()) return SpendingKey.fromObj(obj) } getEphemeralKey(): Point { const obj = getCTxOutEphemeralKey(this.value()) return Point.fromObj(obj) } getBlindingKey(): BlindingKey { const obj = getCTxOutBlindingKey(this.value()) return BlindingKey.fromObj(obj) } getRangeProof(): RangeProof { if (this.rangeProofCache !== undefined) { return this.rangeProofCache } const rv = getCTxOutRangeProof(this.value()) const x = RangeProof.fromObjAndSize(rv.value, rv.value_size) freeObj(rv) this.rangeProofCache = x return x } getViewTag(): number { return getCTxOutViewTag(this.value()) } }