o1js
Version:
TypeScript framework for zk-SNARKs and zkApps
24 lines (20 loc) • 538 B
text/typescript
import { SelfProof, Field, ZkProgram } from 'o1js';
export const RecursiveProgram = ZkProgram({
name: 'recursive-program',
publicInput: Field,
methods: {
baseCase: {
privateInputs: [],
async method(input: Field) {
input.assertEquals(Field(0));
},
},
inductiveCase: {
privateInputs: [SelfProof],
async method(input: Field, earlierProof: SelfProof<Field, void>) {
earlierProof.verify();
earlierProof.publicInput.add(1).assertEquals(input);
},
},
},
});