ethereum.forks.amsterdam.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:
27
    <snip>
36
    data = evm.call_data
37
38
    # GAS
39
    word_count = ceil32(ulen(data)) // Uint(32)
40
    charge_gas(
41
        evm,
42
        ExecutionGas(
43
            GasCosts.PRECOMPILE_RIPEMD160_BASE
44
            + GasCosts.PRECOMPILE_RIPEMD160_PER_WORD * word_count
45
        ),
46
    )
47
48
    # OPERATION
49
    hash_bytes = hashlib.new("ripemd160", data).digest()
50
    padded_hash = left_pad_zero_bytes(hash_bytes, 32)
51
    evm.output = padded_hash