关于智能合约的快速问题
hyperledger - golang;表达性? ;性能? ;安全? 以太坊 - 坚固;表达能力;性能? ;安全?
如何保护智能合约以确保代码不被篡改?
双方如何信任并追踪智能合约的结果?任何审计/追溯能力?
同样在分散的理想世界中,如果智能合约中存在错误和/或缓冲区溢出导致一些损失,其法律责任是什么?
任何表现基准?例如,2000年的复杂智能合约在10秒内执行?
如何启用/限制对这些智能合约的安全访问?也就是说,只有Alice和Bob可以看到合同,而不是John
答案 0 :(得分:12)
我怀疑有人花了很多时间在以太坊和Hyperledger Fabric上开发智能合约仍然相当罕见。再加上任何有这种经历的人现在可能都在努力工作: - )
我在Go chaincode上工作了大约一年,为智能合约构建了一个面向物联网的平台,这个平台在我今年通过Hyperledger Composer处理JavaScript智能合约时暂时停止了。我没有关于以太坊和合体的直接专业知识,但我会尽我所能来回答。
请注意,以太坊基于加密货币和挖掘,很多活动都围绕着公共的无权网络。即这不是为安全的商业网络而设计的,因为安全的商业网络要求您使用以太坊代码库的版本并进行破解。这与使用Fabric完全不同,后者是从头开始设计的,用于安全的业务交易。
关于智能合约的快速问题
hyperledger智能合约(链代码)如何叠加起来 以太坊?
Ethereum与Fabric一样,拥有多种智能合约语言。以太坊是Solidity - 一种类似JavaScript的语言,Serpent - 一种类似Python的语言,和LLL - 一种类似Lisp的语言)。这里最大的区别是Fabric运行这些语言的实际版本,因此您的技能可以双向移植。
hyperledger - golang;表达性? ;性能? ; 安全?
Golang看起来很像C语言,但更具表现力,有通道,接收器等概念。表现非常极端。
我也支持Hyperledger Composer基础架构,它使用解释的JavaScript代码和强大的业务网络建模语言。这是值得探索的,因为它正在快速发展。使用permissions.acl
中的访问控制语言,可以轻松解决许多安全问题。
以太坊 - 坚固;表达能力;性能? ; 安全
不确定他们的任何语言的可表达性,但可能你可以做普通的合同。但是,性能受限于以太坊网络的块节奏,这受到采矿速度的限制。比特币大约每10分钟就会进行一次。以太坊更快,但会有一个限制。
关于这两者的安全性 - Fabric受到许可,通常希望在专用网络,后台或云上运行。因此,它可以根据您的需求和/或能够承受的多重物理安全性进行架构和设计。私有部署时,以太坊可能是相同的,但在部署到比特币公开的交易所时则不一样。
当然有攻击媒介,但假设您将链代码保存在私有存储库中,那么您可以再次获得尽可能多的安全性。
如何保护智能合约以确保代码不被篡改?
您必须保护您的网络和存储库。例如,如果您在单个Kubernetes集群上运行小型区块链,则可以保护集群。如果您正在与Z系统上运行HSBN(基于IBM的基于Fabric的高安全性业务网络)的多个独立后台办公室进行大型协作,那么您将保护物理硬件和互联网络。如果你花了足够的钱,链码几乎没有零攻击向量。 (顺便说一下,我也使用成本作为努力的同义词)。据推测,私有的以太坊部署将具有类似的特征,但同样它被设想为加密货币引擎,并且在本机上是无权限的。
双方如何信任并追踪智能合约的结果?任何审计/追溯能力?
Fabric有一个跟踪每个事务和世界状态变化的历史记录(我的意思是所有事务)。您可以编写复杂的类似SQL的查询来收集和分析此类数据。它非常强大。
当我搜索以太坊的类似信息时,我会逐条讨论以太坊货币的历史价格。这些是不同的世界。
同样在分散的理想世界中,如果存在错误,其法律责任 和/或智能合约中的缓冲区溢出导致一些损失?
使用Fabric,有人将负责将智能合约作为编码业务规则来实施,并且在内部或使用合同实施的任何现有财务系统之间几乎没有逻辑差异。责任的动态将是相同的。
以太坊,我不知道。有一个时髦的加密角度需要注意,如果你试图实现一个商业网络,你可能正在进入领土,以太坊不负责任。这与我认为的Fabric不同。但是在原始目的上存在差异,并且在涉及法律论证时可能会有所不同(例如在"你在想什么?"辩护。)这都是纯粹的猜测: - )
任何性能基准测试?例如,2000年复杂的智能合约 在10秒的时间内执行?
我运行了一些负载测试(poisson流量在Bluemix上的4节点v0.6结构上的Go智能合约中)数月,平均每小时约23,000次交易,在世界状态下保留完整的历史记录。它运行正常。 Hyperledger v1的设计性能比v0.6高得多,但是使用它时更加复杂,因此需要严格的系统工程来提高其最佳性能(以及新的内容?)
如何启用/限制对这些智能合约的安全访问?即, 只有Alice和Bob可以看到合同而不是John
看看ACL language in Hyperledger Composer,你会发现有一个相当复杂的参与者限制视图。
更新:该链接已被破坏。新的是https://hyperledger.github.io/composer/latest/reference/acl_language.html
还有针对ACL概念的Go库进行的研究,但我不知道何时会出现这种情况。
无论如何,我希望其中一些有用。