Skip to content

Commit

Permalink
Added sendData task
Browse files Browse the repository at this point in the history
  • Loading branch information
Zontec authored and NickVolynkin committed Aug 11, 2023
1 parent 4d93c7c commit 68594de
Show file tree
Hide file tree
Showing 5 changed files with 115 additions and 2 deletions.
4 changes: 3 additions & 1 deletion deploy/contracts/IStorageProofVerifier.sol
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ interface IStorageProofVerifier {
function verifyStorageProof(
bytes calldata _blob,
uint256[] calldata _init_params,
int256[][] calldata _columns_rotations
int256[][] calldata _columns_rotations,
bytes32 _root,
bytes32 _leaf
) external returns (bool result);
}
4 changes: 3 additions & 1 deletion deploy/contracts/StorageProofVerifier.sol
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ contract StorageProofVerifier is IStorageProofVerifier {
function verifyStorageProof(
bytes calldata _blob,
uint256[] calldata _init_params,
int256[][] calldata _columns_rotations
int256[][] calldata _columns_rotations,
bytes32 _root,
bytes32 _leaf
) external returns (bool result) {

result = IVerifier(verifier).verify(_blob, _init_params, _columns_rotations, gate_argument);
Expand Down
1 change: 1 addition & 0 deletions deploy/hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ require('@openzeppelin/hardhat-upgrades');
require("@nomiclabs/hardhat-ethers");

import './tasks/deploy'
import './tasks/sendData'

module.exports = {
solidity: {
Expand Down
41 changes: 41 additions & 0 deletions deploy/tasks/sendData.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import {task} from 'hardhat/config'
const {getAccountVerifierParams, getFileContents} = require("./utils")

task("sendData",
"send beacon state verification request")
.addParam("blob", "blob file name")
.addParam("pubi", "public input")
.setAction(async ({blob, pubi}, {ethers, run}) => {

// circit params --> init params, coloms rot

const contract = '0x0000000000000000000000000000000000000000';
const circuit_params_filepath = './contracts/circuit_params.json';

// ================== Data prep ==================

const circuit_params_data = getAccountVerifierParams(circuit_params_filepath);
const columns_rotations = circuit_params_data.columns_rotations;
const init_params = circuit_params_data.init_params;

const proof = getFileContents(blob);
const public_input = JSON.parse(getFileContents(pubi));


// ================== Transaction ==================

const [owner] = await ethers.getSigners();
const StorageProofVerifier = await ethers.getContractFactory("StorageProofVerifier")
const stateVerifier_inst = StorageProofVerifier.attach(contract)
const stateVerifier = await stateVerifier_inst.connect(owner)

const tx = await stateVerifier.verifyStorageProof(
proof,
init_params,
columns_rotations,
'0x' + public_input[0].root,
'0x' + public_input[1].leaf);

const receipt = await tx.wait()
console.log(receipt)
})
67 changes: 67 additions & 0 deletions deploy/tasks/utils.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
const fs = require("fs");
const path = require("path");
const losslessJSON = require("lossless-json")
const {BigNumber} = require("ethers");


function loadParamsFromFile(jsonFile) {
const named_params = losslessJSON.parse(fs.readFileSync(jsonFile, 'utf8'));
let params = {};
params.init_params = [];
params.init_params.push(BigInt(named_params.modulus.value));
params.init_params.push(BigInt(named_params.r.value));
params.init_params.push(BigInt(named_params.max_degree.value));
params.init_params.push(BigInt(named_params.lambda.value));
params.init_params.push(BigInt(named_params.rows_amount.value));
params.init_params.push(BigInt(named_params.omega.value));
params.init_params.push(BigInt(named_params.D_omegas.length));
for (let i in named_params.D_omegas) {
params.init_params.push(BigInt(named_params.D_omegas[i].value))
}
params.init_params.push(named_params.step_list.length);
for (let i in named_params.step_list) {
params.init_params.push(BigInt(named_params.step_list[i].value))
}
params.init_params.push(named_params.arithmetization_params.length);
for (let i in named_params.arithmetization_params) {
params.init_params.push(BigInt(named_params.arithmetization_params[i].value))
}

params.columns_rotations = [];
for (let i in named_params.columns_rotations) {
let r = []
for (let j in named_params.columns_rotations[i]) {
r.push(BigInt(named_params.columns_rotations[i][j].value));
}
params.columns_rotations.push(r);
}
return params;
}

function getStateVerifierParams(baseParamsFile, scalarParamsFile) {
let params = {}
params['init_params'] = [[26048, 22920], [], []];
params['columns_rotations'] = [[], []]

// For proof 1
let base_params = loadParamsFromFile(baseParamsFile);
params['init_params'][1] = base_params.init_params;
params['columns_rotations'][0] = base_params.columns_rotations;

// For proof 2
let scalar_params = loadParamsFromFile(scalarParamsFile);
params['init_params'][2] = scalar_params.init_params;
params['columns_rotations'][1] = scalar_params.columns_rotations;
return params;
}

function getAccountVerifierParams(verifierParamsFile) {
let account_path_params = loadParamsFromFile(verifierParamsFile);
return account_path_params;
}

function getFileContents(filePath) {
return fs.readFileSync(filePath, 'utf8');
}

module.exports = { getStateVerifierParams , getAccountVerifierParams,getFileContents};

0 comments on commit 68594de

Please sign in to comment.