ERC-7857 비공개 메타데이터 AI 에이전트 NFT (AI Agents NFT with Private Metadata)

Final · NFT·멀티토큰 · 2025-01-02 작성

AI 에이전트의 모델, 기억, 캐릭터 같은 비공개 데이터를 NFT로 소유하고, 이전할 때 데이터가 실제로 안전하게 넘어갔는지 암호학적으로 검증할 수 있게 하는 표준입니다.

왜 필요한가

AI 에이전트는 저마다 모델과 기억, 캐릭터가 고유하고 이 데이터 자체가 에이전트의 가치입니다. 그런데 기존 NFT 표준인 ERC-721은 메타데이터가 고정되어 있고 누구나 볼 수 있다는 전제 위에 만들어졌습니다. 에이전트의 메타데이터는 다릅니다. 지적 재산을 지키려면 암호화해 보관해야 하고 소유권이 바뀔 때는 데이터 자체가 거래의 핵심이므로 비밀을 지키면서도 검증 가능한 방식으로 넘겨야 합니다. 기존 표준으로는 토큰 소유권만 바뀔 뿐, 암호화된 데이터가 실제로 전달되었는지, 새 소유자가 그 데이터에 접근할 수 있는지, 에이전트 실행 환경이 소유권을 확인하고 올바른 데이터를 불러올 수 있는지를 보장할 방법이 없습니다. 이 표준은 신뢰 실행 환경(TEE)이나 영지식 증명(ZKP) 같은 검증 방식을 하나의 인터페이스로 묶어 이 문제를 해결합니다.

구현해야 하는 것

심층 설명

온체인 검증자와 오프체인 프루버

검증 체계는 두 요소로 이루어집니다. 온체인 검증자(On-chain Verifier)는 스마트 컨트랙트로 구현되어, 컨트랙트 호출로 제출된 증명을 검사하고 구조화된 결과를 돌려줍니다. 오프체인 프루버(Off-chain Prover)는 암호화된 데이터와 키를 다루며 소유와 가용성 주장에 대한 증명을 만듭니다. 프루버 구현은 검증 방식에 따라 다릅니다. TEE 기반이면 신뢰 하드웨어 안에서 증명을 만들고 ZKP 기반이면 암호학적 영지식 증명을 만듭니다. NFT 컨트랙트는 verifier() 함수로 자신이 쓰는 검증자 컨트랙트 주소를 공개하므로, 검증 로직을 별도 인터페이스로 분리한 덕분에 TEE와 ZKP 같은 서로 다른 방식을 같은 틀 안에서 바꿔 쓸 수 있습니다.

두 종류의 증명

소유 증명(Ownership Proof)은 주장한 dataHash를 만들어 내는 원본(pre-image)을 알고 있음을 입증하며 verifyOwnership()으로 온체인 검증합니다. 이전 유효성 증명(Transfer Validity Proof)은 verifyTransferValidity()로 검증하며 다섯 가지를 입증합니다. oldDataHashes의 원본을 안다는 것, 옛 데이터 키(oldKey)로 복호화한 평문을 새 키(newKey)로 재암호화했다는 것, 새 키를 받는 사람의 공개키(encryptedPubKey)로 암호화했다는 것, 새 암호문들의 해시가 newDataHashes라는 것, 그리고 받는 사람 또는 접근 보조자가 oldDataHashes, newDataHashes, encryptedPubKey에 서명해 데이터가 저장소에 실제로 있다는 것입니다. 소유 증명 검증은 선택 사항입니다. 이전이나 복제 시 가용성 검증 안에서 소유가 다시 확인되기 때문인데, 원문은 민팅과 갱신 때는 소유 검증을 하라고 권장합니다.

TEE 방식과 ZKP 방식의 능력 차이

