@vocdoni/davinci-contracts
Version:
Smart contracts powering DAVINCI's digital voting protocol
133 lines (132 loc) • 20.8 kB
TypeScript
import { ContractFactory, ContractTransactionResponse } from "ethers";
import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers";
import type { NonPayableOverrides } from "../../common";
import type { Groth16Verifier, Groth16VerifierInterface } from "../../src/Groth16Verifier";
type Groth16VerifierConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
export declare class Groth16Verifier__factory extends ContractFactory {
constructor(...args: Groth16VerifierConstructorParams);
getDeployTransaction(overrides?: NonPayableOverrides & {
from?: string;
}): Promise<ContractDeployTransaction>;
deploy(overrides?: NonPayableOverrides & {
from?: string;
}): Promise<Groth16Verifier & {
deploymentTransaction(): ContractTransactionResponse;
}>;
connect(runner: ContractRunner | null): Groth16Verifier__factory;
static readonly bytecode = "0x6080604052348015600f57600080fd5b50611ee28061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063233ace111461005c578063b1c3a00e1461008e578063b8e72af6146100b0578063d148354c146100c5578063e33974a8146100d8575b600080fd5b6040517ef1eedfb001e2344446bddbcd1c3a181236a14a6307d2f97c300328ccfbb5e381526020015b60405180910390f35b6100a161009c366004611990565b6100eb565b60405161008593929190611a02565b6100c36100be366004611a91565b610174565b005b6100c36100d3366004611b13565b6101f5565b6100c36100e6366004611b6f565b610698565b6100f36118d5565b6100fb6118f3565b600061011086358760015b6020020135610c01565b835261012e6060870135604088013560a089013560808a0135610cf6565b6020850152604084015261014860c0870135876007610106565b606084015261015a8535866001610106565b82526101698435856001610106565b905093509350939050565b60008060006101838787610fed565b919450925090503063d148354c84848461019d8a8a61101e565b6040518563ffffffff1660e01b81526004016101bc9493929190611bf2565b60006040518083038186803b1580156101d457600080fd5b505afa1580156101e8573d6000803e3d6000fd5b5050505050505050505050565b6101fd6118f3565b6040805160028082526060808301845292602083019080368337019050509050602081016040848101823750604051600080516020611e8d83398151915290610252908735906020808a013591869101611c51565b6040516020818303038152906040528051906020012060001c6102759190611caa565b8252604080516000918782377f0256b85c763b5c6d4a711535dc09c8f4f452ddec3826c507bb7e8e8767f94b9060408201527f2463184875f735863d7dc395e21a9c35dfbd55f0aef06dff658da979a190877260608201527f23d326baa3f97897f1b04aad3ddb7aac1fbc563d0a833eb63c1366ebfad1385660808201527f28e365bf671f492d806389c0bf3c5e3f07f0d6de397dcbfb6276a17af441041960a082015260408660c08301377f21893e06bbf88a79686703126202ac1ee86f7626e1b7bb7f0ea5e6b76548ef446101008201527f2979af47e71251837de76657df005d7c62c4a0bd8920ded85aad15eeac4c68066101208201527f0bff059e4bc03d8889965cb753af2c0394387312b491212e91eb9a45f61061196101408201527f0af2d7b1ec1490b3dae15a2fbd5e9b1d6b8ea2e84b28b8506bcdc9befd2e98dd6101608201526020816101808360085afa9051169050806103eb576040516351d49ff760e11b815260040160405180910390fd5b60008061042286868a6002806020026040519081016040528092919082600260200280828437600092019190915250611039915050565b915091506040516101008a82377f0b2117aa8ff93c1a6da4159a80e604c7680b11680293a964c261e841813a11e66101008201527f1c30a6961d57de03468b32bbc67d553714cd30d255b69ac5ea0138ddd028af1e6101208201527f106158629dc43e0103d6da97ed72f75840995919993cbe5352b7c4cc095b8b216101408201527f250ea7115ab12784b63060c0c558fa69180fc0db2039c801018f316903ded2666101608201527f2348b91709de47711127746bee0a3aea2f4559cd68d1295a6d6c2491e95255d76101808201527f2054f16510d4fe64d70879de170ae5c627566bc6191da4bbb3f6a3e7c373ee356101a08201527f2fa0e9a832e79fd35fb6663782a103272d73a3031f282d2f2debf2c19d1981816101c08201527f28c379b7ff1e313129f675b370caa6414373d7fb1369d101fa4c96108fd8a39e6101e08201527f1da30558868657743c3a734996e1f64e5b6ac1cf6e94a56347fc3489ed7397516102008201527f0c168516ac0f8558a4696a16ef4f4e18262836d4a8eb074267b9e1ae481457bd61022082015282610240820152816102608201527f2365ad4364df27d7ff7337ab715c3a86d182b81b582e937012fa291ccb03a0216102808201527f0f7948a2365bb0c2585355bd07a33a99c40a24122549f40d822fbe4f955030aa6102a08201527f2fdf8d161a599561a1bbff11ea481507722fc373be9b834d4bf0add041acc1b76102c08201527f049c3ff95e8a0fbcee5060641a3d8c846577289694d1cfb8c0b7206b3bb414c26102e08201526020816103008360085afa90511692508261068d57604051631ff3747d60e21b815260040160405180910390fd5b505050505050505050565b6106a06118f3565b6106a8611911565b6106b061192f565b6106c18660005b602002013561137f565b602084015282526000806106d48761137f565b6040805160028082526060808301845294965092945091906020830190803683370190505090506020810160408881018237508451602080870151604051600080516020611e8d8339815191529361073193909291869101611c51565b6040516020818303038152906040528051906020012060001c6107549190611caa565b865284518452602085810151858201527f0256b85c763b5c6d4a711535dc09c8f4f452ddec3826c507bb7e8e8767f94b906040808701919091527f2463184875f735863d7dc395e21a9c35dfbd55f0aef06dff658da979a190877260608701527f23d326baa3f97897f1b04aad3ddb7aac1fbc563d0a833eb63c1366ebfad1385660808701527f28e365bf671f492d806389c0bf3c5e3f07f0d6de397dcbfb6276a17af441041960a087015260c0860185905260e086018490527f21893e06bbf88a79686703126202ac1ee86f7626e1b7bb7f0ea5e6b76548ef446101008701527f2979af47e71251837de76657df005d7c62c4a0bd8920ded85aad15eeac4c68066101208701527f0bff059e4bc03d8889965cb753af2c0394387312b491212e91eb9a45f61061196101408701527f0af2d7b1ec1490b3dae15a2fbd5e9b1d6b8ea2e84b28b8506bcdc9befd2e98dd61016087015251600091816101808860085afa9051169050806108da576040516351d49ff760e11b815260040160405180910390fd5b505050506000806108f7896000600481106106b7576106b7611bb9565b9092509050600080808061091360408e013560208f0135611425565b9296509094509250905060008061092b8f60036106b7565b9150915060008061093d8e8e8e611039565b8b8d5260208d018b905260408d0189905260608d018a905260808d0187905260a08d0188905260c08d0186905260e08d018590527f0b2117aa8ff93c1a6da4159a80e604c7680b11680293a964c261e841813a11e66101008e01527f1c30a6961d57de03468b32bbc67d553714cd30d255b69ac5ea0138ddd028af1e6101208e01527f106158629dc43e0103d6da97ed72f75840995919993cbe5352b7c4cc095b8b216101408e01527f250ea7115ab12784b63060c0c558fa69180fc0db2039c801018f316903ded2666101608e01527f2348b91709de47711127746bee0a3aea2f4559cd68d1295a6d6c2491e95255d76101808e01527f2054f16510d4fe64d70879de170ae5c627566bc6191da4bbb3f6a3e7c373ee356101a08e01527f2fa0e9a832e79fd35fb6663782a103272d73a3031f282d2f2debf2c19d1981816101c08e01527f28c379b7ff1e313129f675b370caa6414373d7fb1369d101fa4c96108fd8a39e6101e08e01527f1da30558868657743c3a734996e1f64e5b6ac1cf6e94a56347fc3489ed7397516102008e01527f0c168516ac0f8558a4696a16ef4f4e18262836d4a8eb074267b9e1ae481457bd6102208e01526102408d018290526102608d018190527f2365ad4364df27d7ff7337ab715c3a86d182b81b582e937012fa291ccb03a0216102808e01527f0f7948a2365bb0c2585355bd07a33a99c40a24122549f40d822fbe4f955030aa6102a08e01527f2fdf8d161a599561a1bbff11ea481507722fc373be9b834d4bf0add041acc1b76102c08e01527f049c3ff95e8a0fbcee5060641a3d8c846577289694d1cfb8c0b7206b3bb414c26102e08e015290925090506000610bb26118f3565b6020816103008f60085afa9150811580610bce57508051600114155b15610bec57604051631ff3747d60e21b815260040160405180910390fd5b50505050505050505050505050505050505050565b6000600080516020611e6d83398151915283101580610c2e5750600080516020611e6d8339815191528210155b15610c4c57604051631ff3747d60e21b815260040160405180910390fd5b82158015610c58575081155b15610c6557506000610cf0565b6000610ca4600080516020611e6d8339815191526003600080516020611e6d83398151915287600080516020611e6d833981519152898a09090861160b565b9050808303610cb9575050600182901b610cf0565b610cc28161166f565b8303610cd5575050600182811b17610cf0565b604051631ff3747d60e21b815260040160405180910390fd5b505b92915050565b600080600080516020611e6d83398151915286101580610d245750600080516020611e6d8339815191528510155b80610d3d5750600080516020611e6d8339815191528410155b80610d565750600080516020611e6d8339815191528310155b15610d7457604051631ff3747d60e21b815260040160405180910390fd5b82848688171717600003610d8d57506000905080610fe4565b60008080600080516020611e6d833981519152610db96003600080516020611e6d833981519152611ccc565b600080516020611e6d8339815191528a8c090990506000600080516020611e6d8339815191528a600080516020611e6d8339815191528c8d090990506000600080516020611e6d8339815191528a600080516020611e6d8339815191528c8d09099050600080516020611e6d83398151915280600080516020611e6d8339815191528c860984087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e5089450610eb2600080516020611e6d83398151915280600080516020611e6d8339815191528e870984087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750861166f565b9350505050600080610f03600080516020611e6d83398151915280610ed957610ed9611c94565b600080516020611e6d833981519152858609600080516020611e6d8339815191528788090861160b565b9050610f50600080516020611e6d8339815191527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea4600080516020611e6d83398151915284880809611688565b15915050610f5f8383836116d2565b90935091508683148015610f7257508186145b15610f9c5780610f83576000610f86565b60025b60ff1660028a901b176000179450879350610fe0565b610fa58361166f565b87148015610fba5750610fb78261166f565b86145b15610cd55780610fcb576000610fce565b60025b60ff1660028a901b1760011794508793505b5050505b94509492505050565b610ff561194e565b610ffd611911565b611005611911565b61101184860186611d82565b9250925092509250925092565b6110266118d5565b61103282840184611e04565b9392505050565b6000806000600190506040516040810160007f22316202d1bd103bc08c8b9947c2d35da5231690d1a40f35b0218458e9bdaca783527f0ccf5f7959cc3350eb55e5d8b6548ac8a5f85d0d3e6d6b031e3914423f1828876020840152865182526020870151602083015260408360808560065afa841693507f101392725dec0f93f6b434e663c79e273381a2befee711b0497c34fdeee9336282527f166206103ff8e43d590e1c4f366ac2b731be4df9554e566318a8d7d8743c9943602083015288359050806040830152600080516020611e8d83398151915281108416935060408260608460075afa8416935060408360808560065afa841693507f134b5ea9f8e79434280497acdce2addc05a0944198b536a8d112d3f7429ca2ef82527f0fce592d6ec0828365108bdf235a3d647d6910f9584858335de326c4263dcb04602083015260208901359050806040830152600080516020611e8d83398151915281108416935060408260608460075afa8416935060408360808560065afa841693507f2adbc9d8e0f81127bdb37d57b3dada283f6b033472f1cfeeed64991b76672f9182527f2e11be92cac9ef06b9e2983b4628c7c06242e199786364eb36dcdf28b08c40da602083015260408901359050806040830152600080516020611e8d83398151915281108416935060408260608460075afa8416935060408360808560065afa841693507f16859fa9957ce90f647ab6238881669181cc7cd59cdcb1df6ec3c9e107da329e82527f0d3a204069ec72d3779c7f120490ce6c88b477191d32e9f5df1c32e513d79f9e602083015260608901359050806040830152600080516020611e8d83398151915281108416935060408260608460075afa8416935060408360808560065afa7f15510d88d90b935f1be735dc7c96fb9188a74f11ae3194b33ce0fc8c5356752183527f057035a46af89448978947d9f489f602cc79047713790468077b61e551f5eaef602084015288516040808501829052600080516020611e8d83398151915290911091909516169390508160608160075afa831692505060408160808360065afa815160209092015191945090925016806113765760405163a54f8e2760e01b815260040160405180910390fd5b50935093915050565b6000808260000361139557506000928392509050565b600183811c925080841614600080516020611e6d83398151915283106113ce57604051631ff3747d60e21b815260040160405180910390fd5b61140b600080516020611e6d8339815191526003600080516020611e6d83398151915286600080516020611e6d833981519152888909090861160b565b9150801561141f5761141c8261166f565b91505b50915091565b600080808085158015611436575084155b1561144c57506000925082915081905080611602565b600286811c94508593506001808816149080881614600080516020611e6d8339815191528610158061148c5750600080516020611e6d8339815191528510155b156114aa57604051631ff3747d60e21b815260040160405180910390fd5b6000600080516020611e6d8339815191526114d46003600080516020611e6d833981519152611ccc565b600080516020611e6d833981519152888a090990506000600080516020611e6d83398151915288600080516020611e6d8339815191528a8b090990506000600080516020611e6d83398151915288600080516020611e6d8339815191528a8b09099050600080516020611e6d83398151915280600080516020611e6d8339815191528a860984087f2b149d40ceb8aaae81be18991be06ac3b5b4c5e559dbefa33267e6dc24a138e50896506115cd600080516020611e6d83398151915280600080516020611e6d8339815191528c870984087f2fcd3ac2a640a154eb23960892a85a68f031ca0c8344b23a577dcf1052b9e7750861166f565b95506115da8787866116d2565b909750955084156115fc576115ee8761166f565b96506115f98661166f565b95505b50505050505b92959194509250565b6000611637827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52611810565b905081600080516020611e6d8339815191528283091461166a57604051631ff3747d60e21b815260040160405180910390fd5b919050565b600080516020611e6d8339815191529081900681030690565b6000806116b5837f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52611810565b905082600080516020611e6d833981519152828309149392505050565b60008080611704600080516020611e6d83398151915280878809600080516020611e6d833981519152898a090861160b565b90508315611718576117158161166f565b90505b611763600080516020611e6d8339815191527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea4600080516020611e6d833981519152848a080961160b565b9250600080516020611e6d83398151915261178f600080516020611e6d83398151915260028609611875565b86099150600080516020611e6d8339815191526117bc600080516020611e6d83398151915284850961166f565b600080516020611e6d83398151915285860908861415806117f25750600080516020611e6d833981519152808385096002098514155b1561137657604051631ff3747d60e21b815260040160405180910390fd5b6000806040516020815260208082015260206040820152846060820152836080820152600080516020611e6d83398151915260a082015260208160c08360055afa90519250905080610cee57604051631ff3747d60e21b815260040160405180910390fd5b60006118a1827f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd45611810565b9050600080516020611e6d83398151915281830960011461166a57604051631ff3747d60e21b815260040160405180910390fd5b60405180608001604052806004906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6040518061030001604052806018906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b806101008101831015610cf057600080fd5b8060408101831015610cf057600080fd5b600080600061018084860312156119a657600080fd5b6119b0858561196d565b92506119c085610100860161197f565b91506119d085610140860161197f565b90509250925092565b8060005b60048110156119fc5781518452602093840193909101906001016119dd565b50505050565b60c08101611a1082866119d9565b608082018460005b6001811015611a37578151835260209283019290910190600101611a18565b5050508260a0830152949350505050565b60008083601f840112611a5a57600080fd5b50813567ffffffffffffffff811115611a7257600080fd5b602083019150836020828501011115611a8a57600080fd5b9250929050565b60008060008060408587031215611aa757600080fd5b843567ffffffffffffffff811115611abe57600080fd5b611aca87828801611a48565b909550935050602085013567ffffffffffffffff811115611aea57600080fd5b611af687828801611a48565b95989497509550505050565b8060808101831015610cf057600080fd5b6000806000806102008587031215611b2a57600080fd5b611b34868661196d565b9350611b4486610100870161197f565b9250611b5486610140870161197f565b9150611b64866101808701611b02565b905092959194509250565b6000806000806101408587031215611b8657600080fd5b611b908686611b02565b935060a0850186811115611ba357600080fd5b608086019350359150611b648660c08701611b02565b634e487b7160e01b600052603260045260246000fd5b8060005b60028110156119fc578151845260209384019390910190600101611bd3565b6102008101818660005b6008811015611c1b578151835260209283019290910190600101611bfc565b505050611c2c610100830186611bcf565b611c3a610140830185611bcf565b611c486101808301846119d9565b95945050505050565b83815282602082015260006040820183516020850160005b82811015611c87578151845260209384019390910190600101611c69565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b600082611cc757634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115610cf057634e487b7160e01b600052601160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d2457634e487b7160e01b600052604160045260246000fd5b604052919050565b600082601f830112611d3d57600080fd5b6000611d496040611ced565b9050806040840185811115611d5d57600080fd5b845b81811015611d77578035835260209283019201611d5f565b509195945050505050565b60008060006101808486031215611d9857600080fd5b600085601f860112611da8578081fd5b80610100611db581611ced565b9250829150860187811115611dc957600080fd5b865b81811015611de3578035845260209384019301611dcb565b50819550611df18882611d2c565b94505050506119d0856101408601611d2c565b600060808284031215611e1657600080fd5b600083601f840112611e26578081fd5b80611e316080611ced565b90508091506080840185811115611e4757600080fd5b845b81811015611e61578035845260209384019301611e49565b50909594505050505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a2646970667358221220a0defde2b518504d9301f59fe65741b9983bbb6fec451c65d03c7ddb581c571b64736f6c634300081c0033";
static readonly abi: readonly [{
readonly inputs: readonly [];
readonly name: "CommitmentInvalid";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "ProofInvalid";
readonly type: "error";
}, {
readonly inputs: readonly [];
readonly name: "PublicInputNotInField";
readonly type: "error";
}, {
readonly inputs: readonly [{
readonly internalType: "uint256[8]";
readonly name: "proof";
readonly type: "uint256[8]";
}, {
readonly internalType: "uint256[2]";
readonly name: "commitments";
readonly type: "uint256[2]";
}, {
readonly internalType: "uint256[2]";
readonly name: "commitmentPok";
readonly type: "uint256[2]";
}];
readonly name: "compressProof";
readonly outputs: readonly [{
readonly internalType: "uint256[4]";
readonly name: "compressed";
readonly type: "uint256[4]";
}, {
readonly internalType: "uint256[1]";
readonly name: "compressedCommitments";
readonly type: "uint256[1]";
}, {
readonly internalType: "uint256";
readonly name: "compressedCommitmentPok";
readonly type: "uint256";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "provingKeyHash";
readonly outputs: readonly [{
readonly internalType: "bytes32";
readonly name: "";
readonly type: "bytes32";
}];
readonly stateMutability: "pure";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint256[4]";
readonly name: "compressedProof";
readonly type: "uint256[4]";
}, {
readonly internalType: "uint256[1]";
readonly name: "compressedCommitments";
readonly type: "uint256[1]";
}, {
readonly internalType: "uint256";
readonly name: "compressedCommitmentPok";
readonly type: "uint256";
}, {
readonly internalType: "uint256[4]";
readonly name: "input";
readonly type: "uint256[4]";
}];
readonly name: "verifyCompressedProof";
readonly outputs: readonly [];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "bytes";
readonly name: "_proof";
readonly type: "bytes";
}, {
readonly internalType: "bytes";
readonly name: "_input";
readonly type: "bytes";
}];
readonly name: "verifyProof";
readonly outputs: readonly [];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint256[8]";
readonly name: "proof";
readonly type: "uint256[8]";
}, {
readonly internalType: "uint256[2]";
readonly name: "commitments";
readonly type: "uint256[2]";
}, {
readonly internalType: "uint256[2]";
readonly name: "commitmentPok";
readonly type: "uint256[2]";
}, {
readonly internalType: "uint256[4]";
readonly name: "input";
readonly type: "uint256[4]";
}];
readonly name: "verifyProof";
readonly outputs: readonly [];
readonly stateMutability: "view";
readonly type: "function";
}];
static createInterface(): Groth16VerifierInterface;
static connect(address: string, runner?: ContractRunner | null): Groth16Verifier;
}
export {};