İçeriğe geç

Keccak-256 Hash Hesaplayıcı (Ethereum)

Ethereum, EVM akıllı sözleşmeleri ve Web3 ekosisteminin temel hash standardı.

Ethereum Yellow Paper

Ethereum’un kullandığı orijinal Keccak; NIST SHA3-256 ile aynı değildir.

Araç hakkında

Keccak-256 ve SHA3-256 farkı

Ethereum, SHA-3 yarışmasını kazanan Keccak algoritmasını NIST standardı (FIPS 202) yayımlanmadan önce benimsedi. NIST son aşamada dolgu kuralını değiştirdi; bu nedenle Keccak-256 ve SHA3-256 aynı girdi için farklı sonuç verir. Ethereum ve Solidity’deki keccak256 bu araçtaki orijinal Keccak’tır.

keccak256("")    = c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
sha3_256("")    = a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a

Ethereum’da kullanımı

  • Fonksiyon seçicisi: fonksiyon imzasının hash’inin ilk 4 baytı. transfer(address,uint256) → 0xa9059cbb.
  • Olay konusu (topic): Transfer(address,address,uint256) gibi olay imzalarının tam hash’i.
  • Adres: açık anahtarın Keccak-256 hash’inin son 20 baytı.

Araç girdiyi UTF-8 metin olarak hash’ler. 0x1234… biçiminde bir hex değerin baytlarını hash’lemek istiyorsanız sonuç farklı olur; Solidity’deki keccak256(abi.encodePacked(...)) ile karşılaştırırken bu farka dikkat edin.

Kaynaklar