相反,在去中心化的区块链网络中,除非采取极端措施,否则无法在实时网络中修改或升级已部署的智能合约。智能合约的一成不变特征是其安全方面的优势也是劣势。由于这种不变性,黑客无法为自己的利益进行更改或修改合约。但是,部署后开发人员也无法修改智能合约应用程序。他们可以取消或终止合约并创建新的智能合约,然后再次部署它。因此,出于安全性考虑,在部署智能合约之前,应对智能合约进行大范围的测试。我们重点介绍了以太坊智能合约架构的基本构建模块,如图1所示,其中包括以太坊的架构。 图 1: 用于运行以太坊区块链的环境是通过一个Web用户界面与以太坊体系结构服务的四层进行交互,应用层,用于存储区块链数据的数据库,用于支持共识协议的加密机制以及用于网络层的Internet服务[20]。 a. 应用层:以太坊客户端在EVM中执行智能合约,其中智能合约与以太坊账户相关联。以太坊支持两种类型的账户:外部拥有账户(EOA)和合约账户。 EOA用于将用户资金存放在Wei中,Wei是Ether的最小子面额,价值10-18 Ether。 EOA与公钥相关联并由公钥解决;通过显示相应私钥的所有权来验证对EOA的访问。相反,合约帐户与一段可执行的字节码(即智能合约)相关联,它定义了一些令人感兴趣的业务逻辑。智能合约是DApp的基石。 DApp通常将用户界面作为其前端,并将一些智能合约作为其后端。一些DApp会发行自己的称为令牌的加密货币,用于初始代币发行(ICO)和交易所。基于以太坊的令牌是一种特殊的智能合约(例如ERC-20)[20]。智能合约在EVM中执行,这些EVM是使用基于堆栈的体系结构的准图灵完整机器。术语“quasi”是指执行受交易提供的gas限制。在以太坊应用层中,发生各种漏洞,导致许多攻击,如应用层中的图所示。 b. 数据层:包含区块链数据结构。交易是EOA(称为发件人)与另一个EOA或合约帐户(称为收件人)之间的交互。交易由以下方式指定: (i)nonce,它是用于跟踪发送方已发起的交易总数的计数器; (ii)收件人,该收件人指定了交易的目标EOA或合约帐户; (iii)价值,即从发件人向收款人转移的金额(单位:Wei)(如果适用); (iv)输入,是与交易目的相对应的字节码或数据; (v)gasPrice和gasLimit,分别指定发送方愿意向包含交易的区块的获胜矿工支付的单价和最大天然气量; (vi)(v,r,s),它是发送者的椭圆曲线数字签名算法(ECDSA)签名。执行交易会更新所涉及帐户的状态,从而更新区块链。 c. 共识层:确保区块链的状态一致。在撰写本文时,以太坊大约需要12-14秒来创建一个区块,这意味着多个矿工可以同时创建有效的区块,并且可能有许多区块。以太坊使用GHOST共识协议的变体来选择“最重”分支作为主链,其中“heaviest”分支是根植于所讨论的分叉的子树,并且具有最高的累积区块难度,同时注意到陈旧区块不在主链上。但注意,以太坊用权益证明(PoS)替代其当前使用的工作量证明(PoW)。 (责任编辑:admin) |