def args_from_constants(constants):
    """
    >>> c = {
    ...     "proof_of_work_nonce_size": 8,
    ...     "nonce_length": 32,
    ...     "max_anon_ops_per_block": 132,
    ...     "max_operation_data_length": 32768,
    ...     "max_proposals_per_delegate": 20,
    ...     "max_micheline_node_count": 50000,
    ...     "max_micheline_bytes_limit": 50000,
    ...     "max_allowed_global_constants_depth": 10000,
    ...     "cache_layout": ["100000000", "240000", "2560"],
    ...     "michelson_maximum_type_size": 2001,
    ...     "preserved_cycles": 3,
    ...     "blocks_per_cycle": 4096,
    ...     "blocks_per_commitment": 32,
    ...     "blocks_per_stake_snapshot": 256,
    ...     "blocks_per_voting_period": 20480,
    ...     "hard_gas_limit_per_operation": "1040000",
    ...     "hard_gas_limit_per_block": "5200000",
    ...     "proof_of_work_threshold": "70368744177663",
    ...     "tokens_per_roll": "6000000000",
    ...     "seed_nonce_revelation_tip": "125000",
    ...     "origination_size": 257,
    ...     "baking_reward_fixed_portion": "5000000",
    ...     "baking_reward_bonus_per_slot": "2143",
    ...     "endorsing_reward_per_slot": "1428",
    ...     "cost_per_byte": "250",
    ...     "hard_storage_limit_per_operation": "60000",
    ...     "quorum_min": 2000,
    ...     "quorum_max": 7000,
    ...     "min_proposal_quorum": 500,
    ...     "liquidity_baking_subsidy": "2500000",
    ...     "liquidity_baking_sunset_level": 525600,
    ...     "liquidity_baking_escape_ema_threshold": 666667,
    ...     "max_operations_time_to_live": 120,
    ...     "minimal_block_delay": "15",
    ...     "delay_increment_per_round": "5",
    ...     "consensus_committee_size": 7000,
    ...     "consensus_threshold": 4667,
    ...     "minimal_participation_ratio": {"numerator": 2, "denominator": 3},
    ...     "max_slashing_period": 2,
    ...     "frozen_deposits_percentage": 10,
    ...     "double_baking_punishment": "640000000",
    ...     "ratio_of_frozen_deposits_slashed_per_double_endorsement": {
    ...         "numerator": 1,
    ...         "denominator": 2,
    ...       }
    ...     }
    >>> r = {
    ...     "blocks_per_cycle": 4096,
    ...     "baking_reward_fixed_portion": 5000000,
    ...     "baking_reward_bonus_per_slot": 2143,
    ...     "endorsing_reward_per_slot": 1428,
    ...     "frozen_deposits_percentage": 10,
    ...     "consensus_committee_size": 7000,
    ...     "consensus_threshold": 4667,
    ... }
    >>> args_from_constants(c) == r
    True

    """
    return dict(
        (name, int(constants[name]))
        for name in (
            "blocks_per_cycle",
            "baking_reward_fixed_portion",
            "baking_reward_bonus_per_slot",
            "endorsing_reward_per_slot",
            "frozen_deposits_percentage",
            "consensus_committee_size",
            "consensus_threshold",
        )
    )