智能合约的一个重要方面是,在部署到区块链时,它必须与一个区块链上唯一的身份挂钩。因此区块链上的智能合约可以被理解成由区块链维护的中央部署应用程序。这样做是为了能够让区块链可以有效的跟踪智能合约的执行状态,因此身份是必需的。这种身份通常通过托管智能合约的节点的身份来建立,例如,节点的X.509身份或PKI私钥,智能合约使用节点的身份来签署它执行的任何合同执行(事务)。智能合约的身份对于维护很重要,因为它代表智能合约执行的完整性及其在区块链上的状态。实质上,只有当区块链的参与者接受并信任其身份,智能合约执行在区块链上才是可信的。
实现可扩展性和可用性将是智能合约架构所面临的挑战。由于智能合约部署在区块链上,每个智能合约需要保持其唯一的身份,其状态需要被区块链跟踪,因此作为一个区块链维护的中央部署应用程序,要正确地扩展智能合约相对比较困难,特别是对于基于PKI身份的智能合约。此外,由于潜在的可扩展性问题,当智能合约面临压力时,其可用性也可能会受到限制,并且在最坏的情况下,可能会降低整个区块链网络的速度(如在2018年8月通过以太坊智能合约在FCoin的ICO中所看到的)。
智能合约架构面临的更大挑战是它的安全性和可更新性。由于智能合约作为区块链运行的一部分,而区块链上发生的交易大多是不可逆转的,所以如果智能合约包含错误或安全问题,那么由该智能合约所引起的错误也将是不可逆转的。这种错误通常是因为程序错误(bug)或完全漏洞引起的。 因此,和普通应用程序不同,由于区块链智能合约部署后无法更新,如果一个已经被部署的智能合约产生已知问题,其可能产生的问题将是无法预估的。 有时,安全问题也可能来自编程语言本身,尤其是年轻一代的智能合约语言,比方说以太访发明的Solidity智能合约语言就有很多风险,其中, reentrancy attack,arithmetic under / overflow是Solidity中众所周知的安全问题的例子。 因此,如何有效解决智能合约的测试,更新,以及在更新后如何可信的与更新前版本在区块链上链接,将是区块链智能合约能被广泛运用前必须解决的课题。
智能合约是扩展区块链以满足不同业务需求的重要方法之一。通过将智能合约与区块链紧密集成并部署在区块链上,智能合约应用程序变得可验证且可信,并可用于实现许多可受信任的自动化业务行为。