시가총액: $2.4012T 1.53%
거래량(24시간): $93.3027B -30.15%
공포와 탐욕 지수:

9 - 극도의 공포

  • 시가총액: $2.4012T 1.53%
  • 거래량(24시간): $93.3027B -30.15%
  • 공포와 탐욕 지수:
  • 시가총액: $2.4012T 1.53%
암호화
주제
암호화
소식
cryptostopics
비디오
최고 암호화

언어 선택

언어 선택

통화 선택

암호화
주제
암호화
소식
cryptostopics
비디오

견고성의 오류를 처리하는 방법? (요구, 복귀, 주장)

Solidity provides `require`, `revert`, and `assert` for error handling, ensuring secure and predictable smart contract execution.

2025/07/20 05:00

견고성에서 오류 처리를 이해합니다

이더 리움 스마트 계약의 주요 프로그래밍 언어 인 Solidity는 오류 처리를 위한 몇 가지 메커니즘을 제공합니다. 이러한 메커니즘은 예상치 못한 또는 유효하지 않은 조건이 발생할 때 계약이 예측 가능하고 안전하게 행동하도록하는 데 중요합니다. 견고성에서 오류 처리에 사용할 수있는 주요 도구는 require revert assert 이러한 각 기능은 다른 목적을 달성하며 상황에 따라 적절하게 사용해야합니다.

입력 유효성 검증에 require 사용

require 기능은 주로 함수의 핵심 논리를 실행하기 전에 입력조건을 검증하는 데 사용됩니다. require false 평가되면 트랜잭션이 되돌리고 상태에 대한 변경 사항이 롤백됩니다. 또한 require 사용하면 개발자가 사용자 정의 오류 메시지를 제공 할 수 있습니다.

예:

 function transfer(address to, uint amount) public { require(amount > 0, 'Amount must be greater than zero'); require(balance[msg.sender] >= amount, 'Insufficient balance'); balance[msg.sender] -= amount; balance[to] += amount;

}

이 예에서는 발신자가 균형이 충분하고 전송되는 금액이 유효하도록 require . 두 조건 중 하나가 실패하면 거래는 명확한 오류 메시지로 되돌아갑니다.

사용자 정의 오류 조건에 대한 revert 사용합니다

revert 기능은 개발자가 함수 내의 어느 시점에서든 실행을 되돌릴 수 있도록함으로써 require 보다 더 많은 유연성을 제공합니다. 단일 require 사항에 의해 쉽게 처리되지 않을 수있는 복잡한 논리 또는 여러 조건을 다룰 때 특히 유용합니다.

예:

 function withdraw(uint amount) public { if (amount > balance[msg.sender]) { revert('Insufficient funds for withdrawal'); } if (block.timestamp < lockTime[msg.sender]) { revert('Funds are locked until a later time'); } balance[msg.sender] -= amount; payable(msg.sender).transfer(amount);

}

이 시나리오에서는 철회 revert 방지 할 수있는 두 가지 고유 한 조건을 처리하는 데 사용됩니다. 각 조건은 별도로 평가되며 조건이 실패하면 특정 메시지가 반환됩니다.

내부 오류 감지를 위해 assert 활용합니다

assert 함수는 정상적인 상황에서는 결코 발생하지 않아야 할 내부 오류 확인하고 내부 오류를 포착하기위한 것입니다. requirerevert 과 달리 assert 사용은 트리거시 트랜잭션에 제공된 모든 가스를 소비합니다. 따라서 중요한 버그가 의심되는 상황에는 예약되어야합니다.

예:

 function calculateSum(uint a, uint b) internal pure returns (uint) { uint sum = a + b; assert(sum >= a); return sum;

}

이 기능에서 assert 추가 작업이 언더 플로 또는 오버플로를 초래하지 않도록합니다. 그러한 양식이 발생하면 트랜잭션이 되돌아 코드의 잠재적 버그를 나타냅니다.

require , revertassert 의 차이

견고성에서 효과적인 오류 처리에 require , revertassert 의 차이점을 이해합니다.

  • 가스 소비 : 오류 지점까지 가스를 require 하고 revert 반면, assert 제공된 모든 가스를 소비합니다.
  • 사용 사례 : require 입력 유효성 검사에 가장 적합합니다. 맞춤 조건을 revert 내부 논리 검사를 assert .
  • 오류 메시지 : 사용자 정의 오류 메시지를 require 하고 revert 수 있습니다. assert 오래된 버전의 견고성 (0.8.0 이전)에서 사용자 정의 메시지를 반환하는 방법을 제공하지 않습니다.

적절한 오류 처리 방법을 선택하면 스마트 계약이 안전 하고 효율적 일 수 있습니다.

견고성의 사용자 지정 오류

Solidity 0.8.0 부터 개발자는 문자열 기반 오류 메시지보다 가스 효율적 이고 읽기 쉬운 사용자 정의 오류 유형을 정의 할 수 있습니다. 사용자 정의 오류는 error 키워드를 사용하여 정의되며 revert 와 함께 사용할 수 있습니다.

