Provides functions for generation of keypairs and protocol-1 addresses for filecoin network.
yarn add @nodefactory/filecoin-address
function keyPairFromPrivateKey(privateKey: Uint8Array | string, network?: FilecoinNetwork): KeyPairCreates KeyPair from provided private key. Return value KeyPair has string readonly properties publicKey, privateKey, address.
function keyPairFromSeed(seed: string, network?: FilecoinNetwork): KeyPairCreates KeyPair from provided string seed. Return value KeyPair has string readonly properties publicKey, privateKey, address.
function publicKeyToAddress(publicKey: Uint8Array | string, network?: FilecoinNetwork): stringReturns address for provided public key as hex string or Uint8Array.
Every functions has optional parameter network that can be "f" (representing filecoin mainnet) or "t" (representing filecoin testnet)
If network is omitted on invocation, address is returned as string representing raw address that is not encoded (structure below).
|----------|---------------------|
| protocol | payload |
|----------|---------------------|
| 1 | blake2b-160(PubKey) |
If network is provided, address is encoded and returned as string (structure below).
|------------|----------|---------------------|----------|
| network | protocol | payload | checksum |
|------------|----------|---------------------|----------|
| 'f' or 't' | '1' | blake2b-160(PubKey) | 4 bytes |
base32[................................]
import {keyPairFromPrivateKey} from "filecoin-address";
const generatedKeypair = keyPairFromPrivateKey(privateKeyAsUint8ArrayOrString, "f");
console.log(generatedKeypair.publicKey);
// 048bfab3a70675389cf61836a09d2dd7a61163905d88c0d507ed18a1b94e7119f3e36646cd711337f373b91814fe7258a58e2206273620f71254928389930abd70
console.log(generatedKeypair.privateKey);
// 663b1374b4ae5242ae51984a2c358e57e355c2a96b9cd9a0cde902cbc432fa79
console.log(generatedKeypair.address);
// f1j5klxt6zktifpibt7jlafmdxkfe4fwjhm6yqjhqimport {keyPairFromSeed} from "filecoin-address";
const generatedKeypair = keyPairFromSeed("3a47b554c417b75545b5545545545e", "f");
console.log(generatedKeypair.publicKey);
// 048bfab3a70675389cf61836a09d2dd7a61163905d88c0d507ed18a1b94e7119f3e36646cd711337f373b91814fe7258a58e2206273620f71254928389930abd70
console.log(generatedKeypair.privateKey);
// 663b1374b4ae5242ae51984a2c358e57e355c2a96b9cd9a0cde902cbc432fa79
console.log(generatedKeypair.address);
// f1j5klxt6zktifpibt7jlafmdxkfe4fwjhm6yqjhqimport {publicKeyToAddress} from "filecoin-address";
const address = publicKeyToAddress(publicKeyAsUint8ArrayOrString, "f");
console.log(address);
// f1j5klxt6zktifpibt7jlafmdxkfe4fwjhm6yqjhq