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): KeyPair
Creates KeyPair
from provided private key. Return value KeyPair
has string
readonly properties publicKey, privateKey, address.
function keyPairFromSeed(seed: string, network?: FilecoinNetwork): KeyPair
Creates KeyPair
from provided string
seed. Return value KeyPair
has string
readonly properties publicKey, privateKey, address.
function publicKeyToAddress(publicKey: Uint8Array | string, network?: FilecoinNetwork): string
Returns 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);
// f1j5klxt6zktifpibt7jlafmdxkfe4fwjhm6yqjhq
import {keyPairFromSeed} from "filecoin-address";
const generatedKeypair = keyPairFromSeed("3a47b554c417b75545b5545545545e", "f");
console.log(generatedKeypair.publicKey);
// 048bfab3a70675389cf61836a09d2dd7a61163905d88c0d507ed18a1b94e7119f3e36646cd711337f373b91814fe7258a58e2206273620f71254928389930abd70
console.log(generatedKeypair.privateKey);
// 663b1374b4ae5242ae51984a2c358e57e355c2a96b9cd9a0cde902cbc432fa79
console.log(generatedKeypair.address);
// f1j5klxt6zktifpibt7jlafmdxkfe4fwjhm6yqjhq
import {publicKeyToAddress} from "filecoin-address";
const address = publicKeyToAddress(publicKeyAsUint8ArrayOrString, "f");
console.log(address);
// f1j5klxt6zktifpibt7jlafmdxkfe4fwjhm6yqjhq