智能合约(Hyperledger vs Eth)[关闭]

2023-11-27

关于智能合约的几个简单问题

  1. 超级账本智能合约(链码)与以太坊相比如何?

超级账本-golang;可表达性? ;表现? ;安全? 以太坊——坚固性;表达能力;表现? ;安全?

  1. 如何保障智能合约安全,保证代码不被篡改?

  2. 双方如何信任并追踪智能合约的结果?有审计/追溯能力吗?

  3. 同样在去中心化的理想世界中,如果智能合约中存在错误和/或缓冲区溢出导致一些损失,谁应承担法律责任?

  4. 有什么性能基准吗?例如,10 秒内执行 2000 个复杂的智能合约?

  5. 如何启用/限制对这些智能合约的安全访问?即,只有 Alice 和 Bob 可以看到合约,而 John 则看不到


我怀疑花费大量时间在以太坊和 Hyperledger Fabric 上开发智能合约的人仍然相当罕见。再加上这样一个事实,任何有这种经验的人现在都可能在工作中发挥自己的作用:-)

我在 Go 链码上工作了大约一年,为智能合约构建了一个面向物联网的平台,该平台已暂时暂停,而今年我通过 Hyperledger Composer 开发 JavaScript 智能合约。我没有以太坊和 Solidity 方面的直接专业知识,但我会尽力回答我能回答的问题。

但请注意,以太坊基于加密货币和挖矿,并且许多活动都围绕公共、无需许可的网络。 IE。这不是为安全的商业网络而设计的,这需要您获取以太坊代码库的一个版本并对其进行破解。这与使用 Fabric 完全不同,Fabric 是从头开始设计用于安全业务交易的。


关于智能合约的几个简单问题

超级账本智能合约(链码)如何与 以太坊?

以太坊和 Fabric 一样,有多种智能合约语言。以太坊是 Solidity(一种类似 JavaScript 的语言)、Serpent(一种类似 Python 的语言)和 LLL(一种类似 Lisp 的语言)。这里最大的区别是 Fabric 运行actual这些语言的版本,因此您的技能可以双向移植。

超级账本-golang;可表达性? ;表现? ; 安全?

Golang 看起来很像 C 语言,但更具表现力,有通道、接收器等概念。性能相当极端。

我还喜欢 Hyperledger Composer 基础设施,它使用解释型 JavaScript 代码和强大的业务网络建模语言。这是值得探索的,因为它正在快速发展。使用其访问控制语言可以轻松解决许多安全问题permissions.acl.

以太坊——坚固性;表达能力;表现? ; 安全?

不确定他们的任何语言的可表达性,但想必你可以做常见的合同工作。然而,从定义上来说,性能受到以太坊网络的区块节奏的限制,而以太坊网络的区块节奏又受到挖矿速度的限制。比特币大约每 10 分钟提交一次区块。以太坊速度更快,但也会有限制。

关于这两者的安全性——Fabric 已获得许可,并且通常预计在专用网络、后台或云上运行。因此,它可以根据您的需要和/或负担能力进行架构和设计,以实现尽可能多的物理安全性。以太坊在私下部署时可能是一样的,但当部署到像比特币那样公开的交易所时,情况就不同了。

当然存在攻击向量,但假设您将链代码保存在私有存储库中,那么您可以获得尽可能多的安全性。

如何保障智能合约安全,保证代码不被篡改?

您必须保护您的网络和存储库。例如,如果您在小型区块链的单个 Kubernetes 集群上运行,那么您可以保护该集群。如果您正在与在 Z 系统上运行 HSBN(IBM 基于结构的高安全业务网络)的多个独立后台进行大型协作,那么您将保护物理硬件和互联网络。如果你花足够的钱,链码的攻击向量几乎为零。 (顺便说一句,我也使用成本作为努力的同义词)。据推测,私有以太坊部署将具有类似的特征,但它再次被视为加密货币引擎,并且本质上是无需许可的。

双方如何信任并追踪智能合约的结果?有审计/追溯能力吗?

Fabric 有一个历史学家,可以跟踪每笔交易和世界状态变化(我的意思是所有交易和世界状态变化)。您可以编写复杂的类似 SQL 的查询来收集和分析此类数据。它非常强大。

