체인의정석

nest.js) 예외처리 - 이더리움 주소값인지 확인하고 아닐 시 에러리턴 본문

개발/backend

nest.js) 예외처리 - 이더리움 주소값인지 확인하고 아닐 시 에러리턴

체인의정석 2021. 10. 22. 16:49
728x90
반응형

 

상황 이더리움 주소값이 틀린 경우 반환하는 에러 상황,

이러한 경우 따로 값을 반환하여야 하나,

 

class - validtaor를 사용하면 기능이 다 작동하고 마지막에 조건을 검사하는 문제가 생김.

그 결과 성능이 떨어지기 때문에 입력값을 받자마자 검사를 해주고 마지막에 class-validtor를 써서 한번 더 검사해주는것이 맞다.

 

이 경우 web3를 사용할 수 있다.

 

하지만 web3를 사용할 경우, 풀노드와 연결을 한번 해야 한다. 풀노드와 연결을 하는 부분은 현재 모듈에 없는데 이것때메 만들기가 좀 그렇다. 성능이 역시 떨어질것 같다. 따라서 db에 있는 16진수 + 42개의 길이를 통하여서 검사를 하였다.

    if (address.substr(0, 2) !== '0x' || address.length !== 42) {
      const code = RESPONSE_CODE.INVALID_ADDRESS;
      const message = RESPONSE_MESSAGE.INVALID_CONTRACT_ADDRESS;
      return {
        code: code,
        message: message,
        data: {
          address: address,
        },
      };

사실 더 복잡한 조건검사가 가능하지만 마지막에 검사해주는 부분이 한번 더 들어가기 때문에 이정도로만 해도 문제가 없을것 같다.

https://ethereum.stackexchange.com/questions/12867/how-to-check-for-valid-contract-address-using-web3

 

How to check for valid contract address using web3?

I am simply trying to avoid the error: Error: invalid address web3 throws this error when the address to a contract is not valid. Is there a way to catch this error ? I am using web3 in a nod...

ethereum.stackexchange.com

저런 조건문 같은 경우 내가 빨리 테스트를 하려면 아래와 같은 codepen에 가서 조건이 잘 맞나 빠르게 테스트 해 볼 수 있다.

https://codepen.io/codeBelt/pen/OVjxJN

 

CodePen JavaScript Console Template

This pen allows you to use all your favourite console functions right in CodePen: `console.log`, `console.info`, `console.warn`, `console.error`, and `...

codepen.io

 

728x90
반응형
Comments