Verifying proofs with PolkadotJS
In this tutorial we'll go through the process of submitting compatible ZK proofs to the zkVerify chain using PolkadotJS. You can navigate through all the supported proof types using the tabs below.
- Groth16
- Ultrahonk
- Ultraplonk
- Risc Zero
-
Head to polkadot.js.org frontend
-
Select your account (you must have some tVFY).
-
Choose the
settlementGroth16Pallet, and thesubmitProofextrinsic. -
Inside the field
vkOrHashselectVk -
Fill in all the required fields by copy-pasting them from the json files obtained in the previous step. All the fields should be pasted without quotes. For the
gammaAbcG1field and theinputfield you may need to click on theAdd Itembutton a certain number of times, depending on the number of corresponding entries in your json files. -
Enter the Domain ID corresponding to the domain you want to aggregate the proof for. Think of the Domain ID as the target chain for aggregation. You can find a list of available domains here.
-
Click on the
submitTransactionbutton.

-
Head to polkadot.js.org frontend
-
Select your account (you must have some tVFY).
-
Choose the
settlementUltrahonkPallet, and thesubmitProofextrinsic. -
Inside the field
vkOrHashselectVk -
Fill in all the required fields by copy-pasting them from the hex files obtained in the previous step. You will need to fill the Vk, proof and public inputs. If you have more than one public inputs, you can click on the
Add Itemoption to add more public inputs. -
Enter the Domain ID corresponding to the domain you want to aggregate the proof for. Think of the Domain ID as the target chain for aggregation. You can find a list of available domains here.
-
Click on the
submitTransactionbutton.

-
Head to polkadot.js.org frontend
-
Select your account (you must have some tVFY).
-
Choose the
settlementUltraplonkPallet, and thesubmitProofextrinsic. -
Inside the field
vkOrHashselectVk -
Fill in all the required fields by copy-pasting them from the hex files obtained in the previous step. You will need to fill the Vk, proof and public inputs. If you have more than one public inputs, you can click on the
Add Itemoption to add more public inputs. -
Enter the Domain ID corresponding to the domain you want to aggregate the proof for. Think of the Domain ID as the target chain for aggregation. You can find a list of available domains here.
-
Click on the
submitTransactionbutton.

- Head over to PolkadotJs frontend and select your account (you must have some tVFY).
- Choose the
settlementRisc0Palletand the callsubmitProof. - Inside the field
vkOrHashselectVkand paste the verification key (i.e. the image id of the code whose execution you want to verify), making sure to prepend it with hexadecimal prefix0x. - Inside the field
proofchoose the risc0 version used to generate the proof and load the binary file or paste the proof bytes, making sure to prepend it with hexadecimal prefix0x. - Inside the field
pubspaste the public inputs, making sure to prepend it with hexadecimal prefix0x. - Enter the Domain ID corresponding to the domain you want to aggregate the proof for. Think of the Domain ID as the target chain for aggregation. You can find a list of available domains here.
- Click on
submitTransaction.
