[ZK] Noir 나이검증회로

무앙·2025년 7월 21일

ZK

목록 보기
2/5

이 글에서는 Noir 언어로 작성된 ZK 나이 인증 회로를 통해, 사용자가 자신의 나이를 공개하지 않고도 특정 나이 이상임을 증명하는 방법을 설명합니다.


개요

ZK 증명 시스템에서는 민감한 정보를 드러내지 않고 조건만 만족하는지를 증명할 수 있습니다.
여기서는 사용자의 agenonce를 입력받아 커밋먼트(commitment)를 생성한 후,
해당 커밋먼트와 공개 최소 나이(min_age)로 조건을 만족하는지 검증합니다.


1. Noir 프로젝트 생성

nargo new age_prove

2. 회로 작성 - src/main.nr

use std::hash::poseidon2::Poseidon2::hash;

fn main(age: Field, nonce: Field, commitment: pub Field, min_age: pub Field) {
    assert(age as u32 >= min_age as u32, "too young");
    let computedCommitment: Field = compute_commitment(age, nonce);
    assert(computedCommitment == commitment, "commitment not matched");
}

fn compute_commitment(age: Field, nonce: Field) -> Field {
    let inputs: [Field; 2] = [age, nonce];
    let commitment: Field = hash(inputs, 2);
    commitment
}

#[test]
fn test_compute_commitment() {
    let age: Field = 23;
    let nonce: Field = 12;

    let commitment: Field = compute_commitment(age, nonce);
    println(commitment);
}

3. 커밋먼트 계산 (테스트 기반)

Python에서 포세이돈 해시 라이브러리를 이용하여 커밋먼트 계산을 시도했으나, 실패하여 아래 글을 참조하여 회로 내 test 함수에서 commitment를 계산합니다
dokpark21-age_verification

nargo test --show-output

출력된 값 예시:

[age_prove] Running 1 test function
[age_prove] Testing test_compute_commitment ... ok
--- test_compute_commitment stdout ---
0x0922410e18fb7adba46996575f7f049b19c3cd042f28a35f1757fbdedb584759

이 값을 .toml에 넣어 사용합니다.


4. Prover.toml 생성 및 파라미터 설정

다음 명령어로 Prover.toml을 생성합니다:

nargo check

생성된 파일 예시:

age = ""
commitment = ""
min_age = ""
nonce = ""

여기에 값을 채워줍니다:

age = "23"
nonce = "12"
min_age = "20"
commitment = "2773162440671216239964217308338671978964196128669216495597811269554466628943"

5. 증명 생성 및 검증

증명 생성

bb prove -b ./target/age_prove.json -w ./target/age_prove.gz -o ./target

검증키 생성

bb write_vk -b ./target/age_prove.json -o ./target

증명 검증

bb verify -k ./target/vk -p ./target/proof -i ./target/public_inputs

솔리디티에서 검증하기

1. Verification Key 생성

Solidity에서 사용하기 위해선 keccak 해시 방식으로 vk를 생성해야 합니다.

bb write_vk \\
  -b ./target/age_prove.json \\
  -o ./target \\
  --oracle_hash keccak
  • --oracle_hash keccak을 반드시 지정해야 Solidity와 호환되는 proof가 생성됩니다.

2. Solidity Verifier 생성

bb write_solidity_verifier \\
  -k ./target/vk \\
  -o ./Verifier.sol
  • 이 명령으로 Verifier.sol 파일이 생성됩니다.
  • 주요 배포 대상은 이 안의 HonkVerifier 컨트랙트입니다.

3. Remix IDE에서의 Verifier 배포 및 테스트

배포

  1. 앞서 생성한 Verifier.sol 코드를 붙여넣습니다.
  2. 컴파일 탭에 들어가 Enable Optimization을 체크한 뒤 컴파일합니다.
  3. 배포 탭에 들어가 HonkVerifierDeploy합니다

테스트

테스트 단계에서는 증명을 keccak 해시방식으로 생성한 뒤, 파라미터로 사용할 수 있도록 변환하는 과정이 필요합니다.

  1. 증명을 keccak 해시방식으로 생성합니다.
nargo execute age_prove

