0

以太坊与智能合约的关系是怎样的【精选20篇】

浏览

6447

文章

67

篇1:区块链中的智能合约是指什么?

全文共 765 字

+ 加入清单

智能合约是一类自动实行的合约,买卖双方两者之间的合同条款可以直接写进代码行中。在其中包括的代码和合同跨分布式,分散的区块链网络存在。该代码控制实行,并且事务是可跟踪且不可逆的。

智能合约容许在不一样的匿名方两者之间开展可信的交易和合同,而不用中央机构,法律系统或外部实行机制。

虽然人们已经开始将区块链技术主要视作比特币的基础,但它的发展已大大超出了支撑虚拟货币的范围。

你需要知道什么

智能合约是自动实行的合约,买卖双方两者之间的合同条款可以直接写进代码行中。

美国计算机科学家尼克·萨博(NickSzabo)于1998年发明了一类称为“BitGold”的虚拟货币,他将智能合约界定为实行合约条款的计算机化交易合同。

智能合约使交易可追溯,全透明和不可逆。

智能合约的工作原理

智能合约最开始是由美国计算机科学家NickSzabo于1994年提起的,他在1998年发明了一类叫做“BitGold”的虚拟货币,比比特币发明早了整整10年。实际上,经常有传言Szabo是真正的中本聪(SatoshiNakamoto),他是比特币的匿名发明者,但他否定了。

Szabo将智能合约界定为实行合约条款的计算机化交易合同。他希望将诸如POS(销售点)之类的电子交易方法的功能扩展到数字领域。

Szabo在他的论文中还提起了对生成资产(如衍生工具和债券)实行合同的建议。Szabo写道:“这类新证券是利用以多种方式将证券(比如债券)和衍生品(期权和期货)组合一起而产生的。十分复杂的付款期限结构现在可以构建为标准化合同,并且以低交易成本开展交易,由于对这类复杂术语结构开展了计算机分析。”

简单点来说,他指的是具备复杂术语的衍生产品的买卖。

Szabo在本文中的很多预测都是以区块链技术之前的方式实现的。比如,现在衍生品交易主要利用计算机网络使用复杂的期限结构开展。

展开阅读全文

篇2:波卡上的智能合约平台对比:Acala、Patract、Moonbeam 和 Plasm

全文共 5365 字

+ 加入清单

以太坊作为目前最大的智能合约平台,其网络易拥堵、手续费高昂、交易速度慢等问题一直困扰着开发者和用户。在冉冉升起的波卡生态中,也有一些项目在开发新的智能合约平台,它们是否能解决以太坊现存的问题,将智能合约和 DApp 生态带向新的高度呢?

今天,我们就来对比波卡上的四个智能合约(DApp)平台:Acala、Patract、MoonbeamPlasm,它们都计划成为波卡上的平行链,并且都具有部署智能合约的功能。

目前 Substrate 生态中可用的合约技术分为 EVM 和 Wasm 两类,将来可能还会产生其他的合约技术,下文提到的 Wasm 代指 Substrate 的 Contracts Pallet (合约模块),将来也可能产生使用Wasm的其他合约模块。

波卡上的智能合约链的机遇与挑战

由于波卡本身的特性,建立在波卡上的智能合约平台拥有一些天然的后发优势,比如合约手续费更低、速度更快、可以和其他链之间进行交互、支持跨链资产等。

但每一个新的智能合约平台,都会面临一个非常棘手的挑战,那就是生态的建设。其核心问题是 “如何吸引更多的开发者使用你的平台” ,因为只有更多的开发者源源不断地开发出好项目,才能吸引更多用户来使用你的平台,反过来又会吸引更多的开发者,形成网络价值不断增长的良性循环。

目前以太坊的生态已经发展了好几年,合约开发环境成熟、工具齐全、开发者多,已经有了一些高质量的 DApp,这些都是以太坊的优势,也是波卡上的智能合约平台急需赶上的。

而对于波卡生态来说,由于波卡中继链本身是不具有智能合约功能的,所以波卡也非常需要有智能合约平行链来补齐合约这一环。因为并不是所有的业务场景都需要去做一条平行链,智能合约开发更便捷、成本更低,而且已经有了不少较为成熟的应用,显然智能合约早已是区块链生态中不可或缺的部分了。

Moonbeam:兼容以太坊的合约平台

Moonbeam 的定位是兼容以太坊的波卡智能合约平台。想让开发者能够以最少的更改,将现有的 Solidity 智能合约和 DApp 部署到 Moonbeam。主要为那些已经在以太坊上进行了开发,想要多链发展的智能合约提供一个入口,来便捷地部署到波卡生态中,还可以使用以太坊上的各种工具。

最大程度兼容以太坊

Moonbeam 链对以太坊的兼容主要通过使用Frontier 层来实现。Frontier 由 Parity开发,Moonbeam也有一定的参与,它是 Substrate 上的以太坊兼容层,能让基于 Substrate 的链运行未经修改的以太坊合约。Frontier 目前还在开发中,主要包括以下几个模块:

Web3 RPC 模块:现有的工具和应用程序就是通过 Web3 RPC 与以太坊交互的,Moonbeam 部署了 Web3 RPC,就可以让现有的工具和应用连接到 Moonbeam,而对于这些工具和应用来说,就像只是连接到了另一个以太坊网络一样。举个例子,只需要对 MetaMask 进行简单的配置,就可以让 MetaMask 指向一个基于 Moonbeam 的节点,然后用户就可以正常地像平时一样使用 MetaMask,而对于 MetaMask 来说它只是在和 Moonbeam 上的 Web3 RPC 或 API 对话。

Ethereum 模块:模拟了以太坊如何工作,包括区块、收据、日志、能够订阅日志事件等。

完整的 EVM 实现:EVM 是以太坊的合约虚拟机,Moonbeam 集成了 EVM 模块,从而兼容以太坊上的 EVM。

Moonbeam 上的地址使用 H160 账户地址、用于签署交易的密钥使用 EDCSA。虽然这意味着用户可以使用原有的以太坊账户和密钥来和 Moonbeam 交互,但也同时意味着在波卡中使用的公私钥无法在 Moonbeam 上使用。

总的来说,Moonbeam 在尽可能兼容以太坊 Layer 1。这些措施可以让现有的以太坊合约只需要很小的改变,就能很容易地部署到 Moonbeam 上。但同时,由于 Moonbeam 对以太坊选择了全盘继承,在一些 Substrate 本来已经做出优化的点上,Moonbeam 也只能继续沿用以太坊的旧方案,这可能会让其上面的智能合约继续被以太坊的思路限制,比如过大的节点和不合理的 gas 机制等。

开发者激励

Moonbeam 计划推出两个网络,分别是部署在 Kusama 上的 Moonriver 和部署在波卡上的 Moonbeam,两个网络都将拿出占总量 4.5% 的代币作为 “开发者培养计划” ,用以激励早期采用其网络的开发者。

支持 EVM + Wasm虚拟机

Plasm 同样也引入 Frontier 来兼容以太坊。与 Moonbeam 不同的是,Plasm 打算同时支持 EVM 和 Wasm虚拟机,让 Plasm 上既可以用 EVM 运行以太坊上已有的 Solidity 合约,也可以运行用 ink! 编写的Wasm合约。Plasm 还引入了 Solang,支持将 Solidity 编译为 Wasm 在 Wasm虚拟机上运行。

Layer 2 可扩展性

Plasm 还有一个特点就是在 Layer 1 和 Layer 2 上都支持智能合约功能,来进一步提升可扩展性。Plasm 引入了一种支持所有二层协议的虚拟机 OVM,支持了 Plasma、闪电网络等众多二层扩展方案,从而能在 Layer 2 进行代币的转账。再通过引入支持 Layer 2 智能合约的扩展方案 Rollups,来在 Layer 2 上也能使用智能合约。目前 Plasm 已经成功将 ZK Rollups 部署到了 Plasm 网络上。

创新点:DAppRewards机制

通过经济机制对开发者进行激励也是一个吸引开发者的办法。Plasm 设计了 DApprewards机制,将 Plasm 网络中的 50% 的 staking 奖励分配给 DApp(或智能合约)开发者。网络中的其他用户也可以通过提名来参与智能合约,DApp 提名人也可以获得和质押数量成正比奖励。

Bodhi:在兼容以太坊的同时保留 Substrate 的优势

