0

以太坊智能合约怎么玩精彩20篇

浏览

7576

文章

67

篇1:区块链智能合约有什么优势?

全文共 302 字

+ 加入清单

区块智能合约有什么优势

准确无误的速度

智能合约是自动化的和数字化的,因此您不必浪费时间在那些费时的文书工作上,也不必纠正通常写在手动填写的文档上的错误。

信任

智能合约通过遵循预定规则以及成员之间共享的那些交易记录的加密数据来执行交易。这样,没有人需要质疑信息是否出于自利的目的而被取笑。

安全与保障

区块链交易记录已加密。这就是使它们几乎不可能被黑客入侵的原因。由于每条记录都与公共分类帐上的先前记录和后续记录相关联,因此必须更改整个链条才能对记录进行单个更改。

节省

智能合约消除了对中间商的需求,因为成员可以信任可见数据以及正确执行交易的技术。由于协议是内置在代码中的,因此不需要额外的个人来验证协议的条款。

展开阅读全文

篇2:以太坊智能合约是如何运作?

全文共 728 字

+ 加入清单

就像区块链行业中的许多想法一样,普遍的困惑笼罩着所谓的“智能合约”。

由于公共区块链使这项新技术成为可能,智能合约很难被理解,因为该术语会部分混淆所描述的核心交互。

智能合约是完全按照创建者设置的程序执行的程序。

这个想法最初是在1993年由计算机科学家和密码学家Nick Szabo提出,他形容为一种数字自动售货机。在他的著名示例中,他描述了用户如何输入数据或值,以及如何从机器上接收有限的物品,在这种情况下,是真实世界的小吃或软饮料。

在一个简单的示例中,以太坊用户可以使用智能合约在特定日期向朋友发送10个以太币。在这种情况下,用户将创建合同,并将数据推送到该合同,以便它可以执行所需的命令。

以太坊是专门为创建智能合约而构建的平台。

但是,这些新工具并非要孤立使用。人们认为,它们也可以构成“去中心化应用程序”的构建块甚至可以构成整个去中心化自治公司。

智能合约是如何运作的?

值得注意的是,在网络可以将价值从一个人转移到另一个人的意义上,比特币是第一个支持基本智能合约的人。节点网络将仅在满足某些条件时验证交易。

但是,比特币仅限于货币用例。

相比之下,以太坊取代了比特币限制性更强的语言(一种约一百种脚本的脚本语言),并将其替换为允许开发人员编写自己的程序的语言。

以太坊允许开发人员对自己的智能合约或“自治代理”进行编程,就像以太坊白皮书所称的那样。该语言是“ Turing-complete”,意味着它支持更广泛的计算指令集。

智能合约可以:用作“多重签名”帐户,因此仅当需要一定比例的人同意时才使用资金管理用户之间的协议,例如,如果一个人从另一个人那里购买保险为其他合同提供实用程序(类似于软件库的工作方式)存储有关应用程序的信息,例如域注册信息或成员资格记录。

展开阅读全文

篇3:比特币的智能合约如何调用?比特币系统有发展吗?

全文共 849 字

+ 加入清单

比特币不仅是值钱的数字货币,还是非常庞大的去中心化系统。比特币的智能合约调用很多人都非常感兴趣。那么,比特币的智能合约如何调用?下面就来了解一下有关比特币的智能合约调用的相关信息,让你知道比特币这样的系统是如何进行交易的。现在投资比特币的人非常的多,进行比特币投资,自然要搞清楚有关比特币的一切。那么比特币系统有发展吗?

1.比特币智能合约如何调用?比特币系统并不是有人为操控的系统,它是一个完全去中心化系统,这样的系统只能通过智能合约调用来实现交易的达成。比特币的智能合约如何调用?其实过程非常的简单,只要你满足智能合约调用的条件,它就会自动进行调用。这个是不需要人为进行选择的,是非常智能的过程。相比于传统的系统,比特币这样的系统是没有中心管理者的,也就是交易过程不存在人为干预。这样的系统其实相比于传统系统是有非常大的优势的,它能够确保服务快速的进行,交易安全达成。

2.比特币系统有发展吗?比特币这样的系统与传统系统的差别非常的大,很多人习惯了传统系统,所以觉得比特币系统没发展,其实不然。比特币这样的去中心化系统其实满足了人们对于高效,快捷,安全的服务系统的美好愿望,所以未来它很可能成为比传统系统更大的服务系统。比特币的智能合约很重要。替代传统系统也是有很大的几率的。比特币的智能合约在比特币系统中的地位是非常大的,我们一定要了解清楚它是什么。现在比特币系统涵盖的服务面已经非常大了,未来它继续朝前发展,我们的生活会得到更多的便利。

3.比特币投资有价值吗?比特币系统的直接产物就是比特币数字货币。这种数字货币现在的价值非常大了,很多人都觉得它已经过了投资的时机。毕竟投资成本太高风险太大。其实不然。搞清楚了比特币的智能合约,我们不难发现,比特币还是有很好的发展的。一个有发展前景的项目,投资自然能够为我们创造价值。比特币系统有发展比特币这种数字货币自然能够持续增值,无论它现在的价值有多大,未来它的价值还是可以继续上涨的。投资比特币要看比特币行情,有关比特币的行情信息OKLink上面都有。

展开阅读全文

篇4:凤凰社区fcm智能合约怎么样?最近的区块链骗局有哪些?

全文共 830 字

+ 加入清单

在今年很多的区块社区当中,有关凤凰社区fcm智能合约项目的帖子曾经火过一段时间,不少投资者都在询问凤凰社区fcm智能合约怎么样?是不是可以投资?针对市场上类似凤凰社区fcm智能合约这样的区块链项目,投资者一定要慎重对待,否则的话很容易掉入骗子的陷阱之中。那么凤凰社区智能合约怎么样?最近的区块链骗局有哪些?

1、凤凰社区智能合约怎么样?

从以太坊问世开始,区块链智能合约这个名词开始成为行业当中热度非常高的一个词汇,同时也成为很多骗子包装自己的新外衣。以太坊出现到如今已经六七年时间了,但是并不见得很多区块链投资者就知道什么是智能合约。所谓的智能合约其实就是一种特殊的计算机协议,通过利于现代信息技术设置一定的执行条件,从而达到互联网平台自动识别、执行某一种操作的效果。从起源而言,智能合约在1995年就被提出了,并不是什么新鲜事物,但是却被区块链市场上的一些不法分子视为了新骗局的包装。

那么网上盛传的凤凰社区fcm智能合约怎么样呢?从目前市场上搜集的与该社区有关的信息来看,这就是一个典型的资金盘骗局,跟以往市场上的一些区块链虚假项目没有什么两样,只不过骗子们给虚假项目披上了一个名为“智能合约”的新外衣而已。从2020年1月份开始,网络上已经陆续出现投诉凤凰社区fcm智能合约诈骗的帖子,有不少投资者入金之后却发现无法提现。

2、最近的区块链骗局有哪些?

如今的区块链市场已经不是2009年的样子了,不管是行业的成熟度、投资者的成熟度,还是市场产品的多元化都发生了巨大的改变。在这种局面之下,很多虚假的区块骗局也搞出了新花样。

那么最近的区块链骗局有哪些呢?从目前市场上出现的一些需求或者骗局来看,主要集中在两个方向:第一、打着区块链公链的名义在市场上进行非法诈骗,这与国内政策有非常大的关系,很多骗子团伙利用国家对区块链产业的支持开始光明正大的诈骗;第二、利用智能合约的名义进行诈骗,凤凰社区fcm智能合约就是比较典型的案例。广大的投资者,一定要特别注意新骗局。

展开阅读全文

篇5:以太坊无限增发:以太坊智能合约巨大漏洞!

全文共 921 字

+ 加入清单

数字货币的关注度越来越高,各大交易所的用户数量出现暴增模式。但近来被大家一直很看好的以太坊出现了智能合约巨大安全漏洞问题——以太坊无限增发。以太坊无限增发究竟是好是坏呢?以太坊无限增发又是什么意思呢?大家都清楚,以太坊的智能合约安全性是目前所有数字货币交易所中安全系数最高的,而以太坊突如其来的爆出这一问题,导致数字货币圈内人心惶惶。接下来就给大家分析一下以太坊无限增发究竟会带来什么后果,为何大家都担忧?

首先,以太坊无限增发的安全漏洞是由天网RBL安全实验室发现的,通过自己天网智能合约安全检测系统对以太坊智能合约进行全过程的安全检测。在以太坊REC20机制项目的智能合约代码中检测出项目owinership控制不严谨可能会出现高危漏洞,被天网RBL命名为隐形的owner漏洞。且之前也有交易平台被爆出“隐形的owner漏洞”,结果导致价值2000美元的资金被盗取。黑客恰好是因为项目最高权限的缺陷,乘机获取项目权限,直接修改地址窃取该项目的资金,导致该交易平台损失惨重。

也正是因为这则消息的爆出,以太坊无限增发的智能合约安全漏洞与之相同,不少项目投资人都纷纷开始害怕。黑客在盗取到owner权限后,可以不受监管,达到token无限增发的目的,还能一键注销项目,从而导致投资该项目的资金消失不见。同时,这种高危漏洞的受害者主要是普通的使用者,或者说是专门用来欺诈普通用户的,也就是所谓的“收割韭菜”式的欺诈,又被专业人士称为“蜜罐合约”。

基于这种情况的智能合约代码安全问题,如何才能够解决呢?通过在OKLink浏览器上查看,专家针对owner高危漏洞,简单有效的方法就是轻量级全新修复方案,不用修改智能合约代码、重新部署项目,充分对漏洞修复即可。听起来不靠谱,但在进行漏洞修复过程、结果的确令人诧异,直接完全修复了owner高危漏洞。

因此,以太坊无限增发并不是一件好事,而是利用黑客技术完成对普通用户的一种欺诈方式。如果大家对投资以太坊项目感兴趣,建议大家可以使用OKLink浏览器,它是目前国际市场上领先的以太坊浏览器,拥有实时更新的大数据功能,为用户提供真实有效的数字货币信息。除此外,还对圈内所有代币都可进行投资和了解,使用也更方便。

展开阅读全文

篇6:使用区块链智能合约有什么好处?

全文共 334 字

+ 加入清单

1、更好的客户服务。无需中介机构建立信任,企业可以直接与客户互动。

员工离职不会影响其功能,权力下放意味着无需担心数据丢失,区块链及其区块链智能合约将继续发挥作用。

2、降低成本。消除中间人意味着更少的费用。

3、保存记录。由于区块链智能合约是通过区块链实现的,因此意味着所有数据都按时间顺序存储,并且可以轻松访问,您的文档在网络中的每个节点中都会重复多次。

4、更快的速度。如果没有传统合同中的中间人,智能合同自动化的会完成得更快。

区块链技术已经影响到世界各地的企业,区块链智能合约在其中推波助澜。更重要的是,有希望的区块链智能合约用例正在为新的和令人兴奋的商业创意奠定基础。因此,尽量不要将区块链智能合约视为工作杀手。相反,区块链智能合约可能创造许多尚未想象出来的工作。

