65.9K
CodeProject 正在变化。 阅读更多。
Home

DeFi 中的私有交易:以太坊上的机密智能合约

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2022 年 1 月 31 日

CPOL

10分钟阅读

viewsIcon

4637

在本文中,我们将学习以太坊智能合约中需要重新设计的一些特性,以及机密智能合约如何在它们的解决方案中解决这些问题。

您将很快能够在公共区块链上通过机密智能合约 (CSC) 实现隐私。CSC 使用可信执行环境 (TEE) 来解决传统智能合约中缺乏隐私的问题。该解决方案可应用于任何默认未提供隐私的公共区块链。在本博客中,我们将学习以太坊智能合约中需要重新设计的一些特性,以及机密智能合约如何在它们的解决方案中解决这些问题。我们将学习机密智能合约的工作原理,最后,我们将探讨使用 CSC 的优势。

智能合约的特性

让我们来看看智能合约平台的一些导致现实世界问题的特性

  • 共识:公共区块链具有可组合性,允许将多个智能合约组合成一个新的智能合约,或在现有智能合约之上构建新的解决方案。
  • 可扩展性限制:由于数据在网络上传播的方式,共识导致系统中提交的交易吞吐量较低。以太坊 2.0 中引入分片的概念仅部分解决了交易吞吐量限制,但并未完全消除。
  • 区块链的“锁定”:在早期,智能合约相对简单,易于跨区块链迁移。可组合性使得应用程序可以在网络上发展成复杂的生态系统。这增加了智能合约的复杂性,并使其很难迁移到其他区块链。
  • 数据隐私:一些公共账本将数据存储在网络的所有节点上。

机密智能合约

机密智能合约 (CSC) 消除了对共识作为交易执行证明的需求。CSC 使用英特尔 SGX 硬件,并且是唯一的可信方,还提供 证明 – 保证 SGX 上运行的应用程序。机密智能合约在消除主网交易吞吐量限制的同时提高了安全性。

英特尔 SGX 内置于现代英特尔 CPU 中,提供安全的数据处理方式。英特尔 SGX 是新兴的机密计算领域的一部分。宏观来看,机密计算包含三个组成部分:

  • 飞地(enclave) — 数据在此安全处理,这是英特尔 SGX 的可信方。
  • 主机在其设备上运行飞地。主机无法访问飞地内的数据或代码。
  • 客户端,它将数据发送给主机进行处理,主机将数据发送到飞地。

主机充当飞地和客户端之间的中间人。客户端通过证明来确保没有人篡改飞地内的代码。由于英特尔 SGX 库相对底层,我们使用 Conclave SDK — 一个高级库,允许非专业工程师轻松快速地构建机密计算应用程序。 Conclave SDK 使用 GraalVM 构建应用程序。

机密智能合约的组成部分

  • 管理合约 — 托管在区块链上。用户在此处从 CSC 存入资产,这些资产以检查点的形式提交给管理合约。
  • 机密智能合约运行在 SGX 实例上。它负责根据特定部署的代码授权提款并管理存入管理合约的资产。
  • 主机 — 管理 SGX 实例并保存加密数据。通常,主机不怀恶意。由于它从用户那里收取交易费用,因此主机在管理 SGX 实例方面具有经济利益。但用户应该假设主机是恶意的,并保护他们的应用程序。
  • 用户 — 相互不信任且彼此不了解的各方。如果他们相互了解,他们就会破坏机密合约的机密性假设。

管理合约的功能

管理合约在机密智能合约解决方案中起着至关重要的作用。它们:

  • 维护检查点以确保 SGX 实例可以访问其最新状态。
  • 使用预定策略保护用户资产。用户可以设置提款超时,或指示主机存入抵押品或进行质押,以在主机不当行为时保护用户资产。
  • 作为不可审查的端点,以防恶意主机拒绝 SGX 实例访问其内存或拒绝用户访问 SGX 实例。用户可以使用管理合约排队 SGX 实例应已处理的消息。如果主机拒绝在 SGX 实例上处理消息,则用户可以索回主机锁定的抵押品。
  • 提供识别飞地和主机的元数据 — 管理合约指定 SGX 实例的主机。用户需要证明来确保连接到正确的 SGX 实例,以防止主机将用户连接到不同的 SGX 实例。它还识别证明,即智能合约由密钥分配,从而在飞地上进行了证明。
  • 用户和主机可用的管理合约 API
    • 存入资产抵押品。
    • 对 SGX 实例的消息进行争议或与主机发生争议。
    • 调用带有 SGX 签名的数据的 **checkpoint** 以更新其在账本上表示的状态。用户需要承担此操作的费用。
    • 赎回启动一个过程,将 SGX 控制的资产提取回存入它们的用户。如果主机丢失了所有 SGX 实例并且资产被锁定,则应使用此功能。请参见图 1。

图 1. 管理合约的功能。

存款验证

图 2 显示,最初,用户将资产存入区块链并获得交易收据。用户使用收据告知 SGX 实例存款情况。SGX 使用其收据查询可信节点,以确认交易已发生且资产已在区块链上。

图 2. 验证机密智能合约上的存款。

同步合约状态

当主机创建初始机密合约和相应的管理合约时,她还创建一个初始检查点,这是一个空白状态。用户向此状态存入资产。底层状态随着用户进行的每次交易而演变,直到发生提款事件,需要一个包含 SGX 实例签名的检查点才能将资产转移到提供的地址。用户在响应中收到检查点,然后她必须通过调用检查点函数来同步管理合约的相应状态。

用户向 SGX 实例的主机发送请求。主机将此请求转发给 SGX 实例。这些请求指示 Conclave 使用特定参数调用 CSC 上的特定函数。参见图 3。

