zkLogin에 대한 증명 서비스 설정하기

에서 제공하는 Docker 이미지와 Groth16 증명 키를 사용하기 위한 단계별 지침은 다음과 같습니다. Sui

zkLogin에 대한 증명 서비스 설정하기

새로운 Sui 프리미티브인 zkLogin을 사용하면 Sui 주소를 생성하고 Google, Facebook, Twitch와 같은 제공업체의 기존 웹 자격증명만으로 트랜잭션에 서명할 수 있습니다. 개인정보 보호를 위해 zkLogin을 통합하는 앱은 자격 증명이 앱에서 숨겨지고 거래 내역이 웹 서비스에서 숨겨지도록 ZK 증명을 생성해야 합니다. ZK 증명을 생성하는 작업은 리소스를 많이 사용하고 클라이언트 측에서 속도가 느려질 수 있으므로 ZK 증명 생성 전용 백엔드 서비스 엔드포인트를 사용하는 것이 좋습니다. 해당 서비스를 솔트 서비스와 함께 실행하면 사용자가 zkLogin을 통해 앱에 액세스할 수 있습니다. 솔트 서비스에 대한 자세한 내용은 Sui의 문서에서 솔트 전략에 대해 읽어보세요.

백엔드에서 증명 서비스를 실행하기 위한 한 가지 옵션은 지난 9월에 열린 행사에서 확립된 공통 참조 문자열(CRS)과 함께 Sui 문서에 제공된 Docker 이미지를 사용하는 것입니다.

서비스 증명을 위한 단계 설정

  1. 다운로드 도커 이미지 로 태그 prover 그리고 prover-fe.
  2. 나중에 증명자를 실행하기 위한 인수로 사용할 Groth16 증명 키 zkey 파일을 다운로드합니다.
wget -O - https://raw.githubusercontent.com/sui-재단/zklogin-세레모니-기여도/main/download-zkey.sh | bash

3. Blake2b 해시가 다음과 같은지 확인하여 올바른 zkey 파일을 다운로드했는지 확인합니다.

060beb961802568ac9ac7f14de0fbcd55e373e8f5ec7cc32189e26fb65700aa4e36f5604f868022c765e634d14ea1cd58bd4d79cef8f3cf9693510696bcbcbce

실행하여 b2sum zkLogin.zkey.

4. 4. prover at PORT1 를 Linux 기반 컴퓨터(amd64)에서 다운로드한 zkey로 실행합니다.

docker run \
  -e ZKEY=/app/binaries/zkLogin.zkey \
  -e WITNESS_BINARIES=/app/binaries \
  -v <path_to_zkLogin.zkey>:/app/binaries/zkLogin.zkey \
  -p PORT1:8080 \
  <prover-image>

5. 5. prover-fe at PORT2:

docker run \
    -e PROVER_URI='http://localhost:PORT1/input' \
    -e NODE_ENV=production \
    -e DEBUG=zkLogin:info,jwks \
    -p PORT2:8080 \
    <prover-fe-image>

6. 6. prover-fe 서비스를 적절하게 사용하고 증명자 서비스를 내부에 유지합니다.

7. 다음 엔드포인트 중 하나를 사용하여 증명 서비스를 호출합니다:

  • /ping 를 사용하여 서비스 가동 여부를 테스트합니다.
    • 달리기 curl http://localhost:PORT2/ping 반환해야 합니다. pong.
  • /v1 를 사용하여 ZK 증명을 생성합니다.
    • JWT_TOKEN, 임시 공개 키, maxEpoch, jwtRandomness, 소금 및 키 클레임 이름을 입력하여 증명을 받습니다.
curl -X POST 'http://localhost:PORT2/v1' -H 'Content-Type: application/json' \
-d '{"jwt":"$JWT_TOKEN", \
"extendedEphemeralPublicKey":"ucbuFjDvPnERRKZI2wa7sihPcnTPvuU//O5QPMGkkgA=", \
"maxEpoch":"10", \
"jwtRandomness":"S76Qi8c/SZlmmotnFMr13Q==", \
"salt":"urgFnwIxJ++Ooswtf0Nn1w==", \
"keyClaimName":"sub" \
}'


Response:`{"proofPoints":{"a":["17267520948013237176538401967633949796808964318007586959472021003187557716854","14650660244262428784196747165683760208919070184766586754097510948934669736103","1"],"b":[["21139310988334827550539224708307701217878230950292201561482099688321320348443","10547097602625638823059992458926868829066244356588080322181801706465994418281"],["12744153306027049365027606189549081708414309055722206371798414155740784907883","17883388059920040098415197241200663975335711492591606641576557652282627716838"],  ["1","0"]],"c":["14769767061575837119226231519343805418804298487906870764117230269550212315249","19108054814174425469923382354535700312637807408963428646825944966509611405530","1"]},  "issBase64Details":{"value":"wiaXNzIjoiaHR0cHM6Ly9pZC50d2l0Y2gudHYvb2F1dGgyIiw", "indexMod4": 2 },"headerBase64":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEifQ"}`

성능상의 이유로 증명자를 처음부터 컴파일하고 싶다면 Sui의 래피즈나크 포크를 참조하세요. 서버 모드에서 프로버를 컴파일하고 실행해야 합니다.