Submit new data to Avail DA
On-chain name of extrinsic: dataAvailability_submitData
Parameters
parameter | type | optional | description |
---|---|---|---|
data | string | false | data to be submitted |
waitFor | WaitFor | false | wait for block inclusion or finalization |
account | KeyringPair | false | account that will send and sign the transaction |
options | SignerOptions | true | used 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
You will need to set up the dev enviornment required to run this example. For instructions, check out our docs here.
- Inside
your-file-name.ts
, add the following code:
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()
- Run the code using:
ts-node your-file-name.ts
Submit data using a specific app_id
PLEASE NOTE
-
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. -
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. -
If a specific
app_id
is not configured, the default is set to0
.
- Inside
your-file-name.ts
, paste the following code:
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, {app_id: 89} as Partial<SignerOptions>)
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()
- 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).