Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | 27x 27x 27x 27x 27x 27x 16x 16x 16x 16x 16x 14x 14x 14x 27x 14x 14x | export { BadgeData, BadgeDataWitness, MinaNFTBadgeCalculation, MinaNFTBadgeProof, }; import { Field, ZkProgram, Struct } from "o1js"; import { Metadata, MetadataWitness } from "../contract/metadata"; class BadgeDataWitness extends Struct({ root: Metadata, value: Metadata, key: Field, witness: MetadataWitness, }) {} class BadgeData extends Struct({ root: Metadata, data: Metadata, key: Field, }) { // TODO: remove comments from key validation after https://github.com/o1-labs/o1js/issues/1552 static create(badgeDataWitness: BadgeDataWitness) { const [dataWitnessRootBefore, dataWitnessKey] = badgeDataWitness.witness.data.computeRootAndKey( badgeDataWitness.value.data ); badgeDataWitness.root.data.assertEquals(dataWitnessRootBefore); //dataWitnessKey.assertEquals(badgeDataWitness.key); const [kindWitnessRootBefore, kindWitnessKey] = badgeDataWitness.witness.kind.computeRootAndKey( badgeDataWitness.value.kind ); badgeDataWitness.root.kind.assertEquals(kindWitnessRootBefore); //kindWitnessKey.assertEquals(badgeDataWitness.key); return new BadgeData({ root: badgeDataWitness.root, data: badgeDataWitness.value, key: badgeDataWitness.key, }); } static assertEquals(data1: BadgeData, data2: BadgeData) { Metadata.assertEquals(data1.root, data2.root); Metadata.assertEquals(data1.data, data2.data); data1.key.assertEquals(data2.key); } } const MinaNFTBadgeCalculation = ZkProgram({ name: "MinaNFTBadgeCalculation", publicInput: BadgeData, methods: { create: { privateInputs: [BadgeDataWitness], async method(state: BadgeData, badgeDataWitness: BadgeDataWitness) { const computedState = BadgeData.create(badgeDataWitness); BadgeData.assertEquals(computedState, state); }, }, }, }); class MinaNFTBadgeProof extends ZkProgram.Proof(MinaNFTBadgeCalculation) {} |