I'd like to create a private network where I would limit the creation of smart contracts to a whitelist of accounts. Is there any option for this?
I think you could achieve this by only pre-funding the accounts you want to be able to create contracts with Ether when you set up your network- Puppeth gives you the option to do this when you create your genesis block.
Creating a contract burns gas, so only accounts with funds in your network could create contracts.