예:

 error InsufficientBalance(uint requested, uint available); error FundsLocked(uint releaseTime, uint currentTime); 기능 철수 (uint 금액) public {

if (amount > balance[msg.sender]) { revert InsufficientBalance(amount, balance[msg.sender]); } if (block.timestamp < lockTime[msg.sender]) { revert FundsLocked(lockTime[msg.sender], block.timestamp); } balance[msg.sender] -= amount; payable(msg.sender).transfer(amount);

}

사용자 지정 오류를 사용하여 개발자는 가스 사용 측면에서 이해하기 쉽고 효율적인 구조화 된 오류 정보를 제공 할 수 있습니다.

자주 묻는 질문

Q : 입력 유효성 검사에 assert 사용할 수 있습니까? A : 아니요, 입력 유효성 검사에 사용 assert 안됩니다. 내부 검사를 위해 설계되었으며 도달 할 수없는 코드 또는 임계 버그를 감지하는 데만 사용해야합니다.

Q : 문자열 메시지에 비해 사용자 정의 오류가 가스를 어떻게 저장합니까? A : 사용자 정의 오류는 함수 서명과 유사한 4 바이트 선택기 로 인코딩되며 전체 문자열 메시지보다 훨씬 짧고 저렴합니다 . 이로 인해 오류가 발생하면 가스 비용이 낮아집니다 .

Q : 계약에서 오류를 처리하지 않으면 어떻게됩니까? A : 오류가 올바르게 처리되지 않으면 유효하지 않거나 예상치 못한 조건이 잘못된 상태 변경 , 자금 손실 또는 공격자가 악용 할 수있는 취약점 으로 이어질 수 있습니다.

Q : 동일한 기능으로 require 결합하고 revert 수 있습니까? A : 그렇습니다. 동일한 기능으로 requirerevert 수 있습니다. require 은 일반적으로 간단한 조건 검사에 사용되며, revert 는 기능의 뒷부분에서보다 복잡하거나 조건부 회복에 사용됩니다.

부인 성명:info@kdj.com

제공된 정보는 거래 조언이 아닙니다. kdj.com은 이 기사에 제공된 정보를 기반으로 이루어진 투자에 대해 어떠한 책임도 지지 않습니다. 암호화폐는 변동성이 매우 높으므로 철저한 조사 후 신중하게 투자하는 것이 좋습니다!

본 웹사이트에 사용된 내용이 귀하의 저작권을 침해한다고 판단되는 경우, 즉시 당사(info@kdj.com)로 연락주시면 즉시 삭제하도록 하겠습니다.

관련 지식

데이 트레이딩 암호화폐의 레버리지를 안전하게 최대화하는 방법은 무엇입니까?

데이 트레이딩 암호화폐의 레버리지를 안전하게 최대화하는 방법은 무엇입니까?

2026-02-08 01:19:53

암호화폐 파생상품의 레버리지 메커니즘 이해 1. 레버리지는 거래자가 필요한 자본의 일부만으로 더 큰 포지션을 제어할 수 있도록 함으로써 잠재적 이익과 손실을 모두 배가시킵니다. 2. 대부분의 암호화폐 거래소는 자산 쌍 및 계정 확인 수준에 따라 2배에서 125배까지의 ...

스캘핑을 위한 "원클릭" 거래 인터페이스를 설정하는 방법은 무엇입니까?

스캘핑을 위한 "원클릭" 거래 인터페이스를 설정하는 방법은 무엇입니까?

2026-02-09 22:59:56

핵심 아키텍처 요구 사항 1. 50ms 미만 간격 내에 실시간 입찰 요청 업데이트를 수신하려면 거래소의 주문장 피드와 직접 지연 시간이 짧은 WebSocket 연결을 설정해야 합니다. 2. 인터페이스는 라우팅 지연을 초래하는 외부 백엔드 프록시에 대한 의존을 피하기 위...

주요 업그레이드 전후에 이더리움 선물을 거래하는 방법은 무엇입니까?

주요 업그레이드 전후에 이더리움 선물을 거래하는 방법은 무엇입니까?

2026-02-08 09:40:26

이더리움 선물 메커니즘 이해 1. 이더리움 선물 계약은 CME 또는 바이낸스 선물과 같은 규제 거래소에서 미리 결정된 가격과 날짜에 ETH를 구매하거나 판매하기 위한 표준화된 계약입니다. 2. 레버리지는 중요한 역할을 합니다. 트레이더는 최소한의 자본으로 대규모 포지션...

대규모 계약 거래를 위한 높은 유동성 쌍을 찾는 방법은 무엇입니까?

대규모 계약 거래를 위한 높은 유동성 쌍을 찾는 방법은 무엇입니까?

2026-02-08 18:20:09

대규모 계약 거래를 위한 높은 유동성 쌍 찾기 대규모 계약 주문을 실행하는 트레이더는 하락과 가격 영향을 피하기 위해 유동성을 우선시해야 합니다. 유동성이 낮은 환경은 실행 위험을 증폭시킵니다. 특히 자금조달 요율과 베이시스 차이로 인해 변동성이 커지는 무기한 선물과 ...

