@vipcoingold/js-client-v4
TypeScript icon, indicating that this package has built-in type declarations

0.2.10 • Public • Published

Документация по @vipcoingold/js-client-v4

Установка

npm install --save @vipcoingold/js-client-v4
yarn add @vipcoingold/js-client-v4

Использование

import * as vcg from '@vipcoingold/js-client-v4';
vcg.createClient({...});
import { createClient } from '@vipcoingold/js-client-v4';

Создание и конфигурация экземпляра @vipcoingold/js-client-v4:

Клиент инкапсулирует переданные параметры для дальнейшего использования в производимых им сущностях/данных

  import { createClient } from '@vipcoingold/js-client-v4';

  const client = createClient({
    BASE_BIP44_PATH: "m/44'/118'/0'/0",
    BLOCKCHAIN_URL: 'http://localhost:26657',
    BECH32_PREFIX: 'vcg',
    ASSET: 'vcg',
  });

Создание сессии из мнемоники:

  const session = await client.Session.fromMnemonic(mnemonic);

Создание сессии из пары ключей:

  const session = await client.Session.fromKeyStore(password, keystoreData);

Создание сессии с новой мнемоникой:

  const session = await client.Session.fromRandomMnemonic();

Создание сообщения из реестра встроенных:

  const message = session.message.MsgCreateWallet(accountAddress, walletAddress, [
    { kind: ExtraKind.EXTRA_KIND_NAME, data: name },
  ]);

Отправка protobuff сообщений в сеть blockchain:

Отдельно подпись и отправка

  const signature = session.signingClient.sign([message]);
  const response = await session.signingClient.broadcast(signature);

Подпись и отправка сообщения одним методом

  const response = await session.signingClient.signAndBroadcast([message]);

Проверит успех транзакции, бросит исключение в случае ошибки

TBD: дописать возможные ошибки и их формат

  import { assertIsBroadcastTxSuccess } from '@vipcoingold/js-client-v4';

  try {
    ...
    assertIsBroadcastTxSuccess(response);
  } catch (error) {
    console.log(error);
  }

Типичные сценарии использования встроенных сообщений можно посмотреть в папке src/examples

Работа с KeyStore:

import { generateKeyStoreFile, recoverKeys } from '@vipcoingold/js-client-v4';

Утилиты облегчающие работу с криптографией

Поставляется из-под экземпляра клиента client.crypto, но так же возможно создать отдельно, передавая необходимые аргументы в конструктор:

import { Crypro } from '@vipcoingold/js-client-v4';

const crypto = new Crypto(
  'BASE_BIP44_PATH',
  'BECH32_PREFIX'
);

const path = crypto.getPathForIndex('mnemonic', 0);
const address = crypto.mnemonicToAddress('mnemonic', 0);
const keyPair = crypto.mnemonicToKeyPair('mnemonic', 0);

Так же доступны статические методы, в которых не инкапсулированы параметры BASE_BIP44_PATH и BECH32_PREFIX что позволяет их использовать в частных случаях

  • Crypto.mnemonicToAddress
  • Crypto.signData
  • Crypto.mnemonicToKeyPair
  • Crypto.getPathForIndex
  • Crypto.generateMnemonic
  • Crypto.entropyToMnemonic
  • Crypto.mnemonicToEntropy

Отправка других сообщений

Чтобы отправить сообщение, не встроенное в клиент, необходимо добавить его модель в реестр и передать как аргумент при создании экземпляра клиента:

  import { MessageRegistryItem, createClient } from '@vipcoingold/js-client-v4';

  const myRegistry: MessageRegistryItem[] = ['/my.api.path', MyCustomProtobufMessage];

  const client = createClient({
    BASE_BIP44_PATH: '...',
    BLOCKCHAIN_URL: '...',
    BECH32_PREFIX: '...',
    ASSET: '...',
  }, myRegistry);

  const session = client.createSession('mnemonic');

  const myMessageInstance = MyCustomProtobufMessage.fromJSON(...);

  const response = await session.signingClient.signAndBroadcast([myMessageInstance]);

ContractSession

Создать сессию для работты с контрактами

Создать используя существующую сессию

RPC клиент

import { WalletKind } from '@vipcoingold/js-client-v4/codec/wallets/enums';
import * as Wallet from '@vipcoingold/js-client-v4/codec/wallets/query';
try {
  const rpc = await client.createRpcClient();
  const walletQueryClient = new Wallet.QueryClientImpl(rpc);

  const result = await walletQueryClient.WalletAll({
    accountAddress: session.signer.address,
    accountHash: '',
    default: false,
    kind: WalletKind.WALLET_KIND_HOLDER,
  });

  console.log(result.wallets[0]);
} catch (err) {
  console.log(err)
}

Readme

Keywords

none

Package Sidebar

Install

npm i @vipcoingold/js-client-v4

Weekly Downloads

0

Version

0.2.10

License

MIT

Unpacked Size

3.44 MB

Total Files

51

Last publish

Collaborators

  • vipcoin
  • x33-space