展开阅读全文

篇7:SEC寻求可发现安全漏洞的“智能合约”跟踪工具

全文共 304 字

+ 加入清单

美国证券交易委员会(SEC)希望购买可分析智能合约的区块链取证工具,最好能突出其安全性问题。

SEC在7月30日发布了“ DLT智能合约分析工具” 征求请求,表明其在分散金融(DeFi)的基础上主动监控基于代码的区块链合约的新兴趣。

根据CoinDesk审查的文件,SEC希望使用一种能够识别以下内容的工具:合同目的,代币类型,买卖限制,地址白名单和黑名单,修改和合同调用。

SEC在随附要求的文件中说,该工具最好还将“包括针对安全问题和漏洞分析智能合约的能力”。

SEC表示,不同智能合约之间的比较分析也将是一个优势。私营软件供应商必须在8月13日之前提出监管要求。

彭博社法律首次报道了SEC对智能合约工具的兴趣。

展开阅读全文

篇8:在智能合约、身份管理方面区块链可以带来什么?

全文共 879 字

+ 加入清单

智能合约

智能合约一般被视作区块链技术的一类强劲功能。这类合同事实上是计算机程序,能够监督协议从简化到执行的全部方面。当条件达到时,智能合约就可以彻底自我执行。针对智能合约的支持者,这类工具给予了比传统化合约法更安全,更自动化的替代方式,而且给予了比传统化方式更快,更便宜的应用程序。

智能合约技术的潜在应用本质上是无尽的,而且能够 扩展到一般 适用合同法的几乎全部业务领域。当然,尽管受到高度吹捧,但智能合约并不能替代老式的勤奋工作。事实上,分散式自治组织(DAO)的状况是一个警告,它警告投资者不要以为智能合约比用户放入的信息和组织更好。即便如此,智能合约依然是区块链技术早已超越加密货币领域并进到更宽阔的商业世界的最令人激动的方式之一。

身份管理

互联网时代最成问题的结果之一就是身份安全。与众多个人和组织竭尽所能保护其在线身份并保护私人信息似的,总是有邪恶的行为者试图窃取这类数字产品并从这当中盈利。区块链技术早已展示出改变在线身份管理方式的发展潜力。

鉴于在区块链网络上的成员计算机上开展的独立验证过程,区块链给予了极高的安全性。在数字货币的状况下,此验证用以批准将买卖交易块增加到链中之前。这一机制能够 轻松地应用于其他类型的验证过程,包含身份验证和众多其它应用程序。

区块链和身份管理的应用范围很广。例如,区块链有可能被用来帮助保护选民信息并保证选举过程的正常运行。区块链可用以在平台和系统之间安全有效地传输用户数据。该技术还可以用以保护和保护房地产所有权,所有权等记录。

供应链用途

针对各行各业的众多企业来讲,成功的关键是运作良好,高效的供应链。区块链技术早已在多个行业中采用,作为一类掌握供应链并保证其效率的方式 。这能够 消除人工工作及其复杂而关键的过程中潜在的错误。

在这一点上,区块链是一类具有广泛用途的技术。尽管区块链以其与蓬勃发展的加密货币世界的连接而出名,但早已探索了其它几种应用程序。只不过,或许更令人激动的是每日都在发生利用区块链的新方式 。因而,不管您能否参与数字货币领域,对区块链的理解及其怎样把其用以改变商业和投资世界都是至关重要的。

展开阅读全文

篇9:一文了解如何给智能合约增加隐私性

全文共 5651 字

+ 加入清单

对用户来说,普通交易的隐私保护(译者注:文中有时也会简称为隐私交易)基本上算是一个已解决了的问题(尽管在研究上仍然遗留了一些挑战)。如果我们想在不透露账户余额或转账金额的前提下转移密码学货币,我们有诸如大零币(Zcash)或门罗币(Monero)这样可接受的选项。不过,对于去中心化应用或者智能合约来说,隐私保护仍是一个尚未解决的问题。

是什么让智能合约与普通交易在输入 / 输出(I/O)的隐私保护上有所不同呢?

在本文中,我们将解密隐私保护从普通交易拓展到智能合约上会遇到哪些挑战。为此,我们将考察应用于隐私币的常用密码学工具,并探讨为什么这些工具不太适合更复杂的隐私应用。最后,我们将简要介绍最近提出的一些智能合约隐私保护方案。

隐私保护的定义

「隐私保护」到底是什么意思?

我们将从函数的角度来定义隐私保护。例如,我们可以把交易看作是一些函数,它以账户余额和转账金额作为输入。然后它输出更新后的余额。

图 1:以函数来表示交易过程。

(要实现隐私保护)我们可以考虑隐藏函数的输入和输出。就交易而言,这可以让我们隐藏账户余额和转账金额。你会愿意公开你的账户余额和转账历史吗?可能不会吧。因此,我们至少要支持函数(以及随后的智能合约)的 I/O 隐私保护。

图 2:隐藏函数的 I/O。

我们也可以考虑隐藏函数的_调用者_信息。有时候,函数输入会留下关于函数调用者身份的线索。在实践中,隐藏函数的输入和输出通常会和隐藏函数调用者的身份相结合。

图 3:隐藏函数调用者。

最后,我们可以考虑隐藏函数本身。这在密码学货币领域不太常见,其通常与隐藏函数的输入 / 输出相结合。

图 4:隐藏函数本身。

当你在本文中看到 「隐私保护」这个词时,请把它当成一个总称,指的是_至少支持 I/O 隐私保护_的东西。

好吧,但我们要在哪里用到隐私保护呢?

我们可以认为普通交易的隐私保护已被解决(至少在可行性方面确实如此,可扩展性又是另一回事了),所以让我们直接转到智能合约的隐私保护。

不过,我们先绕个弯子,回顾一下以太坊 ……

以太坊支持用户自定义的合约,合约以代码的形式执行(也就是 「智能合约」)。这些合约用以太坊自己的图灵完备的语言编写,每执行一个操作都要支付一些(预设的)费用。因此,每笔交易都要附上交易费,以激励矿工打包交易。

应用的隐私保护

智能合约让我们在区块链上得以构建丰富的应用 —— 从用户可交易各种密码学货币及其衍生品的去中心化交易所(DEX),到允许权益持有者对提案进行投票的去中心化自治组织(DAO)。

我觉得没必要长篇大论讲解为什么 DAO 需要隐私保护;在现实生活中,投票通常都是私下进行的,所以想要隐藏我们的虚拟投票也是非常合理的。

不过,以太坊的智能合约并没有提供任何形式的开箱即用的隐私保护。所有的信息都是公开可查看的 —— 合约的输入 / 输出,合约的功能,参与的用户,等等。为以太坊的智能合约_添加_隐私保护不是一件容易的事情,因为以太坊从一开始就没有被设计成支持隐私保护。虽然在以太坊上可以实现隐私交易(通过 1,2),但是更复杂的隐私保护操作往往过于昂贵,甚至超过以太坊单个区块的费用限额(即 gas limit),以至于无法实现。难道我们就不能设计一种新的密码学货币,从一开始就支持任何函数的隐私保护吗?毕竟,大零币和门罗币就是这样做的。

目前我们还不清楚如何在密码学货币中支持任意函数(例如在投票和交易所中需要的函数)的 I/O 隐私保护。为了理解这些挑战,我们需要考察密码学货币是如何支持隐私交易的。

通往隐私保护之路

我们先考察用于_普通交易_I/O 隐私保护的密码学工具。我们将关注账户模型而非 UTXO 模型的加密货币。账户模型在支持智能合约的场景下尤其有用,不过账户模型对于隐私计算来说不是必须的(我们将在后面看到)。

工具 1:同态加法

大多数密码学货币的隐私保护方案都依赖于具有_加法同态_的加密或承诺方案。为了简单起见,我们将专注于加密方案,但同样的原则也适用于承诺方案。

在加法同态加密方案下,我们有以下等式:Enc(a) + Enc(b) = Enc(a + b)。

因此,加法同态加密方案允许_任何人_这样验证交易的有效性:Enc(balance) + Enc(transfer amount) = Enc(balance + transfer amount)(余额的加密值与转账额的加密值之和,恰等于两者之和的加密值)。

图 5:Alice 在不透露账户余额或转账金额的情况下转账。

Alice 有自己的的公钥 —— pk_a。她用自己的公钥加密账户余额 bal_a (这样就只有她自己知道账户余额)。我们用 β_a 表示她加密后的余额,β_a = Enc(pk_a, bal_a)。Alice 的公钥 pk_a 和加密后的余额 β_a 都公开在网上,任何人都能查看。

Bob 同样如此;他也有自己的公钥 pk_b,只有他自己知道的账户余额 bal_b,以及用他的公钥加密后的余额 β_b,β_b = Enc(pk_b, bal_b)。

如果 Alice 想在不透露转账金额(amnt)或她自己的账户余额的情况下向 Bob 转账,她只需要公布用她自己的公钥加密后的转账金额,以及用 Bob 的公钥加密后的转账金额。我们分别用 c_a = Enc(pk_a, amnt) 和 c_b = Enc(pk_b, amnt) 来表示这些值。

现在任何人都可以计算更新后的余额。Alice 更新后的账户余额是 β_a - c_a,Bob 更新后的账户余额是 β_b + c_b。等一下!如果所有这些值都被加密了,我们怎么知道 Alice 的账户里有没有足够的钱支付 amnt 金额的转账呢?我们又怎么知道 c_a 和 c_b 加密的金额是不是一样的呢?

这就要用到我们的下一个工具 —— 零知识证明了。

工具 2:零知识证明(ZKP)

为了确保 Alice 没有在上述交易中作弊,她需要在交易中附上一个证明。这个证明需要表明她的账上有足够的资金以完成交易,她没有向 Bob 转一笔负数的金额(无论是意外还是恶意),而且 c_a 和 c_b 确实加密了相同的金额。

当然,Alice 不想透露她真实的账户余额和转账金额;因此,她附上了一个零知识证明 π,让所有其他用户相信必要的条件已经被满足,而无需透露任何额外的信息(如她的账户余额或转账金额)。

现在把所有的工具放在一起 ...

图 6:现在给隐私交易附上必要的 ZKP

Alice 用她和 Bob 的公钥分别对转账金额进行加密,得到了 c_a 和 c_b。她提供了一个 ZKP,π,证明她在交易中没有作弊。矿工们会验证所有的必要条件是否被满足,ZKP 是否有效。然后,他们会使用同态加法分别更新 Alice 和 Bob 的加密余额:β_a = β_a - c_a,β_b = β_b + c_b。注意,虽然用户提供了加密后的输入和一个 ZKP,但是矿工需要负责执行计算以及更新加密后的余额。在区块链中,我们假设大多数矿工是诚实的,所以我们知道他们会正确地更新 Alice 和 Bob 的余额。

注:这是一个大大简化的解释(例如,省去了为 确保加密安全 所需要的随机性)

将普通交易的隐私保护技术拓展到智能合约上面临的挑战

