Skip to main content

Transaction Draft

Get prepared transaction data for blockchain submission.

When to use:

Definition

await zkdb
.db(databaseName: string)
.transactionDraft(transactionType: ETransactionType): Promise<TTransactionDraftResponse>;

Parameters

  • transactionType (ETransactionType): Type of transaction to draft
    • ETransactionType.Deploy: Database deployment transaction
    • ETransactionType.Rollup: Rollup transaction

Returns

  • Promise<TTransactionDraftResponse>: Returns complete transaction metadata including the raw transaction data needed for blockchain submission. The transactionRaw field contains the encoded transaction ready to be submitted to the Mina blockchain, while rawTransactionId is used for tracking and confirmation.
type TTransactionDraftResponse = {
rawTransactionId: string;
databaseName: string;
transactionType: ETransactionType;
status: ETransactionStatus;
transactionRaw: string;
txHash?: string;
error?: string;
createdAt: Date;
updatedAt: Date;
};

enum ETransactionStatus {
Queued = 'Queued',
Processing = 'Processing',
Confirmed = 'Confirmed',
Unknown = 'Unknown'
}

Example

import { ETransactionType } from '@zkdb/common';

const zkdb = await ZkDatabase.connect({
userName: "chiro-user",
privateKey: "EKFTciRxyxshZjimay9sktsn7v5PvmC5zPq7q4JnitHUytxUVnFP",
environment: "node",
// This URL is for test environment
url: "https://api.zkdatabase.org/graphql",
});

await zkdb.auth.signIn();

const dbTest = zkdb.db('zkdb_test');
const draft = await dbTest.transactionDraft(ETransactionType.Deploy);

console.log('Transaction draft:', {
id: draft.rawTransactionId,
type: draft.transactionType,
status: draft.status,
hasRawData: !!draft.transactionRaw
});

await zkdb.auth.signOut();

Result:

Transaction draft: {
"id": "123",
"type": "Deploy",
"status": "Queued",
"hasRawData": true
}

Next steps:

  • Use transactionRaw data to submit to blockchain
  • Call transactionSubmit() with transaction hash after blockchain submission