This SDK includes:
- Ergo protocol data model
- Ergo wallet
- Ergo Blockchain Explorer API wrapper
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>)
}
Address
ErgoTree
ErgoTreeTemplate
ErgoBox
ErgoBoxCandidate
Input
DataInput
UnsignedInput
ErgoTx
UnsignedErgoTx
AssetAmount
AssetInfo
TokenAmount
Constant
ContextExtension
NetworkContext
ProverResult
PublicKey
Registers
SigmaType
- 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.
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 byid
. -
getOutput(id: BoxId): Promise<AugErgoBox | undefined>
- Get confirmed output byid
. -
getTxsByAddress(address: Address, paging: Paging): Promise<[AugErgoTx[], number]>
- Get transactions byaddress
. -
getUTxsByAddress(address: Address, paging: Paging): Promise<[AugErgoTx[], number]>
- Get unconfirmed transactions byaddress
. -
getUnspentByErgoTree(tree: ErgoTree, paging: Paging): Promise<[AugErgoBox[], number]>
- Get unspent boxes with a givenergoTree
. -
getUnspentByErgoTreeTemplate(hash: HexString, paging: Paging): Promise<AugErgoBox[]>
- Get unspent boxes with scripts matching a givenhash
of ErgoTree template. -
getUnspentByTokenId(tokenId: TokenId, paging: Paging, sort?: Sorting): Promise<AugErgoBox[]>
- Get unspent boxes containing a token with a givenid
. -
getByTokenId(tokenId: TokenId, paging: Paging, sort?: Sorting): Promise<AugErgoBox[]>
- Get boxes containing a token with a givenid
. -
getUnspentByErgoTreeTemplateHash(hash: HexString, paging: Paging): Promise<[AugErgoBox[], number]>
- Get unspent boxes by a givenhash
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 byid
. -
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));
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