예제 #1
0
    def get_intrinsic_gas(self) -> int:
        core_gas = calculate_intrinsic_gas(ISTANBUL_TX_GAS_SCHEDULE, self)

        num_addresses = len(self.access_list)
        preload_address_costs = ACCESS_LIST_ADDRESS_COST_EIP_2930 * num_addresses

        num_slots = sum(len(slots) for _, slots in self.access_list)
        preload_slot_costs = ACCESS_LIST_STORAGE_KEY_COST_EIP_2930 * num_slots

        return core_gas + preload_address_costs + preload_slot_costs
예제 #2
0
def _get_access_list_txn_intrinsic_gas(
        klass: Union[UnsignedAccessListTransaction,
                     AccessListTransaction]) -> int:
    core_gas = calculate_intrinsic_gas(ISTANBUL_TX_GAS_SCHEDULE, klass)

    num_addresses = len(klass.access_list)
    preload_address_costs = ACCESS_LIST_ADDRESS_COST_EIP_2930 * num_addresses

    num_slots = sum(len(slots) for _, slots in klass.access_list)
    preload_slot_costs = ACCESS_LIST_STORAGE_KEY_COST_EIP_2930 * num_slots

    return core_gas + preload_address_costs + preload_slot_costs