Acala 的定位是做波卡上的 DeFi Hub,由于现有的很多 DeFi 合约都部署在以太坊上,所以 Acala 也考虑了以太坊的兼容性。

Moonbeam 和 Plasm 都集成了当前的 Substrate EVM 兼容性解决方案,即用 Frontier 模拟以太坊的节点。它旨在实施全套以太坊 RPC 并模拟以太坊区块生产过程,从而让现有的以太坊工具(例如 Metamask 和 Remix )可以与启用了 Frontier 的节点无缝协作。

但 Acala 认为,像 Frontier 这种模拟以太坊节点,全盘继承以太坊优缺点的方式,可能并不是那些选择波卡生态的智能合约真正想要的。Acala 将 EVM 视为 Acala/Substrate/Polkadot 的一部分,希望让 Acala 网络提供与以太坊截然不同的体验。

因此,Acala 将采用一套自行开发的以太坊兼容方案 -Bodhi。这套方案不兼容以太坊 RPC,而是做了一个 JavaScrpt SDK,模拟 Web3 provider,可以把 Polkadot Extension 包装成类似 MetaMask 的扩展。这样现成的以太坊 Dapp 也能用 Polkadot Extension 来和 Acala EVM 交互。

同时 Bodhi 避免了以太坊的一些遗留问题,在兼容以太坊的同时保留了 Substrate 的优势。比如让 Acala 拥有可定制的经济机制、允许用户使用任何支持的代币支付交易费、本地跨链功能、链上治理机制(不再有锁定的资金)、完全可升级(无需进行合约迁移)等。而这些创新是在以太坊上不可能实现的。

不过,这也意味着以太坊上的合约想要部署到 Acala 上,可能还需要对代码进行一些调整来兼容 Acala 的经济模型。

专注于 DeFi 场景

和通用的合约平台不同,Acala 更注重 DeFi 场景的优化。部署合约可能也会设置一点门槛,来避免类似 Uniswap 假币泛滥的情况。同时还会整合 Acala 的 DEX、稳定币、Idot 等。

完善的开发者工具和开发环境

之前说过,在波卡上建立智能合约平行链,要面临的一个问题就是缺少好用的开发环境和工具。对此,Moonbeam、Plasm 和 Acala 的方案都是:既然以太坊已经有了成熟的开发工具,那我们就提供一个方法,让开发者可以方便地去用以太坊的现成工具。

而 Patract 则认为Wasm 虚拟机才是未来,所以专注在 Wasm 合约上。他们的方案是在波卡生态里搭建一整套的开源开发工具套件和开发、测试、发布环境,让开发者可以愉快地开发 Wasm 合约。Wasm 是波卡智能合约模块采用的一项较新的技术,基于 Wasm 的智能合约已经被证明比基于 EVM 的具有更好的性能和可扩展性,也可以使用更高级的 AssemblyScript、Rust、C++ 等高级语言编写更复杂的合约应用。

Patract 做的东西,在开发者端包括:

Jupiter:独立的智能合约测试网,提供给合约开发者测试合约链的环境。

Ask!:AssemblyScript 版的 Ink!合约框架,吸引TS/JS的开发者,给不愿意使用rust的合约开发者另一个选择。

Redspot:Wasm合约开发工作流和脚手架:对标Ethereum生态中的Tuffle/Redhat,让合约开发项目化,自动化的工具。Redspot采用插件化设计,运行开发者添加自己设计的插件丰富Redspot的功能。

Europa:Runtime 和合约运行沙盒:对标Ethereum生态中的EthereumJS/Ganache,给合约开发者提供了丰富的调试信息,便于快速开发合约。

Elara:实时和可扩展的波卡 API:对标Ethereum中的Infura,给合约项目方提供节点的Endpoint,不用自行搭建节点获取数据。Elara采用了Substrate-archive导出状态数据,可以平行扩展接受千万级访问。

Megaclite:零知识证明的底层支持:在Jupiter/Patract链中提供零知识原语支持,可以允许项目方设计zkRollup或其他零知识相关合约。

Metis:Ink! 合约标准库:对标Ethereum中的openzeppelin-contracts,给合约开发者提供可复用的轮子,不必从零开始编写合约代码。

Himalia:多语言合约 SDK:对标Ethereum中的Web3J,Web3Py等SDK,给合约项目方提供不同语言的环境,丰富的接口与合约进行交互

Leda:合约监控台:对标Ethereum生态中各类合约监控设施,让合约项目方随时监控合约的存储情况,代币转移情况,合约调用情况等等。

Carpo:专注开发合约的智能WebIDE:对标Ethereum中的Remix,但其将会是对Patract以上合约开发工具的集大成者。Carpo将采用最新的WebIDE技术,使得云端开发无限贴近本地开发,同时完整的云端让开发者无需搭建任何开发环境即可进行开发,开箱即用的Patract工具链给合约开发者提供了一体化开发体验,让开发者的开发、调试、测试和部署的合约过程如丝般顺畅。

在用户端包括:

Patra Store:作为 Patract 平行链钱包和 DApp 生态的入口,在测试网阶段将集成一些示例应用和配套开发工具套件用法演示,帮助开发者快速开发 Wasm 合约和前端界面,帮助用户快速进入波卡新合约生态。

Patra Scan:专门为智能合约链优化的区块链浏览器,集成比统一的链浏览器更丰富的合约数据信息展示,增强统计和自定义的查询功能。

Patract Hub 工具一览

使用 DOT 和 KSM 作为本地代币

Patract 也将运行一系列的智能合约平行链 Patract Network。

比较特别的一点是,Patract Network 不准备发行代币,而是争取成为波卡和 Kusama 的系统平行链,直接使用 DOT/KSM 作为 Patract 合约平台的代币。系统平行链就是指对于一些对波卡网络很有用,有利于网络公共利益的链,不需要再参与平行链竞拍,而是可以直接作为系统级平行链接入波卡。

如果这一点真的实现了的话,那么对于用户来说,可以直接使用 DOT/KSM 支付合约手续费,操作比较方便。对于 Patract 来说,等于直接导入了拥有 DOT/KSM 的用户群。

总结

总的来说,这四条波卡生态的智能合约链各有千秋。

Moonbeam 注重对以太坊的全面兼容,让开发者能够以最少的更改,将现有的 Solidity 智能合约和 DApp 部署到 Moonbeam。

Plasm 在兼容以太坊的同时,通过 Layer 2 的方案提高可扩展性,并且在 Layer 2 上支持智能合约。同时 Plasm 还通过 DApp 奖励计划来吸引合约开发者。

而 Acala 专注于 DeFi 场景,在兼容以太坊的同时进行了一些优化,还设置了一定的准入门槛,更适合部署金融领域的智能合约。

Patract 则是为 Wasm 合约开发者提供良好的开发环境和完善的工具,并且直接使用 DOT/KSM 作为原生代币,让开发者的体验更加顺滑。

这些 “后浪” 能否发展壮大,带动新一轮的创新,将智能合约和 DApp 生态推向新的高度呢?让我们拭目以待吧。

展开阅读全文

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

全文共 304 字

+ 加入清单

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

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

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

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

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

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

展开阅读全文

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

全文共 334 字

+ 加入清单

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

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

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

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

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

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

展开阅读全文

篇5:一文了解智能合约近期的五大科技突破:标准化、系统化、合规化、架构化、工程化

全文共 11972 字

+ 加入清单

前言

智能合约的重要性已经得到世界许多国家的认同,例如德国银行协会(Association of German Banks)在 2019 年认为脸书 Libra 最厉害的机制是“可编程经济”(Programmable economy),而这就是智能合约带来的革命。由于可编程经济带来的是一个新的金融生态, 和传统金融生态不同。如果普林斯顿大学提出的“数字货币区”(Digital Currency Areas) 理论正确,世界正在走向一个基于平台的可编程经济体系,这也会是世界各国科技发展的重要依据和竞争广场。因此,智能合约技术是极其重要的。2020 年 8 月世界银行(World Bank)的报告再次提醒我们智能合约新科技的重要性,特别是在供应链金融和保险上的应用。

