Skip to content

dispatchToChain

dispatchToChain(schema, authorAccount): Promise<SchemaId>

Dispatches a schema to the blockchain for storage, ensuring its uniqueness, immutability, and verifiability. This function encodes the schema, creates a blockchain transaction, and submits it using the author’s account for signing and submission.

Functionality:

  • Checks for existing schema: Verifies if the schema is already registered on the blockchain.
  • Encodes schema in CBOR: Ensures schema data is serialized efficiently.
  • Creates and signs the extrinsic: Uses the blockchain’s create method for schema storage.
  • Transaction submission: Signs and submits the extrinsic to the blockchain using the provided author’s account.

Parameters:

Parameters

schema: ISchema

An ISchema object representing the structured data definition for the Cord network. This object defines the schema’s structure and requirements.

authorAccount: CordKeyringPair

A CordKeyringPair representing the blockchain account of the author, used to sign and submit the schema transaction.

Returns:

Returns

Promise<SchemaId>

A promise that resolves to the unique schema ID (SchemaId) upon successful storage. If the schema is already stored, it returns the existing schema’s $id.

Throws:

Throws

If an error occurs during the dispatch process, such as:

  • Schema creation issues.
  • Network connectivity problems.
  • Transaction signing or submission failure.

Example Usage:

async function exampleSchemaDispatch() {
const schema = { title: 'Example Schema', properties: { id: { type: 'string' } } };
const authorAccount = cord.createFromUri('//Alice'); // Example keyring pair
try {
const schemaId = await dispatchToChain(schema, authorAccount);
console.log('Schema dispatched with ID:', schemaId);
} catch (error) {
console.error('Error dispatching schema:', error);
}
}
exampleSchemaDispatch();

Source

schema/src/Schema.chain.ts:276