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>)
}AddressErgoTreeErgoTreeTemplateErgoBoxErgoBoxCandidateInputDataInputUnsignedInputErgoTxUnsignedErgoTxAssetAmountAssetInfoTokenAmountConstantContextExtensionNetworkContextProverResultPublicKeyRegistersSigmaType
- 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 givenhashof 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 givenhashof 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