编写《智能合约:重构社会契约》目的在于研究开发合规智能合约的理论基础。在2013 年世界开始的是链上代码的工作,2016 年开始重视合规智能合约。由于“The Dao 事件”,许多单位包括法学院、律师事务所、金融研究机构、区块链研究院等立刻开始研究合规智能合约技术和法规。这些单位包括美国商品期货交易委员会(Commodity Futures Trading Commission, CFTC) 、 英国央行、 欧洲央行、 国际货币基金组织(International Monetary Fund, IMF)、德国银行协会、世界银行(World Bank)等。经过 4 年的研究,上述单位对智能合约的技术和相关法律问题有了初步的了解,例如 2020 年 8 月世界银行发布白皮书认为智能合约有助于普惠金融。我们在《智能合约:重构社会契约》[1]书中介绍了相关重要研究结果。

过去 4 年国外在智能合约上的研究发展还是非常快速[2],大量律师事务所都发布白皮书,讨论相关的法律问题。而“币圈”在过去几年也邀请大量律师加入其团队,甚至邀请前监管人员加入,以保障其业务合规,以至于不论是合规市场或是“地下币圈”市场都走向合规的道路。

另外,由于《智能合约:重构社会契约》一书需要对这领域发展进行系统性的介绍, 笔者重读了一些经典论文,同时间也研读了近几年的学术研究报告。研究过程中,笔者总结了智能合约近期五大科技突破。这五大突破不但指出研究方向,提出产业发展方向,而且可以评估和预测现在项目的发展将来会遇到的瓶颈和可能采取的解决方案。例如 ISDA的工作就可以预测Defi 和脸书Libra 将来的发展,这两个是现在区块链界热门课题。

五大突破简介

正确的需求分析:国际掉期和衍生品协会 (International Swaps and Derivatives Association,ISDA)是这方面最大贡献者 [10]。他们最近非常活跃,他们的报告改变了现在智能合约的定义和流程,也改革了平台的设计和基础设施,以及相关法律。另外他们的智能合约标准居然没有一行智能合约代码,令人惊讶。如果我们细读他们制定的标准,这将对智能化科技和产业有重大影响,而且可以预测现在许多系统会遇到的问题,这是近期智能合约工作中最大的突破。

正确的研究路线:当我们重新读李嘉图合约(Ricardian Contract)的时候,竟然发现合规智能合约发展路线居然走的是李嘉图合约路线,而不是原来萨博(Nick Szabo) 的路线,因为几乎所有合规智能合约的工作都是从李嘉图合约出发的。因此,对合规智能合约发展路线的研究需要更新、迭代历史观点,突出实际贡献者的作用。以李嘉图合约出发,智能合约工作走在正确路线上。

正确的定位:美国 CFTC 报告[9]在这方面是最精彩的,虽然只有 PPT,但是思路清晰、观点犀利,对于这领域提出正确的路线。如果有人想了解智能合约技术、应用、相关法律以及方向,这份报告是首选。但是如果细读该报告,就会发现其不只是介绍智能合约,还有重大方向性突破,他们提出的概念将彻底改变未来智能合约的发展,例如智能合约以后会以碎片化、标准化、服务化和共享化的方式发展,而不是以往传统的整体式、孤岛式发展,这已经与传统智能合约的概念有很大的不同。而其中的碎片化则是现在社会信息化的一个重要指标。

创新的架构:英国央行在 2020 年 3 月提出的将来三个可能的智能合约设计,打破了传统智能合约的架构,例如以太坊的架构[11]。由此,智能合约的架构不再是传统区块链和智能合约系统 1 对 1 的架构。这在系统架构方面的重大突破,对学术界和产业界具有巨大的影响。

创新的合约语言和实验:雅阁项目(Accord Project)也是我们遇到的另外一大惊喜, 由于该项目提出的形式化合规语言和模版,和计算机界智能合约工作大不相同。

在计算机界,形式化语言和验证方法未考虑到合规问题,以至于不论如何严谨的开发智能合约代码,仍然无法确保所开发的产品具有法律效力。而雅阁项目提出的合同模版和模型语言(这些从合规端点出发),落地在计算机语言和验证方法上,这是巨大创新,是法律和计算机结合的一个案例。虽然这工作还有许多地方可以继续进步,但这表示这方向是可行的,不是不可能的任务,这是重大科技突破。

上述五大突破改变了学者对智能合约的认知,也改变了学术研究方向,有的甚至改变了未来产业的发展。本文将围绕这五大突破来讨论。

这五大突破都是国外的贡献。在讨论这些亮点后,我们也提出中国的皋陶模型,该模型是融合上面五大突破的优势的模型。

突破 1—标准化:ISDA 让我们明白什么才应该是智能合约的流程

ISDA 协会在 2018 年开始这方面的工作。而这个工作一个特别让人惊讶的地方,就是智能合约标准里面没有代码。从 1994 年智能合约起源,智能合约的工作都有代码,例如从李嘉图合约,到近代的以太坊智能合约,到斯坦福大学“CodeX 项目”,可计算的合同(Computable Contracts),都有代码。可是 ISDA 智能合约标准里面没有一行代码,这使得我们对智能合约的认知产生了巨大的改变。这表示部分智能合约的工作和代码没有直接的关系,而这部分的工作重要,且需要标准化。

智能合约分为两种: 1)一种是有法律效力的,也是实际的智能合约; 2)链上代码(Chaincode),就只是运行在区块链上的代码,没有法律效力。在国外第一种也称为“法律智能合约”(Legal smart contracts),以此来区别没有法律效力的链上代码。我们一向使用“智能合约”和“链上代码”来区分这两种机制。

我们专注于智能合约,而不在链上代码。但是这两者的差异在哪里?一些计算机学者也提出需要法律考量,但是法律考量是做什么却不清楚。ISDA 的工作解答了该问题。ISDA 认为智能合约代码与智能法律合同(由软件表示法律合约或法律合约的要素)是有区别的,由此ISDA 提出了智能衍生合同的概念。

(1) 认知上的改变

ISDA 的工作就是研究在现在法规下,智能合约如果需要自动执行,应该如何进行? 这流程应该是如何?ISDA 在其发布的白皮书中提到智能法律合同的两种不同模型:外部模型和内部模型。在外部模型中,编码条款保留在法律合同的外部,仅代表自动执行合同的机制。在内部模型中,自动执行的条款已包含在法律合同中,但用比自然语言更严谨的表示形式进行了重写。计算机可以采用这种更为形式化的表示并自动执行这些条款。智能衍生合约基于内部模型,某些条款可以自动执行,这些条款以一种能够实现高效自动化的形式表示,而其他不能自动执行的条款用自然语言表示。

ISDA 认为直接将现有的金融交易流程转成代码是不明智的。因为现有流程有部分是人工作业的,以保持流程的灵活度。但是如果这些人工流程也自动化,这流程就需要非常严谨的分析。因为一旦自动化,以前“灵活度”必须嵌入智能合约代码内,不然可能会出问题。

ISDA 在其白皮书中提到了其主协议的 5 个主题,分别是:事件、付款和交付、出清轧差、争议和合同订立与法律关系。例如事件这一主题,ISDA 举例说明了事件的种类和概念。虽然ISDA 没有提供系统设计,但该概念却提供了很大启发。

事件的种类:“事件” 是指除了针对特定交易的合同条款外,还会发生大量外在事件,这些事件可能会影响合同当事人继续履行一项或多项交易下的义务的能力。即要对进 行正常交易的合同,要针对其可能发生的不确定性事件采取对应措施,并定义在合同条款 内。注册事件有各网点提交完成,即为合同参与方,其中要考虑的事件又分为正常交易事 件和非正常交易事件,而非正常交易事件处理起来更为复杂,又分为违约事件和终止事件。

外在和内部事件互相启动:一个外在事件可以启动一个智能合约的自动执行,执行中有可能产生内部事件,可是这些内部事件对于其他机构或是同一机构内其他账户,可能就是外在事件,自动启动其他相关智能合约的执行。于是,一个复杂事件启动的动态网络就出现了, 并且同时间可能会发生大量的事件产生以及许多智能合约自动执行的情况。

事件处理的复杂性:ISDA 一直在提醒读者,这样的系统会非常复杂,并且该模型建立的系统应该将整体视为金融交易基础设施,与许多机构,金融或是非金融机构进行交互。在此基础设施上,例如一个金融机构出现新事件,该事件要经过该基础设施传送到其他单 位,包括在这些单位运行的区块链和智能合约系统。其他单位可以是监管单位,而且同一件事件在这些区块链系统或是智能合约系统都代表同样信息,不能被更改。该模型的参与单位可以是银行、保险公司、交易所、金融机构、公证处、监管单位,CSD(中央证券托管系统)、市场监管局和国税局等,这些金融机构、监管单位等共同参与合约条款的制定, 涉及不同的现实交易活动。

