@ergolabs/ergo-sdk
TypeScript icon, indicating that this package has built-in type declarations

0.5.7 • Public • Published

Ergo SDK

npm version

This SDK includes:

  • Ergo protocol data model
  • Ergo wallet
  • Ergo Blockchain Explorer API wrapper

Usage

This SDK heavily relies on ergo-rust via WASM. So you have to load RustModule before using this SDK:

import React, { useEffect, useState } from 'react';
import { GeistProvider } from '@geist-ui/react';
import { RustModule } from '@ergolabs/ergo-sdk';

export const App: React.FC = () => {
  const [isRustModuleLoaded, setIsRustModuleLoaded] = useState(false);

  useEffect(() => {
    RustModule.load().then(() => setIsRustModuleLoaded(true));
  }, []);

  if (!isRustModuleLoaded) {
    return null;
  }

  return (<GeistProvider>...</GeistProvider>)
}

Ergo data model

  • Address
  • ErgoTree
  • ErgoTreeTemplate
  • ErgoBox
  • ErgoBoxCandidate
  • Input
  • DataInput
  • UnsignedInput
  • ErgoTx
  • UnsignedErgoTx
  • AssetAmount
  • AssetInfo
  • TokenAmount
  • Constant
  • ContextExtension
  • NetworkContext
  • ProverResult
  • PublicKey
  • Registers
  • SigmaType

Ergo Wallet

  • BoxSelector - Selects inputs satisfying a given target balance and tokens.
  • Prover - An interface of an abstract prover capable of signing transactions. Should be implemented using wallet integration (e.g. Yoroi).
  • TxAssembler - A service for simplified TX assembly.

Ergo Explorer API

Explorer API methods also rely on the Ergo data model, but most of them return enriched versions of Ergo models marked with Aug* prefix.

Implemented methods:

  • getTx(id: TxId): Promise<AugErgoTx | undefined> - Get confirmed transaction by id.
  • getOutput(id: BoxId): Promise<AugErgoBox | undefined> - Get confirmed output by id.
  • getTxsByAddress(address: Address, paging: Paging): Promise<[AugErgoTx[], number]> - Get transactions by address.
  • getUTxsByAddress(address: Address, paging: Paging): Promise<[AugErgoTx[], number]> - Get unconfirmed transactions by address.
  • getUnspentByErgoTree(tree: ErgoTree, paging: Paging): Promise<[AugErgoBox[], number]> - Get unspent boxes with a given ergoTree.
  • getUnspentByErgoTreeTemplate(hash: HexString, paging: Paging): Promise<AugErgoBox[]> - Get unspent boxes with scripts matching a given hash of ErgoTree template.
  • getUnspentByTokenId(tokenId: TokenId, paging: Paging, sort?: Sorting): Promise<AugErgoBox[]> - Get unspent boxes containing a token with a given id.
  • getByTokenId(tokenId: TokenId, paging: Paging, sort?: Sorting): Promise<AugErgoBox[]> - Get boxes containing a token with a given id.
  • getUnspentByErgoTreeTemplateHash(hash: HexString, paging: Paging): Promise<[AugErgoBox[], number]> - Get unspent boxes by a given hash of ErgoTree template.
  • searchUnspentBoxes(req: BoxSearch, paging: Paging): Promise<[AugErgoBox[], number]> - Detailed search among unspent boxes.
  • searchUnspentBoxesByTokensUnion(req: BoxAssetsSearch, paging: Paging): Promise<[AugErgoBox[], number]> - Search among unspent boxes by ergoTreeTemplateHash and tokens.
  • getFullTokenInfo(tokenId: TokenId): Promise<AugAssetInfo | undefined> - Get a token info by id.
  • getTokens(paging: Paging): Promise<[AugAssetInfo[], number]> - Get all available tokens.
  • getNetworkContext(): Promise<NetworkContext> - Get current network context.
import {Explorer} from "@ergolabs/ergo-sdk";
const explorer = new Explorer("https://api.ergoplatform.com");
const txId = "18b30e9b40ed7061d2f87590c555d24a712df9c848a8db9dfd4affcc92d3cb02";
explorer.getTx(txId).then(tx => console.log(tx));

Using with create-react-app

CRA does not support WASM. But you can workaround it. You need to override webpack config. Check out - https://stackoverflow.com/questions/59319775/how-to-use-webassembly-wasm-with-create-react-app/59720645#59720645

Readme

Keywords

none

Package Sidebar

Install

npm i @ergolabs/ergo-sdk

Weekly Downloads

14

Version

0.5.7

License

SEE LICENSE IN LICENSE

Unpacked Size

147 kB

Total Files

99

Last publish

Collaborators

  • ridel1e
  • yashablack
  • deniskovalev
  • oskin1