所以我们刚刚已经看到了,我们可以执行隐藏输入和输出的交易。那么我们可以把在隐私交易中用到的技术,用于支持应用的 I/O 隐私保护吗?换句话说:隐私计算和隐私交易是否不同?如果是,为什么?

问题 1

需要注意的是,隐私交易需要满足设定的条件才是正确的(即发送方要有足够的资金,转账金额必须为正数,等等)。我们如何能弄清楚一个任意的合约需要满足哪些条件?这些条件显然受特定的应用影响。在投票中,我们可能希望证明我们隐藏的投票是在正确的范围内进行的,而对于拍卖,我们可能希望证明我们的账上有足够的资金用于封闭投标。

对问题 1 的潜在解决方案

这个问题也没那么严重;只是需要用户做更多的工作。去中心化应用的开发者必须明确他们的特定应用需要满足哪些条件,并将这些条件传达给用户。为了能够证明各式各样的条件,我们可能希望在方案中支持一些通用的 ZKP。所谓_通用_的 ZKP 就是能够证明任意的声明(不像那些目前用在大零币里的 ZKP,它们是非通用的)。

问题 2

在普通交易中,我们只对属于同一个用户的值进行操作(即使用同一个密钥加密)。比如在图 6 中,矿工把用 Alice 的公钥加密后的余额与用 Alice 的公钥加密后的转账金额相加。如果我们想对属于不同用户的输入值进行隐私计算呢?这并不是一个多么牵强的需求,比如我们考虑对投票做隐私保护时就会涉及。

对问题 2 的潜在解决方案

目前还不清楚如何在用户相互之间不透露输入明文的情况下,支持对不同用户的输入进行计算。有一些先进的密码学元件(比如安全多方计算和基于多密钥的全同态加密 FHE),允许用户对不同密钥加密的输入进行计算。然而,这些方案的成本都非常高,而且有很多缺点。在密码学货币的应用场景下,目前似乎没有人有一个很好的解决方案来解决这个问题(除了与参与计算的其他用户共享明文,然后在同一个密钥下加密)。

问题 3

普通交易只需要同态加法,因为我们只需要将加密的转账金额加到加密的余额上。如果我们想进行更复杂的计算,可能涉及到乘法呢?

对问题 3 的潜在解决方案

同态乘法允许我们将加密的输入相乘,使得Enc(a)*Enc(b) = Enc(a*b)。通过同态加法和同态乘法,我们可以表示任意多项式函数。所以,我们很自然地想到这个问题:我们能够支持同态乘法吗?

一个既能支持同态加法,又能支持同态乘法的加密方案是全同态加密(FHE)。使用 FHE,我们仍然可以遵循图 6 中所描绘的模型。也就是,用户指定加密输入,要运行的函数,以及证明加密输入满足必要条件的 ZKP。矿工能够验证 ZKP。他们使用同态加法和同态乘法直接对用户提供的密文进行操作。

不幸的是,FHE 方案使用基于格(lattice)的加密技术,这(在目前)与密码学货币中使用的超高效的 ZKP 并不兼容。我们曾经写过关于 FHE 及其问题的 文章。目前,由于 FHE 存在一些缺点,还没有人提出基于 FHE 的解决方案。

这样,我们目前就只剩下两种方法来解决问题 3 了。

*接受我们只能支持同态加法的现状,遵循隐私交易模型。

图 7:遵循隐私交易模型

在这里,用户提供加密后的输入和一个 ZKP,证明他们的输入满足特定应用的一些指定条件。矿工验证证明,使用同态加法对输入进行操作。需要注意,应用于输入的函数只能用加法来表示。因此,只要函数只需要用到同态加法,我们就可以要求矿工对我们加密的输入执行任意满足该条件的函数。这就是__Zether__所采用的方法。

*要求用户线下计算。这样我们就不需要为加密 / 承诺支持同态乘法了。

图 8:将工作外包给用户

在这里,我们要求用户 Alice 将对明文的几乎所有计算都放到线下进行。她会公布计算的加密输入和加密输出。因为计算是在线下完成的(因此我们并不知道 Alice 是否诚实),她同样需要提供一个 ZKP 证明计算过程是正确的。注意,这一步对隐私交易来说是不必要的,因为矿工会执行计算,而我们假设大多数矿工是诚实的。就应用而言,她可能还需要另一个 ZKP,证明应用指定的条件已被满足。矿工所需要做的就是验证 ZKP 是否有效,然后同意 Alice 提出的状态变更。这就是 Zexe 和 Zkay 所采取的办法。

我不会在这里讨论哪种方法(图 7 与图 8)更优;只想说明它们是_不同_的。

智能合约的隐私保护

前面我们已经谈到了在区块链中支持任意函数的隐私保护要面临的一些问题,现在让我们来看一看一些已有方案的构造。

如果前面说得还不够清楚,我再重申一下,这个领域距离解决问题还有很长的路要走。设计这些构造的论文(即 Zether,Zkay,Zexe)都是在过去两年中发表的。

Zether 是一个建立在以太坊上的隐私交易方案。它可以延伸到支持有限的智能合约的 I/O 隐私保护 —— 即那些可以通过同态加法表示的合约。这使得我们可以执行简单的封闭式拍卖(假设竞拍者会一次买下所有单位)和隐私投票(假设投票选项非 0 即 1)。遗憾的是,由于 gas 的限制,目前在以太坊上只能实现在交易中隐藏用户余额和转账金额。与接下来的两种构造不同,Zether 使用的是 「透明」 的 ZKP (即 ZKP 不需要可信的启动设置)。

Zkay 同样延伸了以太坊的设计以支持智能合约的隐私保护。他们依赖 ZKP 保障隐私计算的正确性,从而可以将大部分工作丢给用户在线下完成。因此,这种设计选择使得它们能够支持比 Zether 更多类型的函数。

Zexe 则试图延展大零币的设计,以支持任意脚本。与前两者不同,Zexe 还可以支持函数本身的隐私保护。

方案隐私保护类型模型表达能力基于哪条链设计ZetherI/O图 7加法函数以太坊Zkay*I/O图 8任意函数以太坊Zexe*I/O, 函数**图 8任意函数大零币

Zkay 和 Zexe (如前所述)使用的是带有可信设置的 ZKP 方案。不过,这些 ZKP 方案当然可以被不需要 可信设置 的方案替代。

在区块链的场景中,I/O 隐私保护似乎比函数隐私保护更有意义,因为用户很可能希望在决定是否参与合约之前先对合约进行审计。

请注意,还有其他一些用于智能合约隐私保护的构造(即 Ekiden、Hawk、Arbitrum),但是这些方案都需要某种准-受信任(semi-trusted)的管理器或受信任的硬件。

大多数智能合约的隐私保护方案都需要额外的安全假设 —— 无论是受信任的启动设置(trusted setup),准-受信任的管理器还是受信任的硬件。然而,ZKP 是一个快速发展的领域,更高效透明的构造很可能会被创造出来。

期许

当涉及表达能力,信任和效率时,在智能合约的隐私保护上进行的探索提出了很多有趣的理论和实践挑战。现在,很难说在图 7 或者图 8 所代表的方法中,哪种(如果有一种的话)可能会在区块链的隐私计算中胜出。此外,未来全同态加密的进展能否转化到区块链中以解决问题 3,这也是一个很有趣的看点。

展开阅读全文

篇10:详解以太坊智能合约安全性漏洞 如何有效减少 DeFi 攻击?

全文共 7849 字

+ 加入清单

区块链是一种新型的分布式系统体系,它使用 P2P 对等网络通信,区块存储,分布式算法共识和加密算法来防止篡改。从本质上讲,区块链可以看作是由所有网络节点共同维护的分布式数据库。与传统的分布式数据库相比,区块链由于具有完整的数据备份,开放透明的网络,无法篡改,完整的信息可追溯性和弱信任模型,因此更适合对分散式信任有明确要求的应用场景。特别是典型的区块链应用场景包括数字支付,产品可追溯性,版权保护,供应链财务等。在区块链系统中,智能合约在实施分散式应用部署和扩展应用的功能方面发挥着极其重要的作用。区块链系统与传统应用程序相比,在区块链系统架构上运行的智能合约具有开放性和透明性,执行性,不可篡改且不依赖第三方的特点,可以满足各种去中心化应用场景的需求,包括近年来发展迅速的去中心化金融(DeFi)项目。

截至 2021 年 1 月 15 日,去中心化金融(DeFi)以超过 45 亿美元的资本成为了成功的金融范例,它利用基于区块链的智能合约来确保其完整性和安全性,。去中心化金融是一个新的发展领域,用于交换,借出或借用令牌。通常,这些指令由智能合约(而不是单个集中的法人或个人)调节和 / 或由多方,分散式治理机制(例如 DAO)控制的「收益」或收入流。去中心化金融(DeFi)—在现有区块链平台之上逐渐兴起。这个新领域的组成部分包括那些与贷款,资产交易和衍生品市场有关的部分。作为去中心化的应用,智能合约管理着大量的数字资产,从而也使其容易受到各种攻击

本文将从三个维度具体阐述了智能合约安全性问题:首先,由于以太坊体系结构每一层的漏洞导致的智能合约安全性。其次,也会探讨 DeFi 和智能合约近期出现的各种攻击。最后还将探讨现有的可行性工具以及来其他的有效实践如何最大限度地减少此类攻击。

以太坊架构概述

在探讨智能合约漏洞之前,我们先简单概述下有关以太坊智能合约架构。