事件和智能合约的交互:事件模型的主要功能是由合同参与方注册事件,将自然语言合同以事件标准化,即在合同的内部处理逻辑下(以软件代码形式表述,主要是条件语 句),对合约进行预处理,将包含事件属性、合同属性的数据分别打包存储,并通知公证 处、第三方电子存证机构等介入进行公证、电子存证。事件启动后根据事件身份证找到对 应事件数据包和合约数据包提交智能合约系统进行交易自动化处理,同时涉及账户资产的 信息提前提交到核心账本系统进行资产核对或资产证明,并查找相应账户的征信(或信用) 记录。若存在资产造假、或参与方在失信名单之列等情形,可通知合约参与方或监管机构, 启动终止事件,终止合约履行。

图 1事件模型图

事件处理系统是智能合约系统的根本:上图可以清楚看出,合规智能合约系统需要一个基础设施,而这基础设施就是“事件处理系统”(event-processing system),不是传统智能合约系统。传统智能合约系统是需要接受事件处理系统传送过来的数据才开始执行。

表 1 智能合约标准化认知的改变

表 2 智能合约可实现的工作

(1) 学术上的影响

我们认为ISDA 的研究是最近几年来智能合约最大的突破,这研究使智能合约的工作产生本质的改变,不但改变了我们对智能合约的基本认知(上表),也改变了系统架构

(事件处理系统和预言机的加入),还改变了开发流程(从更新现在金融流程开始,而不是编译现在流程到智能合约代码)。在我们书中(《智能合约:重构社会契约》)也表达了该观点,后面的学术工作现在才开始。

ISDA 的研究工作,开启了对智能合约的一个更为广大知识领域的研究,也是一个新型交叉研究课题,这课题包含 3 个领域,法律、金融、计算机。这工作以法律为出发点, 但是却需要(最终)落实到计算机建模语言、系统、基础设施上。在建模的时候,金融知识和法律知识为主导,但是后来却由计算机来实现。从合规流程开始,逐步向法律智能合约靠拢,最终实现智能合约法律化。

ISDA 是以现在金融市场流程出发,连接现在机制。而我们提出的比特犬智能合约模型,表示合规流程需要有以下特性: 1)基于过程的原则;2) 投管机制;3)预言机原则; 4)共识机制;5)问责原则;6)回滚原则[1]。这些都是在现在法规下金融交易的原则, 也代表大部分的智能合约代码都需要处理上面 6 个机制。比特犬模型强调要通过领域分析来开发智能合约模板,同时所提供的模板可以在开发过程中复用。代码从智能合约模型自动生成,并运行于区块链平台。智能合约模型生成代码可以做到完全自动化,对于没有在智能合约模型中描述的外部合约,不能自动生成代码。在这种情况下,将生成智能合约与外部智能合约交互的接口。

根据 ISDA 的研究,事件处理是一项重要工作。基于该理论,我们提出基于事件处理的烽火台模型和石榴模型。烽火台就是古代的事件预警系统,而石榴是多籽复杂系统,代表事件处理系统的紧迫性和复杂性。

(2) 产业上的影响

我们预测未来一些新型产业会出现来服务智能合约业务。ISDA 中提到的智能合约衍生品是一个前景巨大的发展方向,可帮助股票、利率等期货通过智能合约实现完全自动化交易。每一种期货对应一种或多种智能合约衍生品,每一种智能合约衍生品包含该种期货的交易规则和法律,其本质上来说,所谓的衍生品也是智能合约模版。但以后产业不会限制在衍生品交易上,在其他许多领域都可以应用。

另外,任何人仔细研究 ISDA 的标准后,会对现在分布式金融(DeFi)的发展有不同的看法。DeFi 的路线就是根据现在金融市场流程来建立的经济体系,和过去比较具有很大进步,但是 ISDA 的报告清楚指出,新数字金融市场不应该根据现在的金融流程,而是根据改进后流程。这也是笔者在《迎接“约满天下”时代的道路:智能合约的蝶变》文章[12]内对于 DeFi 观点的依据。这也解释为什么 DeFi 系统一直在市场上出现问题,解决一个后另外一个新问题又会出现。原因很简单,他们还没有建立基于ISDA 标准的基础设施。

另外包括脸书的 Libra 智能合约系统也还没有考虑到 ISDA 的标准,这表示 Libra 智能合约系统离实际应用还有一大段距离。如果脸书也学习 DeFi 的做法,将现在的流程写成智能合约,Libra 智能合约系统以后也会出现相关问题。

突破 2—系统化:李嘉图合约(Ricardian Contract)引导智能合约研究走入正途

许多书籍和论文讨论智能合约的时候,都会引用 1994 年萨博关于智能合约的文章, 认为这是智能合约的起头。笔者认为萨博的智能合约仅是一个概念,实际上并没有系统设计。而智能合约系统的设计是李嘉图合约的贡献。后来的工作,包括雅阁项目,斯坦福大学(Stanford University)的可计算合同 CodeX 项目、比特犬模型,都是根据李嘉图合约的路线开展的。可以说今天智能合约的发展是依据李嘉图合约在发展,而不是在原来萨博的智能合约概念上发展。李嘉图合约是伊恩格里格(Ian Grigg)开发的项目。

在网上也有一些文章,在争论萨博和格里格两套合约系统的差异。其实如果以他们二人原来的文章来讨论意义都不大,因为原来的文章都是在区块链没有出来前完成的,现在的智能合约(或是链上代码)和当时他们的文章的概念都相差甚远。我们只能以他们最后留下来的(最新)观点来评估他们的贡献。格里格认为智能合约需要从合同模版出发,由现在合同上模版变成代码来建立智能合约代码,这也是现在主流智能合约开发方法。李嘉图合约从法律观点出发,使用法律术语,可以嵌入法律条款,机器可读,也可以像普通文本书件一样可读,以便律师和签约方可以方便地阅读合约,进行法律协商。区块链的来临无疑为李嘉图合约创建了一个开发平台,且合约涉及到的见证人、买卖双方、金融机构、监管部门等均需作为链上用户区实现合约。

(1) 认知上的改变

李嘉图合约的贡献,在于分解智能合约开发的流程:以前智能合约运行规避监管系统, 从开始开发到完成均以代码为主。李嘉图合约的贡献是开发合规智能合约分为 2 大部分:

先建立一个合规智能合约模版模型,这些模版模型验证后,就是有价值的知识产权;

使用已经开发的模版,创建代码(例如代码自动生成或是人工开发)。

因此 “书写合同”会向“从合同模版到合同模型的建模”转变。而第一步主要在法律上分析、建模、验证,而第二步主要是计算机界的工作。在这 2 步骤都需要法律和计算机的工作。

这路线也是软件工程经常提的重要原则: 先分解问题, 然后克服分解后的难题(Divide and Conquer)。因此笔者认为智能合约这名词是萨博的贡献,但是智能合约技术是格里格的贡献。

(2) 学术上的影响

从 1994 年开始,智能合约一直少受到关注,一直到以太坊出现后,才成为热门课题, 特别是 2016 年“The Dao 事件”后得到许多人的关注。但是合规智能合约的发展是格里格开发的李嘉图合约奠定的基础。斯坦福大学在这基础上,增加了机器学习在可计算合同(Computable contracts)上。同样雅阁项目(亮点 5)开发的新型法言法语建模语言,也是在李嘉图合约基础上开展的。

(3) 产业上的影响

李嘉图合约带来建立合规数字金融市场的可能性,而雅阁项目就是其中一个明证。

突破 3—合规化:CFTC 入门指南突破性地解决技术难题以及提出新产业结构

作为美国一个重要监管单位,CFTC 的金融科技创新中心 LabCFTC 发布了《智能合约入门指南》(简称“指南”)。不要小看这名词“入门指南”,这入门材料包含解开智能合约开发的难题的方法以及将来产业的分工结构。

(1) 认知上的改变

该“指南”所述的主要思想:智能合约要由“逃避监管”变为“监管利器”,且监管机制是智能合约最大的应用。“指南”中肯定了智能合约这一技术在市场中的广泛应用, 首先明确了智能合约的许多风险,包括运行、技术、网络、欺诈等风险,承认以太坊的智能合约是不具有法律效力的合同,以后要走有法律效力的合同路线;虽然现在智能合约系统有风险而且技术不成熟,但是其还是认为智能合约技术可以在金融交易上使用,特别提出在衍生品交易使用。

