How to Assess Web3 Project Risks: A Practical User Checklist
In Web3, users often hold their own keys and sign transactions directly. A useful review therefore starts not with “How much can I earn?” but with: What am I signing, which code will gain access to my assets, and who can change the rules?
어떤 체크리스트도 프로젝트의 안전성을 증명할 수는 없습니다. 목적은 알려지지 않은 요소를 드러내고 주장을 검증 가능한 증거와 비교하며 잠재적 피해를 줄이는 것입니다.
이 글은 교육 목적으로만 제공되며 금융, 투자 또는 법률 조언이 아닙니다. Web3 트랜잭션으로 전송한 자산 전부를 잃을 수 있습니다.
1. 출처 확인
- 저장된 북마크 또는 확인된 공식 채널의 URL을 사용하십시오.
- 도메인의 모든 문자를 확인하세요.
- 광고, 원치 않는 메시지 또는 임의의 검색 결과를 통해 지갑을 연결하지 마세요.
- 공식 프로젝트 자료의 컨트랙트 주소를 서로 비교하세요.
- 시드 문구나 개인 키를 절대 공개하지 마세요.
Stop signal: a site asks you to “synchronize,” “validate,” or “restore” a wallet by entering secret words.
2. 네트워크와 자산 확인
전송 전에 다음을 기록하세요:
- 네트워크;
- 토큰 컨트랙트 주소;
- 수신자 또는 호출된 컨트랙트 주소;
- 금액;
- 수수료 지불 자산;
- 의도한 작업.
A name such as USDT does not uniquely identify a token. Verify the full token contract address. The same 0x… address format can be used on different EVM networks, but assets and state remain network-specific.
Stop signal: the project gives a ticker but does not publish the network and token address.
3. 배포된 코드 확인
블록 탐색기에서:
- 공식 주소를 사용해 컨트랙트를 찾으십시오;
- 소스 코드 검증 확인;
- 프록시 여부 확인;
- 현재 구현을 여십시오;
- 모든 주소를 프로젝트 문서와 비교하십시오.
On BscScan, Exact Match means published source and constructor parameters were matched to deployed bytecode. This improves transparency but is not a security assessment.
Stop signal: no address is published, source is unverified, and the project still claims “full transparency” without explanation.
4. 관리 권한 이해
다음과 같은 역할과 함수를 확인하세요:
- owner, admin, operator 및 upgrader;
- 일시 중지 및 재개;
- 수수료 또는 한도 변경;
- 연결 주소 변경;
- 토큰 발행;
- 자산 출금;
- 구현 업그레이드;
- 주소 차단.
누가 이 키를 관리하는지, 다중 서명을 사용하는지, 변경에 타임록이 적용되는지, 사용자에게 어떻게 알리는지 확인하세요. 중앙화된 제어가 자동으로 사기를 의미하지는 않지만 특정 관리자에게 의존하게 됩니다.
Stop signal: one address holds critical powers while the project claims that nobody can change anything.
5. 감사 보고서를 올바르게 읽기
다음 여부를 확인하세요:
- 감사 기관이 보고서를 게시했습니다;
- 저장소와 커밋 해시가 명시되어 있습니다;
- 현재 운영 중인 컨트랙트가 검토 범위에 포함됩니다;
- 보고서가 현재 구현을 다룹니다;
- 해결되지 않은 발견 사항이 남아 있습니다;
- 수정 사항을 다시 테스트했습니다;
- 중요한 구성 요소가 제외되었습니다.
감사는 추가적인 독립 검토입니다. 모든 결함을 찾아낼 수 없으며 웹사이트, 키 관리, 비즈니스 모델 또는 향후 업그레이드가 자동으로 감사 범위에 포함되는 것도 아닙니다.
Stop signal: there is an “Audited” badge but no report or reviewed code version.
6. 설명 내용과 온체인 동작 비교
여러 트랜잭션에서 다음을 확인하세요:
- 상태;
FromandTo / Interacted With;- BEP-20 이동;
- 내부 호출;
- 로그;
- 수수료;
- 잔액 및 컨트랙트 상태의 변경.
Compare the actual path of funds with the published architecture. Do not draw a system-wide conclusion from one demonstration transaction. Success means the code executed without reverting; it does not mean the operation was safe or beneficial.
Stop signal: observable fund flows differ from the stated process and no clear explanation is provided.
7. 자산과 부채 구분
주소에 표시되는 잔액은 하나의 사실일 뿐입니다. 다음을 확인하세요:
- 모든 관련 주소가 공개되어 있는지;
- 자산을 통제하는 주체;
- 출금할 수 있는지;
- 다른 사용자에 대해 존재하는 의무;
- 외부 가격 결정 방식;
- 접근이 브리지, DEX, 오라클 또는 거래 상대방에 의존하는지.
큰 토큰 잔액이 유동성을 입증하는 것은 아닙니다. 수량이 많아도 실제로 실현할 수 있는 가치는 낮을 수 있습니다.
Stop signal: one address balance is presented as proof of solvency without disclosing obligations or control rights.
8. 경제 모델을 쉬운 말로 설명
다음 질문에 대한 명확한 답을 찾으세요:
- 지급 자금의 출처;
- 수수료를 지불하는 주체;
- 신규 사용자가 유입되지 않을 경우 발생하는 일;
- 종료 조건 및 잠금 조건;
- 손실이 발생할 수 있는 지점;
- 관리자가 변경할 수 있는 매개변수;
- 토큰 가격을 움직이는 요인.
결과가 시장, 신규 참여자, 유동성 또는 팀 결정에 따라 달라진다면 이러한 의존성을 명확히 밝혀야 합니다.
Stop signal: a fixed outcome is promised without a verifiable source of funds or loss scenario.
9. 서명과 토큰 허용량 관리
확인 전에 지갑에 표시된 다음 정보를 검증하세요:
- 네트워크;
- 호출된 주소;
- 함수 또는 읽을 수 있는 작업;
- 기본 토큰 가치;
- 토큰 및 허용 한도;
- 예상되는 자산 변동.
An approve call does not immediately transfer a token. It may authorize a spender contract to call transferFrom up to an allowance. An unlimited allowance increases potential loss if the spender is compromised or flawed.
데이터가 불분명하거나 주소가 확인한 주소와 다르면 서명을 거부하세요. 사용 후에는 신뢰할 수 있는 도구로 더 이상 필요하지 않은 권한을 검토하고 철회하세요.
Stop signal: you are pressured to sign unreadable data or told that a signature “does nothing.”
10. 오프체인 위험 포함
충분히 검토된 코드도 다음 모든 상황을 막을 수는 없습니다:
- 웹사이트 또는 DNS 침해;
- 악성 브라우저 확장 프로그램;
- 키 탈취;
- 침해된 프로젝트 계정;
- 백엔드 장애;
- 사회공학 공격;
- 법적 제한;
- 지원 또는 운영 장애.
문서, 사고 대응 절차, 알림 채널 및 변경 내역을 확인하세요. 법적 주장은 실제 문서와 본인 관할 지역을 기준으로 평가해야 합니다.
11. 잠재적 피해 제한
검토를 완료한 뒤에도:
- 실제로 사용할 수 있는 최소 테스트 금액으로 시작하십시오;
- 익숙하지 않은 dApp에는 별도의 지갑을 사용하십시오;
- 연결된 지갑에 모든 자산을 보관하지 마십시오;
- 시간 압박을 받는 상황에서는 절대 서명하지 마십시오;
- 트랜잭션 해시와 주소를 저장하십시오;
- 토큰 허용 한도를 정기적으로 검토하십시오;
- 전액을 잃어도 감당할 수 있는 수준으로 최대 위험 노출액을 정하십시오.
Solidity 공식 보안 지침은 컨트랙트가 보유하는 자산의 양을 제한할 것을 권장합니다. 코드, 컴파일러 또는 플랫폼에 버그가 있을 경우 노출 범위를 제한하면 손실도 줄일 수 있습니다.
트랜잭션 전 체크리스트
Answer yes, no, or unknown:
- 도메인을 확인했습니다.
- 정확한 네트워크를 알고 있습니다.
- 토큰 컨트랙트 주소를 확인했습니다.
- 호출된 컨트랙트 주소를 확인했습니다.
- 소스 검증 상태를 알고 있습니다.
- 프록시와 구현 컨트랙트를 확인했습니다.
- 관리자 권한을 이해했습니다.
- 감사 대상이 현재 운영 버전과 일치합니다.
- 실제 트랜잭션을 확인했습니다.
- 지급 재원과 손실 가능 상황을 이해했습니다.
- 서명 요청을 이해했습니다.
- 허용 한도가 합리적으로 제한되어 있습니다.
- 프런트엔드, 키 및 법적 위험을 고려했습니다.
- 테스트 금액은 심각한 피해를 일으키지 않는 수준이어야 합니다.
For a critical question, unknown is not a neutral answer—it is an unassessed risk. Pausing for verification is usually cheaper than an irreversible transaction.
신중한 사용자가 확인할 질문
Is a project safe if its code is open and audited?
No. Those are useful signals, but unknown bugs and administrative, operational, economic, and external risks remain.
If assets are visible on-chain, can they definitely be returned?
No. Return depends on code, current state, control rights, and external dependencies.
Does a small successful test prove a larger transaction will work?
No. It tests one path at one moment. Limits, liquidity, state, and implementation may later differ.
What if I do not understand the signature?
Reject it. Identify the function, called address, asset changes, and permissions before trying again.
출처 및 추가 자료
- Solidity Documentation — 보안 고려 사항
- Ethereum.org — 스마트 컨트랙트 보안
- Ethereum.org — 스마트 컨트랙트 테스트
- BscScan Information Center — 트랜잭션 보기
- BscScan Information Center — 컨트랙트 검증 유형
- BscScan Information Center — 주소란?
- OpenZeppelin Docs — 프록시 업그레이드 패턴