kzgTest function
Implementation
Future<void> kzgTest()async{
print("\n\n##################kzg test#################");
BlobTxSidecar? sidecar;
BlobTxSidecar? blob20Sidecar;
KzgSetting? kzgSetting;
kzgSetting = await KzgSetting.loadFromFile('assets/trusted_setup.json');
final blobs = <Blob>[];
final commitments = <KzgCommitment>[];
final proofs = <KzgProof>[];
/// blob1
// blobs.add(await Blob.randBlob());
/// commitments hash with Blob contain all 0
/// 010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c444014
/// blob2
blobs.add(Blob.zeroBlob()); // 全0
for (var b in blobs) {
final commit = await Kzg4844.kzgBlobToCommitment(b, kzgSetting);
commitments.add(commit);
final p = await Kzg4844.kzgComputeBlobKzgProof(b, commit, kzgSetting);
proofs.add(p);
}
sidecar = BlobTxSidecar(
blobs: blobs,
commitments: commitments,
proofs: proofs,
);
print("sidecar = ${hex.encode(sidecar.blobHashes().first)}");
// https://etherscan.io/blob/0x01fc0a717777b0e983ce71eecae52ae24bdfd06459801ba5c20692ef11ca75c9?bid=706618
const mintBlob20 =
'{"protocol":"blob20","token":{"operation":"mint","ticker":"ETHS","amount":1000}}';
final cborData = cborEncodeApplicationJson(mintBlob20);
final blobs1 = cborDataToESIP8Blobs(cborData);
final commitments1 = <KzgCommitment>[];
final proofs1 = <KzgProof>[];
for (var b in blobs1) {
final commit = await Kzg4844.kzgBlobToCommitment(b, kzgSetting);
commitments1.add(commit);
final p = await Kzg4844.kzgComputeBlobKzgProof(b, commit, kzgSetting);
proofs1.add(p);
}
blob20Sidecar = BlobTxSidecar(
blobs: blobs1,
commitments: commitments1,
proofs: proofs1,
);
print("blob20Sidecar = ${hex.encode(blob20Sidecar.blobHashes().first)}");
}