지갑 주소 검증하기
Last updated
Last updated
암호화폐의 지갑 주소는 지갑 주소와 Tag 혹은 Memo, 그리고 이 둘을 구분하기 위한 구분자 등을 조합하여 다양한 형식으로 만들어 집니다. 주의해야 할 점은, 이렇게 다양한 형태로 존재하는 지갑 주소를 IVMS101 프로토콜 상에서는 하나의 문자열(string)로 다룬다는 점입니다.
따라서 이론적으로 암호화폐 지갑 주소는 다음과 같은 4가지의 형태가 존재할 수 있습니다.
설명
예시 자산
주소 포맷
1
주소 단순 문자열로 이루어진 경우
BTC , ETH…
address
2
주소 문자열에 Tag나 Memo가 추가되는 경우
EOS, XRP…
address:memo or tag
3
주소에 ‘:’ 이 포함되어 있는경우
BCH, Kaspa…
currency:address
4
주소에 ‘:’이 포함되어 있고 Tag나 Memo가 추가되는 경우
현재는 없으나 미래에 존재할 수 있다고 가정
currency:address:memo or tag
이때, 송신하는 측(Originator VASP)에서는 는 메모나 태그가 있는 지갑 주소를 ‘:’으로 연결해서 하나로 만들어 보내기로 약속되어 있습니다. 그렇기 때문에 수신하는 측(Beneficiary VASP)에서 예외 케이스 없이 잘 처리하기 위해서는, 다양한 지갑 주소의 경우를 고려하여 주소를 검증하는 흐름을 아래와 같이 잘 설계해야 합니다.
받은 그대로의 문자열로 주소가 존재하는지를 검증합니다.
검증에 실패했다면, 주소에 ‘:’이 있는지를 확인하고, 있다면 맨 우측 ‘:’을 기준으로 문자열을 분할합니다.
분할한 첫 번째 문자열로 주소가 존재하는지를 다시 검증합니다.
만약 이미 ‘:’의 유무를 먼저 검증하는 흐름으로 설계가 되어 있다면 아래와 같은 방법으로 보완하는 로직을 추가할 수 있습니다.
‘:’이 없으면 바로 주소를 검증합니다.
‘:’이 있으면 맨 우측 ‘:’을 기준으로 문자를 분할하여 첫 번째 문자열로 주소를 검증합니다.
실패했다면 받은 그대로의 문자열로(‘:’을 포함하는) 주소 존재 여부를 검증합니다.