|
1 | 1 | // SPDX-License-Identifier: MIT |
2 | | -pragma solidity ^0.8.13; |
| 2 | +pragma solidity ^0.8.20; |
3 | 3 |
|
4 | | -import {SP1Verifier} from "@sp1-contracts/SP1Verifier.sol"; |
| 4 | +import {ISP1Verifier} from "@sp1-contracts/ISP1Verifier.sol"; |
5 | 5 |
|
6 | 6 | /// @title Fibonacci. |
7 | 7 | /// @author Succinct Labs |
8 | 8 | /// @notice This contract implements a simple example of verifying the proof of a computing a |
9 | 9 | /// fibonacci number. |
10 | | -contract Fibonacci is SP1Verifier { |
| 10 | +contract Fibonacci { |
| 11 | + /// @notice The address of the SP1 verifier contract. |
| 12 | + /// @dev This can either be a specific SP1Verifier for a specific version, or the |
| 13 | + /// SP1VerifierGateway which can be used to verify proofs for any version of SP1. |
| 14 | + /// For the list of supported verifiers on each chain, see: |
| 15 | + /// https://github.com/succinctlabs/sp1-contracts/tree/main/contracts/deployments |
| 16 | + address public verifier; |
| 17 | + |
11 | 18 | /// @notice The verification key for the fibonacci program. |
12 | 19 | bytes32 public fibonacciProgramVkey; |
13 | 20 |
|
14 | | - constructor(bytes32 _fibonacciProgramVkey) { |
| 21 | + constructor(address _verifier, bytes32 _fibonacciProgramVkey) { |
| 22 | + verifier = _verifier; |
15 | 23 | fibonacciProgramVkey = _fibonacciProgramVkey; |
16 | 24 | } |
17 | 25 |
|
18 | 26 | /// @notice The entrypoint for verifying the proof of a fibonacci number. |
19 | 27 | /// @param proof The encoded proof. |
20 | 28 | /// @param publicValues The encoded public values. |
21 | | - function verifyFibonacciProof( |
22 | | - bytes memory proof, |
23 | | - bytes memory publicValues |
24 | | - ) public view returns (uint32, uint32, uint32) { |
25 | | - this.verifyProof(fibonacciProgramVkey, publicValues, proof); |
26 | | - (uint32 n, uint32 a, uint32 b) = abi.decode( |
27 | | - publicValues, |
28 | | - (uint32, uint32, uint32) |
29 | | - ); |
| 29 | + function verifyFibonacciProof(bytes calldata proof, bytes calldata publicValues) |
| 30 | + public |
| 31 | + view |
| 32 | + returns (uint32, uint32, uint32) |
| 33 | + { |
| 34 | + ISP1Verifier(verifier).verifyProof(fibonacciProgramVkey, publicValues, proof); |
| 35 | + (uint32 n, uint32 a, uint32 b) = abi.decode(publicValues, (uint32, uint32, uint32)); |
30 | 36 | return (n, a, b); |
31 | 37 | } |
32 | 38 | } |
0 commit comments