当我搜索以太坊的类似信息时,我收到一篇又一篇讨论以太坊货币历史价格的文章。这是不同的世界。

同样是在一个去中心化的理想世界,如果出现bug谁的法律责任 和/或智能合约中的缓冲区溢出导致一些损失?

有了 Fabric,有人将负责将智能合约实施为编码化的业务规则,这与内部实施或使用合约实施的任何现有金融系统之间几乎没有逻辑差异。责任的动态将是相同的。

对于以太坊,我不知道。有一个时髦的加密角度需要注意,如果你尝试在 Fabric 上实现一个业务网络,你可能会进入以太坊不承担任何责任的领域。我认为这与 Fabric 没有什么不同。但最初的目的有所不同,这可能会在法律论证方面产生影响(例如“你在想什么?”辩护。)这都是纯粹的猜测:-)

有什么性能基准吗?例如,2000个复杂的智能合约 在 10 秒内执行?

我运行了一些负载测试(在 Bluemix 上的 4 节点 v0.6 结构上进入 Go 智能合约的泊松流量),平均每小时约 23,000 笔交易,并在世界状态中保留完整的历史记录。它运行良好。 Hyperledger v1 的设计性能比 v0.6 高得多,但是使用它的复杂性更高,因此需要认真的系统工程来维持其最佳性能(这有什么新内容?)

如何启用/限制对这些智能合约的安全访问? IE。, 只有爱丽丝和鲍勃可以看到合约,约翰看不到

看看Hyperledger Composer 中的 ACL 语言你会发现对于参与者限制有一个相当复杂的观点。

更新:该链接已损坏。新的是https://hyperledger.github.io/composer/latest/reference/acl_language.html

还有针对 ACL 概念的 Go 库的研究正在进行,但我不知道什么时候会出现。

无论如何,我希望其中一些有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

智能合约(Hyperledger vs Eth)[关闭] 的相关文章

