아핫뉴스실시간 인기검색어
아핫뉴스 화산 이미지
아하

생활

생활꿀팁

핫한타조223
핫한타조223

블록체인 개발시 ERC20 Wallet 유효성 검사

안녕하세요.

블록체인 개발 시 ERC20 Wallet의 존재여부를 알고 싶을때 어떻게 해야하나요??

오픈 api로 되어있나요??

    55글자 더 채워주세요.
    1개의 답변이 있어요!
    • 까칠한담비242
      까칠한담비242

      이더리움 지갑을 개발하실 때 비탈릭 부테린이 제안한 EIP-55 '대문자로 16진수 인코딩된 체크섬'이라는 방법을 적용하시면 존재하고 있는 주소의 유효성을 검증할 수 있습니다. 하지만 입력된 값이 아니라 임의의, 무작위 주소에 해당하는 지갑 주소가 만들어져 존재하고 있는지의 여부를 알 수 있는 기술은 없는 것으로 저는 알고 있습니다.

      따라서 본 답변에서는 입력된 이더리움 주소의 유효성을 검증하는 방법에 대해 답변해 드리도록 하겠습니다. 이 방법은 이더리움 주소의 알파벳 대소문자를 수정함으로써 주소 입력이 정확히 되었는지 검증할 수 있는 체크섬을 추가할 수 있는 방법이라고 할 수 있습니다. 그리고 EIP-55에 대해 Mastering Ethereum이라는 책의 내용을 참고로 하여 답변해 드리도록 하겠습니다.

      예를 들어 0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9라는 주소가 있다고 할 때 EIP-55 체크섬을 적용하면 주소가 0x001d3F1ef827552Ae1114027BD3ECF1f086bA0F9로 바뀌게 됩니다.

      구체적으로는 소문자 16진수 주소에서 0x 접두어를 빼고 Keccak-256 해시 알고리즘으로 암호화한 후 도출된 해시 값과 이더리움 주소를 비교하여 각각에 해당하는 값이 0x8 이상인 경우에 소문자를 대문자로 바꾸게 됩니다. 이러한 과정을 거쳐 대문자와 소문자가 혼합된 체크섬이 적용된 주소가 만들어지게 됩니다.

      그렇다면 이것을 가지고 유효성을 어떻게 체크하는지 알아보도록 하겠습니다. 예를 들어 EIP-55가 적용된 이더리움 지갑이 있다고 할 때 다음 '0x001d3F1ef827552Ae1114027BD3ECF1f086bA0 F 9' 주소를 '0x001d3F1ef827552Ae1114027BD3ECF1f086bA0 E 9'로 잘못 입력한 상황을 가정하도록 하겠습니다.

      이때 입력되는 주소가 '0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9'와 같이 대문자가 혼용된 지갑 주소가 아니라면 별도의 유효성 검사 없이 거래가 이루어지지만 위에서는 대문자가 혼용된 주소를 입력했으므로 유효성 검사가 진행됩니다.

      이러한 유효성을 파악하는 것은 쉽습니다. 앞서 입력한 대소문자 혼합 주소의 경우 EIP-55가 적용된 것이므로 입력된 주소를 소문자로 변환한 다음에 앞서 살펴본 바와 같이 체크섬 해시를 계산하기만 하면 되기 때문입니다.

      비록 입력된 주소에서 문자가 하나만 바뀌었다고 하지만 이것을 체크섬 해시로 계산하게 되면 입력된 주소를 기준으로 대문자로 바뀌어야 할 것이 소문자로 남아있거나, 소문자여야 할 것이 대문자로 바뀌었다는 것을 확인할 수 있으므로 주소가 유효한지 판단할 수 있게 되는 것입니다.

      답변이 도움이 되길 바랍니다.