CSC 通过不将所有操作都进行检查点来 **降低成本**。用户以加密承诺的形式接收工作状态。当检查点上传到管理合约时,用户使用加密承诺来识别在生成检查点之前更改过状态的函数,以确保主机没有篡改她的状态。如果下一个检查点上传时加密承诺未被调用,用户可以执行争议功能并索回她的抵押品。

图 3. 同步合约状态。

处理提款

下图 4 显示,要提款,用户需要调用 CSC 中的一个函数,指示它将资金移至某个地址。用户收到一个指向该命令的加密密钥,该命令指示管理合约将资金发放给该地址。然后,用户可以使用加密密钥解锁管理合约以接收资产。该

  1. 用户调用 **withdraw** 函数。SGX 实例处理代码并生成一个响应,该响应返回一个承诺并自动生成一个检查点。
  2. 用户生成包含 SGX 签名指令的交易。
  3. 用户将交易发送到账本。账本验证特定的 SGX 实例是否签名了指令,而该指令绑定到特定的管理合约。如果账本验证了 SGX 实例,它将处理这些指令。

图 4. 提款流程。

质押作为一种防御机制

如果主机拒绝授予用户对 SGX 的访问权限,用户可以在区块链上提起争议,这将导致交易费用损失。在下面的图 5 中,用户联系主机,主机应该联系 Conclave 上的 CSC。如果主机拒绝访问 SGX 实例及其上的资产,则用户直接联系主网,这将迫使主机遵守,以避免损失交易费用。

图 5. 质押作为防御机制。

使用机密计算的优势

  • 无共识 – 可信方消除了对网络上所有节点共识的需求;只有一个方,即英特尔 SGX 实例需要与自身达成共识。
  • 几乎完全隐私的网络 – 唯一的可信方是英特尔 SGX。由于即使是英特尔 SGX 实例的主机也无法访问数据,因此数据得到了充分保护。应用程序绝不会被设计成泄露数据。

使用 Conclave 的优势

  • 云加速 – 基于云的密钥派生服务使得部署不受特定机器限制的 CSC 成为可能,从而实现了高可用性架构。在此处阅读更多。
  • 语言支持(Java、Kotlin、JavaScript)— 一般而言,Conclave SDK 将支持任何新语言,CSC 也将支持。Conclave 1.2 中有 Python 的实验性支持。机密智能合约还支持添加到 Conclave SDX 的任何新语言。
  • 成本降低 — 要在主网上执行交易,用户需要将它们广播到整个公共网络。使用 CSC,您可以在运行 SGX 实例的少量机器上执行其交易。

机密智能合约的优势

让我们比较一下在三种系统上进行交易的成本、速度和安全性:传统的中心化系统、主网(以太坊)以及 L2 以太坊上的机密智能合约。

表 1. 不同网络上交易的成本、速度和机密性比较。

上表显示,在三种系统中,在主网上执行交易的**成本**是最昂贵的。最初,以太坊设计者希望使以太坊上的交易执行比传统中心化系统更便宜。主网的成本还包括网络拥堵费。相比之下,机密智能合约的运行成本平均比主网便宜 1000 倍。

如果比较交易的**速度**,在传统的中心化系统上执行交易仍然是整体上最快的解决方案。CSC 在数据进出飞地的解密/加密方面存在性能损失。因此,其运行速度平均慢 30%。安全性是有性能成本的。与以太坊相比,CSC 的速度要快得多,因为主网上不存在数据传播。

最后,比较三种系统的**机密性**,只有 CSC 提供了真正的数据安全。在中心化系统中,用户无法确定他们的数据未被泄露给第三方。主网不提供隐私。

CSC 的其他优势

  • 降低复杂性并提高安全性。CSC 使用 Conclave SDK 软件,这是编写智能合约的最简单、最直接的方式,优于任何其他 L2 协议。
  • 在没有智能合约的现有区块链上添加功能的能力。以比特币为例,它没有智能合约。由于 SGX 是可信执行环境,它允许用户生成私钥-公钥对,这些对可以充当比特币地址来发送资产。比特币用户可以将资产发送到另一个地址。如果该地址是具有密钥对和已部署机密智能合约的 SGX 实例,比特币用户就可以在比特币网络上运行一个功能齐全的机密智能合约。
  • 有可能支持 Solidity 而无需重写合约。用户可以将任何智能合约部署到 Conclave,例如 Solidity 智能合约。如果 SDX 实例绑定到不同的区块链,那么用户就可以将他们的智能合约跨网络移动。

CSC 的缺点

SGX 无法记住。使用英特尔 SGX 技术的英特尔处理器桌面系列具有单调计数器,允许它保留状态。而 SGX 服务器则没有。解决方案是将状态存储在账本上。这样,用户就可以确保状态已同步,并且主机无法篡改。

如果 SGX 被攻破怎么办?

在现实世界中,任何事物在技术上都是可被攻击的,没有一个系统是真正完全安全的。一些可能的风险:

  • 过度工程化。这增加了安全机制被破坏的可能性。
  • 即使有备份安全策略,恶意用户仍然可以索要资金。机密智能合约通过在主网的去中心化共识协议之上添加激励挑战机制来解决此问题。

本博客基于 R3 的研发软件工程师 Stefan Iliev 的研究。您可以在 此处 观看他关于 CSC 的演示。

机密智能合约一直是 obscu.ro 协议的中心。在此处阅读有关 Obscuro 的更多信息,请参阅其 白皮书。在 TelegramDiscord 上加入 Obscuro。

在我们的 开发者平台 加入我们的开发者社区,并查看我们的 开发者社区论坛

© . All rights reserved.