区块链服务网络BSN发布至今已经一年多了。随着BSN业务的深入开展,更多的开发者关注BSN,基于BSN环境部署了自己的区块链应用。BSN官方客服在此期间收到来自广大开发者的各类咨询,现将存在共性的常见问题与大家分享。BSN团队将根据大家的反馈,不断进行产品服务优化和新功能迭代,并持续融入更多来自全球领先的区块链技术,为广大开发者提供更低成本、更便捷、全互通的一站式区块链服务。
问题1:在BSN测试网使用网关SDK时,puk设置的是正确的网关公钥为什么网关SDK还会报'验签失败'?
在BSN测试网使用网关SDK时,网关SDK报“验签失败',用户检查puk设置的为正确的网关公钥后,Java-SDK还需检查initConfig中是否将testServerIdn配置成true,Go-SDK需检查pukConfig.go中SetTest()是否配置test=true,Python/CSharp-SDK无该配置只需检查puk/AppPublicCert即可。
问题2:在BSN测试网的跨链服务中用户可以自己发布跨链管理合约吗?
不可以,在BSN中无论是基于POLY或IRITA的跨链服务,用户只能发布调用跨链管理合约的消费合约。跨链管理合约是用户选择跨链服务后由BSN自动部署的。
问题3:BSN中基于Fabric开发应用调用reqChainCode接口时,传递的临时数据(transientData)字段有什么作用?
在Fabric链码中许多链码函数在被调用时需要额外的输入数据。在大多数情况下开发者会在调用函数时传入一组参数,而链码参数,包括函数名和函数参数,都会作为有效交易的一部分保存在区块内,因此将永久性的存在于账本中。如果出于某种原因开发者不希望在链上永久保存参数列表,就可以使用临时数据(transientData)。临时数据(transientData)是一种可以向链码函数传参但不需要将其保存在交易记录中的输入方法。开发者使用reqChainCode接口传递transientData字段后,可以在链码中根据getTransient()方法获取该字段。
问题4:BSN中基于Fabric开发应用调用reqChainCode接口时,为什么每次查询相同的KEY值也会返回不同的交易ID?
BSN中基于Fabric开发应用时,每次调用reqChainCode接口调用链码时都是一笔交易,每笔交易都会对应生成一笔交易ID,只是调用invoke类型方法时会将本次交易ID和交易信息上链,而调用query类型方法时不会将查询结果上链,只会将查询结果和交易ID返回给链下业务系统。
问题5:BSN中基于FISCO BCOS开发应用,调用reqChainCode接口的查询方法时提示“out-of-gas during EVM execution”是什么原因?
在BSN中部署FISCO BCOS的智能合约时,系统会根据用户购买的TPS,系统CPU测算出用户单笔交易的最大gas值。当用户多次根据同一ID插入数据时,虽然单笔交易消耗gas值未达到最大gas值,但根据ID一次性查询所有数据,就会因为数据量太大而超过单笔交易的最大gas值,进而报错,建议用户在编写智能合约时实现分条多批次查询。
问题6:使用BSN测试网调用Fabric服务提示'gRPC Transport Status Code:(2)Unknown.Description: access denied: channel[channel202010310000001]creator org [ECDSARTestNodeMSP]'是什么原因?
检查用户交易密钥对的私钥内容是否正确,即SDK中用户交易密钥对存储目录下的pk文件夹下的{testuser}@{AppCode}_pk.pem证书文件内容和下载的证书【BSNTestCert-fabricMsp-keystore】下的prikey.pem文件内容是否一致。
问题7:在BSN中参与Fabric密钥托管模式的应用注册子用户时返回的密码和填写的密码不一致是为什么?
在BSN中参与Fabric密钥托管模式的应用注册子用户时,不用填写用户密码,即使填写了密码,系统也会使用BSN默认密码(bsn123456)进行用户注册;如果是上传公钥模式下注册子用户就必须填写用户密码。
问题8:在BSN中参与上传公钥模式的应用时,将本地生成的公钥、测试数据、签名数据上传后提示测试失败,该如何解决?
1、生成证书的算法要与参与服务的底层框架算法一致,如应用服务的框架是 Fabric-secp256r1使用prime256v1,Fabric-sm2、FISCO-sm2和XuperChain-sm2使用sm2 ,FISCO-secp256k1则使用secp256k1;
2、检查测试数据 (data.txt) 中是否有空格或回车,将多余的空格或回车删除后重新签名,再上传测试即可。
问题9:基于BSN开发FISCO BCOS应用时,注册链码事件成功,但是当合约事件被触发时,注册地址没有收到通知,该如何解决?
检查注册事件的请求参数eventType是否为2(1是出块事件,2是合约事件)
问题10:在BSN中如何对已上架的产品进行修改产品类型操作?
在BSN中发布了已上架的产品后,可以在已上架产品的账单周期内对产品进行下架操作,然后编辑产品信息后再重新上架,账单周期内重新上架产品将不会再次收取产品上架费。
问题11:如何成为BSN官方指定应用的供应商?
1、供应商需拥有区块链应用且具有自主知识产权;
2、供应商须为联盟认证的企业合格开发者(申请成为合格开发者http://kb.bsnbase.com/webdoc/view/Pub4028813e705bf9760170a94c96461377.html)或联盟成员;
3、发邮件到开发者委员会(developer@bsnbase.com)申请加入“BSN指定区块链应用”,加入后,我们将为您免费提供丰富的应用推广资源。
问题12:BSN中已发布的服务如何自行停用?
目前BSN官方门户不支持用户自行停用、卸载服务,用户将拟停用、卸载并清除链上数据的服务名称发邮件到 support@bsnbase.com ,工作人员与用户邮件确认后进行办理。
问题13:使用BSN测试网测试Fabric应用时,如何测试链码事件?
BSN测试网中基于Fabric和XuperChain开发应用时不支持链码事件功能,基于FISCO BCOS开发应用时支持链码事件功能。
问题14:BSN推出的测试网与原有的应用发布有什么区别?
1、测试网部署合约无需人工审核,是完全的自动化部署;
2、所有的合约部署在同一个群组(ISCO BCOS、XuperChain)或者channel(Fabric)中;
3、测试网数据将定期被清理;
4、测试网调用网关API将不会校验功能权限;
5、测试网可以同时进行密钥托管模式或上传公钥模式的网关调用测试。
问题15:用户发布过的服务未续费被卸载后,是否可以再发布一个相同名字的服务?
不可以,目前在BSN中服务名称不可以重复,即使服务已经被卸载,也不可以重复使用该服务名称。