ethereum.gray_glacier.vm.precompiled_contracts.ripemd160
Ethereum Virtual Machine (EVM) RIPEMD160 PRECOMPILED CONTRACT ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. contents:: Table of Contents :backlinks: none :local:
Introduction
Implementation of the RIPEMD160
precompiled contract.
ripemd160
Writes the ripemd160 hash to output.
Parameters
evm : The current EVM frame.
def ripemd160(evm: Evm) -> None:
26 | """ |
---|---|
27 | Writes the ripemd160 hash to output. |
28 |
|
29 | Parameters |
30 | ---------- |
31 | evm : |
32 | The current EVM frame. |
33 | """ |
34 | data = evm.message.data |
35 | |
36 | # GAS |
37 | word_count = ceil32(Uint(len(data))) // Uint(32) |
38 | charge_gas(evm, GAS_RIPEMD160 + GAS_RIPEMD160_WORD * word_count) |
39 | |
40 | # OPERATION |
41 | hash_bytes = hashlib.new("ripemd160", data).digest() |
42 | padded_hash = left_pad_zero_bytes(hash_bytes, 32) |
43 | evm.output = padded_hash |