CFTC 是监管美国商品期货交易的监管单位,而期货就是一种衍生品。 这是 CFTC 给世界的一个重大信息,CFTC 表示鼓励大家积极研究智能合约。就智能合约的监管机制而言,基于标准化的智能合约的交易算法,是交易所监管单位最好的监管机制,而且是实时监管,也是标准化的监管。监管机制可在适当的时间,由智能合约自动执行 [4,5] 。而CFTC 在讨论这些问题的时候还解决了两大难题:

1) 难题 1:合规智能合约大而且复杂,以至于难开发

CFTC 解决上述难题的方法是不要求智能合约完成一笔交易的全部流程,而是完成部分交易流程。这是一个重要概念。例如现在使用信用卡交易,需要 20 道手续,如果使用智能合约来完成信用卡交易,智能合约会非常大而且复杂。CFTC 认为,该信用卡交易至少可以由 20 个智能合约共同完成,每一步骤由一个智能合约完成。最大程度地简化了智能合约的开发。

2) 难题 2:许多单位都在开发智能合约,以至于融合困难

所谓的标准化是将一个交易拆分成若干部分,每一部分由碎片化的标准服务型智能合约实现。这会颠覆之前智能合约的开发流程,即由定制完成整个智能合约开发,到由标准化的原子智能合约集成实现。今后智能合约开发,想要实现一种服务,只需通过将所需的标准化的原子智能合约集成起来,相当于从“零件组装”跨度到“部件组装”,将开发流程简化,方便、高效、快速。

表 3智能合约合规化认知的改变

(2) 学术上的影响

传统上,一个智能合约完成一项工作,例如交易,但是CTFC 将这改为完成部分交易, 而且采取标准化的工作流程。而这工作需要 3 个领域专家合作完成:金融、法律、计算机。

另外 CFTC 的观点也将区块链区分为几种:可交易的链系统,只可以存证的链系统。监管机制的发展还会根据CFTC 的指南而发展。

表 4 不同的链系统及其案例

支持监管但是不能交易的链系统因为交易才需要监管机制,能监管但是不能交易的链没有价值,没有案例

(3) 产业上的影响

根据CFTC 的分工,以后智能合约产业可以从横向和纵向两个不同角度进行划分,即: 以应用领域分,也可以以交易步骤分。可能不同的产业之间会用到同一个(微)智能合约的服务,同样,一个(微)智能合约会向多种产业提供服务,处理面向不同行业客户的交易。

交易和监管标准化是 CFTC 提出的最大贡献。以前,每一套系统需要单独验证,以后有可能一套合约系统可以提供服务给许多系统。区块链产业将走向工业化的制度。

突破 4—架构化:英国央行打破传统智能合约架构,走向康庄大道

英国央行在 2020 年 3 月发布了一份报告,讨论零售数字法币(Retail CBDC)的设计。

其中提出 3 种不同的智能合约平台架构。

(1) 认知上的改变

传统上,智能合约系统运行在区块链平台上,1 对 1 对应,而且没有监管单位在上面。但是英国央行以 3 种架构破 2 个传统思维,这 3 大架构解答了一个问题:智能合约平台应该放在哪里?在区块链系统内,还是在区块链系统外并行处理,还是在区块链外但是先处理?[3]

打破传统智能合约只能在区块链里面执行的传统:这里英国央行提出合约传统(S) 和区块链系统(或是账本系统L)关系:

S 在L 里面, 同时进行, 这是传统思维;

S 和 L 可以并行处理,就是智能合约平台和区块链平台同时间处理交易,例如S 做清算,L 做交易;

S 比 L 先处理,就是智能合约系统执行后,交给区块链系统再处理,例如 S

先处理客户信息,确保客户信息正确后才到L 系统交易;

S 比 L 后处理,例如在 L 系统进行交易,交易后,由在外面的 S 系统进行清算。

打破链上代码的传统,智能合约代码有央行(监管单位)控制和执行,而且可以和服务提供商的合约代码一起合作,这个是管理上的创新。

但是英国央行还是停留在 1 对 1 的思维上,只是 L 和 S 的位置和执行顺序改变。由此我们中国团队提出另外的一个创新:

提出多对多的架构, 一个L 系统可以和多个S 系统合作,如下图:

一个L 系统和多个S 系统合作(左图);

一个S 系统可以和多个L 系统合作(中间图);

多个L 系统可以和多个S 系统合作(右边图)。

我们提的三驾马车模型就是多个左图:即部分合约在核心账本内,部分合约在并行系统上,而在接口还有另外一套合约系统,这是 1 个 L 系统和多个 S 系统合作的案例。在这配置下,交易上的完成功能可以在核心系统里面完成,可以独立作业就选择在核心账本外并行处理来减轻核心系统的工作量,而实时监管和交易在接口上再次减轻核心系统的工作量。总之,我们的理念是系统对于金融数据要有监管机制[13]。

图 2 多对多架构(左边是 1 对多,中间是多对 1,右边是多对多,BC 是链,SC 是合约)

明显的,英国央行在智能合约上的思路和美国 CFTC 智能合约思路非常靠近。美国CFTC 认为智能合约 2 个最大应用是完成交易和监管机制,而英国央行推出的 3 个智能合约框架就是执行这 2 个应用。同样,在三架马车架构下,客户的服务可由区块链提交给多个智能合约完成,也可由服务提供商将多个原子智能合约组装起来,部署并使用。这样智能合约不再是技术孤岛,不单单是只是软件验证或是形式化验证,更是参与到完整的系统架构中。

下图就是一个例子,两组智能合约,都是监管合约,一组负责 KYC,一组负责反洗钱(AML),这两组智能合约都进行一笔交易的部分流程,而每月笔交易都要经过 KYC 和AML 智能合约步骤才能完成。

图 3 每一笔交易中进过两组智能合约的监管

(1)学术上的影响

由于S(合约系统) 和 L(账本系统)可以多对多,也可以先行,后行,并行,这样智能合约平台设计比以前复杂但是功能更强大。这样区块链和智能合约,以及和预言机的协议必定需要更新。

原来智能合约三原则,即:1)数据完全来自区块链; 2)计算结果有共识; 3)计算结果完全存在区块链上,还是假设区块链和智能合约系统是 1 对 1 对应的。现在在多对多对应下,对于一个智能合约来说,它可以从多个区块链中获取数据,再将数据写回多个区块链中。由于多对多架构,发送链、计算链、和存储链可以是不同链系统。智能合约原则必须更改:

传送原则:合约数据必须来自区块链,即使数据来自预言机,但是数据先需要存留在区块链上才能在智能合约系统运行。但是这里智能合约使用的数据可以来自不同区块链系统,但是每个数据都有数据源(传送链的数字身份证)和时间戳信息。

计算原则:合约计算有共识,这原则仍然成立,每个智能合约系统还是有自己的区块链系统(例如选择其中相关系统为主支撑系统);

写回原则:合约计算结果可以存在不同区块链上,由于合约系统的共识不一定在存储链上进行,这次写等于是一个新的“写”作业,由存储链进行共识后将这数据存下。每个数据写回的数据也都有数据源(计算链的数字身份证)和时间戳信息。

基于以上新的智能合约三原则(针对多对多架构),可保证数据来源真实有效,计算结果的准确性,以及最终数据可保存。这些协议已经申请专利。

(2)产业上的影响

现在 1 对 1 的合约系统限制了区块链和智能合约的应用和发展,因为智能合约系统被一个系统完全控制,有大量的限制。而且根据CFTC,合约服务应该是碎片化,标准化, (微)服务化的,这样就需要允许不同单位一起参与建立合约库,而且仍然需要有标准化的管理。

基于多对多的S(合约系统) 和 L(账本系统)体系可实现多个交易申请的同时处理, 同时完成多个交易数据的写回,这样大大扩展合约系统,也扩展账本系统。另外外面服务商业提供其他合约服务,和央行合约服务一起配合。这些对区块链和智能合约产业都会产生影响。