区块链网络能部署并自动执行编程脚本任务。这些程序称为智能合约,用于定义在交易期间调用的自定义功能和规则。基于智能合约的区块链技术已被应用到各种行业中,例如金融,供应链管理,医疗保健能源和政府服务。只有特定的区块链平台支持智能合约:以太坊是第一个支持智能合约的。其他区块链平台(例如 EOS,Lisk,比特币和 Hyperledger Fabric)兼容于部署和执行智能合约。一种称为 Solidity 的脚本类型语言用于在以太坊平台中开发智能合约。在这一部分中,我们介绍了以太坊平台上智能合约实施的相关安全漏洞。智能合约可以持有和管理相应的功能 Credit (地址){可能价值数千美元的大量虚拟货币。因此,对手不断尝试操纵智能合约的执行以支持其活动。本质上,智能合约在分布式和无权限网络上运行,该网络继承了许多漏洞。在传统的系统中,可以重新开发或修补这一小部分的中心化应用程序。

相反,在去中心化的区块链网络中,除非采取极端措施,否则无法在实时网络中修改或升级已部署的智能合约。智能合约的一成不变特征是其安全方面的优势也是劣势。由于这种不变性,黑客无法为自己的利益进行更改或修改合约。但是,部署后开发人员也无法修改智能合约应用程序。他们可以取消或终止合约并创建新的智能合约,然后再次部署它。因此,出于安全性考虑,在部署智能合约之前,应对智能合约进行大范围的测试。我们重点介绍了以太坊智能合约架构的基本构建模块,如图 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 或合约帐户(称为收件人)之间的交互。交易由以下方式指定:

nonce,它是用于跟踪发送方已发起的交易总数的计数器;

收件人,该收件人指定了交易的目标 EOA 或合约帐户;

价值,即从发件人向收款人转移的金额(单位:Wei)(如果适用);

输入,是与交易目的相对应的字节码或数据;

gasPrice 和 gasLimit,分别指定发送方愿意向包含交易的区块的获胜矿工支付的单价和最大天然气量;

(v,r,s),它是发送者的椭圆曲线数字签名算法(ECDSA)签名。执行交易会更新所涉及帐户的状态,从而更新区块链。

共识层:确保区块链的状态一致。在撰写本文时,以太坊大约需要 12-14 秒来创建一个区块,这意味着多个矿工可以同时创建有效的区块,并且可能有许多区块。以太坊使用 GHOST 共识协议的变体来选择「最重」分支作为主链,其中「heaviest」分支是根植于所讨论的分叉的子树,并且具有最高的累积区块难度,同时注意到陈旧区块不在主链上。但注意,以太坊用权益证明(PoS)替代其当前使用的工作量证明(PoW)。

网络层:管理节点或客户端的以太坊点对点(P2P)网络,以使节点始终可以从某些活动节点获取区块链的更新状态。以太坊网络是一个结构化的 P2P 网络,其中每个节点(即客户端)存储整个区块链的副本。为了进行节点发现和路由,每个节点维护一个动态路由表,其中包含 160 个存储桶,每个存储桶最多包含 16 个其他节点的 ID,IP 地址,UDP / TCP 端口条目。以太坊使用 RLPx 协议发现目标客户端,并使用以太坊有线协议来促进客户端之间以太坊区块链信息(例如交易,区块)的交换。

以太坊区块链环境:运行在如下四层的环境中:用户与以太坊区块链进行交互的 Web 界面 ; 以太坊客户的数据库,用于存储区块链数据 ; 出于安全目的的加密机制;以及支持以太坊节点之间的区块链通信的互联网基础设施。我们将以太坊区块链架构与环境区分开来,因为针对以太坊区块链的攻击可能来自环境,并且这些攻击可能在环境中得到更好的解决,而不是由以太坊解决。

以太坊智能合约漏洞

重点介绍了以太坊体系每一层的智能合约漏洞,如图 2 所示。

图 2:以太坊各层漏洞的分类

以太坊应用层

重入性:此漏洞最初是从 DAO 攻击中发现的 [1],当外部被调用方合约在用方合约完成之前(即某种意义上是循环调用)在调用方合约中回调函数时,会发生此漏洞。这使攻击者可以绕开适当的有效性检查,直到调用者合约被耗尽以太币或交易用完为止。

委托呼叫注入:首先从对 Parity 钱包的攻击中发现了此漏洞 [2]。为了促使代码重用,EVM 提供了一个操作码委托调用,用于将被调用方合约的字节码插入到调用方合约的字节码中。结果恶意的被调用方合约可以直接修改(或操纵)调用方合约的状态变量。此漏洞是由于被调用方合约可以更新调用方合约的状态变量而导致的。声明旨在通过委托调用作为库共享的无状态合约,可完全防此漏洞。

冻结以太:首次从对 Parity 钱包的攻击中发现了此漏洞 [3]。该漏洞产生由于用户无法将钱存入其合约帐户,而无法从这些帐户中支出资金,从而有效冻结了他们的资金。

升级合约:引入合约升级的思想是为了缓解智能合约一旦部署后就无法修改的问题,即使以后发现它们存在漏洞。为了允许合约升级,有两种方法:(i)将合约分为代理合约和逻辑合约,以使开发人员可以升级后者而不是前者; (ii)使用注册管理机构合约来保存更新后的合约。这些方法虽然有效,但却引入了一个新的漏洞:当合约开发者变得恶意时,更新的合约可能是恶意的。此漏洞(即,不安全的联系人更新)仍然是一个未解决的问题。

具有意外还原的 DoS:发生这种情况的原因是,由于主叫方合约遇到外部呼叫失败而导致事务被还原,或者被叫方合约故意执行还原操作以中断主叫方合约的执行。此漏洞是由执行被调用方合约还原的调用方合约引起的。通过使接收者调用交易来「提取」发件人为接收者预留的资金,可以防止此漏洞,从而有效地防止了发件人的交易被还原。

整数上溢和下溢:首次从针对 BEC 令牌的攻击中发现了此漏洞 [4]。当运算的结果超出了 Solidity 数据类型的范围时,就会发生这种情况,例如导致对攻击者的余额或其他状态变量进行未经授权的操纵。该漏洞是由 Solidity 源代码未在数字输入上执行正确的验证引起的,并且 Solidity 编译器和 EVM 均未提供整数上溢 / 下溢检测。可以通过使用 SafeMath 库来防止此漏洞处理这些问题。

操纵余额:当合约的控制流决策依赖于此值时,会发生此漏洞。平衡或解决(balance)平衡,攻击者可以利用它使自己成为唯一可以获取金钱的人。可以通过不使用任何条件声明中的合约余额来防止此漏洞 [5]。通过 tx.origin 进行身份验证:tx.origin 是 Solidity 中的全局变量,它指的是发起有问题交易的原始 EOA。当合约使用 tx.origin 进行授权时会发生此漏洞,这可能会受到网络钓鱼攻击的危害。通过使用 msg.sender 而不是 tx.origin 进行身份验证,可以防止此漏洞,因为 msg.sender 返回导致该消息的帐户。

错误的可见性:错误地指定功能的可见性,从而允许未经授权的访问。

无保护的自杀:合约的所有者(或受委托的第三方)可以使用自杀或自毁方法销毁合约。 取消合约时,将删除其关联的字节码和存储。 该漏洞是由合约强制执行的身份验证不足引起的。 可以通过强制执行例如多因素身份验证来缓解此漏洞,这意味着自杀操作必须得到多方的批准。

将以太币泄漏到任意地址:当任意调用方都可以提取合约的资金时,该漏洞就不会发生,该调用方既不是合约的所有者,也不是向合约存入资金的投资者。 此漏洞是由调用者调用将以太币发送到任意地址的功能时无法检查呼叫者的身份引起的。 通过对发送资金的功能进行适当的身份验证,可以防止此漏洞。

机密性失效:在区块链中,由于区块链的公共性质(即交易细节是众所周知的),限制变量或函数的可见性并不能确保变量或函数是机密的。 防止此漏洞的一种可能解决方案是使用加密技术,例如定时承诺 [6]。

签名信息不足:当数字签名对多个交易有效时,就会发生此漏洞,当一个发件人(例如 Alice)通过代理合约向多个收件人汇款(而不是发起多个交易)时,可能会发生此漏洞。 此漏洞最初是在针对智能合约的重播攻击中利用的。通过在每条消息中合并适当的信息(例如现时值和时间戳)可以防止此漏洞。

具有不受限制的操作的 DoS:此漏洞首先从 Govern Mental 合约中观察到 [7]。

未经检查的呼叫返回值:此漏洞也称为处理错误的异常。它有两个变体,称为 gas-less 发送和 unchecked 发送。当不检查低级调用的返回值时会出现这种情况,即使函数调用抛出错误 [8],执行也可能会继续。

未初始化的存储指针:回顾下,在 Solidity 中,合约状态变量始终从插槽 0 开始连续放置在存储中。对于复合局部变量(例如,struct,array 或 mapping),将引用分配给未占用的对象存储中的插槽以指向状态变量。

错误的构造函数名称:此漏洞最初是从 Rubixi 合约 [9] 中观察到的,该构造函数的名称不正确,它使任何人都可以成为合约的所有者。在 Solidity 0.4.22 版之前,声明与合约名称相同的函数被视为合约构造函数,该函数仅在创建合约时执行。

类型转换:此漏洞最早在 [10] 中发现。以 Solidity 语言编写的合约可以通过直接引用被调用方合约的实例来调用另一个合约。

过时的编译器版本:当合约使用过时的编译器时会发生,其中包含错误,因此使已编译的合约易受攻击。通过使用最新的编译器可以防止此漏洞。

简短地址:此漏洞最早在 [11] 中实现,并进行了广泛讨论。

以太币丢失给孤立地址:以太币失去到孤立发生在汇款时,以太坊仅检查接收者地址的长度不超过 160 位,而不检查接收者地址的有效性。 如果将钱发送到一个不存在的孤立地址,则以太坊会自动注册该地址,而不是终止交易。 由于该地址未与任何 EOA 或合约帐户相关联,因此没有人可以提取已转移的资金,这实际上是丢失的。 此漏洞是由 EVM 不能孤立保护引起的。 在撰写本文时,只能通过手动确保收件人地址的正确性来防止此漏洞。

调用堆栈深度限制:此漏洞是由 EVM 的执行模型不足引起的,并且已被 EIP-150 的硬分叉所消除,该硬叉重新定义了外部调用的耗油量规则,使其不可能达到 1,024 in 调用堆栈深度。

低估操作码:首先从两次 DoS 攻击中发现了此漏洞 [12] [13]。

交易顺序依赖(又名前端运行):这是指并发性问题,即区块链的即将到来的状态取决于交易的执行顺序,但是由矿工决定。

时间依赖关系:当合约在执行关键操作(例如汇款)时将 block.timestamp 用作触发条件的一部分或作为可由恶意矿工操纵的随机性来源时,会发生此漏洞。该漏洞是由以太坊引起的,它只要求时间戳大于其母块的时间戳并且在当前时钟的 900 秒以内。

产生随机性:例如,许多赌博和彩票合约都是随机选择中奖者,通常的做法是根据一些初始私有种子(例如 block.number,block.timestamp,block。难易度或 blockhash)生成伪随机数。但是,这些种子由矿工完全控制,这意味着恶意矿工可以操纵这些变量使自己成为赢家。此漏洞是由可操纵的 entropy 源引起的。

数据层漏洞

难以分辨的链:当以太坊分为 ETH 和 ETC 两条链 [13] 时,首先从跨链重放攻击中观察到此漏洞。回想一下,以太坊使用 ECDSA 签署交易。在进行 EIP-155 [7] 硬分叉之前,每笔交易都包含六个字段(即,随机数,收件人,值,输入,gasPrice 和 gasLimit)。但是,数字签名不是特定于链的,因为那时甚至还不知道特定于链的信息。结果,为一个链创建的事务可被另一链重用。通过将 chainID 合并到字段中,已消除了此漏洞。

State Trie 中的「空帐户」:此漏洞首先从参考文献 [12] [13] 中报告的 DoS 攻击中发现的。

共识层的漏洞

可外包的难题:回想以太坊采用了名为 Ethash 的 PoW 难题,该难题旨在抵御 ASIC,并能够限制并行计算的使用(由于事实上,矿工的大部分工作将是读取数据集。 通过有限的内存带宽)。 但是,狡猾的矿工仍然可以将搜索难题解决方案的任务划分为多个较小的任务,然后将其外包。 该漏洞是由 Ethash 造成的,它仅使拼图解决方案在原图像搜索中部分顺序,而不是依赖顺序 PoW。

概率最终性:此漏洞是由以太坊区块链偏爱可用性而非一致性的设计引起的,这是根据 CAP 定理 [14] 选择的。

带有块填充的 DoS:首次从 Fomo3D 合约中观察到此漏洞 [15]。该漏洞仅导致攻击者的交易包含在新开采的区块中,而其他交易则被矿工放弃一段时间。当攻击者提供更高的 gasPrice 以激励矿工选择攻击者的交易时,可能会发生这种情况。此漏洞是由贪婪的采矿激励机制引起的。在撰写本文时,尚无解决方案来防止此漏洞。

诚实的采矿设想:此漏洞是由共识协议引起的,因为它与激励不兼容,请参见 [16]。在撰写本文时,此漏洞仍然是一个未解决的问题。

出块奖励:它是指出块奖励机制,用于应对由于快速生成块而导致的陈旧区块增加。但是,这种机制有一个副作用,即允许自私的矿工将陈旧的区块变成出块并获得奖励,从而有效地激励了自私的采矿和双重支出。

验证者的困境:此漏洞最早在参考文献 [17] 中报道,指的是当验证新交易需要不费吹灰之力的计算时,无论矿工是否选择验证交易,都将受到攻击。如果矿工验证了计算量大的交易,那么他们将花费大量时间,并在下一个区块的竞争中为攻击者提供优势;如果矿工未经验证接受交易,则区块链可能包含不正确的交易。此漏洞是由以太坊中验证资源需求交易的高昂成本引起的。可以通过限制验证块中所有事务所需的计算量来缓解此漏洞 [17]。但是,尚不清楚如何消除此漏洞。

网络层的漏洞

无限节点的创建:此漏洞是针对 Geth 客户端 1.8 之前的版本。在以太坊网络中,每个节点都由唯一的 ID 标识,该 ID 是 64 字节的 ECDSA 公钥。攻击者可以在一台计算机上创建无限数量的节点(即具有相同的 IP 地址),然后使用这些节点垄断某些受害者节点的传入和传出连接,从而有效地将受害者与网络中的其他对等节点隔离开来。此漏洞是由对节点生成过程的弱限制引起的。通过使用 IP 地址和公钥的组合作为节点 ID,可以消除此漏洞。格斯(Geth)开发人员尚未采用这种对策,他们认为这对客户端的可用性有负面影响。

不受限制的传入连接:此漏洞在版本 1.8 [18] 之前的 Geth 客户端中。 每个节点在任何时间点可以具有总数为 maxpeers 的连接(默认值为 25),并且可以与其他节点发起多达 1 (1 + maxpeers)/2⌋个出站 TCP 连接。 但是,其他节点启动的传入 TCP 连接的数量没有上限。 通过为 maxpeers 建立与没有出站连接的受害节点的许多传入连接,攻击者有机会使受害者黯然失色。 在 Geth v1.8 中,通过对到节点的传入 TCP 连接的数量实施上限,默认值为⌊maxpeers/3⌋= 8,消除了此漏洞。

公共对等体选择:在 Geth 客户端 1.8 之前的版本中检测到此漏洞 [18]。

对等体选择:该漏洞指的是 Geth 客户端在从其路由表中选择节点以建立出站连接时,总是获取随机选择的桶的头部。由于每个存储桶中的节点都是按活动排序的,因此攻击者可以通过定期向 Geth 客户端发送消息来使其节点始终位于其他节点之前。通过在路由表中所有节点的集合中随机选择统一的节点,而不是仅从每个存储桶的头中随机选择节点,在 Geth v1.9 中已消除了此漏洞。

独立块同步:它允许攻击者对以太坊 P2P 网络进行分区,而不会垄断受害者客户端的连接。回想一下,每个块标题都包含一个难度字段,该字段记录了该块的挖掘难度。区块链的总难度用 totalDifficulty 表示,是直到当前区块的难度之和。

RPC API 暴露:此漏洞最初是通过对 Geth 和 Parity 客户端的攻击发现的 [19]。

展开阅读全文

篇11:一文了解账户抽象化EIP-2938:智能合约钱包为什么有这项需求?

全文共 8366 字

+ 加入清单

以太坊有两种类型的账户:外部账户(Externally Owned Account, EOA)和合约账户(Contract Account, CA)。前者由用户私钥控制,而后者由存储在智能合约账户(有时也被称为智能钱包)内的合约代码控制。外部账户的权限要大于合约账户,因为只有外部账户可以通过支付 gas 启动交易的执行过程。账户抽象化(Account Abstraction, AA)则是一个可以让合约账户成为和外部账户一样的 “顶层” 账户的提案,实现了账户抽象化之后,合约账户也可以支付交易费和执行交易。

之所以提出账户抽象化,是想要在钱包、交易混淆器(mixer)、ÐApp 和 DeFi 等各种应用场景下,显著改善用户与以太坊链的交互体验。账户抽象化方案要为以太坊提供一个基础功能层,来确定何时支付,谁来支付以及怎样支付 gas。

以 Status Messenger 应用为例,其将隐私信使服务与以太坊钱包和 Web3 浏览器集成在一起。目前,Status 钱包仍然是外部账户钱包,因此其不能像智能合约钱包那样支持丰富的用户体验,比如多签安全、基于社交的钱包恢复(social recovery)、支付限额、地址黑/白名单以及无需 gas 费用的元交易。(之所以没有采用智能合约钱包,是因为)智能合约钱包的用户体验受累于 gas 价格波动,即使通过第三方的中继者也无法有效解决这个问题。账户抽象化旨在解决这个问题。

在本文中,我们先探讨智能合约钱包对账户抽象化的需求。然后描述协议的变更及其对节点的影响,借此深入到账户抽象化的关键部分。最后,我们讨论一些关于扩展功能的提案,并以阐释 Status 项目的计划路线图作为本文的总结,因为该项目要与以太坊配合因而势必受到账户抽象化的影响。

历史与动机

账户抽象化这个概念是在撰写于 2017 年的 EIP-86 里首次提出的,其目的是实现 “交易来源和签名的抽象”。不过其动机和想法可以追溯到 2016 年年初 vitalik 提交的一个 issue, 文中建议 “与其将 ECDSA 签名算法和默认的 nonce 机制写死在协议内作为 ‘标准’ 的账户安全机制,不如初步建立一个(统一的)账户模型,在未来把所有的账户都变成合约,让合约可以支付 gas,让用户可以自由定义自己的安全模型。”

要实现最初的提议非常有挑战,因为不仅要大幅修改协议,还要满足系统的安全保证。最近,Vitalik 等人提出了 EIP-2938 草案,该草案概述了一个更简单的实现。这个实现对 协议/共识 的改动最小,并且通过设置节点的内存池规则来满足所需的安全保证。Vitalik 的以太坊工程组 Meetup 演讲和 Sam Wilson 与 Ansgar Dietrichs(EIP 的另外 2 位作者)的ETH 线上演讲(以及附带的两篇文章:1 & 2)都对这个主题做了非常棒的介绍。本文会着重介绍这些资料的关键内容。

动机:账户抽象化背后的动机很简单,但会带来根本性的改变:当前,以太坊交易具备功能可编程性(通过调用智能合约实现),但是交易的验证方式却是固定的。只有持有有效的 ECDSA 签名、有效的 nonce 值以及足够的账户余额,一笔交易才算有效。账户抽象化引入了一种新的交易类型 —— 抽象账户交易(AA Transaction)。这种交易总是由一个特殊地址产生,协议不会检查其签名,nonce 和余额。通过引入这种交易,账户抽象化实现了从固定验证方式到可编程验证方式的转变。抽象账户交易的有效性由其 target 字段指定的智能合约验证,通过验证之后,合约可以自行为该交易支付手续费。

那么,为什么账户抽象化这么有用呢?我们将用以太坊钱包为例,阐述它会带来哪些好处。

智能合约钱包:如今大多数以太坊钱包都是外部账户钱包,它们的安全性由助记词(seed phrase)生成的私钥保护。(一串遵循 BIP-39 标准的助记词由 12-24 个单词依序拼成,这些单词是从 2048 个单词中随机选择的。助记词为 PBKDF2 函数提供所需的信息熵,以生成一串二进制种子。接着,基于 BIP-32 标准的钱包使用该种子生成非对称密钥对。)为了以后能在其他钱包里恢复密钥,用户应当安全妥善地保管助记词。然而,这种钱包很容易因为私钥被盗或者助记词丢失导致用户的资产遭受损失。

(顾名思义)智能合约钱包是通过智能合约在链上实现的。这种钱包能够提供可编程的风险迁移和友好的用户体验,比如多签安全、基于社交或时间的钱包恢复、转账金额限制、地址黑白名单、无需 gas 费用的元交易和批量交易。

虽然智能合约面临因代码质量差而带来的安全风险,但是这种风险可以通过钱包提供方的安全审计来减轻。而外部账户钱包的风险完全由用户自己承担,用户无法获得智能合约那样的可编程的安全保障,用户必须自己保管好助记词。

当前可用的智能合约钱包有 Argent、Authereum、Dapper、Dharma、Gnos is Safe、Monolith 和 MYKEY。从下图可以看到,这类钱包的使用率看起来在增加。

Argent 通过守护者(Guardian)的概念实现了无需种子的基于社交的钱包恢复。守护者是用户信任的人或设备,可以帮助用户恢复钱包。Argent 还要实现类似银行的安全性(提供每日交易限额、账户锁定和可信联系人等功能)与类似 Venmo (译者注:Venmo 是 PayPal 旗下的一个移动支付服务)的可用性(用 ENS(译者注:Ethereum Name Servic,ENS 是一个可读的、去中心化且安全的域名系统)取代地址,支持元交易)。

Gnosis Safe 是一款多签智能合约钱包,专注于团队资金管理,任何一笔交易都要得到团队中最低人数(n 个成员中的至少 m 个)的批准才能发生。它还可以通过元交易实现无需 gas 的签名。

所有这些高级钱包功能都要用到灵活的智能合约。钱包用户要么通过外部账户发送交易,支付 gas 费以调用钱包合约,要么依赖钱包提供方支持元交易功能,借由钱包提供方的中继器或者第三方中继网络如 Gas Station Network 来使用钱包。前者通常是通过了 KYC 认证的用户依靠中心化交易所购买ETH(以支付 gas 费);后者将用户的负担转移到中继器上,由钱包提供方或用户在链上或链下补偿中继器,从而提高用户体验。

然而,基于中继器的架构有三个主要缺点:(1)他们可能会面临中心化的诟病,引起交易审查的担忧;(2)由于中继器发出的交易需要支付额外 21000 单位的基础 gas 费,为了获得利润其必须收取更高的费用以覆盖这部分成本,这就导致了技术和经济上的低效;(3)对中继专用协议的使用,迫使应用不得不依赖非以太坊的基础设施,而较小的用户群无法支撑这些设施提供稳定可靠的服务。

账户抽象化将使智能合约能够接受用户的无需 gas 的元交易,并且无需依赖中继网络就能为其支付 gas 费。因此,这种底层能力在不牺牲去中心化的情况下,能够极大改善这些智能合约钱包的用户体验。

Tornodo Cash:另一个(将受益于账户抽象化的)相关应用是交易混淆器,例如 tornado.cash。Tornado 使用智能合约切断地址之间的链上关联以提升交易的隐私性,该合约允许用户存入 ETH 后通过另一个地址提款。用户在存款时提供一个秘密值的哈希,随后在提款时提供 zkSnark 证明。该证明可以在不泄露秘密值和存款信息的情况下,证明其知道这个秘密值。这样就把存款和提款脱钩了。

但是在提款时有一个鸡生蛋蛋生鸡的问题。为了在新生成的地址上执行提款交易,用户需要给该地址存入一些 ETH 以支付 gas 费。但这些 ETH 的来源(通常是一家交易所)本身又会破坏使用 Tornado 所带来的隐私性。首选的替代方案是再次使用中继网络,而这样做有上述的那些缺点。

账户抽象化就可以解决这个问题,Tornado 合约可以接受用户的提款抽象账户交易,验证 zkSnark,(从存款里)扣除 gas 费,然后把剩余的资金转给提款地址。

账户抽象化

在 EIP-2938 中提出的账户抽象化,接纳合约作为顶层账户,使之可以支付交易费以及启动交易的执行过程。实现账户抽象化需要变更协议以增加新的抽象账户交易类型、修改内存池规则以及引入扩展功能以支持高级用法。抽象账户交易需要增加两个新的操作码:NONCE和PAYGAS。账户类型仍然保持现有的两种(外部账户和合约账户),所有的变更都向后兼容以支持当前的交易、智能合约和协议。

账户抽象化应用可以分成两类:1) 单租户应用,如智能合约钱包,其会为每个用户创建一个新合约;2) 多租户应用,例如 tornado.cash 或 Uniswap,多个用户与同一组智能合约交互。

