巴比特论坛

发表于 2018-6-5 23:17:52 | 显示全部楼层
本帖最后由 lishizhong 于 2018-6-5 23:19 编辑

由于论坛发帖限制,图片限制位置不当,完整版请访问猎豹移动区块链中心(https://www.cmcmbc.com/zh-cn

最近以太坊的智能合约开发很火。然而,几乎没有企业级区块链应用选择用以太坊开发。结合在实际项目应用过程中的经验来看,小编认为以太坊不适合做企业级应用的原因有这三点:权限控制不够,以太坊智能合约查错纠错门槛高、成本高,以太坊智能合约调用的不确定性。而Fabric在这几点上有很大优越性,小编将在后文为大家一一阐述。

01多维度权限控制
B端应用的开发很多时候是复杂繁琐的。相比之下,以太坊非常方便,你只需要启动客户端钱包,就可以如下图所示开始智能合约的开发了:

或者用remix:

然而,当一切准备就绪后,客户爸爸告诉我,我们的商业数据属于重要机密,要求对有授权的节点才做数据共享,没有授权的节点应该做数据隔离。然后我们发现,在以太坊上没有数据隔离和权限认证的。

这个时候,Fabric的优势很明显了。完整的多维度的证书权限控制,Channel支持节点之间建立数据隔离,Docker化部署智能合约。客户需要的人家都能满足,客户没想到的,他可能也已经做好了。从下面的证书目录结构就可见一斑:
.
├── ordererOrganizations
│   └── example.com
│   ├── ca
│   ├── msp
│   ├── orderers
│   ├── tlsca
│   └── users
└── peerOrganizations
├── org1.example.com
│   ├── ca
│   ├── msp
│   ├── peers
│   ├── tlsca
│   └── users
└── org2.example.com
├── ca
├── msp
├── peers
├── tlsca
└── users

02低查错门槛

不知道广大Solidity开发者听到以太坊智能合约爆出漏洞时是什么心情,反正小编每次听到都会有一种心跳加速、血液循环加快的条件反射。

以前做业务开发的时候小编的流程是这样的:

出BUG的时候大概是这样的:


然而,现实的情况是这样的:

出BUG的时候是这样的:


自从做了以太坊智能合约开发以后,小编的开发流程就变成了这样:


出BUG的时候小编的内心是这样的:


而自从用Fabric做智能合约开发以后,情况是这样的:


出BUG的时候是这样的:



嗯,还是原来的味道,还是熟悉的配方!

03智能合约调用
不知道大家听到接口调用的时候会想到什么,反正小编的第一个反应就是restful,http,api,tcp等等。然而,自从用了以太坊以后,接口调用的画风就变了。首先你需要有类似下面这样的abi:
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}...
然后,你所发起的调用,其实可能是这样的:
0x23b872dd0000000000000000000000006e80d21aa536cefdb4a6d5f879af619ef97157760000000000000000000000009f5217d4a04a10649547f5ccd835e2d69efc2a0e00000000000000000000000000000000000000000000000006f05b59d3b20000
面对这样的调用,小编内心有一种无力感。

再来看看Fabric的合约调用,是下面这样的:
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

当然也可能是类似这样的:
var request = {targets: peerNames,chaincodeId: chaincodeName,
fcn: fcn,args: args,chainId: channelName,txId: tx_id};
let results = await channel.sendTransactionProposal(request);

用json传参数,小编感到很安心。
04小结

说了这么多,其实企业级的应用,考虑更多的是权限控制,数据隔离,开发成本,运维成本等方面。而以太坊做为目前最权威的智能合约公链,显然侧重点不在这方面。而Fabric本身就是针对企业级区块链平台而设计,相较以太坊来说确实会更适合企业级应用。


3d713832f01d68798aada85cc0d26e6e.png
1ffb642fa071861eb82cc15bf1900310.png
49e1eb61773b423f11a1fe49677a6d1c.png
db86ecb2964767078f4021ee0fd3a026.png
bbe9f5b5fb2ef5d82ff0631c62368d34.png
e0abec9d2105e296c8a565ba3b3b5559.png
cbac199d62caab6b48d0da88d97f6cb4.png
aa07c805adb7dbcb0f399ab0eaf9e52e.png
7b5b8e446df86b73585cd4d3ad85814a.png
559ab353dd74c3761fc4c6e306c24bd9.jpg

0条回复 跳转到指定楼层

高级模式
您需要登录后才可以发帖 登录 | 立即注册 | 用新浪微博登录

本版积分规则

搜索

0关注 1粉丝 6主题

作者的其他主题

返回顶部 返回列表

登录

分享 发帖