TEE 기반 구현은 프루버가 신뢰 하드웨어 안에서 돌아가므로 여러 당사자의 개인키를 안전하게 다룰 수 있고 데이터를 직접 재암호화할 수 있습니다. 이때 온체인 검증자는 TEE 어테스테이션을 확인합니다. 반면 ZKP 기반 구현은 암호학적 성질상 여러 당사자의 개인키를 처리할 수 없어, 재암호화 키를 프루버가 알게 됩니다. 그래서 ZKP 방식으로 이전하거나 복제한 토큰은 다음 갱신(update) 때 추가로 재암호화해야 하며 그러지 않으면 새 갱신 내용이 프루버, 곧 이전 소유자에게 계속 보입니다. 이 키 처리 능력의 차이가 이후 사용 과정에서 데이터 변환을 관리하는 방식에 영향을 줍니다.

세 가지 데이터 조작: 이전, 복제, 사용 권한

표준은 세 가지 조작을 지원합니다. 완전 이전(iTransfer)은 데이터와 소유권을 함께 새 소유자에게 넘깁니다. 복제(iClone)는 데이터를 새 토큰으로 복제해 받는 사람에게 주되 원본 토큰의 소유권은 바꾸지 않고 새 토큰 ID를 돌려줍니다. 사용 권한 부여(authorizeUsage)는 특정 사용자가 에이전트를 쓰도록 허용하되 소유권도 넘기지 않고 데이터 접근권도 주지 않습니다. 이 세 번째 방식에는 사용자를 인증하고 권한 있는 사용자의 요청을 비밀리에 처리하는 환경이 필요한데, 원문은 이를 봉인 실행기(Sealed Executor)라 부릅니다. 봉인 실행기는 표준의 정의 범위 밖이지만 동작에 꼭 필요한 구성 요소입니다. tokenId로 권한 그룹을 받아 그 공개키들로 사용자 서명을 검증하고 성공하면 요청을 처리해 결과를 돌려줍니다. 허용되는 곳에서는 신뢰 기관으로, 그 밖에는 TEE나 완전동형암호(FHE)로 구현할 수 있습니다.

접근 위임과 봉인 키 전달

받는 사람은 delegateAccess(_assistant)로 접근 보조자(access assistant)에게 접근 확인 서명 권한을 위임할 수 있고 getDelegateAccess(_user)로 위임 상태를 조회합니다. 접근 증명(AccessProof)은 받는 사람 또는 그 보조자가 서명하며 oldDataHash, newDataHash, nonce, encryptedPubKey, proof로 구성됩니다. encryptedPubKey가 비어 있으면 받는 사람의 이더리움 공개키로 새 데이터 키를 암호화한다는 뜻입니다. 이전이나 복제가 성공하면 PublishedSealedKey 이벤트로 봉인 키(sealed key)가 받는 사람에게 공개되고 받는 사람은 이를 자기 개인키로 풀어 새 데이터 키를 얻습니다. 각 증명에는 nonce가 들어가며 참고 구현의 검증자는 사용한 증명을 기록해 같은 증명의 재제출을 막습니다.

메타데이터 구조와 ERC-721과의 관계

토큰의 데이터는 IntelligentData 구조체 배열로 표현됩니다. 각 항목은 데이터 설명(dataDescription)과 데이터 해시(dataHash)로 이루어지며 intelligentDataOf(_tokenId)로 조회합니다. 체인 위에는 해시와 봉인 키만 올라가고 실제 데이터는 암호화되어 체인 밖 저장소에 보관됩니다. 이전이 완료되면 토큰의 데이터 해시가 재암호화된 새 암호문의 해시로 갱신됩니다. 이 표준은 기능적 데이터 관리에 집중하기 위해 기존 NFT 표준을 상속하지 않습니다. 다만 전통적인 NFT 호환이 필요하면 구현체가 ERC-721을 추가로 구현할 수 있습니다. 승인(approve, setApprovalForAll)과 소유자 조회(ownerOf) 같은 익숙한 함수들은 이 표준 안에도 따로 정의되어 있습니다.

쓸 때 주의할 점

ERC 원문 · ← ERCs