目前还不能支持多租户应用,这需要更多的研究工作,以期未来早日实现。所以本文将重点介绍单租户的账户抽象化。

协议变更

对协议唯一的变更就是引入了一种新的交易类型,以及相关的两个操作码NONCE和PAYGAS。

抽象账户交易:协议引入了一种新的交易类型:AA_TX_TYPE。它的二进制数据 (payload) 会被解析为RLP([nonce, target, data]),而不是现有交易的

RLP([nonce, gas_price, gas_limit, to, value, data, v, r, s])。

Nonce 检查和现有交易类似,需满足

tx.nonce == tx.target.nonce。

如果检查失败,则交易无效,如果通过检查,则tx.target.nonce将会递增,交易继续进行。

抽象账户交易的基础 gas 消耗量将从 21000 降到 15000(以反映移除了内置的 ECDSA 签名所节省的成本)。此外,抽象账户交易没有内置的 gas 限额。当交易执行时,gas 限额只需设定为当前 block 还剩余的 gas 限额即可。

NONCE opcode:NONCE操作码 (0x48) 推送被调用者 —— 即抽象账户交易的 target 字段所指定的合约 —— 的 nonce 值到 EVM 的栈上。借此,nonce 值被暴露给了 EVM, 因而抽象账户合约可以将交易的任何字段(包括 nonce)作为验签逻辑的一部分。