bb prove \\
  -b ./target/age_prove.json \\
  -w ./target/age_prove.gz \\
  -o ./target \\
  --oracle_hash keccak \\
  --output_format bytes_and_fields
  1. 증명을 파라미터로 사용할 수 있도록 변환합니다.
echo -n "0x"; cat ./target/proof | od -An -v -t x1 | tr -d $' \n'
  1. 배포된 Verifier 컨트랙트의 함수를 호출합니다.
function verify(bytes calldata _proof, bytes32[] calldata _publicInputs) external view returns (bool)

위 함수에 Prover.toml에서 사용했던 public input값과 앞서 변환한 증명값을 파라미터로 사용하면 됩니다..

proof : 0x0000000000000000000000000000000000000000000000042ab5d6d1986846cf00000000000000000000000000000000000000000000000b75c020998797da780000000000000000000000000000000000000000000000005a107acb64952eca000000000000000000000000000000000000000000000000000031e97a575e9d00000000000000000000000000000000000000000000000b5666547acf8bd5a400000000000000000000000000000000000000000000000c410db10a01750aeb00000000000000000000000000000000000000000000000d722669117f9758a4000000000000000000000000000000000000000000000000000178cbf4206471000000000000000000000000000000000000000000000000e91b8a11e7842c38000000000000000000000000000000000000000000000007fd51009034b3357f000000000000000000000000000000000000000000000009889939f81e9c74020000000000000000000000000000000000000000000000000000f94656a2ca48000000000000000000000000000000000000000000000006fb128b46c1ddb67f0000000000000000000000000000000000000000000000093fe27776f50224bd000000000000000000000000000000000000000000000004a0c80c0da527a0810000000000000000000000000000000000000000000000000001b52c2020d74600000000000000000000000000000049779cb16462557ee14e88cecda5def27d00000000000000000000000000000000002a95b2c5445687f613d9106f06584300000000000000000000000000000032cc747b23b48c7d9601585ea5ef4527680000000000000000000000000000000000232c20ab09264cb2ce92f6e387af0200000000000000000000000000000059ba77606d45bc7281ca7070d0f2931a5000000000000000000000000000000000001b64e3f34aeb7d745b6be1ca70593a000000000000000000000000000000ce79aff0c3c19a70f087276dd0670ed135000000000000000000000000000000000019015ef36811a85fc433f9bf9ac3150000000000000000000000000000009c70d9fecf4f8799959867379051c263fe000000000000000000000000000000000019a42de88f104035d9b891c8164d4e000000000000000000000000000000b7995f71c00377296c2730efd836b4b13500000000000000000000000000000000000f31e9fa61216fcedfcee48f2894d90000000000000000000000000000000612cacc715d0d4fb9eb1de2b18780782600000000000000000000000000000000000c828f39a91fefb8d330467c0556e30000000000000000000000000000007dc13e448af35264e077f72ffcf5db66aa00000000000000000000000000000000001364f09eab08ccae4e58bcd7604c0a0000000000000000000000000000000612cacc715d0d4fb9eb1de2b18780782600000000000000000000000000000000000c828f39a91fefb8d330467c0556e30000000000000000000000000000007dc13e448af35264e077f72ffcf5db66aa00000000000000000000000000000000001364f09eab08ccae4e58bcd7604c0a000000000000000000000000000000771281d99d3bd512eba6a3ed825de8b654000000000000000000000000000000000025e7d811c6d23d5bf7ad591f94415700000000000000000000000000000001a41fb3864e509405c76a16f44839be4a00000000000000000000000000000000002636cb28109af7785ce4df51156fd40000000000000000000000000000002c1eab7aa7f99059f31be7df1c7314264c000000000000000000000000000000000012d3c7694502178a32a52d650195fa0000000000000000000000000000005552c5c98a2e27710a969cdd78acfe5f9000000000000000000000000000000000000010b2e63c6086c06b118c4786c4460000000000000000000000000000004cd2d95d5f82e632fe46d54cc884b3c4870000000000000000000000000000000000146ab1b62b1e12fc7714baabba5f3900000000000000000000000000000092e107db19f90c85e9f65521520c795a5b0000000000000000000000000000000000142255b9be50b3808dbae6fa5ca8db168354e5428bef88d8aee479919597f51ad810f3681ccd14f41147bd31b6d2e219e0f98d9ea5b0a0dfa1613cefebc0680d5bd755119ca37c4fd0add6be492d1f28a5cd5b7bae0a71da57612e31a1c545ee4c77bb884871bb37139ca5d3055bc60f12d7818494baafb46441e865ff1c4bd776a0c6553b7a6b949db5148723dac8091cf91164d4260eae276788ca5401d2960780c1d0c7ad715ea969c951f171af2605976f5bf1b226ae4f6b56c8e3af814df445badd1dbbf9adf7d6a04c48105d03b2ea934811fe579b557d37e85eb52794a19f70f31abcf8a0d0fa5eb891abdf21c9b16eb81dadbb65d4428707a8bb5371c60a0a48ae8ebe5040f31971250009123e84e85ec4f844946a07f683f2de627f6bd092004c983c9bacff2f4eb8e1621603cd364c10d86dcea44b47bf15b5f8cf68f62954de0e17fcb2ebd774a9d1922f40ef33716e27942ff22777d154db5aab8d87c0816b5648fb1e9833e53805612adcff98622241196275c942e9d69845c1167e0a4b6f323f751d5407cd862e881ed6cc8ee17cf21f27b22e155c302cff9657a429ea2ca989097c3fe8091bfdca069d71a37101b622b221b0b61c087a4de7cdc9576c9493c3c961c71da292be2821ceaaaff706dc33133370973e25e81010928e8b66fe7281d404dccc4d2534171d93b04a7ff2c899d8c4cc4cf8e26cb511bc4963b1efc386a86d43a2b3082310092b9a8ee806c2b9833265c30f44959e5a75c255d83409de2fd23679ea4ddb6e2de482e798d174a1be25b6cacb477c64412cc0306925aced6d06170320bcd8db2585d2ea215291d1d5038176f62c4bfc2fc0c59a66c7d8793bc24007cbc0d879042da2202d02ede276213998a7dfc60a4cc4026418a0a6f3c188370a9daab4f628a68f7554e3ef3e7bee32db3ee31ab534cb20d1be7311e3dfbe33e5ff74325f1e984d3bde32dd0f5d29c49330b3b65f70651129e0db720c1219fcbc15df43fe0dc606dfbd0a6052697a8d9564a9ae1e41869e998b132f86f1178c718f0ab32917c4e4b62e68d2adc01dd4157f844d522664f09845fecbe50c9d92762051ab742f5462247030c530307cc3a725ea0ab9163c7893891048f80666c60e19d0e5b1224f4aaa74fbc8a8724cfa6d04bfb15ae61f829f7038d72401c4836a7e00910d0ea617d9925b243a6eccaeb470b3ce76f2d6138c10f808ffdf2f1330c433e4e91e71c53e50e8b41de2be91541e7d79f2c1c18eed60c297144f2f1d667d6914e60800ca7e4eb6f6f5fa3831d902e5fa5729a626dbaaf32ce210409c28cd5446ec14e9ba5ff2c4641f3917dcad01d826042cd552fba9184ee786e9c537b0fa9667018191582a93a4f050721a7c85a8c0a31b58130695ab5bdc008930954c4eb93817b6df0fa59856df1bb364a32492544002a285c0b43d794eb35b6712387508360b35d72a7897aa3b48f20b24f0e253869724697f1bd1ab710127934eb71b8d6127c056da6af8f8ab8dcbec2349023096c905e3ba980317c2cfc3617b3103d3521d7e77b02b36d346dcb4d63a397c386bb6756915cbc3a2949ab89ae9f9fb12cc239a12a65bb8349ab403e490dc67ce0e9cafda0e838828eed4c343119e1710790c85a0ca7d365ace1a41d6025faff92c4f6d035a576fe78b6951fe3d77188d7a1c173e9eb0e7e5fcd2b4bc055abb9a6ddcebc65c8d929785f3a696a88288eac414ff4288cd1f9ca257d6be14aca9f03096762bbb7ff3673702827535464083c903f19386a6c1fddbf4d6f98ef4262cd4310cc728768cab12aae097a6767e33b7198fe8c22c1628cb1590d651b358be3ec5c2b308710466dcf87123357289228f08eee45b8da442bcef91fcae40d9db6acb6137e682b1ef460107b609382cd7641f5c9ffc6db79cd101b1cc759c54e29e2b31b089dd56fef2481569156809e98a19d4f05d954dcedd6510a4bef62ae61e0081426aa35db2a4f03866039c3a1fe100d2c95c02bcb0d6e328f9c6a9d9f6564776d314dfcad64c3f5c5e4c573fda5e1c7c503cabc7cd5a11bddbb4add5f712d45c3ba5a1685b484f7e45ef34631acc13331fbab91862c0bd863df06f810eaa896d1286b3e61c34a4faf55811b8ae6c29598d582ef394059ee14b34ad313d254596197daa7cd9acb2d0cd34cd53542a27b961a891023880e2c15e81e2f0d975e5c1cfa4ce3aacbf1ef71e78e0dd13b71715ec10925e2b7247b1264b745314dab1804c5ae8ab71ce8c5ab78577813f901419dc1cacfb86307f087842ec2cdcbd796365ec2c90d53278428b85ea8eb9371ff5d757b52fe9b7c13bce4b19095d9d41019d0057235e243db6eed3e8be1a6922918c23942d7bf350e66749dbbe897f32faaa529f6195e823f25669d14a25d11f3a2ee09b36c3a121f3d5cf19b491e2ea4c29302e7f905d0e204adc84dd7c021992ca2c2ea70ea80b432e658e0bdd7fe4651b4b5d35e2b056479773460e6ae20b11933353052cd23d257d2a0f20ebaebdc944e409060042158e18f504bb99e3102a1e2c01936182c7a3797121a6890fcdec1a80ed6d9a48f35e128fe175d4d005e6f78b6b86b1229bc6b032523f9f8990dee44c9937fb8e4fbd5a13309e4d7304b6c353c906f6aaf8beecc786d1ed90343640c78babc66de40bd28aae097b520ecad830e2e02c5f358279262f5d0d0feb698df43275d639ee7ae45bb8c1f6ca011807e71f3794060498688ab20ec4b1fadea0569ff9afb9efed6d3d8fe8b05a08cb1f423e781dd9164359bb37628ac84eec850c382e9d08642700792e6d29900ad4586d9629bd3f12f8a1a0cae264168e390e4d385311a3b6526699339512bb29a58ad32aeb441dc9f092860f27d69901117afd34e40cf8acff47f2ad906aa9299116239d3b7936dc8743c3cd50e447b8ce1c12f6e3f8b79d0f6e56efeeb9ef13a7138e925e080147c144477163b2bd770abd13e6704ae3fcb76beb6fbe5a0e20f94442ef6f4b5d1b2fa3665661a86f8b8dce6f4e6ed625d732c195eb1fb4e518aed0500a4ec171366cc1782bb6a53497a24f3d5c03308a657107b7f55d069e1eba2ffc3c4fb75d9d6a4effd5f1b3d8a4051ba8081a3ac87be9b192281a28062a952172d3a17c5edbbdfdc4c21f793fa797ca7f9fd84d594602f6d10f7560c824ba40b4467296171e1a543463963905ef7a1d4606f4fad63026412cf66b82ff1174d4e194d6552e61fc985d62bbbbfb8892f18202a97bbf9d7a209471e3da9504fa3c24c3e64b6d85a8e7d8432dbbfbdf438b681272c09a6917f9a9a9fdd030033e525bd4472a3eb238b4cdfedec2ca9c6a1d199af307018eb56060c762c99c1263b45ebbe64a96bf885a5df4987a2105870e9780bc4dd276fa50eb968aa2e806566b60bd766a8f2faefe2269773b260a87222c47f9b081b4b9266669f438db02d7abda57ed3f84f1928f7e44a9d5ad2c1d1ba0b831fffae9c938c1f7d4ad432eafea64f3c169013e33fd9f2306c2a34eee72612324d927a346e6c58477a5ab1dfd83e87d15530b486073bf5109cf4fbfc017d3f0e519782e2c8421686e4c87105225b5b1663af4b874ba1e2a1d3d0d1dd2ffae00c652536b3574f3fda3c78624530efb1e78d12ed5889817a244e87e0ca35f672d260f4a04e9b95a52f0fa4f247bd1664b22bc1b4f64373553320fb9fdb6594e49fb87a158dfd35752c8eb5725860e73d3ba85e27e43d88b79dd956b30c2776829788d0245806192e3374afa2754b6dad42dbcdaaea43497f0075cb6c94040f5ae74768cbb93742eae839bae0c645ffe75ca151a68240de96d4851e783c308e8d8efea18ace6a3f9384a55e014b2780b8e7a2cfe99eccf2414bd0b6606c7c81960571c40af765627a2235d750716e37b55f59874fd8f887659046f4625f93fe88c68d6886611c6ffb85aa89519fc90fc2952cae92c5b59a73279e1ffd7b271b3f78d78e75eae66fa3f4ec8d9092f585564780d4213416b3186ddac77243a5c8c0565054367a0ff9636c0002128e4907ecb0454f4f0121df74ca07823c3b59b84e8435778b2849d5626376f8a21250270dc98f4e49a3b1a42b65bb18417b9670b2c446ec8bb29ba17e7426d6d0ca40b7c57bc060d132b9a90800fb5596613a7a29de30252bfc18b52c786a8db2876eb09fb618e3242c410f45b76f2bdbca888c9833718d157687a0a5e1e7f411c518a3d4a31bca32187c974b3691b92984f4055336fcc53cf0ba7d76b5b8c9d178afdad4e9cfc47c3f64ea3e6b281844d1d97b3253c7225c8ba851ced5427a11b60fcdee9788f4cfbcc4f2c1aa09de79c5dc83785f193bd83a20fdc98ecd8b6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e10e36764a49baa8cf7dbd2ec1def0cbd7c879c137de4266bcf766ab9f3d906283f21820e2d24759a80969b9f69dec8cc98a6d9a1aa2d0874b204d7a92c45a109675a9d384c93fb1ff9498a8bacf42fd30d9de3e85d9af28d5e7db770f45ba81bb2ab9153b761081aa352a3c3a90d97aead7047a6ac599f9bfa50123db7366b13ac4fb81796b8f0ef7f1b9e4a02bdf723eff19ccffc953747a7380f85e430370374f630dcb7436b820f323ab39dc96b22675b83c351eefb7cf2264e304bd58215d66e271d3f318d05593e29c708bd5738c2ba8679f625acbf06cbc08b93c1a01c083c6d742996d4296e98925fdfa41a039ef3182bdef717bc66cbc270e470071dd62bcd5bdda96113627895a2daa3e12ba9b33cbd3e98f5e0870a09fa59c3101950e93436afa98781bc6cc82e359794942eed1db1f10df6446576b55c5a27a30f7d731e6c5c5f3670e69dae12dd804b09b58d6cd3d0de691b91129723b58c8b009423943bc5b072ce28c3a7b6cda93ebc18c80cc8cd7d82839c0867a56acbb21ad8da855f7c7799b7bb6b915a2a26ca99563bd318ab072e5dea2950a959189c1672f6816b623d22513fa49c390a94ab4cfb03ee16af60ba58a765ba6c10720b1a6763467f00f280cf129988730934776cebcce8bc48bc8e6c9a4f541598d9c8103f32a095a3635194a920fc5cd05683dc3767adb42b9e96fe1da489c19625890294d7e102c3d626bb0d335f22772207b3e0f6581b8073b6d57f3e15b08ab44412618a2d0ea9d01fdbca3fc25df4f8caaadda9d66ea113d7deb211b5df07f57d11827ef7e5f9a6fd7bc8adc7a6b5b2b7a25cef96bf84fa545dc5a4e6af98103a13fa4221ec05949812e9f8f3e51697bd65343e147fbb30ade26171ae6d7b9dd02da26a3cc764c05e36d91710f36e3c8f65d25666aef7d3c2feb2fd4afd82f7e512f44e23b93d39a1d2362f9b4339bed72a94234a999ed3c4ca566afe21571ea9279d6701832ae0a93f333fcc84b0c61a6b1b6b590b61fddc34a595eb759bcadb25f0174c78afc710386c6d0c01c5ec2bb6876fb4c43df9cfed479df87a7a06371ab40d9980eb27f9b8f643a524344c6462b25031750c5d488ae52aca628c5a0a1dba88fbf0b1dbadf67af277a1a3a5ec2dd0917854ade260cd5f4c76a9e9d9651f9b992d059fc9f4d36ee003f21a45061128cbafa16ff73e6f4b17ac8f7cca0107c252b4c6a2bceab644d010ecb65d96b0cc14e9dc8ef781e773bae3f4f97bda278ad217d7545e69d11e60fd7664edd60ef559751a0e7422805b8dae96269f37237046ce74448c71bf52fd7bbaa20b56e436e00df1be235933604ebab7109a861b43e43e415da25ad0a2e5eff1ae2f1d80f544f222bc9d8141cc2972c1f26cbf17e812251389f19c1cf8d90a13025421ee2d407447985c4e3cfa56604c06e95716f6ff0426122c6c19bcabb7e0868a43d7775b5a13d0dcb527d0f3bb6ee743491ad53ebd957ebf2f804b67e2bb3b33d35a3b55cdf25037e75379dcf06c8412c21ad53ebd957ebf2f804b67e2bb3b33d35a3b55cdf25037e75379dcf06c8412c22f057004a680a3fdd62b74f4b7c1ea0fc315f38ba260731c5a57f0c347d0d4240493247d563d7bcd9fae2b2d89a5800705ff2278c1c2c420b8b2209aea3e9d470129c6e4d5ab51232003ace172241a76b933d74aa3a5a4d61086fec524ec125311b361e054b5c04691d23cff14ac6d6aa73351713d430d2e71f11c61825f25a4174dd2651a73c477722c83f88f91debdb67553afc2328f49fe6651a6cd2760c20000000000000000000000000000006b571cfb10e4c78a9bf65eab82390d569000000000000000000000000000000000001edd438bb1e15163b9393b86db34aa000000000000000000000000000000b341b06776eb9afbd022d6262667435d7500000000000000000000000000000000000187921917ba2513e891b2a0652bfa000000000000000000000000000000d173fcebf7cd0aef7724fa589cb02c2d6100000000000000000000000000000000000202cf02ae655796dc702903f5633b000000000000000000000000000000d27030bdf2e16c235c7542a999329ba76c000000000000000000000000000000000000879c068c5adbb088b0d2db6bb7a30000000000000000000000000000007560b61c4cd5b850ca0ca4aaa7573684cc00000000000000000000000000000000000b6b77778a103f1c5688fd7c42bb3500000000000000000000000000000093abaf06250d2fe38e7d27fb722b6c59ef000000000000000000000000000000000005ac634ad4e16476fbbce5ab9e91ca000000000000000000000000000000a2a544a45022387ba758197a3580f5e0d600000000000000000000000000000000002c5406b5b77bdcfea94bd58367bd5f0000000000000000000000000000002f0b1663e67436aa735e5fb67bfda3395100000000000000000000000000000000000bcf2b448586e144d53f62c561232a0000000000000000000000000000007f3cedda2b40b581d3f3cc5cef3dd33189000000000000000000000000000000000010912072341e8c8dc100016dbcc3780000000000000000000000000000004f8a276a91680a3cd9e1314706ed4a3839000000000000000000000000000000000015ff83202f96d2b26cac3bcd43bab400000000000000000000000000000047fc553567287150dd9ab7e34a87d6ab77000000000000000000000000000000000027563da4dc78aaa2703fe434558b2000000000000000000000000000000016c3686a1e4acfbf6414ec917009937b6100000000000000000000000000000000001b4327c436dbc029ce55e1cae7663900000000000000000000000000000042c61aea0161315bbcfe15afe4ef76581300000000000000000000000000000000002c233ec0f7f8accd0fc72024b5d3460000000000000000000000000000005604a1202bcb1634a511e5d0fd673421b700000000000000000000000000000000000292a68562972b59f71be0e247dc1100000000000000000000000000000011f4d4d9d5e4aa7c9b304d92bdc2e9c28c00000000000000000000000000000000002bb2da681ff83e0d33448d18bd561400000000000000000000000000000017a565b62aa7a355d525fc99b86ce9461a0000000000000000000000000000000000045c24b1e6f1e715e4e6fbe85569460000000000000000000000000000003af5d700b96ee74ff4e4a5895a7ec01cc40000000000000000000000000000000000055c3f02671f92c229a7b8a3a2a96500000000000000000000000000000097bf97786cad6646b089302d99f6c0a4450000000000000000000000000000000000209ca2bad4ea7ae0752b122dfffc8200000000000000000000000000000039c8216be810c599773161cbe639751bb7000000000000000000000000000000000003e643a69627259f6f2cb3106eee2e00000000000000000000000000000086c9c377c36a9e094627fb9115681a07ef00000000000000000000000000000000000c98135fe9ef4fbc6dd2f2d054c28d00000000000000000000000000000018737ec3bd8a99fa739c4fa2461143f5fc000000000000000000000000000000000002d3f7d4567b5187bbed3e67de57f4000000000000000000000000000000e5b0bb8b68a31ac6f0b9f90cd99a416c0f0000000000000000000000000000000000045c15f67a4086c90220e725d7436200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002351ece61e531601eddf8d283b54fd60a62b18aac623cb08c671486ca3dc3d4216183c5574c82b137aa0dcbaeb0fd1ff2d08d2edb117fa016a099cb93510a881121bdf9d4c8845411891bba38f38218a4fed1c32a2e68bde36a2d9407d67d4f60dffeaea8994c23d3ae3cbd334fca028ff8b9b7b58980bc434d6876c6467546010410d332f6de4cfb21f0e1ec41c9476076acd2dbc7687238deb5a94d68a8b92301f13270a72088a7451508c702163a886af38cc7a5427a1dfa32081a74f944f1c18c10ae1f0283871a5b1bdaba91ba0529d90511ce9f580f62f1d2176c3bd7d0a2a76315cd2f26e5d09c94646bb64fcd397e15d6220c3e580112bceb117892529a1906f5d1e28a9647c58733a9c2ac44444c3b7e3c244ac73e5df79130e067906fe7e55c4fee3d8c0f2e02c9da6995ffaebf4a44ca5874545e202a5ba8abd441e16ce6e5c4d070878dd00fc54e191305e12052362ae2c5068f8a53e188965782cfc4dc054efdc8fff4418ea5b4e5006fdd0e3e616fb173153b449dcb37a02cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bb8862a4719fdc747e121e492589aafab80000000000000000000000000000000000021e1c049ff7780b3c795aba81b93500000000000000000000000000000009727c0f8e34f66dcd576640f629d85d5c00000000000000000000000000000000000d1e1eab2f7953d3a0a9fd30f4daf7000000000000000000000000000000e1520246f2b51ef695dda356f271521a2200000000000000000000000000000000001b738443048c703ed62d1872a7375c000000000000000000000000000000a8ce42f54c20833942b8756e9f5abcc39d000000000000000000000000000000000004514f66e975d0fa5723f3fa538d89

PublicInputs : ["0x2905b6b221ce19062cf1c9b7b72734578511a74a03501876cd73b09e5be2cfb7","0x000000000000000000000000000000000000000000000000000000000000000b"]

위 값을 테스트에 사용하였습니다. PublicInputs에 들어갈 값은 commitmentmin_age입니다.

관련오류

  • SumcheckFailed : Public input이 올바르지 않을 때 발생합니다.

온체인 테스트

  • Foundry를 이용해 이더리움, 카이아, Zk-Sync에서 배포를 시도해보았지만, 코드사이즈 이슈로 배포에 실패했습니다.
  • 아비트럼도 지원된다고 하니 추후에 재시도해볼것 같습니다.
    지원목록

아비트럼 (2025.07.29)

Contract addr : 0xF202A051619c2608B9B47405E399C0E03a9e4150
Arbiscan

아비트럼 체인에서의 배포 및 테스트 성공하였습니다.

  • 코드 최적화 값을 1로 설정했습니다. (200은 실패)

0개의 댓글