A computer-implemented method for controlling access to smart contracts in a blockchain network, the method comprising: identifying, by a node of the blockchain network, a request to execute a smart contract stored in a blockchain maintained by the blockchain network, the request including an identification identifying a requesting account that is requesting to execute the smart contract, the smart contract comprising a plurality of executable instructions including a private function and a main function; automatically calling, by the node, the private function; executing, by the node, the private function to check a whitelist before execution of the main function, wherein the whitelist is included within the executable instructions of the smart contract comprising the private function, the whitelist including a reference to a location external to the smart contract that stores the one or more accounts that are authorized to execute the smart contract, the private function being configured to take, as a parameter, an identifier identifying a requesting account and to verify, based on the whitelist, whether the requesting account is authorized to call the smart contract; determining, by the node, that the requesting account is authorized to execute the smart contract based on the requesting account being included in the whitelist, wherein determining that the requesting account is authorized includes calling, by the node, the private function; and in response to determining that the requesting account is authorized to execute the smart contract, executing, by the node, the main function of the smart contract in response to determining that the requesting account is not authorized to execute the smart contract, rejecting a second request to execute the smart contract. identifying, by a node of the blockchain network, a request to execute a smart contract stored in a blockchain maintained by the blockchain network, the request including an identification identifying a requesting account that is requesting to execute the smart contract, the smart contract comprising a plurality of executable instructions including a private function and a main function; automatically calling, by the node, the private function; executing, by the node, the private function to check a whitelist before execution of the main function, wherein the whitelist is included within the executable instructions of the smart contract comprising the private function, the whitelist including a reference to a location external to the smart contract that stores the one or more accounts that are authorized to execute the smart contract, the private function being configured to take, as a parameter, an identifier identifying a requesting account and to verify, based on the whitelist, whether the requesting account is authorized to call the smart contract; determining, by the node, that the requesting account is authorized to execute the smart contract based on the requesting account being included in the whitelist, wherein determining that the requesting account is authorized includes calling, by the node, the private function; and in response to determining that the requesting account is authorized to execute the smart contract, executing, by the node, the main function of the smart contract in response to determining that the requesting account is not authorized to execute the smart contract, rejecting a second request to execute the smart contract.