id:BSN_2021
公众号:BSN研习社
2022年1月25日,区块链服务网络发展联盟上线推出了“BSN-DDC基础网络”并进入试商用阶段。同时,BSN-DDC官网门户(ddc.bsnbase.com)上线发布,供DDC/NFT业务方进行“平台方”的注册申请。
截止当前,BSN-DDC基础网络已上线运行二个月,开发者在使用过程中,也提出了不少的问题。此前,BSN研习社已发布过一期《DDC开发常见问题答疑》,下面是BSN技术支持人员最新总结的常见问题(FAQ)。
问:创建链账户时平台账户和终端账户有什么区别?
答:平台方账户可以管理终端账户的状态,可以在DDC-SDK里对终端用户进行充值。
问:使用官方DDC-SDK生成DDC时,里面的sender和to都是指的什么?
答:使用官方DDC-SDK生成DDC时,里面的sender账户是用来支付本次交易所需要消耗的能量值和业务费的,to账户指的是将DDC生成至哪个账户下。
问:ddcURI可以进行修改吗或setDDCURI什么情况下可以用?
答:如果拥有者在第一次生成DDC时ddcURI为空,生成之后该DDC的拥有者和授权者就可以使用setDDCURI方法进行ddcURI的赋值,如果ddcURI已经有值了就不可以再修改了。
问:1155DDC详情里面的ddcPubTotal字段是指什么,转移后该字段会变吗?
答:1155DDC详情里面的ddcPubTotal字段是这个1155DDC发行的总数量,这个数量不会变。
问:BSN-BASE门户创建的链账户能调用官方DDC合约吗?
答:BSN-BASE门户创建的链账户不能调用官方DDC合约,DDC门户创建的链账户即可以调用官方DDC合约,也可以调用自己部署的DDC合约或其他合约。
问:DDC门户和BSN-BASE门户中的资金账户通用吗?
答:DDC门户和BSN-BASE门户中的资金账户是两套体系,两者不能通用。
问:进行交易之后,如何判断交易成功了?
答:除中移链以外根据交易hash获取交易数据中的交易状态,根据交易状态判断交易是否成功(文昌链、武汉链status为0x1时为成功、泰安链status为0x0时为成功)。中移链调用getInfo方法查看head_block_num是否大于mint之后返回的块高,大于则表示上链成功。
问:mint之后如何获取DDCID?
答:根据交易所在的块号,调用blockEventService.getBlockEvent方法查这个块中的事件,如DDC721TransferEventBean中有DDCID。
问:使用武汉链DDC-SDK报“already known”,是什么原因?
答:是因为频繁调用接口进行交易,nonce值重复,解决方案就是每次交易时间隔一段时间或是每次提交交易都设置nonce值,如RequestOptions requestOptions = RequestOptions.builder()
.setNonce(2)
.build();
问:使用武汉链DDC-SDK报“nonce too low”,是什么原因?
答:1、transactionSignature中设置的的privateKey是否是sender的privateKey
2、nonce值重复,每次交易时在options中设置nonce的值,如RequestOptions requestOptions = RequestOptions.builder()
.setNonce(2)
.build();
问:使用武汉链DDC-SDK时报“2001 Unauthorized”是什么原因?
答:检查setGatewayUrl设置的网关地址是否正确,应该为https://opbningxia.bsngate.com:18602/api/[项目ID]/rpc。
问:武汉链根据交易hash获取交易数据时返回“Both rpc err and result are null”是为什么(或交易一直pending)?
答:1、根据eth_getTransactionByHash方法获取交易信息,查看到前交易信息,发现交易未落块,说明交易还在pending状态
2、检查设置的gasPrice,如果gasPrice设置的太小,交易就会一直在等待打包,查询到pending交易的nonce值,提高gasPrice之后,重新发起交易。
3、设置了nonce值,但是nonce值不是从1开始递增的(或是nonce值不是连续的),交易就会一直pending,要补齐nonce值缺失的交易。可以根据eth_getTransactionCount方法可以查看当前交易的nonce值。
问:武汉链DDC-SDK中的gasPrice怎么设置合适?
答:使用eth_gasPrice方法,获取当前链上的平均gasPrice值,设置在这个值上下就可以。
问:武汉链DDC-SDK中的gasLimit怎么设置合适?
答:gasLimit可以根据eth_estimateGas计算下,然后gasLimit比这个值大就可以,如不会计算设置个特别大的值就可以。