Native Program은 거래의 변경안을 어떻게 검증할까?
A는 자산 100을 갖고 있고, S에게 그중 30까지 사용할 수 있도록 승인했다. S는 이 권한으로 20을 B에게 보내려고 한다. 거래가 끝나면 A에게 80, B에게 20이 남고, S가 앞으로 사용할 수 있는 한도는 10이 되어야 한다.
nigo-protocol의 Native Program 경로에서는 거래를 구성하는 쪽이 이 변경안을 먼저 준비한다. 프로그램은 전달받은 변경안이 사용 조건을 지키는지 검사한다. Direct Cell의 거래 준비에서는 명시적인 입력·출력을 원장 밖에서 구성하고 서명하는 과정을 살펴봤다. 여기서는 같은 변경안 구성 방식에 사용 승인이라는 업무 조건을 더해, Native Program의 검증 안쪽으로 들어가 보자.
프로그램이 단순히 “허용한다”고 답하면 충분할까? 그 답이 A의 어떤 자산 입력을 쓰도록 허용했는지, 어떤 승인 기록을 무엇으로 바꾸도록 허용했는지가 빠져 있다면, 원장은 그 승인이 어느 입력의 사용과 어떤 상태 변경에 적용되는지 확인할 수 없다. 사용 조건을 통과했다는 판단과 실제 바뀌는 기록을 연결하는 방법이 이 글의 질문이다.