主页 > 苹果如何下载imtoken钱包 > 以太坊和智能合约

以太坊和智能合约

苹果如何下载imtoken钱包 2023-09-27 05:11:10

编排:黄当当

合约以太坊_以太坊合约爆仓家破人亡_sitehqz.com 以太坊 智能合约

sitehqz.com 以太坊 智能合约_以太坊合约爆仓家破人亡_合约以太坊

清华大学徐克教授

以太坊是运行智能合约的著名去中心化平台。 康奈尔大学加密货币教授 E. Gün Sirer 认为,以太坊区块链网络在去中心化方面优于比特币,因为以太坊节点在全球分布更多,其参与者来自不同的更多实体。 比特币的集中度很高,56%集中在数据中心和矿场,更有利于结构分布。

此外,以太坊发行自己的货币Ether,用于调整激励机制,奖励找到区块的矿工。 与比特币相比合约以太坊,以太坊主要有以下四点不同:

1、以太坊以账户为基础,而比特币以UTXO(未花费输出)为基础;

sitehqz.com 以太坊 智能合约_合约以太坊_以太坊合约爆仓家破人亡

2、以太坊图灵完备的脚本语言,比比特币更强大,支持智能合约运行;

3、以太坊的发行不是主要目的,而是智能合约品牌激励调整机制的副产品;

4. 以太坊计划在不久的将来过渡到 PoS(权益证明),而比特币仍然停留在 PoW(工作量证明)上。

从这个角度来看,以太坊又回到了账户的概念,包括地址、余额和代码(可选)。 账户有两种:一种是外部账户,一般为个人或法人所有,合约以账户形式存在; 另一种是合约账户,合约以代码的形式存在。

那么,智能合约是如何执行的呢? 在以太坊中,所有账户的总和就是整个网络状态。 每个网络状态由每个块更新。 一个block可以看成是state transition的函数,也就是状态的改变。 所有账户都与网络相关,其他账户、其他合约、合约状态之间的交互均通过“交易”发生。

以太坊智能合约在哪里?

了解了以太坊的背景之后,再来看智能合约。 该概念由 Nick Szabo 于 1995 年首次提出。智能合约是以数字形式定义的一组承诺,包括合约参与者可以执行这些承诺的协议。

合约以太坊_sitehqz.com 以太坊 智能合约_以太坊合约爆仓家破人亡

有人把智能合约称为区块链2.0,它确实不同于以比特币为代表的数字货币。 在以太坊中,智能合约由网络自己执行,具有很多特点:网络共识不需要可信任的第三方,任何人都不能违反合约,不能伪造合约的执行,允许永久的P2P共识在区块链上达成。

简单看智能合约的优缺点,有很多优势可以带来一些新的社会合作模式。 但实际上存在很多问题,比如效率低下,只能做高价值低频的工作,法币支持困难,数模绑定问题,代码安全问题,隐私问题等等。

以太坊智能合约有四个用途:存储和维护数据、管理不可信用户之间的合约/关系、作为其他合约的软件库、支持复杂的权限管理。 可以看到它很笼统,并没有针对某些特定的应用进行优化,上面的特性可以结合使用。 这是以太坊一直坚持的,为代码执行机制提供最基础的支持。

许多年前,人们了解了数据库。 数据库中有一个存储过程,它是一系列预先编写好的SQL语句存储在数据库中,不需要临时编译语句。 这和我们现在看到的智能合约非常相似。 从多个来源验证智能合约的概念并不是特别新。 存储过程由manager执行,智能合约也是一样,但是智能合约的权限管理是最大的问题。 权限管理出现很多漏洞。 没有对用户地址和数据所有者的严格验证。 问题。

以太坊虚拟机如何运行合约代码?

接下来我们看一下EVM(Ethereum Virtual Machine)的具体实现。 其实,虚拟机并不是一个新概念。 以太坊使用自己的虚拟机在虚拟机框架中运行合约代码,每个节点执行虚拟机的代码。

以太坊虚拟机的设计目标首先是简洁,操作码越低越好,数量要尽量少; 二是空间效率和确定性,代码的执行应该是确定性的,每次重复执行都是相同的结果; 然后是Professionalism,因为需要对密码学中常用的20字节地址和32字节数据做一些通用的处理; 最后,安全性,以太坊有一个特殊的设计——GAS机制,它来自于区块链本身就有这样一个激励机制,可以设计GAS机制。

合约以太坊_以太坊合约爆仓家破人亡_sitehqz.com 以太坊 智能合约

我们对以太坊虚拟机和JAVA虚拟机进行了比较。 前者更轻量级,有GAS机制,可以大大减轻其他安全措施的压力。 它的范围会更小,主要是智能合约的应用,而JAVA虚拟机是一个更复杂的虚拟执行环境,适用于各种应用场景。

谈到GAS问题,以太坊想到了一种经济机制,就像有人说比特币虽然解决了分布式系统一致性问题,但并不是一个完美的经济方案。 但是以太坊想到了 GAS 的解决方案。 每个合约都包含 GAS。 GAS 就像汽油。 它会在合约执行时被“销毁”。 虚拟机需要 GAS 才能执行。 每笔交易都消耗了最大的 GAS 量。 . 当GAS被消耗时,如果当前执行没有完成,会回滚到交易的原始状态,所以必须flush足够的GAS以保证交易的正常进行。

智能合约实例与分析

看看一些智能合约的例子。 以太坊白皮书中有一个很简单的例子,就是代币系统,它是一个数据库,只包含操作(发送)。 它确保爱丽丝有足够的钱并发起交易。 这很简单。 一行代码完成传输操作。