例如一个国家可能有 10 万个交易系统,每个交易系统都需要交易服务和监管服务。传统 1 对 1 的配置,这会非常痛苦,但是在多对多的配置下,例如一些 KYC 服务库可以和几万个交易系统合作。例如这个合约库可以复制到这些交易所(使用区块链数据湖[13]的双锁定的方法),在这几万个系统里面有同样的算法。而这合约系统容易扩展,可以支 持大量的系统。这是熊猫模型的精神,算法和数据分开,当我们把算法和数据分开的时候, 系统就可以扩展,而我们把不同算法放在不同合约库的时候,扩展度再一次扩展。这样就 可以支持链满天下,约满天下。

为什么这些创新开启了康庄大道?拿上图 KYC 和 AML 智能合约组来看,如果我们将他们都放在一个系统里面,这系统会多复杂?但是将这些系统标准化,松解化后,系统完全不同。

突破5—工程化:雅阁项目指出智能合约的法言法语可以是形式化建模语言

雅阁项目出发点和李嘉图合约类似,也是少数考虑法律效力的智能合约项目。

(1)认知上的改变

雅阁项目 2位创始人都是法律专业背景,包括法学老师。也由于这一原因,大部分项目讨论都集中从现在法律合同导出智能合约。事实上,他们工具后面有强大的科技支撑, 而这就是形式化智能合约语言 Ergo以及这语言后面的证明系统(proofsystems)。这语言 后面的形式化语言最后是基于 Coq形式化语言,也是函数型编程语言。这样雅阁项目和其他可计算合同项目就有了一个差距,其他项目就是有合同模版,这里也有合同模版,而 且合同语言是基于形式化语言。

智能合约开发可以使用特殊的语言,可以是 Solidity,可以是 Move。为了匹配上述预言机、智能合约、区块链多对多的架构特点,智能合约的开发语言不仅仅只是代码,更需要一种新型的建模语言。雅阁项目的模型就是一个重要参考,其语言 Ergo 后面是强大的形式化语言,编写的逻辑条款可以直接进入形式化验证。而这语言又支持合同和条款语言,所以法务人员可以很快的建立合同条款,然后经过形式化的验证证明这些条款在逻辑上是正确,最终可以翻译成不同的计算机语言。

雅阁项目开发智能合约的思路,从法律的角度出发,创立合同模型,定义形式化语言, 并将自然语言合同转化为该种语言的合同并处理。雅阁项目也提出合同模版,和李嘉图合 约提出基于法律条款的模版类似,不同的是雅阁提出一种语言和合同模型,且以现在合同 模版为出发点是正确的发展方向。

图 4 雅阁项目的架构

(1)学术上的影响

该项目带来重大信息,就是智能合约合规化和软件工程方法没有冲突。雅阁项目也是 我们遇到过最完整的开发流程。这项目里面的一些技术路线也非常创新,会给其他相关项 目一下新思想。计算机界在过去几年提出许多形式化方法来解决智能合约代码安全的问题, 但是在合规上却一直没有实质进展。雅阁项目代表一个新方向。

我们的观点不在于这是一个最好的解决方案。事实上我们认为雅阁项目模型有许多地 方可以改进。但是这项目却是我们遇到第一个以合规作为出发点,而又有形式化语言、建 模工具和验证的系统,这是思想上重大突破,也是以后其他智能合约系统可以参考的地方。

(2)产业上的影响

这项目提出形式化,可执行的法言法语,是一个重要方向。如果被标准化,智能合约的工作可以更加细化保证合约有法律合规性以及软件质量。

总结:皋陶模型

在研究上面 5 大突破后,我们团队提出皋陶模型,融合了上述 5 大点的优势,标准化,服务化。类似于ISDA 实现标准化,像英国央行的一样由监管单位完全控制区块链。标准化又包括平台标准化和智能合约语言标准化。智能合约平台第一需要区块链平台,而区块链必须标准化,特别在中国。另外还加上本土化、制度化、系统化的工作。只有实现制定明确的标准, 才能真正有标准可依,才能让更多人明确规则,遵循规则。智能合约的自动执行,更是需要事先有一套清晰的标准。[1,7,8]

展开阅读全文

篇6:不同类型的智能合约盘点

全文共 454 字

+ 加入清单

加密交易所的智能合约

创建和自定义智能合约,专门用于在去中心化交易所执行交易功能。由于去中心化交易所可以基于各种类型的加密货币进行操作,因此我们创建了智能合约以在买卖双方之间进行加密交易期间跟踪,执行和管理资产。由托管服务驱动的去中心化交易所可以从智能合约结束时自动部署争议解决方案,而无需任何第三方参与。

面向人群的智能合约

专门针对ICO,STO,ETO,IEO和任何种类的区块链众筹计划的定制智能合约开发服务。创建的智能合约在代币发行,协议和声明过程中可以具有高度的安全性和可追溯性。

DApp的智能合约

用于分散式应用程序的智能合约开发。由于dapp是独特的一种区块链应用,因此将基于dapp的性质进行独特的自动化程序。我们是为dapp游戏创建智能合约的专家,该合约是任何种类的区块链网络的基础。

企业智能合约

区块链不仅适用于加密货币应用,还可以翻新任何行业。在优先考虑区块链的地方,我们可以为整个生态系统创建单独的智能合约。我们可以为医疗保健,供应链,房地产,汽车,保险和金融等受区块链授权的行业创建智能合约。

展开阅读全文

篇7:一文了解账户抽象化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 的摩擦及改善用户体验是这个生态里所有项目的首要任务。账户抽象化,最终一定会以某种形式在未来发挥重要的作用。

展开阅读全文

篇8:一文解读如何使用Nexus Mutual购买DeFi智能合约保险

全文共 2335 字

+ 加入清单

DeFi成为大热之际,我们一定不能忘记智能合约的安全风险,以太坊创始人Vitalik Buterin近期公开表示,DeFi虽然不错,但并不提倡普通人都将毕生积蓄投入其中,因为大家忽略了智能合约的风险,它的利率和传统银行账户相比要高很多,这意味着DeFi产品风险很大,奔溃几率都大了许多。

但哪里有需求,企业家就会创造新产品满足市场需求。DeFi已经产生针对这一问题的解决方案。DeFi保险项目nexusMutual,专门针对智能合约漏洞风险,免除投资者参与DeFi的后顾之忧。

Nexus Mutual创始人Hugh Karp近日亲自发文,为你解读如何用Nexus Mutual购买DeFi保险。

如果你一直在积极参与Yield Farming热潮,或者只是使用任何一种DeFi协议,那么考虑保护自己免受潜在漏洞的侵扰可能是有意义的。

过去,智能合约发生过存在重大事故。尽管整个安全实践正在改善,但你永远无法确定智能合约是否将始终按预期运行。

本文我将向你展示如何在Nexus Mutual购买智能合约保险(Smart Contract Cover)来覆盖Solidity代码失败的风险,以及它有多么容易。

什么是Nexus Mutual?

Nexus Mutual是一种互助型(people-powered)保险,成员共同加入一个DAO,共同承担风险。它采用了非常古老的相互保险的概念,并使用代币激励以非托管的方式运行。

Nexus Mutual的第一款产品是Smart Contract Cover,它在“代码意外导致重大财务损失”的情况下提供索赔。

该产品的灵感来自2016/17年度的DAO hack或Parity多签钱包事件。成员们使用经过测试的staking程序对索赔进行投票。

2020年初的bZx遭到黑客入侵事件,Nexus Mutual完成了第一笔索赔要求。

了解你的保险需求

第一步是了解你使用的是哪种智能合约系统,以及需要购买哪些保护。

Nexus Mutual提供系统基础上的保护,这意味着你可以购买Compound或MakerDAO或Uniswap或Curve等产品的保护。如果要与多个协议进行交互,或者使用的是互为基础的协议,则购买范围需要完全涵盖每个协议。

获取报价时,你需要选择以哪种货币(ETH或DAI)购买保险,以及多少天的保险期限。

因此,你需要知道:

你正在使用什么系统;

你在每个系统中投入了多少?和

你打算使用多长时间。

例如,如果你要在Compound借出5000 USDC,那么你可能想购买价值5000 DAI的Nexus Mutual保险。如果Compound出现问题,你将获得DAI赔付。

或者,如果你要向Balancer池提供cUSDC,则你可能希望购买Compound和Balancer的保险,以得到更全面的保险。

不提供哪些保险

Smart Contract Cover提供的是针对智能合约失败的技术风险(Solidity代码)的保险。

目前,它不提供诸如预言机失败,治理攻击,闪电贷操纵市场,经济/激励失败或智能合约之外的其他任何东西的保险。

