모든 거래를 보호

발행: (2026년 2월 2일 오후 05:16 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

Cover image for Shield Every Transaction

Introduction

오늘 나는 트랜잭션을 보다 효율적으로 분석하는 맞춤형 스마트 컨트랙트를 작성하는 새로운 전략을 발견했다. 이전에는 간단한 서버‑사이드 로직과 정규식을 사용해 사용자가 분석하고자 하는 스마트 컨트랙트의 바이트코드를 읽었다. 우리는 Etherscan API를 통해 바이트코드를 가져오고, 정규식을 이용해 악성 패턴을 탐지했다.

Example

  • 새로운 코인의 스마트 컨트랙트가 Etherscan에 검증되지 않은 경우, 내 서버‑사이드 로직은 단순히 ABI not found 를 반환한다.
  • 사기꾼이 악성 로직을 추가했을 때—예를 들어, 컨트랙트와 상호작용하는 사용자를 블랙리스트에 올려 절대 withdraw(출금)할 수 없게 만드는 경우—나는 blacklist 와 같은 의심스러운 함수명을 검색함으로써 이를 감지한다.

내 정규식은 바이트코드에서 “blacklist”와 유사한 이름을 찾아 스캔한다.

Limitation

사기꾼이 감사를 피하기 위해 UniCORN 과 같이 난독화된 이름을 사용하면, 내 TxShield 플랫폼은 이를 잡지 못한다. 일주일간의 연구 끝에 해결책을 찾았다.

The Solution

순진한 정규식 탐지를 넘어가기 위해, 나는 BLACKLIST_METHODS의 읽기/쓰기 바이트 선택자를 무차별적으로 시도하는 맞춤형 Solidity 스마트 컨트랙트를 작성했다. 이 접근법은 하드코딩된 이름에 의존하지 않고, 사용자의 주소를 리스트나 매핑에 저장하는 모든 함수의 바이트 패턴을 감지하기 때문에 대부분의 사기를 즉시 차단한다.

Technique: Phantom Contracts

이 기술을 Phantom Contracts 라고 부른다. 우리는 스마트 컨트랙트를 실제로 배포하지 않고 자체 맞춤형 컨트랙트를 실행한다. Infura를 사용해 내장 메서드 calleth에 파라미터를 전달함으로써, 샌드박스 환경에서 우리 컨트랙트를 실행한다.

Benefits of Phantom Contracts

  • 스마트 컨트랙트를 배포할 필요가 없다.
  • 보안 중심: 소스 코드를 공유하지 않는다.
  • 서버‑사이드 코드에서 직접 호출할 수 있다.

Question for the Community

여러분은 자신의 코드에서 Phantom Contracts 기술을 사용해 볼 생각이 있나요?

Back to Blog

관련 글

더 보기 »