PAYGAS opcode:PAYGAS操作码 (0x49) 从栈上弹出 2 个参数:(栈顶)version_number,(次栈顶)memory_start。

Version_number允许未来通过新的实现变更操作码的语义。目前,操作码的语义如下:

检查version_number == 0(否则抛出异常)

读取gas_price = bytes_to_int(vm.memory[memory_start: memory_start + 32])

读取gas_limit = bytes_to_int(vm.memory[memory_start + 32: memory_start + 64])

检查contract.balance >= gas_price * gas_limit(否则抛出异常)

检查globals.transaction_fee_paid == False(否则抛出异常)

检查AA execution frame == top-level frame,也就是若当前 EVM 执行退出或回退,整个交易的 EVM 执行就暂停了(否则抛出异常)

设置contract.balance -= gas_price * gas_limit

设置globals.transaction_fee_paid = True

设置globals.gas_price = gas_price,globals.gas_limit = gas_limit

设置当前的执行上下文的remaining_gas = gas_limit - 已经消耗的 gas

在执行抽象账户交易的最后,(globals.limit - remaining_gas) * globals.gas_price的费用将转给矿工,remaining_gas * globals.gas_price的金额则退还给抽象账户合约。

PAYGAS操作码充当 EVM 执行过程中的检查点。任何回退都只退回到上一个检查点,此时合约收不到退款,globals.gas_limit * globals.gas_price的金额全都转给矿工。

这个新的交易类型和这两种新的操作码构成了 协议/共识 级别的全部变更,它们的语义相对直观,易于理解。

内存池规则

“内存池是指以太坊节点内部的,存储在内存里的数据结构,其中存储了用于挖矿的候选交易。Geth 称之为 ‘交易池(transaction pool)’;Parity 称之为 ‘交易队列(transaction queue)’。不管叫什么,它都是一个存储将被区块包含的交易的数据池。我们可以把它看做是待打包区块的 “候车厅”。

抽象账户交易的可编程验证方式引入了更多的复杂性。抽象账户交易并不预付 gas 费,而是依靠target字段指定的抽象账户合约(通过PAYGAS操作码)来支付 gas 费。理论上,抽象账户交易的处理分两个阶段:较短的验证阶段(在执行PAYGAS操作码之前)和较长的执行阶段(在执行PAYGAS操作码之后)。如果验证阶段失败(或抛出异常),会导致交易无效(就像签名无效的非抽象账户交易一样),该交易便不会被区块包含,因而矿工也就拿不到交易费了

因此,矿工和节点需要一个可预测的机制,以避免待处理的抽象账户交易的有效性依赖内存池中的其他待处理交易。否则,一笔交易执行失败可能会导致许多甚至全部的抽象账户交易无效,以此可以构造出拒绝服务攻击。为了避免这种情况发生,我们建议内存池对抽象账户交易执行两条规则(由矿工和节点执行,但不需要修改协议本身)。

操作码限制

为了防止抽象账户交易的有效性取决于抽象账户合约以外的任何状态,在验证阶段(即在执行 PAYGAS 操作码之前)以下操作码被视为无效:执行环境操作码

(BLOCKHASH, COINBASE, TIMESTAMP, NUMBER, DIFFICULTY, GASLIMIT)、

BALANCE(对任何账户的,包括target合约地址)、除了对target合约或预编译合约之外的任何外部调用/创建操作码

(CALL, CALLCODE, STATICCALL, CREATE, CREATE2)、

对除了target合约之外的任何外部状态的读取操作码

(EXTCODESIZE, EXTCODEHASH, ETXCODECOPY, DELEGATECALL)。

如果有抽象账户交易的 target 字段所指向的抽象账户合约违反了这个操作码限制规则,节点就要丢弃这个交易。如此,只要抽象合约的状态不发生变化,内存池中有效的抽象账户交易就将继续有效。

字节码前缀限制

如果非抽象账户交易可以影响抽象账户合约的状态,那么其就可以影响内存池中的抽象账户交易的有效性。为了防止这种情况发生,抽象账户交易应当只接受字节码前缀为AA_PREFIX的 target 合约。AA_PREFIX实现了对msg.sender的检查,确保其是特殊的ENTRY_POINT地址。这有效地防止了非抽象账户交易与抽象账户交易发生交互。

节点如果检查到抽象账户交易指定的合约没有这个AA_PREFIX作为字节码前缀(即不是抽象合约),就应该删除这笔交易。

这两条对抽象账户合约的限制确保了:(1)只有抽象账户合约的内部状态可以影响抽象账户交易的验证逻辑;(2)只有以同一个抽象账户合约为 target 的抽象账户交易可以修改该合约的状态。

因此,只有区块包含了以同一个抽象账户合约为 target 的另一笔抽象账户交易,才有可能使一个待处理的抽象账户交易无效。不过,鉴于这不是协议/共识层的变更,矿工在打包交易时可以随意违反这些规则。

扩展

上述协议变更和内存池规则足以安全地实现诸如智能合约钱包这样的单租户应用。其他高级用法则需要放宽上述规则或者需要实现多租户应用,这就要账户抽象化支持以下形式的扩展:

SET_INDESTRUCTIBLE操作码,它会禁用SELFDESTRUCT,并允许抽象账户合约在验证阶段通过DELEGATECALL安全地调用库函数。

S_STATIC操作码,如果当前的上下文是静态的则返回 true,并允许非抽象账户交易的调用者绕过之前的字节码前缀限制,安全地从抽象账户合约里读取数据。

RESERVE_GAS操作码,当一笔非抽象账户交易试图对一个抽象账户合约写入状态时,设置一个 gas 消耗的下限。这样做是为了强制攻击者在试图让内存池的抽象账户交易无效时至少要消耗一定的 gas,以此抑制其攻击动机。

还有一些其他的扩展,例如存储多笔待处理交易(译者注:内存池存储同一地址的多笔待处理抽象账户交易)、缓存验证结果、验证过程的动态 gas 限制和担保交易等,这些都是为了支持多租户应用和零知识证明。这些内容不在本文的讨论范围内。

下一步

目前,关于账户抽象化的 EIP-2938 还只是一个草案,正在以太坊研究论坛中讨论。下一步是考虑将这个 EIP 纳入即将到来的硬分叉中。EIP 的作者显然瞄着 Berlin (Berlin 暂时定于 2021 年年初的某个时间)之后的硬分叉,具体的时间表还不确定。所以,对于 EIP-2938 来说,现在还处于早期阶段。

此外,也不清楚是否有必要在以太坊的 Layer 1 (L1) 加入 EIP-2938。鉴于 Layer 2 (L2) 方案的灵活性(如我们之前的文章所述),我们也可以在特定的 L2 上实现账户抽象化,这样就不需要升级整个 L1 了。不过,在 L1 上统一支持账户抽象化要比在不同的 L2 上各自实现账户抽象化好。因此,在哪里实现,怎样实现账户抽象化还有待观察。

“账户抽象化在某种程度上不那么重要,因为无论 L1 是否支持,它都可以在 L2 上实现。” —— Vitalik 在谈及基础层的升级需求时表达了这个观点(这在他写的那篇以 rollup 为中心的以太坊路线图的帖子中提到了)。

Status:Status 钱包目前是一个外部账户钱包,它的独门绝技是将聊天支付和 Keycard (译者注:一种硬件钱包)集成到一个隐私信使服务中。目前其正在考虑加入一些智能合约钱包的特性,如多签和基于社交的钱包恢复。如前所述,支持 EIP-2938 有助于消除对中心化和低效的中继架构的依赖。

Status 也在评估 L2 解决方案,正如我们之前的文章里说的,这样做既可以在钱包里支持多链,也可以为多种用例提供所需要的扩展。例如,Keycard 正在探索一种支付网络,其所需的信用卡级别的可扩展性和近乎即时的终局性是目前以太坊网络无法满足的。此外,还有许多其他计划,如推荐计划、SNT reaction、Tribute-to-Talk 和 ENS 域名。所有这些计划都适合在 L2 上实现,因为这在部署上可行,而且能够提供还不错的用户体验。如果一个可行的 L2 方案实现了账户抽象化,那么在该 L2 上的项目都能享受账户抽象化的好处,而不必依赖 L1。

