文档捉虫:生成节点证书sn显示异常
- 问题类型:P2
- 页面链接:https://docs.chainmaker.org.cn/v2.3.7/html/instructions/%E5%9F%BA%E4%BA%8ECA%E6%9C%8D%E5%8A%A1%E6%90%AD%E5%BB%BA%E9%95%BF%E5%AE%89%E9%93%BE.html
- 问题片段:
如图所示,用户使用| jq进行json的解析,sn的显示出现了溢出:"certSn": 2694363940699227000,"issueCertSn": 1696861425238169000,
- 详细描述:详细情况可见issue#1387 (closed),主要是由于|jq,在解析 JSON 时,会将所有数字类型(无论整数还是浮点数)统一使用 IEEE 754 双精度浮点数 来表示,双精度浮点数能够精确表示的整数有一个上限,这个上限是 Number.MAX_SAFE_INTEGER,即 2^53 - 1,它的值是 9007199254740991,证书序列号远远超过了最大安全整数的范围。
- 解决方案:最好的建议还是修改一下后端代码,将 CertSn 和 IssuerSn 这类大整数在 JSON 中以字符串的形式返回,JSON 解析器还是挺常用的。可以先在文档中进行提示,或者使用其他的方案如| jq 'walk(if type == "object" and (.certSn or .issuerSn) then .certSn |= tostring | .issuerSn |= tostring else . end)'