1.0.0 • Published 5 years ago

@decent-bet/odenplan v1.0.0

Weekly downloads
8
License
ISC
Repository
-
Last release
5 years ago

odenplan

A VET Wallet library

Install

npm i -S @decent-bet/odenplan

Usage

Configure wallet passphrase

const wallet = new ProviderWallet();    
await wallet.configurePassphrase('q2w3e4r5t6y7');

Create a wallet account

// if passphrase not set, it will ask for passphrase using subscribeToAskPassphrase
const { publicAddress } = await wallet.createAccount();

// last parameter if set to true returns mnemonic
const { publicAddress, mnemonic } = await wallet.createAccount(null, true);

Registers a wallet account

// if user owns a private key, use registerAccount to import wallet
await wallet.registerAccount(address, privateKey, passphrase);

Subscribe to ask passphrase

wallet.subscribeToAskPassphrase = new Promise((resolve, reject) => {
    //  Display UI dialog and return passphrase
});

Get account key (used with connex)

let wallet = new ProviderWallet();

// leave last parameter as null if used with an UI, used subscribeToAskPassphrase
const response = await wallet.getAccountKey(address, 'q2w3e4r5t6y7');

Wallet behaviors

Browser

Use browser behavior for web based DApps solutions. Odenplan will handle private key access through the use of a passphrase.

const wallet = new ProviderWallet({
    behaviorType: 'browser',
});

await wallet.configurePassphrase('q1212a');

Query

Similar to a browser behavior but does not enable signing. Useful when you only need query type applications.

const wallet = new ProviderWallet({
    behaviorType: 'query',
});

Server

For microservices use cases, obviates the need for a passphrase. Any implementation should secure the private key in either HSM or secure storage.

const wallet = new ProviderWallet({
    behaviorType: 'server',
    behaviorOptions: {
        privateKey: '0x64adbb3bd3b4c862479fd21d3a7555071e38c12c915b8b14ddd7ae4f1ba8e93c'
    }
});

WalletConnect

A WalletConnect behavior to be used in React Native DApps (or similar). Manages the Wallet role in WalletConnect.

const wallet = new ProviderWallet({
    behaviorType: 'walletconnect',
    behaviorOptions: {
        walletconnect: new WalletConnect({
            bridge: "https://bridge.walletconnect.org"
        })
    }
});

// Subscribe to eth_signTransaction
wallet.onSigningRequest.on('SIGN_TX', (params: any[]) => {
    // ... call connex signing service
});

// Subscribe to eth_sendTransaction
wallet.onSigningRequest.on('SEND_TX', (params: any[]) => {
    // ... call connex signing service
});

Wallet handlers

Connex

A Connex interface should call processSigningRequest by sending the address to lookup the private key and a Promise action to be executed.

export interface IOdenplanConnexSigning {
    processSigningRequest(options: { 
        address: string,
        signingAction: (pvk: any) => Promise<any>,
    }): Promise<any>;
}

Documentation

API Documentation