@blockydevs/qubic-hw-app v0.1.2-RC2
qubic-hw-app
A JavaScript library for interacting with Qubic Ledger hardware wallets using the @ledgerhq/hw-transport package.
Installation
npm install qubic-hw-appPrerequisite
Before using the hw-app-qubic package, your application must set up its own HID transport to communicate with a Ledger hardware wallet. To install the @ledgerhq/hw-transport package, run:
npm install @ledgerhq/hw-transportNote
This package relies on @qubic-lib/qubic-ts-library and expects usage of this library to construct transactions. To install the package, run:
npm install @qubic-lib/qubic-ts-libraryUsage
Basic App Example
import Transport from "@ledgerhq/hw-transport-node-hid";
import { HWAppQubic } from "hw-app-qubic";
async function main() {
const transport = await Transport.create();
const hwAppQubic = new HWAppQubic(transport);
const version = await hwAppQubic.getVersion();
console.log("Ledger App Version:", version);
const publicKey = await hwAppQubic.getPublicKey();
console.log("Public Key:", publicKey.toString("hex"));
}
main().catch(console.error);Signing a Transaction
import Transport from "@ledgerhq/hw-transport-node-hid";
import { HWAppQubic } from "hw-app-qubic";
import { QubicTransaction } from "@qubic-lib/qubic-ts-library";
async function main() {
const transport = await Transport.create();
const hwAppQubic = new HWAppQubic(transport);
const transaction = new QubicTransaction({
sourcePublicKey: "sourcePublicKey",
destinationPublicKey: "destinationPublicKey",
amount: 1000,
tick: 123456,
inputType: 1,
inputSize: 1,
});
const signedTransaction = await hwAppQubic.signTransaction(transaction);
console.log("Signed Transaction:", signedTransaction);
}
main().catch(console.error);API
new HWAppQubic(transport: Transport)
Creates an instance of HWAppQubic with the given transport.
getVersion(): Promise<{ version: string }>
Retrieves the installed Qubic Ledger app version.
getPublicKey(derivationPath?: string, withConfirm?: boolean): Promise<Buffer>
Retrieves the public key for the given derivation path. If withConfirm is true, the user must confirm on the device.
derivationPath: The BIP32 derivation path (default:m/44'/1'/0'/0/0).withConfirm: Whether user confirmation is required (default:false).
signTransaction(transaction: IQubicTransaction): Promise<ISignTransactionReturn>
Signs a Qubic transaction.
interface ISignTransactionReturn {
signature: Buffer<ArrayBufferLike>;
transaction: Uint8Array<ArrayBufferLike>;
signedData: Uint8Array<ArrayBuffer>; // Transaction + signature
}sendToDevice(params: ISendToDeviceParams): Promise<Buffer>
Sends a command to the Ledger device.
params: The parameters for the command, includinginstruction,p1,p2, andpayload.
Publishing
Before publishing, ensure that the project is built locally.
Steps:
Build the project
This will generate thelibandlib-esdirectories.pnpm buildLogin with npm credentials
If you haven't logged in yet, authenticate using your npm account credentials.npm adduserPublish the package
Publish the package to npm with public access.npm publish --access public
8 months ago