Solidity API

submitProofOfAddressOwnership

function submitProofOfAddressOwnership(struct Summa.AddressOwnershipProof[] _addressOwnershipProofs) public

Submit an optimistic proof of multiple address ownership for the Custodian. The proof is subject to an off-chain verification as it's not feasible to verify the signatures of non-EVM chains in an Ethereum smart contract.

Parameters

Name
Type
Description

_addressOwnershipProofs

struct Summa.AddressOwnershipProof[]

The list of address ownership proofs

submitCommitment

function submitCommitment(bytes snarkProof, bytes grandSumProof, uint256[] totalBalances, uint256 timestamp) public

Submit liabilities commitment for the Custodian

Parameters

Name
Type
Description

snarkProof

bytes

A zk-SNARK proof from Univariate Grand Sum circuit includes KZG commitments to the polynomials

grandSumProof

bytes

A KZG opening proof for the grand total sum of cryptocurrency balances

totalBalances

uint256[]

The grand total sum of all user balances included

timestamp

uint256

The timestamp at which the Custodian took the snapshot of its assets and liabilities

verifyInclusionProof

function verifyInclusionProof(uint256 timestamp, bytes inclusionProof, uint256[] challenges, uint256[] values) public view returns (bool)

Verify the proof of user inclusion into the liabilities commitment

Parameters

Name
Type
Description

timestamp

uint256

The timestamp at which the Custodian took the snapshot of its assets and liabilities to generate this proof

inclusionProof

bytes

A KZG proof for the polynomials containing usernames and balances, associated with a specific user index

challenges

uint256[]

An array representing a point in the G2 affine space, corresponding to the user index

values

uint256[]

The user data that contains user ID and balances

Last updated