还有一些类似的公共注册中心,比如常用的DNS系统。 这中间有很多安全问题,包括谁有 DNS 的控制权。 大家争论了很久。 其实这种问题用以太坊完全可以实现:注册一个名字给一个地址,这个地址很容易上链,大家需要的时候可以上链搜索。 像区块链这样的平台非常适合DNS公共搜索基础平台。

此外,任何公共分布式数据存储都可以考虑智能合约解决方案。 传统的分布式数据库有两种类型:物理分布式和逻辑集中式,物理分布式和逻辑分布式,但实现上的挑战在于数据的一致性、不同分区之间的可靠性、数据读写操作的权限等。 如果换一种思路,通过智能合约,其实可以为底层区块链的共识算法提供一条新的路径来保证数据的一致性。 数据可靠性不依赖于单点稳定性,单点崩溃不会导致整个网络数据丢失,智能合约严格传递权限,操作结果记录在全网。 但是,在性能问题上尚未达成共识。 目前只适用于关键数据上链,不适合存储量过大和交易吞吐量高的场景。

智能能源网络和物联网也是智能合约的常见场景。 此外,还有一个去中心化的预测市场。 如果你向前迈出一步,它就变得有点像赌博。 比如当NBA西部决赛开始的时候,你可以预测是火箭赢还是勇士赢。 将其放在分布式平台上。 它的模式是用一些进货费,看谁赢。 它的价格代表了预测的概率。 如果你买了不被大家认可的人,那么就会有超额收益。 .

sitehqz.com 以太坊 智能合约_合约以太坊_以太坊合约爆仓家破人亡

智能合约安全分析

智能合约的本质是计算机程序,计算机程序就是代码。 只要是代码,就大概率会出现漏洞。

让我们看几个案例。 4月22日美图合约漏洞导致价值归零,4月24日SMT智能合约类似漏洞被黑客利用。 这是一个非常严重的问题,因为常见的代码问题可能会导致数据丢失和崩溃,但利用智能合约漏洞会造成最直接的经济损失。

今年年初,我们看到新加坡的科研人员对以太坊上的智能合约进行了详细的分析,主要是分析漏洞,设计合约漏洞的形式化验证方法,设计合约漏洞检测工具。 在 Github 上开源。

据其分析,大致可分为三类:一类是贪心型,进不去,出不来,相当于以太币锁定在合约中,永远无法取出; 第二种是挥霍型,任何人都可以获得合约中的以太币; 第三种是自杀式,任何用户都可以解除合约。

研究人员分析了数万份合同,实验结果显示,69%的合同存在问题,最高可达99%。 只是一小段代码而已,箱子出来了,如果用安全红利,不会溢出。 但是,开发人员没有正确采用它。 它使用了简单的方法,没有考虑溢出的可能性,从而产生了问题,导致后门被利用,漏洞的利用带来了极大的危害。 这就是重入攻击,类似于重放攻击和短地址攻击。

我们必须解决这个问题。 事实上,有一些可能的想法可以显着提高合约的安全性:首先是检测,包括静态形式检查和验证机制、动态分析和模糊测试技术。 另一个思路是从新的角度考虑整个链条的设计,功能分层,包括操作系统的拆解。 这两个角度可以共同提高代码质量。

sitehqz.com 以太坊 智能合约_合约以太坊_以太坊合约爆仓家破人亡

下面详细谈谈检测技术。 该技术在智能合约中具有广阔的应用前景。 它被称为CFI,最早是在CCS2005上提出的,在安全漏洞分析的理论研究中得到了广泛的应用。 我们在上一篇文章中发现的一些漏洞是由于底层EVM自身执行机制的问题,导致代码异常跳转。 事实上,CFI 可以防止这种重入。 CFI的核心思想是限制程序运行过程中的控制转移,使其始终处于原控制流图所限定的范围内。

最后,我们来看一些常见的测试,比如模糊测试,通过向目标系统提供非预期的输入,异常输入来查看输出是否有问题,有时也依赖于异常输入来测试程序。 在这种情况下,模糊测试是一种更好的方法。 智能合约可以有另一个fuzzing系统,在另一个层面完成合约执行,提高效率,分析结果,看是否会发现隐藏的漏洞。

刚才讲了代码层的措施,从整个链条的设计来看,看能不能加强安全性。 这主要提出了链结构的分层,底层区块链用于关键数据的存储和研究,其他复杂的业务在链外运行。

从这些层级结构中,我们可以得到一些启发:第一合约以太坊,链上合约逻辑的复杂度会大大降低,代码本身也不会特别复杂。 代码越简单,越不容易出现漏洞,因为漏洞往往是一个非常复杂的过程,把复杂的过程放到链下处理,把关键数据存储起来,然后在链上使用合约。 这是我们可以想象的从结构上解决安全问题的问题。

最近比较关注一个叫亦来云的项目,它是一个区块链操作系统。 我认为这个想法对安全有帮助。 基于区块链和亦来云打造未来的安全互联网是一个小小的梦想。 当然很难,但是从建筑设计上还是有一些启发的。 操作系统被分包用于应用程序访问。 所有应用程序都不能直接访问网络资源,以保证分包的安全。 这样,应用程序对网络是不透明的。 应用操作系统提供访问机制,这也是一个新的思路。

关注科技行者微信公众号,获取电子杂志《区块链杂谈》

合约以太坊_以太坊合约爆仓家破人亡_sitehqz.com 以太坊 智能合约