개발하다보면 얻는 통찰중에 validation 은 선행됨이 필수라는 것이다

이것에 당연함을 깨보자는 것임


먼저 실패하는 이유는 무엇?

비지니스는 검증의 이유를 두가지로 보겠다

저장된 값으로 가능한가? 논리적으로 가능한가?

이를 해결하기 위해 zk 알고리즘을 사용한다

논리적으로 가능한가? 에 대해서 해결할 알고리즘에 보내주는 파라미터에 해당 계산이 필요한 zk payload 를 풀수 있는 curve 를 만든다(알려진 커브를 쓰는것도 좋다)

해당 논리 계산을 프론트엔드 wasm에서 페이로드를 계산하고 r, k 를 발행시킨다

이후 누구인지를 식별하는 것인지에 대한 private key 로 r 상 k 로 해싱된 s 를 구한다

이것으로 빠르게 사용자는 페이로드에 대한 valid 를 구하고 이를 파라미터에 포함해서 보낸다


해당 커브곡률은 이미 파라미터가 동일한 타입에서 계산됬음을 가정하기에 key validation 이 곧 논리적 validation 의 결과인가? 의 여부임으로 첫번째 문제가 풀린다


저장된 값 검증은? 동일 여부만 계산한다(only cmp)

이후 성공 변화율 후처리를 계산하여 이후 동일여부를 위한 값을 저장한다(재고 변화량, 고객 포인트량, 이벤트 포인트 차감 등)


우선 성공을 처리하고, 고객이 떠난후에 계산을 미루는 방식이다

어떤 이점이 있는가?

타 클라이언트 혹은 다른 서비스와의 Connection 시간을 줄일수 있다

 먼저 성공하고 빠르고 명확한 검증된 결과를 반환 가능하다