关于智能合约的几个问题很快
hyperledger - golang; 表达性?; 性能?; 安全?以太坊 - 坚固; 表达能力; 性能?; 安全?
如何确保智能合约以确保代码不被篡改?
双方如何信任并追踪智能合约的结果?任何审计/追溯能力?
同样在分散的理想世界中,如果智能合约中存在错误和/或缓冲区溢出导致一些损失,其法律责任是什么?
任何性能基准?例如,在10秒的时间内执行了2000个复杂的智能合约?
如何启用/限制对这些智能合约的安全访问?也就是说,只有Alice和Bob才能看到合同,而不是John
Kim*_*Kim 13
我怀疑有人花了很多时间在以太坊和Hyperledger Fabric上开发智能合约仍然相当罕见.认为任何有这种经历的人现在都可能在工作中注意力:-)
我在Go chaincode上工作了大约一年,为智能合约构建面向物联网的平台,当我今年通过Hyperledger Composer处理JavaScript智能合约时,该平台暂时停止.我对以太坊和Solidity没有直接的专业知识,但我会尽我所能来回答.
请注意,以太坊基于加密货币和采矿,而且很多活动都围绕着公共的无权网络.也就是说,这不是为安全的商业网络设计的,这需要您使用以太坊代码库的版本并进行破解.这与使用Fabric完全不同,Fabric是从头开始设计用于安全业务交易的.
关于智能合约的几个问题很快
hyperledger智能合约(链码)如何与以太坊相抗衡?
与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不同.但是在原始目的方面存在差异,这可能会在法律论证方面产生影响(如"你在想什么?"辩护.)这都是纯粹的猜测:-)
任何性能基准?例如,在10秒的时间内执行了2000个复杂的智能合约?
我运行了一些负载测试(poisson流量在Bluemix上的4节点v0.6结构上的Go智能合约中),平均每小时约23,000次交易,在世界状态下保留完整的历史记录.它运行正常.Hyperledger v1的设计性能比v0.6高得多,但使用它时更复杂,因此需要严格的系统工程才能发挥其最佳性能(以及有什么新的?)
如何启用/限制对这些智能合约的安全访问?也就是说,只有Alice和Bob才能看到合同,而不是John
看一下Hyperledger Composer中的ACL语言,你会发现有一个相当复杂的参与者限制视图.
还有针对ACL概念的Go库进行的研究,但我不知道何时会出现这种情况.
无论如何,我希望其中一些有用.