2020年4月25日区块链服务网络BSN正式进入商用阶段。6月12日区块链服务网络第二次开发者大赛进入评审阶段。随着BSN业务的深入开展,已被更多的开发者所关注。用户在使用BSN的过程中,遇到了各式各样的使用问题,我们借此优化迭代BSN服务功能的同时,也将相关的共性问题陆续整理出来与广大开发者分享,让开发者们能够更使用BSN进行区块链应用开发。

1. 问:如果上链的数据错误,怎么处理?

答:数据一旦上链,所有的数据都不能被篡改和被物理删除的;但是可以设计一种合约的逻辑删除的机制,例如在特定的数据合约中添加一个状态字段来标记数据是否被删除。

2. 问:在智能合约内可不可以调用其他外部接口?

答:目前BSN同一个应用中的多个智能合约可以相互调用,但是不能访问外部接口。

3. 问:如何确保数据放到BSN上是安全的?

答:首先区块链中有共识机制和加密算法等关键技术来保证数据安全,其次BSN设计了应用接入密钥和用户交易密钥两套密钥,来保证接入的安全。最后业务方也可以在链下业务系统对原始数据进行加密处理后再上传到BSN中。

4. 问:通过BSN网关API的用户注册接口注册的子用户和父用户权限是否是一致的?子用户在调用链码时,请求头中的userCode是使用子用户的userName吗?

答:调用网关API用户注册接口注册的子用户权限和父用户是一样的,子用户继承了父用户的权限,但是不能把子用户当做父用户使用。交易的请求头中还是需要填写父用户即服务参与者的userCode,在交易的报文中使用子用户的userName提交交易,此时提交的交易将使用子用户的身份进行数据上链。

5. 问:BSN的网关SDK实例什么时候会集成FISCO BCOS的网关API接口?

答:BSN适配的FISCO BCOS底层框架正式商用后将提供Java、GoLang、Python、C#的网关SDK实例供开发者使用。

6. 问:BSN中基于FISCO BCOS开发的应用支持合约事件功能吗?

答:BSN适配的FISCO BCOS底层框架正式商用后将提供合约事件功能供开发者使用。

7. 问:在新的交易接口中为什么增加了userId的参数,请问该参数是如何使用的?

答:为了方便第三方业务系统为各自的业务用户提供单独的链上身份,我们在新的接口中增加子用户的概念。

在使用时需要先调用“子用户注册接口”注册子用户,对于密钥托管模式的应用,可以在交易接口中直接传递该参数,将使用子用户的身份进行交易;如果不传,将使用用户的默认身份进行交易。

而对于密钥上传模式的应用,还需要调用证书登记接口获取一个被城市节点CA认证过的证书,在本地使用该证书组装交易报文发起交易。交易报文可以使用BSN提供的各语言SDK生成。

8. 问:BSN有什么方法可以获取到交易发起者的信息?

答:1. 基于Fabric的服务,可以通过节点网关提供的getTransaction方法,根据交易ID获取交易信息,包括块Hash、块号、交易状态、上链用户名、时间戳秒、时间戳纳秒;

2. 基于FISCO BCOS的服务,暂不支持。

9. 问:参与者参与的服务停用后,参与者上链的数据是否还存在?应如何继续使用?

答:周期扣款失败并超过72小时未成功支付的服务会被系统自动停用,此时服务的相关数据还是存在的。用户可点击启用按钮进行付费,付费成功后服务可继续正常使用,但要注意的是在服务的停用期间,由于其仍然占用服务资源,系统仍会按周期生成资源使用账单。超过两周未付费成功的服务会被系统自动卸载,服务相关数据都将被清除。

10. 问:在BSN系统中每个服务的所有记账节点是都存一份完整的数据?还是只是存的hash值?

答:1. 同一服务有多个记账节点时,向其中一个记账节点上传数据,其他记账节点自动同步数据。

2. 每个记账节点同步的都是完整的数据,链下业务系统不用将所有的业务数据都进行上链,只需将需要上链的数据进行上链即可。

