def deploy_paying_proxy_contract(self, initializer=b'<STR_LIT>', deployer_account=None, deployer_private_key=None) -> str:
assert deployer_account or deployer_private_key<EOL>deployer_address = deployer_account or self.ethereum_client.private_key_to_address(deployer_private_key)<EOL>safe_proxy_contract = get_paying_proxy_contract(self.w3)<EOL>tx = safe_proxy_contract.constructor(self.master_copy_address, initializer,<EOL>NULL_ADDRESS,<EOL>NULL_ADDRESS, <NUM_LIT:0>).buildTransaction({'<STR_LIT>': deployer_address})<EOL>tx_hash = self.ethereum_client.send_unsigned_transaction(tx, private_key=deployer_private_key,<EOL>public_key=deployer_account)<EOL>tx_receipt = self.ethereum_client.get_transaction_receipt(tx_hash, timeout=<NUM_LIT>)<EOL>assert tx_receipt.status<EOL>return tx_receipt.contractAddress<EOL>
Deploy proxy contract. Takes deployer_account (if unlocked in the node) or the deployer private key
:param initializer: Initializer
:param deployer_account: Unlocked ethereum account
:param deployer_private_key: Private key of an ethereum account
:return: deployed contract address