4.常见问题解答
4.1 星火令
4.1.1 星火令申领
通过星火服务平台申请凭证获取星火令。具体申请操作参见星火链BID体系 - 4.浏览器插件钱包章节
体验网访问地址:
4.2 SDK相关
4.2.1 Failed to connect to the network
连接节点失败,确认节点是否运行正常,以及配置地址是否正确。
4.2.2 balance(48145674) - base_reserve(0) is not enough for payment
Account(did:bid:efnVUgqQFfYeu97ABf6sGm3WFtVXHZB2)'s balance(48145674) - base_reserve(0) is not enough for payment (100000000)
账号余额不足, 参照快速上手-获取星火令章节。
Account(did:bid:efL9pEFZzyK6ysPGZ5XwdYPcii7Tmvpd)'s reserve balance(1068101007) - transaction(1dea4d6d) fee limit(10691018641) < base reserve(0)
feelimit设置大于账户余额减去预留金额,需要调整feelimit。
4.2.3 Transaction nonce(4) too small
Transaction nonce(4) too small, the account(did:bid:efBdagu8sVkJWEw5kLt1w69bxa85Kuag) nonce is (5)
nonce值错误,当前nonce
=5的基础上+1,发起下一笔交易。
4.2.4 Received duplicate transaction message
Received duplicate transaction message. The transaction's source address is did:bid:efnVUgqQFfYeu97ABf6sGm3WFtVXHZB2, and hash is d0cd3c87
相同交易处理策略,交易池中存在一笔完全相同的交易(交易hash)一致,则直接插入失败。
4.2.5 Drop the transaction to insert queue because of low fee
某个源账户发的交易,nonce
相同,其它参数存在差异(计算出的tx hash不同),则会比较两笔交易的gasprice,B < 1.1A
,则提示Drop the transaction to…
4.2.6 signature weight is not enough…
Transaction(0f3c99381b7bca967bcad2b55d396ff33b375c9aea1cda024f7b705aea1a2e5c) signature weight is not enough..
权限不足或者私钥不正确。
4.2.7 EVMContract Execute VMException OutOfGas..
交易费用不够,需调整freelimt。
4.2.8 nodejs-sdk Number类型参数问题
为了保证数字精度,请求参数中的Number
类型,全都按照字符串处理,例如: amount = 500
,那么传递参数时候就将其更改为 amount ='500'
字符串形式。
4.2.9 关于合约调用费用评估问题
目前接口评估不准确,下个版本修正。
4.2.10 创建合约消耗星火令过大问题
sdk中gasprice
默认值100
,基于许可的考虑,目前创建合约是基础创建操作消耗的星火令 + 合约消耗的星火令,使用完再申请就可以了。
4.2.11 remarks长度问题
sdk中remarks
为选填字段,长度[0,256k]。
4.3 智能合约相关
4.3.1 智能合约支持什么语言?
智能合约目前支持JS
、Solidity
。
4.3.2 js合约调用异常
{"contract":"did:bid:efspy6btdcuzP5BH2N899Ycti5Sd7n3z","exception":"SyntaxError: Unexpected token \r in JSON at position 1457","linenum":34,"stack":"SyntaxError: Unexpected token \r in JSON at position 1457\n at JSON.parse (<anonymous>)\n at main (__enable_check_time__:83:22)"}
input参数格式校验,需校验JSON规范。
4.3.3 合约设置初始化星火令InitBalance作用
合约之间调用需要消耗星火令,JavaScript
合约中Chain.payCoin(address, amount[, input])
,支持合约账号余额的转账。
4.3.4 错误响应说明
key
的长度超过1024Byte
限制,详情参考智能合约开发整体介绍"Length of the key should be between [1,1024].key=XXXXX...XXXXX",key.length=1248
value
的长度超过256KB
限制,详情参考智能合约开发整体介绍Length of the value should be between [0, 262144]. key=XXXX...XXX,value.length=307200
合约循环处理深度超过
1024
限制,详情参考智能合约开发整体介绍Step exceeding limit
合约递归调用深度超过
4
层限制,详情参考智能合约开发整体介绍Too many recursion.
4.4 交易相关
4.4.1 交易查询
访问星火网区块链浏览器
体验网:http://test-explorer.bitfactory.cn
正式网:https://explorer.bitfactory.cn
查询示例:
4.5 消息订阅
星火链使用websocket
接口实现指定账户地址的交易通知,交易使用protobuf
结构。
4.6 其他
4.6.1 插件钱包是否支持合约创建?
暂不支持
4.6.2 如何存储对象数据?
链上以key-value
的键值对形式保存数据,可以使用Chain.store(id,JSON.stringify(str))
其中参数str
可以是一个json
格式的字符串。
4.6.3 关于账号可信认证问题
账户没有经过可信认证的话就不能发交易,体验网现在是放开的,正式网必须通过认证才可以发交易。