From 904e0f1b534e4524da49a25ee0788f0b7a1be809 Mon Sep 17 00:00:00 2001 From: 0xvikasrushi <0xvikas@gmail.com> Date: Thu, 17 Oct 2024 15:59:58 +0700 Subject: [PATCH] feat: data to verify public --- contracts/src/Sxg.sol | 51 +++++++++++++++++--- contracts/src/fixtures/groth16-fixture.json | 6 +-- contracts/test/Sxg.t.sol | 21 ++++++-- elf/riscv32im-succinct-zkvm-elf | Bin 292504 -> 294136 bytes lib/src/lib.rs | 1 + program/src/main.rs | 7 ++- script/src/bin/evm.rs | 9 +++- script/src/bin/main.rs | 8 ++- 8 files changed, 86 insertions(+), 17 deletions(-) diff --git a/contracts/src/Sxg.sol b/contracts/src/Sxg.sol index 285ce83..b4529ca 100644 --- a/contracts/src/Sxg.sol +++ b/contracts/src/Sxg.sol @@ -1,16 +1,36 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -import {ISP1Verifier} from "@sp1-contracts/ISP1Verifier.sol"; +/// @title SP1 Verifier Interface +/// @author Succinct Labs +/// @notice This contract is the interface for the SP1 Verifier. +interface ISP1Verifier { + /// @notice Verifies a proof with given public values and vkey. + /// @dev It is expected that the first 4 bytes of proofBytes must match the first 4 bytes of + /// target verifier's VERIFIER_HASH. + /// @param programVKey The verification key for the RISC-V program. + /// @param publicValues The public values encoded as bytes. + /// @param proofBytes The proof of the program execution the SP1 zkVM encoded as bytes. + function verifyProof( + bytes32 programVKey, + bytes calldata publicValues, + bytes calldata proofBytes + ) external view; +} + +interface ISP1VerifierWithHash is ISP1Verifier { + /// @notice Returns the hash of the verifier. + function VERIFIER_HASH() external pure returns (bytes32); +} struct PublicValuesStruct { uint32 result; + uint8[] data_to_verify; } /// @title Sxg. -/// @author Succinct Labs -/// @notice This contract implements a simple example of verifying the proof of a computing a -/// fibonacci number. +/// @author Crema Labs +/// @notice This contract implements a simple example of verifying the proof sxg. contract SXG { /// @notice The address of the SP1 verifier contract. /// @dev This can either be a specific SP1Verifier for a specific version, or the @@ -30,10 +50,11 @@ contract SXG { /// @notice The entrypoint for verifying the proof of a sxg number. /// @param _proofBytes The encoded proof. /// @param _publicValues The encoded public values. + function verifySXGProof( bytes calldata _publicValues, bytes calldata _proofBytes - ) public view returns (uint32) { + ) public view returns (uint32, string memory) { ISP1Verifier(verifier).verifyProof( sxgProgramVKey, _publicValues, @@ -44,6 +65,24 @@ contract SXG { (PublicValuesStruct) ); - return publicValues.result; + string memory data_to_verify_str = convertToASCII( + publicValues.data_to_verify + ); + + return (publicValues.result, data_to_verify_str); + } + + function convertToASCII( + uint8[] memory data + ) internal pure returns (string memory) { + bytes memory asciiBytes = new bytes(data.length); + for (uint i = 0; i < data.length; i++) { + require( + data[i] >= 32 && data[i] <= 126, + "Input contains non-printable ASCII characters" + ); + asciiBytes[i] = bytes1(data[i]); + } + return string(asciiBytes); } } diff --git a/contracts/src/fixtures/groth16-fixture.json b/contracts/src/fixtures/groth16-fixture.json index a289385..bfde58a 100644 --- a/contracts/src/fixtures/groth16-fixture.json +++ b/contracts/src/fixtures/groth16-fixture.json @@ -1,6 +1,6 @@ { "result": 1, - "vkey": "0x00cacd7a6bd9bf05403e6025a3f07687589f397c117db0387631fc2acb105eff", - "publicValues": "0x0000000000000000000000000000000000000000000000000000000000000001", - "proof": "0x6a2906ac21d04f16a0b65a4614269ffaa702b89e5f4af256bf057d7210ea14d2e4eb003718416563bd7c3558910f61a515ec26b3aaba426931da7e0196e1c007827c4bda2947aa3e01c50b0d09205a076be5f96f3093d081e8ddfe0ed20d5bdbeeae3080240a293565baa15ef6787722810f6d70411f920f054e22a3a94a92e5f3cfc90d1bec7415f91ecf1ee6493c6e8d2736059afeda7c4e1b5a6f11c61cd5936db86e0d27d53150eb1a1137044994767c44dc5d61a65c76f95a9fd416e35de1b6982b2a407fc15fa38cf2df4f64fc6f3eb84a7f6e73a6cc01b3916db1734f3e8698b90b62224a46f50fae2d637b0dd7e7d70854bb87e99d6426cc58132c8b98563f42" + "vkey": "0x00a0e618e71b21b9a573b86f463534b87b469655a024665b54ec256f6831446d", + "publicValues": "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000052000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000750000000000000000000000000000000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000006c00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000006e000000000000000000000000000000000000000000000000000000000000006700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000066000000000000000000000000000000000000000000000000000000000000006f0000000000000000000000000000000000000000000000000000000000000075000000000000000000000000000000000000000000000000000000000000006e0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006100000000000000000000000000000000000000000000000000000000000000740000000000000000000000000000000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000006f000000000000000000000000000000000000000000000000000000000000006e0000000000000000000000000000000000000000000000000000000000000061000000000000000000000000000000000000000000000000000000000000006c0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006c0000000000000000000000000000000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000000000720000000000000000000000000000000000000000000000000000000000000061000000000000000000000000000000000000000000000000000000000000007200000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000000000000065000000000000000000000000000000000000000000000000000000000000007300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000006f000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000720000000000000000000000000000000000000000000000000000000000000065000000000000000000000000000000000000000000000000000000000000006d000000000000000000000000000000000000000000000000000000000000006f000000000000000000000000000000000000000000000000000000000000007600000000000000000000000000000000000000000000000000000000000000650000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006c0000000000000000000000000000000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000006d00000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000006100000000000000000000000000000000000000000000000000000000000000740000000000000000000000000000000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000006f000000000000000000000000000000000000000000000000000000000000006e000000000000000000000000000000000000000000000000000000000000007300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000066000000000000000000000000000000000000000000000000000000000000006f000000000000000000000000000000000000000000000000000000000000007200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000006800000000000000000000000000000000000000000000000000000000000000650000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006600000000000000000000000000000000000000000000000000000000000000750000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000007500000000000000000000000000000000000000000000000000000000000000720000000000000000000000000000000000000000000000000000000000000065000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000072000000000000000000000000000000000000000000000000000000000000006f000000000000000000000000000000000000000000000000000000000000006a000000000000000000000000000000000000000000000000000000000000006500000000000000000000000000000000000000000000000000000000000000630000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000007300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000061000000000000000000000000000000000000000000000000000000000000006e00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000020", + "proof": "0x6a2906ac21ce0f452cf45bc66dc4c788318602dded2efd89566ef4340aa31ed7c62ea63724a46efa300b4209e95b1e7343838cf75bc8be3ae97953c8083ebc95092a5b612cfeebdbf87105d3950cd585a9088717f48d79d852e4543d492d634054394c0b245c3020d5695f563e3da5adc1b05967633f8d6a3c730088a0d9f225fc5dc5921fe4d54eb4e142effd5c1ac44af8774e342ca2a410e77b7635dc092c6bc1ead30188c96c94d2976a95ab289b5ac827aad8f1380f664ed7c1243a51ffe015941121546239e317c37364bd5c50fa6169f6145ae3572737831ab1caa117a9d40c08105a1b0df1cf71d3a56eb6ca29b256480d390a89348c9daeb841d02dd7f228d9" } \ No newline at end of file diff --git a/contracts/test/Sxg.t.sol b/contracts/test/Sxg.t.sol index 95db748..be72167 100644 --- a/contracts/test/Sxg.t.sol +++ b/contracts/test/Sxg.t.sol @@ -21,14 +21,15 @@ contract SXGTest is Test { return SP1ProofFixtureJson({ result: 1, - vkey: 0x00cacd7a6bd9bf05403e6025a3f07687589f397c117db0387631fc2acb105eff, - publicValues: hex"0000000000000000000000000000000000000000000000000000000000000001", - proof: hex"6a2906ac21d04f16a0b65a4614269ffaa702b89e5f4af256bf057d7210ea14d2e4eb003718416563bd7c3558910f61a515ec26b3aaba426931da7e0196e1c007827c4bda2947aa3e01c50b0d09205a076be5f96f3093d081e8ddfe0ed20d5bdbeeae3080240a293565baa15ef6787722810f6d70411f920f054e22a3a94a92e5f3cfc90d1bec7415f91ecf1ee6493c6e8d2736059afeda7c4e1b5a6f11c61cd5936db86e0d27d53150eb1a1137044994767c44dc5d61a65c76f95a9fd416e35de1b6982b2a407fc15fa38cf2df4f64fc6f3eb84a7f6e73a6cc01b3916db1734f3e8698b90b62224a46f50fae2d637b0dd7e7d70854bb87e99d6426cc58132c8b98563f42" + vkey: 0x00a0e618e71b21b9a573b86f463534b87b469655a024665b54ec256f6831446d, + publicValues: hex"0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000052000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000000000000000750000000000000000000000000000000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000006c00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000006e000000000000000000000000000000000000000000000000000000000000006700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000066000000000000000000000000000000000000000000000000000000000000006f0000000000000000000000000000000000000000000000000000000000000075000000000000000000000000000000000000000000000000000000000000006e0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006100000000000000000000000000000000000000000000000000000000000000740000000000000000000000000000000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000006f000000000000000000000000000000000000000000000000000000000000006e0000000000000000000000000000000000000000000000000000000000000061000000000000000000000000000000000000000000000000000000000000006c0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006c0000000000000000000000000000000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000000000720000000000000000000000000000000000000000000000000000000000000061000000000000000000000000000000000000000000000000000000000000007200000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000000000000065000000000000000000000000000000000000000000000000000000000000007300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000006f000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000720000000000000000000000000000000000000000000000000000000000000065000000000000000000000000000000000000000000000000000000000000006d000000000000000000000000000000000000000000000000000000000000006f000000000000000000000000000000000000000000000000000000000000007600000000000000000000000000000000000000000000000000000000000000650000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006c0000000000000000000000000000000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000006d00000000000000000000000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000006100000000000000000000000000000000000000000000000000000000000000740000000000000000000000000000000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000006f000000000000000000000000000000000000000000000000000000000000006e000000000000000000000000000000000000000000000000000000000000007300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000066000000000000000000000000000000000000000000000000000000000000006f000000000000000000000000000000000000000000000000000000000000007200000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000006800000000000000000000000000000000000000000000000000000000000000650000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006600000000000000000000000000000000000000000000000000000000000000750000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000007500000000000000000000000000000000000000000000000000000000000000720000000000000000000000000000000000000000000000000000000000000065000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000072000000000000000000000000000000000000000000000000000000000000006f000000000000000000000000000000000000000000000000000000000000006a000000000000000000000000000000000000000000000000000000000000006500000000000000000000000000000000000000000000000000000000000000630000000000000000000000000000000000000000000000000000000000000074000000000000000000000000000000000000000000000000000000000000007300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000061000000000000000000000000000000000000000000000000000000000000006e00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000020", + proof: hex"6a2906ac21ce0f452cf45bc66dc4c788318602dded2efd89566ef4340aa31ed7c62ea63724a46efa300b4209e95b1e7343838cf75bc8be3ae97953c8083ebc95092a5b612cfeebdbf87105d3950cd585a9088717f48d79d852e4543d492d634054394c0b245c3020d5695f563e3da5adc1b05967633f8d6a3c730088a0d9f225fc5dc5921fe4d54eb4e142effd5c1ac44af8774e342ca2a410e77b7635dc092c6bc1ead30188c96c94d2976a95ab289b5ac827aad8f1380f664ed7c1243a51ffe015941121546239e317c37364bd5c50fa6169f6145ae3572737831ab1caa117a9d40c08105a1b0df1cf71d3a56eb6ca29b256480d390a89348c9daeb841d02dd7f228d9" }); } function setUp() public { SP1ProofFixtureJson memory fixture = loadSample(); + verifier = address(new SP1VerifierGateway(address(1))); sxg = new SXG(verifier, fixture.vkey); @@ -41,7 +42,13 @@ contract SXGTest is Test { abi.encodeWithSelector(SP1VerifierGateway.verifyProof.selector), abi.encode(true) ); - uint32 result = sxg.verifySXGProof(fixture.publicValues, fixture.proof); + + (uint32 result, string memory data_to_verify) = sxg.verifySXGProof( + fixture.publicValues, + fixture.proof + ); + + console.log(data_to_verify); assert(result == 1); } @@ -50,7 +57,11 @@ contract SXGTest is Test { bytes memory fakeProof = new bytes(fixture.proof.length); - uint32 result = sxg.verifySXGProof(fixture.publicValues, fakeProof); + (uint32 result, string memory sui) = sxg.verifySXGProof( + fixture.publicValues, + fixture.proof + ); + console.log(sui); assert(result == 0); } } diff --git a/elf/riscv32im-succinct-zkvm-elf b/elf/riscv32im-succinct-zkvm-elf index 751e4bf3056167f615041801892a309de186a4f5..fcd4c63a342cba858884906c15f33a1fad89fc57 100755 GIT binary patch delta 118692 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
K3r`SwPB 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

muY4qpbi)R@d-tD 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 UgpcgG$G_*F-^2&{|Cz7;2g}OJZvX%Q diff --git a/lib/src/lib.rs b/lib/src/lib.rs index 43bced3..8e3b86a 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -10,6 +10,7 @@ sol! { /// The public values encoded as a struct that can be easily deserialized inside Solidity. struct PublicValuesStruct { uint32 result; + uint8[] data_to_verify; } } diff --git a/program/src/main.rs b/program/src/main.rs index 68fc271..e3168ca 100644 --- a/program/src/main.rs +++ b/program/src/main.rs @@ -8,6 +8,11 @@ use lib::PublicValuesStruct; pub fn main() { let sxg_input = sp1_zkvm::io::read::(); let result = sxg_input.verify().unwrap() as u32; - let bytes = PublicValuesStruct::abi_encode(&PublicValuesStruct { result }); + + let bytes = PublicValuesStruct::abi_encode(&PublicValuesStruct { + result, + data_to_verify: sxg_input.data_to_verify, + }); + sp1_zkvm::io::commit_slice(&bytes); } diff --git a/script/src/bin/evm.rs b/script/src/bin/evm.rs index d3c1212..ee70eae 100644 --- a/script/src/bin/evm.rs +++ b/script/src/bin/evm.rs @@ -65,6 +65,7 @@ fn main() { let mut stdin = SP1Stdin::new(); let input_file = format!("{}.json", args.input_file_id); + let file_content = fs::read_to_string(input_file).unwrap(); let sxg_input: SXGInput = serde_json::from_str(&file_content).unwrap(); @@ -91,7 +92,10 @@ fn create_proof_fixture( ) { // Deserialize the public values. let bytes = proof.public_values.as_slice(); - let PublicValuesStruct { result } = PublicValuesStruct::abi_decode(bytes, false).unwrap(); + let PublicValuesStruct { + result, + data_to_verify, + } = PublicValuesStruct::abi_decode(bytes, false).unwrap(); // Create the testing fixture so we can test things end-to-end. let fixture = SP1SXGProofFixture { @@ -103,6 +107,9 @@ fn create_proof_fixture( println!("Result: {}", fixture.result); + let data_to_verify_str = String::from_utf8(data_to_verify).unwrap(); + println!("Data Verified: {:?}", data_to_verify_str); + // The verification key is used to verify that the proof corresponds to the execution of the // program on the given input. // diff --git a/script/src/bin/main.rs b/script/src/bin/main.rs index e62cdf3..3b56373 100644 --- a/script/src/bin/main.rs +++ b/script/src/bin/main.rs @@ -58,9 +58,15 @@ fn main() { println!("Program executed successfully."); let decoded = PublicValuesStruct::abi_decode(output.as_slice(), true).unwrap(); - let PublicValuesStruct { result } = decoded; + let PublicValuesStruct { + result, + data_to_verify, + } = decoded; println!("SXG verification result: {}", result); + let data_to_verify_str = String::from_utf8(data_to_verify).unwrap(); + println!("Data Verified: {:?}", data_to_verify_str); + assert_eq!(result, 1); println!("SXG verification is successful!");