@sodazone/ocelloids-contracts
TypeScript icon, indicating that this package has built-in type declarations

1.2.1 • Public • Published

Ocelloids Contracts Module

npm @sodazone/ocelloids-contracts

The Ocelloids Contracts Module provides support for Substrate's contracts pallet, specifically for decoding contract messages, events, and constructors, and enables easy filtering of these elements. It is designed to be used in conjunction with the Ocelloids Core Module.

Layout

The packages/pallets/contracts module source folder is structured as follows:

Directory Description
converters Contract data type conversions
operators Reactive operators for contract activities
types Extended contract types

Usage

Refer to the SDK documentation.

Example: Tracking Contract Events

Here is a simple example of how to track all events emitted by the link contract deployed on Rococo Contracts:

import { readFileSync } from 'node:fs';
import path from 'node:path';

import { WsProvider } from '@polkadot/api';
import { Abi } from '@polkadot/api-contract';

import {
  SubstrateApis,
  blocks
} from '@sodazone/ocelloids';

import {
  filterContractEvents,
  converters
} from '@sodazone/ocelloids-contracts';

const CONTRACT_ADDRESS = '5GdHQQkRHvEEE4sDkcLkxCCumSkw2SFBJSLKzbMTNARLTXz3';

const contractMetadataJson = readFileSync((path.resolve(__dirname, './metadata.json'))).toString();
const abi = new Abi(contractMetadataJson);

const apis = new SubstrateApis({
  rococoContracts: {
    provider: new WsProvider('wss://rococo-contracts-rpc.polkadot.io')
  }
});

apis.rx.rococoContracts.pipe(
  blocks(),
  filterContractEvents(abi, CONTRACT_ADDRESS)
).subscribe(
  x => console.log({
    ...converters.contracts.toNamedPrimitive(x),
    blockEvent: x.blockEvent.toHuman()
  })
);

Output:

{
  blockEvent: {
    eventId: '2920834-2-1',
    extrinsicId: '2920834-2',
    extrinsicPosition: 1,
    blockNumber: '2,920,834',
    method: 'ContractEmitted',
    section: 'contracts',
    index: '0x2803',
    data: {
      contract: '5GdHQQkRHvEEE4sDkcLkxCCumSkw2SFBJSLKzbMTNARLTXz3',
      data: '0x00144a736d48325868747470733a2f2f6d79666162756c6f75732e75726c'
    }
  },
  event: {
    docs: [ ' A new slug mapping was created.' ],
    identifier: 'Shortened',
    index: 0
  },
  args: { slug: 'JsmH2', url: 'https://myfabulous.url' }
}

For more detailed examples, please refer to the watch-contracts example application.

Package Sidebar

Install

npm i @sodazone/ocelloids-contracts

Weekly Downloads

20

Version

1.2.1

License

Apache-2.0

Unpacked Size

83.3 kB

Total Files

19

Last publish

Collaborators

  • xueyingw
  • mfornos
  • frankie.om