가스와 제한
컨트랙트 호출에는 두 개의 별도 계량기가 적용됩니다.
- VM 내부의 fuel — 모든 WASM 명령어와 host 함수가 fuel을 소모하며, 호출에는 예산이 있습니다.
- 트랜잭션 수준의 가스 — 보낸 사람이 uNRO로 지불하는 금액입니다. 가스와 수수료를 참고하세요.
호출이 끝나면 소모된 fuel이 가스 단위로 바뀝니다: ceil(fuel / NEUROCHAIN_FUEL_PER_GAS_UNIT), 최소 1이며, 비율의 기본값은 가스 단위당 20 000 fuel입니다. 그다음 컨트랙트 호출에 대해 선불한 50단위(GAS_CONTRACT_CALL)가 실제 값에 맞게 환불되거나 추가로 청구됩니다.
제한
| 상수 | 값 | 한도에 도달하면 |
|---|---|---|
MAX_CONTRACT_GAS | 최상위 호출당 1 000 000 fuel | fuel 소진 → 호출이 trap되고, 모든 것이 롤백되며, 수수료와 nonce는 소비됨 |
MAX_BYTECODE_SIZE | 512 KiB | 배포 거부 |
MAX_CALL_DEPTH | 중첩 call_contract 8개 | call_contract가 -1 반환 |
MAX_STATE_GROWTH_BYTES_PER_TX | 호출당 새 스토리지 64 KiB | set_storage가 아무것도 쓰지 않음 |
allocate 단일 요청 | 1 MiB | 요청이 잘림 |
Host 함수의 fuel 가격
| Host 함수 | Fuel | 상수 |
|---|---|---|
get_storage | 800 + 5 × 값 길이 | FUEL_STORAGE_READ_BASE, FUEL_STORAGE_READ_PER_BYTE |
set_storage | 5 000 + 50 × (키 + 값 길이) | FUEL_STORAGE_WRITE_BASE, FUEL_STORAGE_WRITE_PER_BYTE |
그 밖의 host 함수와 일반 WASM 명령어는 인터프리터의 기본 fuel 비용으로 계량됩니다. 계획된 AI host 함수에는 각각 이름 있는 fuel 가격이 부여될 예정입니다.
이들은 프로토콜 상수입니다. 컨트랙트와 클라이언트는 정확한 값이 그대로 유지된다고 가정해서는 안 됩니다.