总结

以太坊协议的一个根本问题是,只有外部账户(EOS(可以支付 gas 费和启动交易执行过程,而合约账户(CA(做不到。账户抽象化(AA(是一个旨在改变这种区别的提案,允许具有特定构造的合约账户可以检查新增的一类交易 —— 抽象账户交易的有效性,并代为支付 gas 费,从而在不需要外部账户的前提下有效地启动交易的执行过程。

账户抽象化能够在不依赖中心化和低效的中继架构的情况下,显著改善钱包、交易混淆器、ÐApps 和 DeFi 的用户体验。通过引入一种新的交易类型,两种操作码以及两条内存池规则,账户抽象化能够安全地支持基本的单租户场景,如智能合约钱包。如果要支持更高级的多租户应用,如 Tornodo Cash,则需要对协议和节点规则做更多的扩展。

本文阐述了智能合约钱包对账户抽象化的需求。通过描述协议的变更和对节点的影响来强调账户抽象化的关键部分。我们还谈到了一些针对高级用法的扩展提案,最后通过介绍 Status 项目在以太坊上的路线图和优先级让读者对账户抽象化有一个比较清楚的定位。

减少 Web3 的摩擦及改善用户体验是这个生态里所有项目的首要任务。账户抽象化,最终一定会以某种形式在未来发挥重要的作用。

展开阅读全文

篇12:区块链智能合约的原理是什么?怎样才能触发智能合约生效?

全文共 901 字

+ 加入清单

区块链对很多人来说是非常神秘的系统,区块链智能合约很多人都不懂。其实,只要搞懂区块链智能合约的原理你就能懂区块链了。今天就来了解区块链智能合约的原理到底是什么?有智能合约的支持,区块链系统才能够正常的运行。只能合约的触发规则很多人都不懂,只有懂得了区块链智能合约的触发规则,你才能够更懂区块链到底是如何运行的。

区块链智能合约的原理是什么?怎样才能触发智能合约生效?区块链动态信息哪里获取?

1、区块链智能合约的原理是什么?区块链是去中心化的系统,这样的系统正常运行都是靠智能合约在维系。智能合约不是谁拟定的,是在系统形成之初就通过编程规定好了的,在一定的条件下就能够触发智能合约,触发了智能合约调用智能合约就能达成交易。这其中是不需要任何认为去管控和操作的。区块链智能合约的原理就是达到合约触发条件以后,自动执行合约内容。现在很多系统都采用了区块链智能合约原理,这样的原理对交易中的任何人都是平等的,而且更加的安全,没有任何所谓的中间商和主导者,是完全数字智能的管理方式。

2、怎样才能触发智能合约生效?不懂得区块链的人是不懂智能合约触发的。其实,智能合约就是一个很多条件加持的事务所版块。只要你将交易所需要的条条框框都做到了,你就可以触发职能合约自动生效。职能合约不需要人为干预,条件达到就会自动调用执行。区块链智能合约的原理是非常简单的,前面说到了。未来这种完全去中心化的系统能够得到更好地发展,是因为人们对于去中心化的需求是非常迫切的。没有中心管理者,平等公正安全快捷这些都是可以实现的,不再是遥远不可及的事情。

3、区块链动态信息哪里获取?要了解区块链自然要掌握足够多有关区块链的动态信息才行。要了解动态信息,你可以直接上OKLink的信息获取版块里面了解。这个浏览器是专门致力于服务区块链的浏览器。可以查询各种区块链的数据信息,还可以查询各种主流数字货币的相关信息,还有区块链动态信息也是实时更新的。区块链智能合约的原理这样的信息对于想要了解区块链或者投资区块链的人来说是非常重要的。投资有风险,在进行投资之前一定要上OKLink多了解信息,了解掌握的信息多了以后,无论是投资还是聊天你都心中有底。

展开阅读全文

篇13:区块链智能合约可以做什么?

全文共 646 字

+ 加入清单

智能合约做什么?

解释智能合约功能的最简单方法是借助示例。如果你曾经在经销商处购买过汽车,则最好知道有很多步骤使它令人沮丧。如果你无法立即支付购车费用,那么你将需要获得融资选择。这将需要进行信用检查,并且你将需要使用凭据填写许多表格以确认你的身份。有了这些,你将需要与众多不同的人进行交互,包括贷方,财务经纪人和销售员。为了补偿他们的工作,汽车的底价中包含了许多佣金和费用。

现在,区块链上的智能合约可以帮助你简化这个复杂的流程,由于交易参与者之间缺乏信任,因此涉及多个中介。通过将你的凭证存储在区块链上,贷方可以立即决定信用额度。之后,将在交易商,贷方和你的银行之间签定一份精明的合同,以便一旦将资金释放给交易商,贷方将获得汽车的所有权,然后根据商定的条件开始还款。但是,所有权的转移将是自动的,因为该交易记录在区块链上,在成员之间共享,并且可以在任何时间点进行检查。

智能合约如何工作?

智能合约通过遵循简单的“if/when…then…”语句来工作,该语句被写入区块链中的代码中。一台计算机的网络做动作时,预定的情况已经得到了验证。然后,当交易被视为成功时,更新区块链。让我们在供应链示例中看看这是如何实现的。

买方B希望从卖方A买东西,因此他将钱存入托管账户。卖方A将利用托运人C将产品运送到买方B。在买方B收到产品时,代管款项将汇给卖方A和托运人C。万一买方B没有收到产品在日期Z之前,将退还代管的款项。发生此交易时,将通知制造商G创建另一种已售出的产品以增加供应。一切都在区块链上自动完成。

展开阅读全文

篇14:以太坊智能合约可以改吗?以太币发展如何?

全文共 849 字

+ 加入清单

以太坊是区块链2.0技术代表项目,大家知道以太坊是智能合约平台,那以太坊智能合约可以改吗?普通人只知道以太坊有以太币,却不了解以太坊智能合约可以改吗?其实比特币才是区块链第一个创造的虚拟币,但是区块链1.0技术不够成熟,所以比特币只是一种网络比较拥堵,而且扩展性不足的数字货币。到了区块链2.0时代后,以太坊的诞生让人们对区块链更加了解,明白了区块链也可以创造智能化的去中心化合约平台。现在就一起来了解下以太坊平台,看看它的智能化合约可以改吗?旗下的以太币发展如何?

一、以太坊智能合约可以改吗因为以太坊是区块链技术创造的智能合约平台,所以以太坊的智能合约是不可以改的。因为以太坊的合约是通过代码写到了区块链上的,而区块链则是防篡改的,所以是不允许篡改代码的。当投资人将小部分的资金用来审计代码,这样就可以避免自己遇到智能合约漏洞而造成的大量损失。虽然区块链上的数据不能更改,但是它的代码都的开源性的,任何人都可以访问和查看。

二、以太坊旗下以太币发展如何以太坊旗下的以太币没有个数的限制,虽然创始人说考虑将它限定在一亿个以内,但是目前还没有这方面的操作。以太币有以太坊这个平台支撑,发展状况非常不错。而以太坊硬分叉时间后,以太坊平台进行了升级,改善了网络堵塞的问题后, 以太币价格又有了进一步的上涨。普通人虽然不知道以太坊智能合约可以改吗,但是他们知道最近以太币的行情不错,上涨到400美元左右了。以太币虽然价格不如比特币高,但是挖以太币不用买矿机,只需要买显卡就行。而且挖以太币比挖比特币相对简单很多。

虽然比特币是区块链技术第一个创造的虚拟币,但是有不少投资人却更看好以太坊平台。因为以太坊平台只要经过硬分叉升级就可以获得技术上的提升,而且还有利于以太币的发展。尽管现在以太币价格没有比特币高,但是未来以太币还有很大的上涨空间。新人虽然不知道以太坊智能合约可以改吗,但是他们知道以太币可以投资。若是想进行以太币投资的朋友,可以下载OKLink浏览器查询神器,只需要将交易信息输入就能搜索交易状态。

展开阅读全文

篇15:投资以太坊智能合约安全吗,如何才能保证投资安全?

全文共 810 字

+ 加入清单

投资以太坊智能合约安全吗?传统计算机程序是在个人节点上运行,这种随时都可以运作,但很多人觉得智能合约有安全漏洞。有些人会疑惑,投资以太坊智能合约安全吗,目前的技术人员一直都在想方设法去寻找一些比较合适的方式,希望能够有效提高安全性,希望能够保障资金的安全,不过从目前来看还是有不少的漏洞。

1、投资以太坊智能合约安全吗

把以太坊作为例子,这是一个具有开源效果的区块链平台,区块链上所有的用户一般都是在区块链的智能合约上,但是这中间可能会存在许多想要意见的漏洞,如果智能合约开发者测试不充分,又或者是没有重视,这就可能会产生代码有漏洞。而这些漏洞的存在就容易被黑客利用,并且容易被黑客攻击。功能强大的智能合约逻辑会更加的复杂,很容易会出现漏洞。所以从目前的情况来看,已知的漏洞就已经有很多,比如说时间错的依赖,短地址漏洞等等,所以在我们投资的过程中,随时都有可能会被利用,还是应该引起重视。

2、如何才能够保证投资的安全

投资以太坊智能合约安全吗,从目前的情况来看并不是很安全,但是要想保证投资的安全,首先就应该保持版本的更新,一旦发现有新的必要,及时就马上应该检查新的智能合约,然后再选择最新的安全技术,当然需要了解当前区块链的功能,因为有很多的陷阱还是需要注意,比如对于外部智能合约最好是格外小心,随时都可能会引起恶意代码,又或者是恶意的更改流程,我们需要知道这些公共功能是对所有人开放的,所以很有可能就会被其他人所利用。在我们选择投资时,任何一个环节都不可以忽视,只有认真的投资才能够带来好的效果。

投资以太坊智能合约安全吗?从目前情况来看并不是很安全,因为在这背后会有着许多的漏洞,这些漏洞的存在随时都会导致投资者被利用,因此要想保证投资的安全,首先就应该随时保持版本的更新,另外必须要使用到最新的安全技术,可以有效减少投资过程中的风险,可以避免自己在投资时被其他人所利用。大家可以到OKLink浏览器上查看更多更多的信息。

展开阅读全文

篇16:腾讯为中国区块链网络使用DAML智能合约语言

全文共 602 字

+ 加入清单

腾讯的数字银行WeBank正在为该链集成DAML智能合约语言,该语言将支撑中国的全国基于区块链的服务网络

腾讯的数字银行WeBank正在为其财团区块链FISCO BCOS探索DAML智能合约语言的集成,该链将支持中国国家级基于区块链的服务网络(BSN)。

WeBank于4月16日宣布,其创建者软件公司Digital Asset于去年开源的数字资产建模语言(DAML)的集成,将有助于其在中国金融,供应链及其他领域提供具有开创性的区块链解决方案。

DAML于2016年开发,是一种表达性语言,旨在供金融机构使用分布式分类帐技术(DLT)建模和执行协议。从表面上看,数字资产设计的语言是在私有执行环境(而不是开放执行环境)中最佳使用的。

大规模实施

据报道,BCOS是由深圳金融区块链财团(FISCO)构建的开源无币区块链平台。FISCO的创始成员包括WeBank,腾讯云,华为和深圳证券通信。据报道,其网络现已遍布全球10,000多名个人开发商和500多家企业会员。

经过许可的BCOS平台经过专门设计,可满足金融服务行业的监管要求和服务要求,并支持诸如零知识证明之类的隐私保护技术。

在2019年,它被选为中国BSN的技术基础设施,它将为电信和能源管理等领域的一系列国家控制的全国公共服务提供服务。

BSN 有望在本月首次推出进行测试的六个月后推出。该项目是中国国家政策智囊团,国家信息中心和国营公司的一项联合计划。

展开阅读全文

篇17:智能合约应用案例有哪些?如何看待目前市场上的智能合约平台?

全文共 814 字

+ 加入清单

从以太坊开始出现之后,区块链智能合约应用案例就开始在全球市场上陆续出现,在整个行业当中引发了巨大的市场反响。国内的很多数字货币玩家对智能合约应用案例并不是太关注,他们所关心的只是自己投资的数字货币的行情走势,这颇有些本末倒置的意味。那么智能合约应用案例有哪些?如何看待目前市场上的智能合约平台

1、智能合约应用案例有哪些?

比特币的出现代表了区块链技术的闪亮登场,很快就受到了众多投资者的欢迎。但是比特币也存在很多的缺陷的,例如开放性和功能拓展性就非常的差,最为主要的就是在这方面有所定位。从以太坊开始,智能合约应用案例开始不断出现,成为区块链产业发展当中非常重要的一个方面。从目前的市场上出现的一些智能合约应用案例来看,比较成熟的有数字身份证、区块链供应链、区块链金融服务平台、区块链医学实验等等。

国内的区块链爱好者是比较多的,而且呈现出不断增长的趋势。但是在众多的区块链爱好者当中,绝大部分人所关注的都是区块链数字货币,忽略了区块链智能合约技术在其他商业或经济活动中的重要作用,这是让人感觉到非常惋惜的。不过这两年的情况有所好转了,国内市场上新出现的一些智能合约应用案例已经不再是聚焦在数字货币领域,而是出现在了交通物流、食品安全、公共事业管理等行业当中,这一点还是非常值得欣慰的。

2、如何看待目前市场上的智能合约平台?

对于市场上的区块链科技公司来说,打造一个区块链智能合约平台是很多机构都在从事的事情。目前国内外市场上出现的智能合约平台最起码有数百个之多,那么该如何看待这些智能合约平台呢?

尽管市场上出现了很多的智能合约应用案例,其中不少平台的对外宣传让人感觉非常的高大上,以致于恨不得马上投资或使用该平台。但是从整体的行业发展现状来看,有非常不错的智能合约应用平台,也不乏一些滥竽充数的平台存在。例如曾经的某网红孙某晨所搞的波场币,根本目的不是为了发展区块链业务,而是为了圈钱。普通投资者在选择这类平台时,一定要特别谨慎。

展开阅读全文

篇18:一文了解Polkadot生态中的智能合约

全文共 1473 字

+ 加入清单

Polkadot是基于 Substrate 区块链开发框架开发的异构多链系统,Substrate 为开发区块链提供了必要的基础功能模块,开发者可以使用 Substrate 为特定业务搭建平行链。

Polkadot 作为中继链,虽然本身不支持智能合约,但 Substrate 为智能合约功能加到平行链上提供了解决方案,其合约模块支持 Wasm 智能合约。

智能合约语言 ink!

Polkadot生态中的智能合约平台以 Wasm 虚拟机为主,从 EVM 到 WebAssembly 是智能合约虚拟机发展的趋势,ETH 2.0 也将会支持 Wasm 虚拟机。

ink! 是一种嵌入式领域专用语言(Embedded domain specific language,简称 eDSL),是为基于 Substrate 区块链开发框架开发的区块链,提供编写 Wasm 智能合约的解决方案。ink! 建立在 Rust 语言之上,遵循 Rust 语言的规则和语法,它设计的目标是友好、简洁和高效。

ink! 语言由三个抽象层组成,其中 Core 层包含了实现智能合约的核心功能,Lang 层基于 Core 和 Model 层之上,大部分开发者只需用到 Lang 层就可以编写智能合约代码了。

智能合约 vs Runtime 模块

使用 Substrate 构建去中心化应用程序有两种不同的方法:Substrate Runtime 模块和 Substrate 智能合约。

Runtime 模块

基于 Runtime 模块开发的目的是产生高效快速的节点,它提供了对整条区块链的底层访问接口,可以完全控制区块链的底层逻辑,可以访问所有模块中的任何存储项,并对其进行修改和控制。

但是,Runtime 模块对开发人员有很高的门槛,低水平的开发者可能会用不正确的逻辑或糟糕的错误处理构建一条区块链。同时,它不提供交易还原保护,也没有向节点运行的计算引入收费系统。在进行 Runtime 模块开发时,必须正确评估 Runtime 逻辑的各个部分并对其计算费用,避免被破坏者滥用而损害整个区块链网络。

智能合约

Substrate 智能合约允许用户在区块链核心逻辑的基础上增加业务逻辑,同时建立了防范破坏者的保护机制。

智能合约对于区块链本质上说更安全,因为智能合约不能直接修改区块链或其他智能合约的存储状态,它的能力仅限于修改自身的状态以及对其他智能合约或 Runtime 函数进行外部调用。执行智能合约过程中的计算和存储状态都将被强制收取费用,这确保了区块链资源不会被滥用和无限存储。因各种因素导致智能合约执行失败时,智能合约不会更新状态,同时会交易回滚。当然,这些管理开销会降低智能合约执行的效率,并增加运行的成本。

Coinversation 的选择

Substrate Runtime 模块和 Substrate 智能合约都是解决问题的工具,至于选择哪种工具来解决问题,取决于问题本身的需求,以及开发、部署和维护所要付出的成本。

Coinversation Protocol 是一个合成资产发行协议与合约交易平台,整个系统主要的功能模块有:用抵押铸造合成资产、去中心化合约交易所、抵押池、费用池、预言机、流动性挖矿。其中,Coinpro.MintC (铸造和销毁 cUSD 的铸币中心)和 Coinpro.Exchange (交易合成资产的去中心化交易所)是系统的核心产品。考虑到核心产品需要有严格的资源控制机制,以及交易回滚的保护机制,因此决定采用 Substrate 智能合约的方式来开发。

展开阅读全文

篇19:Tezos升级将智能合约费用降低了75%,以吸引DeFi

全文共 778 字

+ 加入清单

Tezos正在寻求吸引DeFi开发人员,实施协议升级以将智能合约汽油费用降低约75%。

市值排名前20的加密资产Tezos(XTZ)已成功完成其最新升级“ Delphi”,该升级旨在将智能合约汽油费用降低75%,以吸引去中心化金融(DeFi)开发人员在其区块链上建立基础。

德尔菲于9月3日提出。这是Nomadic Labs,Metastatic和Gabriel Algour的一项联合事业,旨在“帮助个人在Tezos上开发智能合约”。

根据Delphi开发人员的联合帖子,升级“对于在Tezos上启用针对DeFi,收藏品和游戏等领域的新颖应用程序至关重要。”

“智能合约的大小和复杂性受到天然气限制的限制,因此人们试图建立功能丰富的合约需要一段时间来改善这些限制。”

Tezos是第四代区块链平台,它利用权益证明并促进智能合约和去中心化应用程序。

Tezos的核心价值主张是,它是一个“自我修正的区块链”,它正式利用链上机制进行提议,测试和激活协议升级,而无需网络进行硬分叉。

Delphi升级包括对气体计算的优化,包括将管理器操作的基本成本从10,000个气体单位减少到1,000个气体单位,以及实施用于类型检查和IO的新成本模型。

通过此更新,Tezos块现在可以包括简单的XTZ事务处理三倍半和多资产转移的四倍,而合同执行的内部调用次数是Delphi实施之前的十倍。

德尔福还将Tezos的存储成本降低了四倍,从每千字节1 XTZ到0.25 XTZ。XTZ目前的交易价格为$ 2.06。

“在涉及多个调用其他合同和大量计算的大型和复杂合同中,好处最为明显。”预计Nomadic Labs将在12月初之前提出基于Delphi新功能的进一步升级。

Tezos于2017年7月进行了首次代币发行-筹集了2.32亿美元,这是当时迄今为止最大的ICO-在一年后推出测试版主网之前。

展开阅读全文

篇20:智能合约的三大要素是什么?区块链包含的技术

全文共 844 字

+ 加入清单

许多人接触智能合约是从以太坊平台开始的,不过很多人都不知道智能合约的三大要素是什么?若是想要了解智能合约的三大要素,那就接着往下看!区块技术是当前比较流行的一种技术,利用区块链就可以完成智能合约平台的创建。比如以太坊就是采用的区块链技术打造的,不但现在以太坊平台很受欢迎,而且旗下的代币也很有发展的潜力。今儿就一起来学习智能合约的三大要素是什么?区块链还包括哪些技术呢?

一、智能合约的三大要素是什么

智能合约虽然平时我们接触的不多,但是我们接触以太坊平台的机会还是挺多,有的人会使用以太坊平台发展其他项目,还有的人则会创造出更多的代币。不过以太坊智能合约的三大要素的什么?三大要素是指的自治、去中心化和自足。区块链技术之所以具备去中心化,正是因为智能合约包含着这个要素。另外智能合约中的自治指的就是启动了活跃就可以快速自动的运行。因为智能合约可以自己获得资源,所以具有自足的要素。智能合约就像是一个可以由编程来自从运行的售卖机一样。

二、区块链还包括哪些技术呢

区块链除了包含着智能合约,还有加密技术和时间戳等多种技术。有了智能合约的去中心化,区块链技术就像是一个没有中心服务器的网络,实际上它具有无数的服务器,不过这些服务器都是平等的。另外区块链中含有加密技术,可以让数据无法删改,而且用户的信息还可以很好的保护。明白了智能合约三大要素后,可以帮助我们更好的了解区块链技术。区块链的用处很多,它还有分布式记账的特性,所以能创造出这么多的数字货币。

区块技术能够已经创造了多种数字货币,有比特币、以太币和莱特币等等。正因为有区块链有智能合约,而智能合约的三大要素有去中心化,所以数字货币才有这么多人投资。数字货币的价格发展不会受到人为的控制,它只会随着市场变化而变化。若是想仔细地研究数字货币,大家可以下载OKLink浏览器,在OKLink浏览器上面能看到各种币的价格,还能查看比特币新挖出的区块大小、高度和上面的交易数据。只要大家想要了解区块链和数字货币,OKLink浏览器就能直接搜索了解。

展开阅读全文