Skip to content

Typescript library for calculating Filecoin address from keys

Notifications You must be signed in to change notification settings

NodeFactoryIo/filecoin-address

Repository files navigation

filecoin-address

Provides functions for generation of keypairs and protocol-1 addresses for filecoin network.

Usage

yarn add @nodefactory/filecoin-address

API

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.


network

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[................................]

Example

keyPairFromPrivateKey

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

keyPairFromSeed

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

publicKeyToAddress

import {publicKeyToAddress} from "filecoin-address";

const address = publicKeyToAddress(publicKeyAsUint8ArrayOrString, "f");

console.log(address);
// f1j5klxt6zktifpibt7jlafmdxkfe4fwjhm6yqjhq

Developed by

NodeFactory