executeCertifyBlobTransaction method
Future<String>
executeCertifyBlobTransaction({
- required String blobId,
- required String blobObjectId,
- required bool deletable,
- ProtocolMessageCertificate? certificate,
- required SuiAccount signer,
- int? committeeSize,
Execute a transaction that certifies a blob on-chain.
Requires the certificate from the upload relay or aggregated from individual storage node confirmations.
Returns the transaction digest.
Mirrors the TS SDK's executeCertifyBlobTransaction().
Implementation
Future<String> executeCertifyBlobTransaction({
required String blobId,
required String blobObjectId,
required bool deletable,
ProtocolMessageCertificate? certificate,
required SuiAccount signer,
int? committeeSize,
}) async {
if (certificate == null) {
throw ArgumentError(
'A ProtocolMessageCertificate is required for certification. '
'Obtain one from the upload relay or aggregate storage node '
'confirmations.',
);
}
// Resolve committee size: explicit > committee info > infer from signers.
final resolvedCommitteeSize =
committeeSize ??
_committee?.nodes.length ??
(certificate.signers.isEmpty
? 0
: certificate.signers.reduce((a, b) => a > b ? a : b) + 1);
final txBuilder = await _ensureTxBuilder();
final tx = txBuilder.certifyBlobTransaction(
CertifyBlobOptions(
blobId: blobId,
blobObjectId: blobObjectId,
deletable: deletable,
certificate: certificate,
committeeSize: resolvedCommitteeSize,
),
);
tx.setSender(signer.getAddress());
final result = await suiClient.signAndExecuteTransactionBlock(
signer,
tx,
responseOptions: SuiTransactionBlockResponseOptions(showEffects: true),
);
return result.digest;
}