React SDK

useUploadBlobs

Upload blobs to the Shelby network

This mutation handles the complete blob upload process including encoding blobs with erasure coding, registering commitments on-chain (if not already registered), and uploading blob data to the RPC endpoint.

It supports both account signers and wallet adapter signers, and includes logic to skip registration for blobs that already exist.

Examples

Account Signer

import { Account } from "@aptos-labs/ts-sdk";
import { useUploadBlobs } from "@shelby-protocol/react";

function UploadBlob() {
  const uploadBlobs = useUploadBlobs({
    onSuccess: () => {
      console.log("Upload complete!");
    },
  });

  const handleUpload = async () => {
    const signer = Account.generate();
    const fileData = new Uint8Array([/* your file data */]);

    uploadBlobs.mutate({
      signer,
      blobs: [{ blobName: "example.txt", blobData: fileData }],
      expirationMicros: Date.now() * 1000 + 86400000000, // 1 day
    });
  };

  return (
    <button onClick={handleUpload} disabled={uploadBlobs.isPending}>
      {uploadBlobs.isPending ? "Uploading..." : "Upload Blob"}
    </button>
  );
}

Wallet Adapter

import { useUploadBlobs } from "@shelby-protocol/react";
import { useWallet } from "@aptos-labs/wallet-adapter-react";

function UploadBlobWithWallet() {
  const { account, signAndSubmitTransaction } = useWallet();
  const uploadBlobs = useUploadBlobs();

  const handleUpload = async () => {
    if (!account || !signAndSubmitTransaction) {
      alert("Please connect your wallet");
      return;
    }

    const fileData = new Uint8Array([/* your file data */]);

    uploadBlobs.mutate({
      signer: { account: account.accountAddress, signAndSubmitTransaction },
      blobs: [{ blobName: "example.txt", blobData: fileData }],
      expirationMicros: Date.now() * 1000 + 86400000000,
    });
  };

  return (
    <button onClick={handleUpload} disabled={uploadBlobs.isPending}>
      {uploadBlobs.isPending ? "Uploading..." : "Upload Blob"}
    </button>
  );
}

Parameters

Prop

Type

React Query Options

Prop

Type

Mutation Variables

Prop

Type

Return Value

Prop

Type