API reference
Submit new data to Avail DA

Submit new data to Avail DA

On-chain name of extrinsic: dataAvailability_submitData

Parameters

parametertypeoptionaldescription
datastringfalsedata to be submitted
waitForWaitForfalsewait for block inclusion or finalization
accountKeyringPairfalseaccount that will send and sign the transaction
optionsSignerOptionstrueused to overwrite existing signer options

Returns

On failure, a reason of failure is returned. On Success, DataSubmitted event, transaction data, transaction hash and block hash is returned.

Minimal example

  1. You will need to set up the dev enviornment required to run this example. For instructions, check out our docs here.

  2. If you're sending an extrinsic (i.e conducting a transaction) you will need to replace the demo seed phrase with your own seed phrase. The rest of the code should work as is.

  1. Inside your-file-name.ts, add the following code:
avail-js
import { Keyring } from "@polkadot/api"
import { SDK } from "avail-js-sdk"
import { WaitFor } from "avail-js-sdk/sdk/transactions"
 
const main = async () => {
  const providerEndpoint = "wss://turing-rpc.avail.so/ws";
  const sdk = await SDK.New(providerEndpoint)
 
  const Alice = "This is a random seed phrase please do not use it";
  const account = new Keyring({ type: "sr25519" }).addFromUri(Alice)
  const data = "My Awesome Data"
 
  const result = await sdk.tx.dataAvailability.submitData(data, WaitFor.BlockInclusion, account)
  if (result.isErr) {
    console.log(result.reason)
    process.exit(1)
  }
 
  console.log("Data=" + result.txData.data)
  console.log("Who=" + result.event.who + ", DataHash=" + result.event.dataHash)
  console.log("TxHash=" + result.txHash + ", BlockHash=" + result.blockHash)
 
  process.exit()
}
main()
  1. Run the code using:
ts-node your-file-name.ts

Submit data using a specific app_id

PLEASE NOTE

  1. You can submit data to Avail DA using a specific app_id that you created. If you don't know how, read more in our docs here.

  2. You can submit data to ANY app_id, even if you didn't create it. This however does not contitute an attack vector since the rollups building on top of Avail DA can always filter out DA submissions.

  3. If a specific app_id is not configured, the default is set to 0.

  1. Inside your-file-name.ts, paste the following code:
avail-js
import { Keyring } from "@polkadot/api"
import { SDK } from "avail-js-sdk"
import { WaitFor } from "avail-js-sdk/sdk/transactions"
import { SignerOptions } from "@polkadot/api/types"
 
const main = async () => {
  const providerEndpoint = "wss://turing-rpc.avail.so/ws";
  const sdk = await SDK.New(providerEndpoint)
 
  const Alice = 'This is a random seed phrase please do not use it';
  const account = new Keyring({ type: "sr25519" }).addFromUri(Alice)
  const data = "My Awesome Data"
  const appId = 89
  const options = { app_id: appId }
 
  const result = await sdk.tx.dataAvailability.submitData(data, WaitFor.BlockInclusion, account, options)
	if (result.isErr) {
      console.log(result.reason)
      process.exit(1)
    }
 
  console.log("Data=" + result.txData.data)
  console.log("Who=" + result.event.who + ", DataHash=" + result.event.dataHash)
  console.log("TxHash=" + result.txHash + ", BlockHash=" + result.blockHash)
 
  process.exit()
}
main()
  1. Run the code using:
ts-node your-file-name.ts

This will lead to your data being submitted through a specific app_id, which you can verify by looking up your transaction on the Avail explorer (opens in a new tab).