-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
견고성의 오류를 처리하는 방법? (요구, 복귀, 주장)
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 함수는 정상적인 상황에서는 결코 발생하지 않아야 할 내부 오류 를 확인하고 내부 오류를 포착하기위한 것입니다. require 및 revert 과 달리 assert 사용은 트리거시 트랜잭션에 제공된 모든 가스를 소비합니다. 따라서 중요한 버그가 의심되는 상황에는 예약되어야합니다.
예:
function calculateSum(uint a, uint b) internal pure returns (uint) {uint sum = a + b; assert(sum >= a); return sum;
}
이 기능에서 assert 추가 작업이 언더 플로 또는 오버플로를 초래하지 않도록합니다. 그러한 양식이 발생하면 트랜잭션이 되돌아 코드의 잠재적 버그를 나타냅니다.
require , revert 및 assert 의 차이
견고성에서 효과적인 오류 처리에 require , revert 및 assert 의 차이점을 이해합니다.
- 가스 소비 : 오류 지점까지 가스를
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 : 그렇습니다. 동일한 기능으로 require 및 revert 수 있습니다. require 은 일반적으로 간단한 조건 검사에 사용되며, revert 는 기능의 뒷부분에서보다 복잡하거나 조건부 회복에 사용됩니다.
부인 성명:info@kdj.com
제공된 정보는 거래 조언이 아닙니다. kdj.com은 이 기사에 제공된 정보를 기반으로 이루어진 투자에 대해 어떠한 책임도 지지 않습니다. 암호화폐는 변동성이 매우 높으므로 철저한 조사 후 신중하게 투자하는 것이 좋습니다!
본 웹사이트에 사용된 내용이 귀하의 저작권을 침해한다고 판단되는 경우, 즉시 당사(info@kdj.com)로 연락주시면 즉시 삭제하도록 하겠습니다.
- Bitcoin, eCash Fork 및 Airdrop Dynamics: 암호화폐의 최신 논란에 대한 심층 분석
- 2026-05-03 12:55:01
- 2026년 마이애미 컨센서스: Web3, 블록체인, 암호화폐, NFT, 메타버스, 컨퍼런스, 5월 5일 — 월스트리트가 디지털 프론티어를 만나는 곳
- 2026-05-02 12:45:01
- 연준은 금리를 안정적으로 유지하여 지정학적 긴장 속에서 비트코인 가격 하락을 촉발했습니다
- 2026-05-01 06:45:01
- 비트코인 채굴자들이 전력망을 전기화하다: 오하이오 가스 공장 인수로 디지털 금의 새로운 시대가 열리다
- 2026-05-01 00:45:01
- MegaETH의 MEGA 토큰이 빅 애플을 강타했습니다: 실시간 블록체인을 위한 새로운 성능 벤치마크 설정
- 2026-05-01 00:55:01
- 솔라나의 미끄러운 경사: 가격 예측은 저항 손실 및 추가 하락 가능성을 지적합니다.
- 2026-05-01 06:45:01
관련 지식
펀딩 비율 플립이란 무엇입니까? 시장 심리 변화를 나타내는 경우가 많은 이유
2026-06-14 03:57:05
시장 변동성 패턴 1. Bitcoin 가격 변동은 주요 거시 경제 발표가 진행되는 동안 24시간 이내에 10%를 초과하는 경우가 많습니다. 2. 이더리움의 변동성 지수는 Merge 이벤트 동안 95 이상으로 급등했는데, 이는 레이어 1 및 레이어 2 생태계 전반에 걸친...
암호화폐 선물 시장에서 시장 조작 신호를 식별하는 방법
2026-06-12 17:26:02
Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 블록당 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 20...
레버리지 트래핑이란 무엇입니까? 소매업자가 종종 적발되는 이유
2026-06-12 23:53:36
시장 변동성 패턴 1. Bitcoin 가격 변동은 ETF 승인 발표 또는 주요 거래소 중단과 같은 유동성이 높은 이벤트 중에 24시간 이내에 5%를 초과하는 경우가 많습니다. 2. 이더리움의 변동성 급증은 특히 새로운 롤업이 메인넷에 출시되고 급속한 사용자 증가를 경험...
브레이크아웃 거래란 무엇입니까? 선물 거래자가 큰 가격 변동을 포착하는 방법
2026-06-13 05:19:40
암호화폐 선물의 돌파 메커니즘 이해 1. Bitcoin 또는 알트코인 가격이 지속적인 거래량 급증으로 확고한 저항 수준을 결정적으로 위반할 때 브레이크아웃이 발생하며, 종종 레버리지 매수 포지션에 걸쳐 계단식 청산이 촉발됩니다. 2. 무기한 선물 시장에서 돌파는 자금 ...
레버리지가 높은 선물 포지션을 위한 최고의 손절매 전략은 무엇입니까?
2026-06-14 14:19:32
고레버리지 선물 거래의 손절매 메커니즘 1. 손절매 배치는 임의의 백분율 임계값이 아닌 가격 확산의 통계적 특성에 맞춰 조정되어야 합니다. 에너지 선물 스프레드와 같은 평균 회귀 시장에서 최적의 손절매 수준은 Ornstein-Uhlenbeck 역학에 따른 최초 종료 시...
주요 경제 발표 중 암호화폐 선물을 거래하는 방법
2026-06-12 22:50:44
시장 변동성 패턴 1. Bitcoin 가격 변동은 반감기 발표 또는 주요 거래소 상장과 같은 유동성이 높은 이벤트 중에 단일 24시간 창 내에 5%를 초과하는 경우가 많습니다. 2. BTC와의 알트코인 상관관계는 지난 36개월 동안 평균 0.78 이상으로, Bitcoi...
펀딩 비율 플립이란 무엇입니까? 시장 심리 변화를 나타내는 경우가 많은 이유
2026-06-14 03:57:05
시장 변동성 패턴 1. Bitcoin 가격 변동은 주요 거시 경제 발표가 진행되는 동안 24시간 이내에 10%를 초과하는 경우가 많습니다. 2. 이더리움의 변동성 지수는 Merge 이벤트 동안 95 이상으로 급등했는데, 이는 레이어 1 및 레이어 2 생태계 전반에 걸친...
암호화폐 선물 시장에서 시장 조작 신호를 식별하는 방법
2026-06-12 17:26:02
Bitcoin 반감기 메커니즘 1. Bitcoin의 프로토콜은 약 210,000블록마다 블록 보상이 절반으로 줄어드는 고정된 발행 일정을 시행합니다. 2. 이 이벤트는 대략 4년마다 발생하며 블록당 유통되는 새로운 BTC의 수를 직접적으로 줄입니다. 3. 채굴자는 20...
레버리지 트래핑이란 무엇입니까? 소매업자가 종종 적발되는 이유
2026-06-12 23:53:36
시장 변동성 패턴 1. Bitcoin 가격 변동은 ETF 승인 발표 또는 주요 거래소 중단과 같은 유동성이 높은 이벤트 중에 24시간 이내에 5%를 초과하는 경우가 많습니다. 2. 이더리움의 변동성 급증은 특히 새로운 롤업이 메인넷에 출시되고 급속한 사용자 증가를 경험...
브레이크아웃 거래란 무엇입니까? 선물 거래자가 큰 가격 변동을 포착하는 방법
2026-06-13 05:19:40
암호화폐 선물의 돌파 메커니즘 이해 1. Bitcoin 또는 알트코인 가격이 지속적인 거래량 급증으로 확고한 저항 수준을 결정적으로 위반할 때 브레이크아웃이 발생하며, 종종 레버리지 매수 포지션에 걸쳐 계단식 청산이 촉발됩니다. 2. 무기한 선물 시장에서 돌파는 자금 ...
레버리지가 높은 선물 포지션을 위한 최고의 손절매 전략은 무엇입니까?
2026-06-14 14:19:32
고레버리지 선물 거래의 손절매 메커니즘 1. 손절매 배치는 임의의 백분율 임계값이 아닌 가격 확산의 통계적 특성에 맞춰 조정되어야 합니다. 에너지 선물 스프레드와 같은 평균 회귀 시장에서 최적의 손절매 수준은 Ornstein-Uhlenbeck 역학에 따른 최초 종료 시...
주요 경제 발표 중 암호화폐 선물을 거래하는 방법
2026-06-12 22:50:44
시장 변동성 패턴 1. Bitcoin 가격 변동은 반감기 발표 또는 주요 거래소 상장과 같은 유동성이 높은 이벤트 중에 단일 24시간 창 내에 5%를 초과하는 경우가 많습니다. 2. BTC와의 알트코인 상관관계는 지난 36개월 동안 평균 0.78 이상으로, Bitcoi...
모든 기사 보기














