BSN官方客服常见问题19问

区块链服务网络BSN
区块链服务网络BSN 机构得得号

2021年01月26日 BSN致力于改变目前联盟链局域网式应用的高成本问题

该文章已上链

摘要: 随着BSN业务的深入开展,已被更多的开发者关注,基于BSN环境部署了自己的DApp。BSN官方客服在此期间收到来自广大开发者的各类咨询,现将存在共性的常见问题与大家分享。


​区块链服务网络BSN发布至今已经一年多了。随着BSN业务的深入开展,更多的开发者关注BSN,基于BSN环境部署了自己的DApp。BSN官方客服在此期间收到来自广大开发者的各类咨询,现将存在共性的常见问题与大家分享。BSN团队将根据大家的反馈,不断进行产品服务优化和新功能迭代,并持续融入更多来自全球领先的区块链技术,为广大开发者提供更低成本、更便捷、全互通的一站式区块链服务。
问题1:调用网关时提示“应用不是可访问状态”是什么原因?
答:表示该应用已经停用,请联系应用发布者确认该服务是否已经欠费被系统自动停用,应用发布者需先在【用户中心->我的账单】 中对已欠费的流量或周期账单进行支付,支付成功后再在【我发布的应用->我发布的服务】中点击启用按钮,重新启用服务即可。
问题2:为什么创建服务的时候至少选择3个记账节点?
答:容错机制需要至少3个记账节点,同时从安全性考虑,建议选择不同城市节点的记账节点,如果一个记账节点出了问题,可以使用其他记账节点。等出问题的记账节点恢复正常后,其他记账节点会把数据同步给该记账节点,不影响业务的正常开展。
问题3:若用户在BSN门户上发布服务,调用链码时返回“无效请求”时,应如何操作?
答:1、首先检查调用的方法名是否正确(如:完整的请求参数详情、服务名称等);
2、如果是多个链码,需要检查链码包中的main函数是否start了两个链码;如果是,第二个链码将覆盖第一个链码,所以第一个链码的方法将无法调用,此时需要分别打包上传,不要在main方法中start多个,部署后将产生多个链码名称,分开调用。
3、在链码中搜索shim.Error(""无效的请求"")提示信息,查看是由哪个分支返回的的该异常信息,作相应的处理。
问题4:每一个使用链下业务系统与区块链环境进行数据交互的用户是否都要有一个私钥?
答:只有在区块链服务网络门户注册并且参与应用的用户才会有证书,同一应用的链下业务系统的所有开发者可以共用一套证书和配置参数调用节点网关API与区块链环境进行数据交互。可以为开发者创建子用户,子用户具有单独的用户交易密钥对(即单独的上链身份),子用户的权限和父用户是一样的。这样开发者就可以使用自己的用户交易密钥对,和共同的配置参数调用节点网关API与区块链环境进行数据交互。
问题5:在BSN中参与上传公钥模式的应用时,将本地生成的公钥、测试数据、签名数据上传后提示测试失败,该如何解决?
答:1、生成证书的算法要与参与服务的底层框架算法一致,如:应用服务的框架是Fabric-secp256r1使用prime256v1,Fabric-sm2、FISCO-sm2和XuperChain-sm2使用sm2,FISCO-secp256k1则使用secp256k1;
2、检查测试数据(data.txt)中是否有空格或回车,将多余的空格或回车删除后重新签名,再上传测试即可。
问题6:在BSN中基于Fabric开发应用,上传链码包时选择的方法类型Invoke、query和event有什么区别,该如何选择?
答:Invoke是指在方法内需要向链上写数据的方法,该类型的方法会向排序节点提交数据,并且最终会上链落块,例如:PutState、DelState等需要存储数据或者删除数据的方法;query是指只在链上查询数据的方法,该方法的调用不会向排序节点提交数据,不会落块,例如:GetState等查询类方法;event是指链码事件,该类型的方法需要事先在链码中通过SetEvent(key,value)方法设置事件,事件中的key即为event方法名(如果在同一个方法中注册了多个事件,那只有最后一个事件会生效)。
链下业务系统调用链码事件注册接口进行链码事件注册。当事件被触发后,城市节点向注册的通知地址发送数据。需要注意的是,如果一个query类型的方法被设置为了Invoke,那么查询数据时将会再次将数据提交到链上并落块。如果数据过大将会占用大量的账本空间。如果一个Invoke类型的方法被设置成query,那么调用该方法存储的数据将不会上链。
问题7:用户参与到BSN的Fabric应用中是以用户身份还是组织身份?
答:在BSN中一个城市节点对应一个Fabric组织,用户选择不同的城市节点发布一个Fabric服务就相当于创建了一个跨组织的channel,用户参与服务时会在所选择的城市节点对应的组织内注册用户身份,链下业务系统使用该用户身份调用对应城市节点网关API与区块链应用进行数据交互。
问题8:为什么在Fabric网关SDK中没有看到有关接收背书结果,然后将背书结果提交的代码呢?
答:用户调用网关SDK的(reqChainCode或trans)接口提交交易到网关后,网关通过区块链框架微服务(Fabric SDK)提交交易请求到背书节点,背书成功后,网关通过区块链框架微服务(Fabric SDK)将背书结果打包提交给order er 节点,进行共识排序,生成区块,并广播给通道内的记账节点。因为这个操作由网关做了,所以Fabric网关SDK中没有有关接收背书结果然后将背书结果提交的代码。
问题9:在BSN中基于Fabric开发应用调用reqChainCode接口时,交易请求参数nonce字段如果重复,网关会如何处理?
答:在BSN中基于Fabric开发应用调用reqChainCode接口时,链下业务系统提交nonce重复的交易请求到网关时,网关不会验证随机数是否重复,背书节点和记账节点会验证交易ID是否重复,交易ID是由随机数和交易调用者的用户交易证书计算所得,网关会将验证异常信息返回给客户端。
问题10:secp256k1和secp256r1有什么不同?
答:secp256k1和secp256r1都是ECDSA(椭圆曲线数字签名算法)曲线的参数,区别是它们所使用的随机质数不同,目前行业内对于r1算法的安全性存疑,主流的公链基本使用k1算法。
问题11:在BSN中注册了链码事件,如果接收事件方没有接收到事件,BSN会重新推送吗?
答:在BSN中注册了链码事件,如果接收事件方没有接收到事件,或没有返回包含success的字符串,城市节点网关将会分别在第3、12、27、48秒后再次发起通知,直到重试4次之后,节点网关会将事件通知进行移除操作。
问题12:BSN中,系统权限链是只记录本节点网关内的系统信息上链,还是整个BSN所有节点网关上的系统信息在一条链上?系统链的生命周期是多长?
答:BSN系统权限链是运行在BSN所有公共城市节点上的一条区块链,用于保存整个BSN中的节点信息、应用信息、用户信息等基础信息。系统权限链能够为各个节点提供身份认证、权限验证、 交易限流以及交易路由等提供数据支持。系统权限链的生命周期会伴随着BSN一直存在下去,不存在数据丢失问题。
问题13:在BSN中使用密钥上传模式调用智能合约接口时,网关会验证提交的交易数据transData吗,还是直接转发给节点进行背书?
答:在BSN中使用密钥上传模式调用智能合约接口时,网关会解析transData中的数据来获取用户调用的合约以及合约方法等信息,进行权限校验(如:用户是否具有操作该合约方法的权限),验证通过后再转发给城市节点进行背书。
问题14:在部署合约的时候只需要一方部署单独就可以运行,还是需要多方确认?
答:调用部署合约时,就相当于发了一个部署的交易,这个交易是通过共识机制进行确认后才落块的。发送者是一个人,但是确认是多方共识的。在BSN中Fabric采用的是Kafka共识,FISCO BCOS采用的是PBFT共识,XuperChain采用的是XPOS,CITA采用的是CITA-BFT。
问题15:在BSN中基于FISCO BCOS开发应用调用用户注册接口时,userId有长度限制吗?
答:在BSN中调用用户注册接口,如果底层框架为FISCO BCOS时userId的最大长度值为32位;底层框架为Fabric时UserId的最大长度值为20位;底层框架为XuperChain时UserId的长度为6-20位字母或数字。
问题16:在BSN中基于Fabric开发应用调用Invoke方法时,只能传递字符串数组类型的数据吗?
答:在BSN中基于Fabric开发应用调用Invoke方法时只能传递字符串数组类型的参数,这是Fabric 1.4.3提供的链码API 中Invoke方法定义的,无法更改传入的参数类型,可以使用stub.GetFunctionAndParameters()获取到传递的参数。
问题17:在BSN中基于Fbric开发的应用在调用交易接口时对消息体进行了签名,但是没有对时间戳之类的签名,会不会存在安全问题呢?比如:重放攻击。
答:在BSN中基于Fabric开发的应用在调用交易接口时,参数内包含一个随机字符串,该随机字符串会和用户身份证书经过哈希计算得到交易ID,链上会验证交易ID不能重复,所以可以防止重放攻击。
问题18:在BSN中基于Fabric开发应用时,如何对链上存储的数据进行模糊查询?
答:BSN适配的Fabric底层框架是使用couchdb数据库进行数据存储的,Fabric链码API提供了couchdb的模糊查询方法getQueryResult,开发者先在链码中实现此方法,然后链下业务系统通过网关API调用该链码方法即可。
问题19:BSN服务升级完成后,需要为参与者重新分配权限吗?
答:如服务升级时有更改角色,服务升级完成后就需要对参与者重新分配权限,如角色没有更改则无需重新分配权限。

作者:区块链服务网络BSN;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请发送至邮箱:linggeqi@chaindd.com

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 区块链服务网络BSN 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信