11. 问:在BSN系统中底层框架FISCO BCOS智能合约使用什么方式进行开发?

答:1. 在remix中进行开发,参考地址:

http://remix.hubwiz.com/

2. 在WeBase-Front的页面中进行开发,参考地址分别

FISCO BCOS的开发说明:

https://fiscobcosdocumentation.readthedocs.io/zh_CN/latest/docs/manual/smart_contract.html

webase的前置安装说明:

https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Front/install.html

12. 问:使用BSN发布FISCO BCOS服务,为什么没有在相应城市节点注册用户,调用智能合约中的方法有些返回成功,有些返回失败?

答:FISCO BCOS智能合约中查询类方法不用检验用户签名,非查询类方法要校验用户签名,如调用非查询类方法,必须先调用用户注册接口user/register进行用户注册,再调用相应方法。

13. 问:对于BSN系统的底层框架Fabric的一个channel是不是相当于一条链了?其中的区块高度是怎么对应的?

答:BSN系统的底层框架Fabric的一个channel相当于一条链,一条链就是一个应用,区块高度就是channel内所对应的账本区块数量(块号是从0开始的)。

14. 问:根据块号获取交易详情时交易数量显示为0的原因是什么?

答:在getblockinfo接口中返回的块信息会过滤掉非交易类型的transaction,例如创世区块配置,修改通道配置,更新链码等操作,如果一个区块只包含这些操作,在查询的信息中transaction将为0。

15. 问:“流量使用情况”这里具体的显示规则是怎么样的?为什么有“泉州排序节点”的流量费用?

答:Fabric服务的流量组成:记账节点流量(网关向排序节点提交数据产生的流量、网关响应链下业务系统产生的流量)+排序节点流量(排序节点向不同城市节点的记账节点广播区块产生的流量,如应用的记账节点在同一个城市节点内数据同步将不会产生排序节点流量);

FISCO BCOS服务的流量组成:记账节点流量(网关响应链下业务系统产生的流量、不同城市节点的记账节点间同步数据产生的流量,如应用的记账节点在同一个城市节点内数据同步将不会产生记账节点流量)。

16. 问:为什么运行信息里每个城市节点的已用容量显示的不一致?

答:因为各个节点推送的时间不一致,并且数据需要在各个系统之间传输所以界面上显示的容量信息不是实时的。即使所有节点全部同步完成后已用容量也会有差异。例如有可能有遇到交易共识失败或其他原因导致交易失败,节点会将失败的交易存储到本地账本中,但不会同步给其他节点。

17. 问:在部署合约的时候只需要一方部署单独就可以运行,还是需要多方确认?

答:调用部署合约时,就相当于发了一个部署的交易,这个交易是通过共识机制进行确认后才落块的。发送者是一个人,但是确认是多方共识的。在BSN中Fabric采用的是Kafaka共识,FISCO BCOS采用的是PBFT共识。

18. 问:目前Fabric已经更新到2.1版本,BSN还是1.4版本,BSN有计划将Fabric更新到2.1吗?

答:目前没有升级的计划,我们现在主要的任务还是适配更多的底层框架,如Fabric国密、CITA、百度超级链等。

19. 问:BSN中如何查看FISCO BCOS应用的已部署的合约地址?

答:用户成功参与应用后,可以在【我参与的服务—我参与的】查看页面中的应用服务接入配置参数中查看已部署的合约地址。

20. 问:为什么用户提交了交易,在运行信息页面查看交易数量和区块数量没有变化?

答:运行信息页面的数据不是实时更新的,每半小时更新一次。用户可调用网关API提供的接口获取实时数据。详见区块链服务网络开发者手册。



BSN商用至今,开发者热点问题20问_第1张图片


更多疑问请查看“BSN知识库”-“BSN官网”-“常见问题”获取帮助。为了广大开发者学习BSN使用时少走弯路,初次接触BSN的新用户请点击《BSN开发者手册和帮助手册》查看了解。