相反,在去中心化的区块链网络中,除非采取极端措施,否则无法在实时网络中修改或升级已部署的智能合约。智能合约的一成不变特征是其安全方面的优势也是劣势。由于这种不变性,黑客无法为自己的利益进行更改或修改合约。但是,部署后开发人员也无法修改智能合约应用程序。他们可以取消或终止合约并创建新的智能合约,然后再次部署它。因此,出于安全性考虑,在部署智能合约之前,应对智能合约进行大范围的测试。我们重点介绍了以太坊智能合约架构的基本构建模块,如图 1 所示,其中包括以太坊的架构。 图 1: 用于运行以太坊区块链的环境是通过一个 Web 用户界面与以太坊体系结构服务的四层进行交互,应用层,用于存储区块链数据的数据库,用于支持共识协议的加密机制以及用于网络层的 Internet 服务 [20] 应用层:以太坊客户端在 EVM 中执行智能合约,其中智能合约与以太坊账户相关联。以太坊支持两种类型的账户:外部拥有账户(EOA)和合约账户。 EOA 用于将用户资金存放在 Wei 中,Wei 是 Ether 的最小子面额,价值 10-18 Ether。 EOA 与公钥相关联并由公钥解决;通过显示相应私钥的所有权来验证对 EOA 的访问。相反,合约帐户与一段可执行的字节码(即智能合约)相关联,它定义了一些令人感兴趣的业务逻辑。智能合约是 DApp 的基石。 DApp 通常将用户界面作为其前端,并将一些智能合约作为其后端。一些 DApp 会发行自己的称为令牌的加密货币,用于初始代币发行(ICO)和交易所。基于以太坊的令牌是一种特殊的智能合约(例如 ERC-20)[20]。智能合约在 EVM 中执行,这些 EVM 是使用基于堆栈的体系结构的准图灵完整机器。术语「quasi」是指执行受交易提供的 gas 限制。在以太坊应用层中,发生各种漏洞,导致许多攻击,如应用层中的图所示。 数据层:包含区块链数据结构。交易是 EOA (称为发件人)与另一个 EOA 或合约帐户(称为收件人)之间的交互。交易由以下方式指定:
|