Nexus Mutual团队正在努力扩大保险范围,因此请留意将来更全面的保险范围。

成为Nexus Mutual会员

如果你不是Nexus Mutual会员,则需要注册并成为会员才能获得保险。但是,任何人都可以随时查询并收到报价。

在Gas费很高时(现在几乎是所有时间都很高!),最好单独完成会员资格,然后再返回以获取报价。

会员资格涉及KYC流程和0.002 ETH的少量会员费。

KYC要求提供身份证件,例如驾照或护照,通常在几分钟内完成,但团队最多可能需要24小时才能人工审核完成。

在注册过程中,The Mutual会为你产生一个ETH地址作为你的Nexus Mutual会员地址。这是你与Nexus Mutual系统进行交互所必须使用的地址,并且每个人/实体只能使用一个地址。

你可以在之后切换你的ETH地址,但这仅在你没有任何有效的保险情况下才有效。

作为KYC的一部分,你可能需要移除屏蔽或者任何广告拦截器,以使我们的第三方KYC提供商系统正常工作,一旦KYC完成,可以将其恢复。

如何使用Nexus Mutual购买保险

一旦你成为会员并了解了承保范围,购买保险相对较为简单。

第一步是获取报保费报价:

1、转到app.nexusmutual.io。连接你的MetaMask,然后单击侧栏上的“购买保险”选项。

2、从想要购买的保险列表中选择需要保障的智能合约。

3、输入保额和币种。你可以选择ETH或DAI

4、输入你希望获得保障的时间。保险期限必须至少为30天,最长可以为1000天。

5、得到保费报价。得到一个保费报价不需要交易,因此你可以多次测试不同的选项。报价有效期为60分钟。如果你对报价满意,请单击继续。

上图为Nexus Mutual对Compound v2上10 ETH保额保险365天的保费

6、生成保费后,即可继续购买。你必须接受免责声明,如果你没有NXM代币还必须批准NXM代币转移。

7、签署Metamask交易。一旦确认,恭喜!Nexus Mutual正式为你提供该智能合约保险。

索赔

如果发生了被盗事故,那么你可以随时从Nexus Mutual应用程序的“Manage Cover”部分提交索赔。这将创建一个工作流程,以供Nexus Mutual的索赔评估人员进行表决。提交索赔要求存入少量NXM以防止垃圾索赔,但是在购买保险时,你已经拥有所需的NXM,因此你无需采取任何其他措施。

如果你的索赔得到批准,它将自动支付到你的地址。

总结

Yield Farming以及与DeFi进行交互是可以带来丰厚回报,但需要时刻考虑一些风险。Smart Contract Cover虽然可以为你提供技术代码故障的保护,但也得确保你自己有去进行研究并了解所承担的风险。

展开阅读全文

篇9:以太坊智能合约部署数量大概是多少?

全文共 385 字

+ 加入清单

以太坊智能合约部署,在去年3月份的时候就已经出现,已经成为整个行业的最高,在过去的一个月内,以太坊智能合约部署的数量已经超过200万份,但是仅仅从价格这一方面来看,对于以太坊来说,这本来就是一个非常糟糕的月份,令人惊讶的就是执行数量的差别还是比较大的,那么到底有多少数量呢?

一、 以太坊智能合约部署的数量

根据目前的数据显示,从2019年4月份开始,智能合约执行的数量早就已经明显的超过100万份,最近的一个峰值出现在2019年的10月份的数量,已经接近120万份。对于以太坊来说,智能合约的增长是一种比较常见的积极信号,这就意味着更多的用户都在使用这些合约,不过与此同时存在一些问题,根据数据显示,尽管智能合约过程中已经增加活动,但是根据观察同样可以放在目前的合约中,能够有效降低价值,2019年6月份所花费的eth价值基本已经接近34,138美元。

二、 什么是智能合约

展开阅读全文

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

全文共 879 字

+ 加入清单

智能合约

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

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

身份管理

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

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

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

供应链用途

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

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

展开阅读全文

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

全文共 849 字

+ 加入清单

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

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

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

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

展开阅读全文

篇12:以太坊智能合约安全吗?在以太坊进行交易有哪些优势?

全文共 851 字

+ 加入清单

以太坊是一个去中心化系统,这个系统都是通过智能合约进行约束的。以太坊智能合约安全吗?很多人都想问这个问题,今天就拉了解一下以太坊智能合约安全吗。以太坊这样的系统在众多的去中心化系统中算是比较庞大的一个了。相比于传统的服务系统,以太坊系统的优势还是非常大的。那么,在以太坊进行交易有哪些优势呢?下面就来好好的了解一下,让你更懂以太坊这个系统。

1、以太坊智能合约安全吗?以太坊这个系统上面进行任何交易都是通过智能合约调用进行的。以太坊智能合约安全吗?自然是安全的。如果没有达到智能合约触发的条件,那么,智能合约是不会是生效的。而智能合约生效完成交易是会进行全网广播的,所以不会有任何的安全隐患。之所以有那么多的人看重以太坊区块链系统,主要就是因为安全性足够高。在以太坊进行交易不仅交易速度非常快,而且交易的安全性是非常高的。这样没有中心管理者的系统真的非常的有用,未来随着时间的推移,随着人们对以太坊的了解加深,以太坊会变得越来越流行,越来越大。

2、在以太坊进行交易有哪些优势?以太坊和传统的服务系统之间还是有很大区别的,首先以太坊是没有中心管理者的,没有这个管理者的系统是更好的,因为有人为管理就会有作假嫌疑。以太坊进行交易是不存在撤回的,生成的信息也是不能修改的。也就是进行了的交易就进行了,全网都是知道有这个交易的,任何人都可以查询到这个交易的存在。所以这样的交易是不会有数据更改这样的作假风险的,非常的安全,还能打假。以太坊智能合约安全吗?看到这里,相信你能够肯定的说出以太坊是安全的。

3、以太坊多少钱一枚?以太坊的价值是非常大的,现在一枚以太坊价值一千美元。像以太坊这样值钱的数字货币全球并不多。以太坊智能合约安全吗?自然是安全的。以太坊的价值不仅仅是存在于网络上的,还是可以兑换成为现实中的货币的。你可以直接联系想要购买以太坊的人将以太坊卖掉,也可以直接上交易所通过币币转化将以太坊兑换成为人民币或者美元进行线下花销。当然,无论怎么兑换以太坊,上OKLink看看以太坊价格动态都是第一步要做的。

展开阅读全文

篇13:详解以太坊智能合约安全性漏洞 如何有效减少 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]。

展开阅读全文

篇14:Theta网络增强功能引入了智能合约功能

全文共 618 字

+ 加入清单

Theta网络升级现已上线,其中包括一个更新的区块浏览器,能够处理智能合约数据。

Theta是促进分散式视频流传输的区块链,最近更新了其主网,增加了许多好处。

Theta Labs在周四的博客文章中说,Theta的主网现在具有智能合约功能,块高度为8,411,427 。(在发布时,Theta的区块链显示高度为8,411,845,因此更新应该已经生效。)

Theta是一个与最初的代币发行热潮相伴而行的项目。该项目于2018年1月泡沫接近尾声时完成了ICO,筹集了2000万美元。尽管那个时代的许多此类ICO随后死亡或面临监管行动,但Theta仍在向前发展。

注意到更新带来的另一个好处,该帖子还补充说:“对于新的赌注和增加的额外赌注,在块8,411,427,Guardian节点的赌注阈值降低到1,000 THETA。”

其他新增功能包括有关该协议信息的新网站,经过修订的生成智能合约数据的区块浏览器以及Theta-js Javascript SDK的发布。

该帖子澄清说:“此次升级将不需要现有代币持有者采取任何行动或移动任何代币-不会进行任何形式的代币交换。” 该项目预计将在未来几周内进行进一步的更新,包括针对Theta钱包的Google Chrome扩展程序。

Theta于2020年初启动了其主网,今年在加密货币领域发布了多个头条新闻。在对加密货币空间充满积极的价格行动的一年中,Theta在2020年上半年的价格上涨了1000%以上。

展开阅读全文

篇15:腾讯为中国区块链网络使用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 有望在本月首次推出进行测试的六个月后推出。该项目是中国国家政策智囊团,国家信息中心和国营公司的一项联合计划。

展开阅读全文

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