청산을 방지하기 위해 "평균 가격"과 "종가"를 사용하는 방법은 무엇입니까?

청산을 방지하기 위해 "평균 가격"과 "종가"를 사용하는 방법은 무엇입니까?

2026-02-07 17:39:59

시장 평균 가격 메커니즘 이해 1. 시장 평균 가격은 무기한 계약의 공정한 시장 가치를 반영하도록 설계된 여러 현물 교환 지수와 펀딩 요율 조정에서 파생된 종합 가치입니다. 2. Binance, Coinbase, Kraken, Bybit 등 주요 현물 시장의 실시간 데...

레버리지 거래에서 "자본 수익률"(ROE)을 계산하는 방법은 무엇입니까?

레버리지 거래에서 "자본 수익률"(ROE)을 계산하는 방법은 무엇입니까?

2026-02-08 04:39:45

레버리지 거래의 자기자본수익률 이해 1. 레버리지 거래의 ROE(자기자본 수익률)는 전체 포지션 규모가 아닌 거래자의 자체 자본을 기준으로 창출된 수익성을 측정합니다. 이는 거래자가 거래소나 브로커로부터 자금을 빌릴 때 자신의 자산을 얼마나 효율적으로 사용하는지를 반영...

데이 트레이딩 암호화폐의 레버리지를 안전하게 최대화하는 방법은 무엇입니까?

데이 트레이딩 암호화폐의 레버리지를 안전하게 최대화하는 방법은 무엇입니까?

2026-02-08 01:19:53

암호화폐 파생상품의 레버리지 메커니즘 이해 1. 레버리지는 거래자가 필요한 자본의 일부만으로 더 큰 포지션을 제어할 수 있도록 함으로써 잠재적 이익과 손실을 모두 배가시킵니다. 2. 대부분의 암호화폐 거래소는 자산 쌍 및 계정 확인 수준에 따라 2배에서 125배까지의 ...

스캘핑을 위한 "원클릭" 거래 인터페이스를 설정하는 방법은 무엇입니까?

스캘핑을 위한 "원클릭" 거래 인터페이스를 설정하는 방법은 무엇입니까?

2026-02-09 22:59:56

핵심 아키텍처 요구 사항 1. 50ms 미만 간격 내에 실시간 입찰 요청 업데이트를 수신하려면 거래소의 주문장 피드와 직접 지연 시간이 짧은 WebSocket 연결을 설정해야 합니다. 2. 인터페이스는 라우팅 지연을 초래하는 외부 백엔드 프록시에 대한 의존을 피하기 위...

주요 업그레이드 전후에 이더리움 선물을 거래하는 방법은 무엇입니까?

주요 업그레이드 전후에 이더리움 선물을 거래하는 방법은 무엇입니까?

2026-02-08 09:40:26

이더리움 선물 메커니즘 이해 1. 이더리움 선물 계약은 CME 또는 바이낸스 선물과 같은 규제 거래소에서 미리 결정된 가격과 날짜에 ETH를 구매하거나 판매하기 위한 표준화된 계약입니다. 2. 레버리지는 중요한 역할을 합니다. 트레이더는 최소한의 자본으로 대규모 포지션...

대규모 계약 거래를 위한 높은 유동성 쌍을 찾는 방법은 무엇입니까?

대규모 계약 거래를 위한 높은 유동성 쌍을 찾는 방법은 무엇입니까?

2026-02-08 18:20:09

대규모 계약 거래를 위한 높은 유동성 쌍 찾기 대규모 계약 주문을 실행하는 트레이더는 하락과 가격 영향을 피하기 위해 유동성을 우선시해야 합니다. 유동성이 낮은 환경은 실행 위험을 증폭시킵니다. 특히 자금조달 요율과 베이시스 차이로 인해 변동성이 커지는 무기한 선물과 ...

청산을 방지하기 위해 "평균 가격"과 "종가"를 사용하는 방법은 무엇입니까?

청산을 방지하기 위해 "평균 가격"과 "종가"를 사용하는 방법은 무엇입니까?

2026-02-07 17:39:59

시장 평균 가격 메커니즘 이해 1. 시장 평균 가격은 무기한 계약의 공정한 시장 가치를 반영하도록 설계된 여러 현물 교환 지수와 펀딩 요율 조정에서 파생된 종합 가치입니다. 2. Binance, Coinbase, Kraken, Bybit 등 주요 현물 시장의 실시간 데...

레버리지 거래에서 "자본 수익률"(ROE)을 계산하는 방법은 무엇입니까?

레버리지 거래에서 "자본 수익률"(ROE)을 계산하는 방법은 무엇입니까?

2026-02-08 04:39:45

레버리지 거래의 자기자본수익률 이해 1. 레버리지 거래의 ROE(자기자본 수익률)는 전체 포지션 규모가 아닌 거래자의 자체 자본을 기준으로 창출된 수익성을 측정합니다. 이는 거래자가 거래소나 브로커로부터 자금을 빌릴 때 자신의 자산을 얼마나 효율적으로 사용하는지를 반영...

모든 기사 보기

User not found or password invalid

Your input is correct