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.
-
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.
- 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, 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()
- 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).