全文共 849 字

+ 加入清单

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

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

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

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

展开阅读全文

篇17:以太坊上的智能合约运行速度怎么样?

全文共 1414 字

+ 加入清单

2021年2月3日,以太币的价格创下了1531美元的历史新高。大量运用智能合约的去中心化金融的应用是以太坊区块链增长的主要动力。公开信息披露,超过280亿美元的价值被锁定在基于以太坊的DEFI中,数据突破新高。以太坊的智能合约这个概念被推上了热门。那以太坊智能合约速度运行的快慢,将会影响市场对以太坊的认可。以太坊智能合约究竟是什么?未来以太坊智能合约速度的运行还可以更快吗?下面由笔者为各位网友简单对以上这些问题作出解答。

以太坊智能合约是指,一段部署存储在以太坊网络上的代码,运行在以太坊的虚拟机EVM中,提前设置了使用合约的条件,这段代码可以在按照满足事先设置的合约使用条件时,自动运作,执行合约的条款。以太坊智能合约速度运行得越快,能处理的交易越多。

熟悉区块链的网友应该都清楚,以太坊不同于比特币只做比特币一种数字货币的分布式账本。以太坊网络除了支持以太币交易外,也支持各种金融行业的产品在以太坊网络上交易,例如股票、债权、借款凭证等。既然以太坊的智能合约适用范围这么广,那么以太坊智能合约速度是怎么回事呢?

众所周知,数字货币交易需要缴纳交易费,比特币的交易费就是直接支付一定额度的比特币作为手续费。同样的,以太坊的交易费也是需要支付一定额度的以太币,而实际内部每个交易,都按智能合约的规定来执行命令,每执行一个命令都会产生一定的Gas的消耗,不同执行命令对应消耗不同数量的Gas。Gas具体需要多少,是通过以太坊中智能合约的执行计算量来决定的,我们可以通俗理解为算力消耗,例如:执行一次转账交易的命令会需要 21000 个 Gas。所以在以太坊中,只要是会消耗算力的命令,都会有一个对应的Gas标价。这个手续费最小单位是 wei;1000wei等于kwei;1000kwei等于mwei;1000mwei等于gwei;1000gwei等于szabo;1000szabo等于finney;1000finney等于ether。

而以太坊的矿工们,则有权利选择先打包哪一个智能合约,智能合约上支付的交易费越多,矿工们就越喜欢打包该智能合约,智能合约运行的速度就越快。如果我们想要实现最快的智能合约运行速度。我们可以按Gas limit一笔交易最高的交易费来支付,同时又给予矿工额外的附加Gas。这样我们就可以获得最快的速度。以用以太币交易为例,如果需要马上完成这笔以太币交易,我们额外支付了0.001ETH作为附加费用,这个费用就是附加Gas。

既然以太坊智能合约速度对每一笔交易影响这么大,那么以太坊智能合约速度还有办法提升吗?答案是:有的。

以太坊2.0未来会在第1阶段完成分片链的可扩展性技术机制,这可以极大提升以太坊区块链吞吐量。就运行速度来说,两者的差距就像在街道小路开车和上高速公路开车的对比这么明显。

我们可以通俗地理解为,通过分片链的交易方式,可以多进程地并行处理智能合约的交易,目前以太坊1.0遇到主网交易量剧增的情况,以太坊智能合约速度就会因为每一个节点需要排队处理和验证而变得低效。每增加一条分片链,就像工厂增加了一条自动化流水线一样,将以太坊由之前的手工点对点生产线升级为多条自动化流水生产线。而更多的自动化流水线和多进程并行同时处理这些功能增强了智能合约的能力,会为以太坊带来更高的业务吞吐量。按目前官方消息:分片链会在2021年以太坊 2.0第一阶段更新上线,届时以太坊智能合约速度将可以更高速地运行处理。

展开阅读全文

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

全文共 810 字

+ 加入清单

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

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

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

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

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

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

展开阅读全文

篇19:区块链智能合约是什么?

全文共 601 字

+ 加入清单

区块智能合约是什么?

区块链具有改变当今几乎每个行业的潜力,由于它的优势以及普及性,该技术的适用性已经开始流行,并且看起来它将在很长一段时间内继续这样做。但是,区块链不是一项新技术,但在过去的几年中,它已成为一个超级时刻。在分散式和分布式应用程序方面,这是一个巨大的飞跃。这是关于考虑当前的体系结构并制定策略以发展到不可变的分布式数据库。

现在,区块链将把其利基市场化为特殊类型的加剧,这对于诸如购买汽车或房屋之类的复杂交易是独特的。许多行业领导者都经历了这些交易的痛苦,并且已经发现如何利用智能合约在区块链上的使用来减轻这种痛苦。

区块链智能合约的原理是怎么样?

用外行术语来说,智能合约是存储在区块链上的代码行,并在同时满足预定条款和条件时自动执行。在最常见的级别上,它们是一种运行的程序,因为它们是由开发它们的个人设置为运行的。智能合约的优势在业务合作中非常明显,因此,它们通常用于执行某种协议,以便所有参与者都可以确定后果,而无需中介机构的参与。

区块链技术概述

区块链是一种分布式账本,在该账本上以数字方式记录了交易/交易并将它们链接在一起,因此它们提供了资产的整个历史或出处。通过使用共识协议批准交易后,交易所会立即添加到区块链中,从而保证了交易的唯一性。每条记录同样经过加密,以提供额外的安全性。据说区块链是“不变的”,因为记录是透明的,并且不能更改,因为交易所的所有成员都可以访问相同版本的真相。

展开阅读全文

篇20:RSK智能合约是什么?对以太坊有威胁吗?

全文共 1029 字

+ 加入清单

虽然区块链仍然被视为一个不成熟的概念,但由于其不断发展,变化的快速变化和每日出现的新解决方案正在帮助抵消这种新型分散化方法的一些弊端。大多数焦点都集中在加密货币上,主要是由于它们的价值迅速升值导致了猖獗的投机行为。然而,当涉及到他们的抱负时,解决方案本身的实际价值还有很多不足之处。

那么,RSK智能合约是什么?

以比特币为例。在其早期阶段,比特币被设想用更好的速度和更低的成本来改善跨境交易,用一种新的,分散的货币形式取代过时的系统,从机构监督中解脱出来。自那以后发生的事情表明,比特币本身并不一定有可能以原先想象的方式改变世界。

虽然比特币可能永远无法实现其愿望,但SegWit的合并和采用意味着它有朝一日可能会看到它的潜力与随之而来的炒作相匹配。一个有价值的解决方案是RSK,一个开源平台,托管比特币网络的智能合约,类似于以太网首次实施的那些。智能合约是一种极其强大的工具,是迄今为止与区块链相关的最有价值的创新之一,这要归功于能够在双方之间创建交易而无需中间人。

为什么智能合约至关重要

基于触发条件自动执行电子合同。智能合约是各种业务环境中的下一代自动执行,有可能破坏现有业务模式,例如按需经济,例如为每个行程定制的保险合同,设置目标或被编程为终止。保险模型甚至可以插入P2P模型,使传统的保险公司无用武之地。这些简单示例都可以通过 RSK 智能合约平台实现。

RSK智能合约会威胁到以太坊吗?

由于内置的智能合约和标记化协议,以太坊不仅是一种加密货币,而且还是一个在同一链上构建和分发服务的平台。

像RSK这样的第二层解决方案的最大好处之一是它在侧链上运行,这意味着它不会像基于以太坊的应用程序那样削弱主链的处理能力。此外,矿工受激励通过合并挖掘功能参与,这使得比特币矿工能够同时开采两条链,吸引更多参与者参与。

RSK最突出的一个方面是关注安全性,利用货币奖励来吸引开发人员,黑客和安全专业人员来识别漏洞,以便系统可以提高其众多利益相关者的整体安全性。虽然它可能不一定会导致以太坊的灭绝时刻,但RSK确实解决了许多相关的漏洞,帮助推动它是一种可行的竞争形式。

虽然它们需要相当长的时间才能到达,但是由于旨在提高交易能力的一系列新服务,RSK等新的第二层解决方案最终将改善比特币生态系统。任何货币功能的核心是快速交换的能力。

通过RSK,将比特币引入智能合约方程意味着比特币网络的附加价值,以及其不断增长的用户群,因为他们寻求利用区块链分散架构和比特币安全性的可能性。

展开阅读全文