EVM 호환성
EOS EVM은 모든 프리컴파일 및 옵코드를 포함하여 이더리움 EVM 사양과 완벽하게 호환됩니다.그러나 EOS EVM에는 몇 가지 주요 차이점이 있습니다.
중첩 통화 제한
EOS EVM 계약의 한계로 인해 EOS EVM은 현재 최대 5개의 중첩 호출을 지원합니다.EOS EVM 팀은 이 숫자를 늘리기 위해 계속 설계를 최적화할 것입니다.
예약 주소
12개로 시작하는 EVM 주소 0xbb
바이트, 예. 0xbbbbbbbbbbbbbbbbbbbbbbbb5530ea015b900000
, EVM 내에서 네이티브 EOS와 EOS 간의 EOS를 연결하는 데 사용됩니다.값을 사용하여 이러한 주소로 메시지를 보내면 다양한 브리지 규칙에 따라 브리지 트랜잭션이 시작되거나 트랜잭션이 중단될 수 있습니다.
또한 가능성은 낮지만 예약 주소로 이어지는 계약 생성도 거래를 중단하게 됩니다.
프리컴파일
EOS EVM은 다음 조항에 따라 이더리움이 지원하는 모든 프리컴파일을 지원합니다.
modexp (0x05)
더 exponent
비트 크기는 다음 중 하나를 초과할 수 없습니다. base
비트 크기 또는 modulus
비트 크기.
ℹ️ 미충족 한도 위의 제한이 충족되지 않으면 사전 컴파일에서 예외가 발생하고 트랜잭션이 중단됩니다.
옵코드
BLOCKHASH (0x40)
이 opcode는 현재 지정된 블록 내용의 해시를 반환하지 않고 대신 지정된 블록 높이와 체인 ID의 해시를 반환합니다.
block_hash = sha256( msg(block_height, chain_id) )
어디에:
block_height
: 지정된 64비트 블록 높이chain_id
: 64비트 솔트 값으로 사용msg
: 선행 0바이트 (0x00) 상수의 연결,block_height
, 그리고chain_id
, 빅 엔디안 형식으로.
ℹ️ 버전 바이트 해시의 선행 0바이트는 향후 새로운 블록해시 체계가 도입되면 변경될 수 있는 버전 바이트입니다.
COINBASE (0x41)
이 opcode는 EOS EVM 계약 계정의 주소를 반환합니다. eosio.evm
.현재 주소는 0xbbbbbbbbbbbbbbbbbbbbbbbb5530ea015b900000
.
DIFFICULTY (0x44)
기본 EOS 합의 프로토콜에는 해시 난이도가 없기 때문에 이 opcode는 현재 기본적으로 1 (1) 을 반환합니다.
GASLIMIT (0x45)
이 opcode는 현재 반환됩니다. 0x7FFFFFFFFFF
EOS EVM의 최대 가스 한도는 (2^43-1) 입니다.