Types
| Type | Fields |
|---|---|
Error | message: string |
Panic | code: number, description: string |
Custom | selector: string, data: Uint8Array |
Unknown | data: Uint8Array |
0x01 assert, 0x11 overflow, 0x12 div-by-zero, 0x21 invalid enum, 0x32 out-of-bounds
Parse EVM revert reasons
import * as RevertReason from 'voltaire-effect/primitives/RevertReason'
import { Effect } from 'effect'
const reason = Effect.runSync(RevertReason.from('0x08c379a0...'))
switch (reason.type) {
case 'Error':
console.log(reason.message) // 'Insufficient balance'
break
case 'Panic':
console.log(reason.code, reason.description) // 0x11, 'overflow'
break
case 'Custom':
console.log(reason.selector, reason.data)
break
case 'Unknown':
console.log(reason.data)
}
// Human-readable string
console.log(RevertReason.toString(reason)) // 'Error: Insufficient balance'
| Type | Fields |
|---|---|
Error | message: string |
Panic | code: number, description: string |
Custom | selector: string, data: Uint8Array |
Unknown | data: Uint8Array |
0x01 assert, 0x11 overflow, 0x12 div-by-zero, 0x21 invalid enum, 0x32 out-of-bounds
const result = await Effect.runPromiseExit(RevertReason.from(invalid))
if (result._tag === 'Failure') {
console.error(result.cause) // RevertReasonError
}