随机推荐

  • 如何从存储过程返回多行? (Oracle PL/SQL)

    我想创建一个带有一个参数的存储过程 它将根据参数返回不同的记录集 有什么方法可以做到这一点 我可以从普通 SQL 中调用它吗 以下是如何构建一个返回结果集的函数 该结果集可以像表一样进行查询 SQL gt create type emp o
  • 微软语音识别平台

    我使用 System Speech 用 C 编写了一个用于语音识别的应用程序 该应用程序在 Windows 7 上运行良好 不过 我正在创建可在 Windows 2003 x86 上运行的相同应用程序 我的编程环境 Windows 7 x6
  • Django 如何将 npm 模块与静态/模板一起使用

    我最近添加了npm添加到我的项目中 以便更好地跟踪我的 js 依赖项 以前我刚刚 git 克隆到我的 static vendor 文件夹 我还添加了gulp 但现在只让它做 hello world 的事情 它看起来很简单 它可以监视文件 缩
  • 有没有办法使用 Python 访问 OS X wi-fi 数据? (例如信号强度)

    我只是好奇是否可以使用任何 Python 工具来轮询 OS X 中的 Wi Fi 信号强度 我的大多数搜索都只是生成适用于 Linux 的 Python 工具 但没有找到适用于 OS X 的 Python 工具 如果没有 是否有其他方法可以
  • 使用 AdMob 展示我自己的广告?

    我已将 AdMob 集成到我的应用程序中 是否可以使用 Admob 展示我自己的广告 如果没有 那么最好的选择是什么 是的 Ad Mob 允许您选择使用 自家广告活动 选项 话虽这么说 如果通过 使用 Admob 展示我自己的广告 你的意思
  • 在 C++ 中实现模拟非确定性有限自动机的代码

    我正在做自动机理论的作业 我必须确定确定性有限自动机的转换函数是否接受一个单词 我有这个输入文件 6 8 0 2 2 5 0 0 a 0 1 a 1 1 b 1 2 c 1 3 c 3 4 d 4 4 d 4 5 d 3 aaabcccc
  • SQL注入无法正常工作

    我正在尝试在我的本地主机上为安全测试项目创建的虚拟网站上执行 SQL 注入 我尝试输入字符串 OR 进入用户名和密码字段 这样它应该绕过它并显示登录正确 但相反它显示登录失败 任何有助于理解为什么 SQL 注入不起作用的帮助
  • 如何通过react js中的map方法仅访问一项

    我的问题可能不清楚 但这是我的问题 这是我使用 map 方法从数组中获取的卡片 并在每张卡片上显示每个项目 我已经触发了 编辑 按钮 以便它显示隐藏的文本 只想在一张卡片中看到它 但是 当我仅单击一张卡片时 所有卡片都会显示该隐藏消息 你能
  • CakePHP 2.x:Model::afterFind() 上的 $primary 标志实际上有用吗?

    CakePHP 的Model afterFind 回调看起来像 afterFind array results boolean primary false 根据文档 The primary参数指示当前模型是否是查询发起的模型 或者该模型是否
  • javascript数组映射方法中的Break语句[重复]

    这个问题在这里已经有答案了 可能的重复 如何像调用break一样短路Array forEach 有没有办法让我在满足条件后可以突破数组映射方法 我尝试了以下抛出 Illegal Break Statement Error 这是我随机想到的一
  • getSubscription 返回空订阅

    我是 Service Worker 和 GAE 的新手 我能够注册 Service Worker 但无法订阅 PushManager 出现订阅 null 错误 找到下面的代码以供参考 serviceWorkerRegistration pu
  • PHP 在 html 页面中显示 html 电子邮件

    我正在构建一个 PHP 电子邮件邮箱脚本 我如何使 html 电子邮件像 gmail hotmail 中那样清晰地显示 如果我只是回显它 它会影响整个页面布局 我可以使用 iframe 但这肯定不是最好的解决方案 如果您正在寻找 最佳解决方
  • 字符串太长时会被截断

    我试图从我们的服务器获取 JSON 响应 当字符串长度达到大约 5525 个字符时 响应字符串似乎总是被截断 HttpClient httpClient new DefaultHttpClient HttpPost post new Htt
  • 获取PDFBox中字符的字体高度

    PDFBox的字体类PDFont中有一个方法 名为getFontHeight 听起来很简单 但是我不太理解文档以及参数代表什么 getFontHeight这将获取字符的字体宽度 参数 c 要获取宽度的字符代码 offset 数组的偏移量 长
  • 在 Python 3 中迭代单个字节

    当迭代一个bytesPython 3 中的对象 获取个体bytes as ints gt gt gt b for b in b 123 49 50 51 如何获得 1 长度bytes对象代替 以下是可能的 但对读者来说不是很明显 并且很可能
  • 位图图像内存不足

    我知道有很多关于 android 位图图像内存不足的讨论 但我想知道是否有人可以向我解释一下 目前在我的应用程序中 我有一个列出图像缩略图 低质量 的活动 当我单击图像时 它会打开一个新活动来全屏查看图像 在我的第二次活动课中 我有 Bit
  • 关于在 Android studio 中重命名 Android 项目的建议(基于 Gradle)

    在我目前的项目中 我希望在 Android studio 0 8 9 中重命名 Android 项目并希望以后使用它 我知道论坛中讨论的两种解决方案 请有人确认最好的方法并且没有麻烦 此外 在 Android studio 0 8 9 上尝
  • 引用程序集中的条件编译

    我正在编写一个程序集 其中包含一些条件编译的成员 例如 Conditional DEBUG public static void Log string message 并像这样使用它 public void DoStuff Log This
  • 更新到 MacOS Big Sur 11.3 后 Android 设备管理器无法启动

    所以我的 Mac 刚刚强制更新到 Big Sur 11 3 我一直在尝试访问 Android 设备管理器来运行模拟设备 但每次都失败了 当我尝试从命令行运行它时 我收到以下错误消息 emulator Pixel 3a API 30 emul
  • 智能合约(Hyperledger vs Eth)[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 关于智能合约的几个简单问题 超级账本智能合约 链码 与以太坊相比如何 超级账本 golang 可表达性 表现 安全 以太坊 坚固性 表达能力 表现 安全 如何保障智能合约安全 保