For the complete documentation index, see llms.txt
Private party tutorial
사전 준비: 먼저 Hello World를 완료하세요. 이 튜토리얼은 여러분이 컨트랙트를 컴파일하고 로컬 devnet을 실행할 수 있다고 가정합니다.
학습 경로에서 처음으로 다루는 실전 컨트랙트입니다. 핵심 주제는 프라이버시 경계, 즉 사용자의 비공개 데이터가 공개로 바뀌는 정확한 지점입니다. Compact은 기본적으로 데이터를 비공개로 유지하므로, 그 지점을 어디에 둘지는 여러분이 정하고 의도적으로 그 자리에 배치합니다.
파티 주최자가 컨트랙트를 배포합니다. 게스트는 자신이 누구인지 드러내지 않고 RSVP한 뒤, 도착하면 NIGHT으로 참가비를 냅니다. NIGHT은 unshielded 토큰이고 unshielded 전송은 항상 공개되므로, 참가비를 내는 순간이 각 게스트가 경계를 넘는 지점입니다. 그 과정에서 다음을 보게 됩니다:
- 프라이버시 경계. 게스트는 체크인 때 unshielded NIGHT 참가비를 내기 전까지 비공개로 남습니다. 주최자는 참가비를 청구하기 전까지 비공개로 남습니다.
- salt를 적용한 commitment. RSVP 목록은 각 게스트 주소의
persistentCommit을 담는데, 게스트의 secret으로 salt를 섞었으므로 목록만 봐서는 누가 올라 있는지 전혀 알 수 없습니다. - DApp 전용 공개 키. 주최자는 wallet address가 아니라 secret의
persistentHash로 식별되며, 이 키가 주최자 전용 circuit의 접근을 통제합니다. - unshielded NIGHT의 입출금.
receiveUnshielded가 각 게스트의 참가비를 받고sendUnshielded가 총액을 주최자에게 지급합니다. - 상태 머신.
PartyStateenum이 파티의 각 단계에서 어떤 circuit을 실행할 수 있는지 결정합니다.
이 튜토리얼의 소스는 midnight-examples의
examples/private-party
입니다.
Set up
midnight-examples를 clone하고 workspace를 설치한 뒤, 모든 컨트랙트를 컴파일합니다:
git clone https://github.com/midnightntwrk/midnight-examples.git
cd midnight-examples
yarn install && yarn compile
그런 다음 예제 디렉터리로 이동합니다:
cd examples/private-party
로컬 네트워크는 두 번째 파트에서 테스트를 실행할 때 시작합니다.