@layerzerolabs/lz-foundation
The LayerZero Foundation package provides essential functions and interfaces for chain interoperability. It includes utilities for signing, hashing, and managing key pairs.
Features
- Address Utilities: Functions for manipulating addresses of different chains.
- Base Utilities: General-purpose utility functions.
- Signing: Sign messages and transactions using different algorithms.
- Hashing: Compute various cryptographic hashes.
- Key Management: Generate and manage key pairs.
Installation
To install the LayerZero Foundation package, you can use npm or yarn:
npm install @layerzerolabs/lz-foundation
or
yarn add @layerzerolabs/lz-foundation
Usage
Address Utilities
Gets the human-readable address.
import { aptos } from "@layerzerolabs/lz-foundation"
const address = "0x1234567890abcdef1234567890abcdef12345678"
const addr = aptos.Address.from(address)
const hr = addr.hr()
console.log(`human-readable address: ${hr}`)
Base Utilities
Encodes a string or Uint8Array to a base58 string.
import { base58 } from "@layerzerolabs/lz-foundation"
const msg = "hello"
const encode = base58.encode(msg)
console.log(`base58 encoded message: ${encode}`)
Hashing
Computes the Keccak-256 hash of the given message.
- message: The input message to hash.
- Returns: The Keccak-256 hash of the input message.
import { keccak_256 } from "@layerzerolabs/lz-foundation"
const message = "Hello, world!"
const hash = keccak_256(message)
console.log(`Keccak-256 Hash: ${Buffer.from(hash).toString("hex")}`)
Signing
Signs a hash using the specified signing algorithm.
- hash: The hash to sign, must be 32 bytes long.
- privateKey: The private key in hex format or Uint8Array.
- algorithm: The signing algorithm to use.
- Returns: A promise that resolves to the signature.
import { signHash, SignAlgorithm } from "@layerzerolabs/lz-foundation"
const hash = new Uint8Array(32)
const privateKey = "0xYourPrivateKey"
const algorithm = SignAlgorithm.SECP256K1
signHash(hash, privateKey, algorithm).then((signature) => {
console.log(`Signature: ${Buffer.from(signature).toString("hex")}`)
})
Key Management
Interface representing a key pair consisting of a private key and a public key.
- privateKey: The private key as a Uint8Array.
- publicKey: The public key as a Uint8Array.
import { KeyPair } from "@layerzerolabs/lz-foundation"
const keyPair: KeyPair = {
privateKey: new Uint8Array(32),
publicKey: new Uint8Array(32),
}
console.log(`Private Key: ${Buffer.from(keyPair.privateKey).toString("hex")}`)
console.log(`Public Key: ${Buffer.from(keyPair.publicKey).toString("hex")}`)