def METHOD_NAME(
    schain: dict, node_id: int, node: dict, ecdsa_key_name: str,
    schains_on_node: list, rotation_id: int, schain_nodes_with_schains: list,
    node_groups: list, generation: int, is_owner_contract: bool,
    skale_manager_opts: SkaleManagerOpts
) -> SChainConfig:
    """Main function that is used to generate sChain config"""
    logger.info(
        f'Going to generate sChain config for {schain["name"]}, '
        f'node_name: {node["name"]}, node_id: {node_id}, rotation_id: {rotation_id}, '
        f'ecdsa keyname: {ecdsa_key_name}'
    )
    on_chain_etherbase = get_on_chain_etherbase(schain, generation)
    on_chain_owner = get_on_chain_owner(schain, generation, is_owner_contract)
    mainnet_owner = schain['mainnetOwner']
    schain_type = get_schain_type(schain['partOfNode'])
    schain_id = get_schain_id_for_chain(schain['name'], generation)
    base_config = SChainBaseConfig(BASE_SCHAIN_CONFIG_FILEPATH)
    dynamic_params = {
        'chainID': get_chain_id(schain['name'])
    }
    originator_address = get_schain_originator(schain)
    predeployed_accounts = generate_predeployed_accounts(
        schain_name=schain['name'],
        schain_type=schain_type,
        schain_nodes=schain_nodes_with_schains,
        on_chain_owner=on_chain_owner,
        mainnet_owner=mainnet_owner,
        originator_address=originator_address,
        generation=generation
    )
    precompiled_accounts = generate_precompiled_accounts(
        on_chain_owner=on_chain_owner
    )
    skale_config = generate_skale_section(
        schain=schain,
        on_chain_etherbase=on_chain_etherbase,
        on_chain_owner=on_chain_owner,
        schain_id=schain_id,
        node_id=node_id,
        node=node,
        ecdsa_key_name=ecdsa_key_name,
        schains_on_node=schains_on_node,
        schain_nodes_with_schains=schain_nodes_with_schains,
        rotation_id=rotation_id,
        node_groups=node_groups,
        skale_manager_opts=skale_manager_opts
    )
    schain_config = SChainConfig(
        seal_engine=base_config.config['sealEngine'],
        params={
            **base_config.config['params'],
            **dynamic_params
        },
        unddos=base_config.config['unddos'],
        genesis=base_config.config['genesis'],
        accounts={
            **base_config.config['accounts'],
            **predeployed_accounts,
            **precompiled_accounts,
        },
        skale_config=skale_config
    )
    return schain_config