维基链智能合约APIbug定位修复

一、关于维基链WICC

1、自行查看相关资料

(1)官方网站 (2)Github (2)开发者中心

二、维基链提供智能合约Dapp开发

从源码可知WICC底层基于bitcoin,上层是运行Lua虚拟机,智能合约跟以太坊、EOS类似,特殊是由Lua开发

三、开发过程遇到的问题

1、由开发者接口文档可知其智能合约API是由底层mylib库提供合约与链数据的交互

2、mylib库GetTxConfirmHeight接口函数调用失败

(1)GetTxConfirmHeight接口说明

(2)由文档可知其功能是通过hash查询其上链时的区块高度

以某合约交易hash值cfad02ea148ca0a763baaf67735c010023bb75c88509f6a94e87921a54182f02 为例,可在维基链测试网区块浏览器查询到结果如下图,确认高度为639083

(3) 问题分析过程

· 测试代码如下

· 结果打印输出结果一直如下,即取不到hash被确认的高度

(4)查看底层接口代码

c++功底还不够深,看不出啥问题

(5)换个思路:有没有其他入参也是hash的接口调用是正常的?对比一下代码

功夫不负有心人,GetTxContracts接口也是入参为hash,写测试代码发现此接口是正常的,同样的入参,一个正常一个异常,对比一下函数实现

(6)对比发现亮点

由以下图片可见,ExGetTxConfirmHeightFunc 函数取入参hash直接进行操作,ExGetTxContractsFunc函数对入参hash进行倒序后再操作,加打印信息调试确实两者的hash有倒序的区别

(7)解决方法:在操作之前对hash进行倒序

(8)同样的代码测试通过

confirm_height= 639083.0

注意:链上虚拟机版本问题,输出的高度值为Number类型 :123456.0,开发者使用此值的时候需要注意

3、同样的问题出现在mylib库GetBlockHash接口函数中

取到的hash值为被倒序了,解决方法同上

4、修改之后引入的问题

由于区块链的特性是去中心化的,WICC共识机制为DPOS,目前为11个超级节点随机轮流记账出块,本地节点通过以上修改之后合约可以正常获得数据,但是由于超级节点没有同步更新 所以如果只修改本地节点,调用修复后的接口后,区块同步会停止 原因未找到,有进展后续会更新…

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏区块链入门

【区块链技术工坊31期】许向:艺术品领域区块链探索实践

1)题目: 【区块链技术工坊31期】艺术品领域区块链探索实践 2)议题: 正所谓古语有云,盛世兴古董,乱世重黄金。 刚巧我们正处于一个盛世中,各种古玩、...

31260
来自专栏孟永辉

告别资本时间的区块链:走出寒冬的必由之路

互联网时代的落幕给人们带来了无尽的彷徨与迷茫,区块链的出现则让人们重拾信心。无论是资本层面还是市场层面,我们似乎都看到了似曾相识的现象:资本圈不断投资区块链相关...

6310
来自专栏云市场·精选汇

行业 | 引入电子合同,旅游供应商合作签约不再困难

2018年,我国的旅游行业继续以高速增长的态势持续发展,仅上半年国内游旅客就达到了28.26亿人次。究其原因,国家发改委社会司有关负责人认为,这个结果和假日旅游...

17480
来自专栏jouypub

Linux下的简易计算器

在Linux下,当我们要随手计算一些数值,是不是第一反应要打开python交互命令行,其实有更简便的计算方法,下面来一一介绍

17440
来自专栏SAP Technical

SAP Leonardo了解一下

为什么?未来任何一个工业都会变成软件工业。盖茨是对的,因为任何工业任何行业自动化的程度会越来越高,最后你所处理的就是信息和知识。

20430
来自专栏孟永辉

资本寒冬下的蛰伏:告别野望的区块链正在重生

可以确定的是区块链行业正在经历一场前所未有的寒冬期,资本退潮仅仅只是外在表现,更深层次的原因是区块链缺少相对较为成熟的应用,最终导致了几乎所有的应用都集中在了数...

10620
来自专栏区块链百科,区块链行业报告

区块链如何提升游戏生态的价值「四问」

许多人认为游戏是区块链最快的落地领域和重要的引爆点,知名游戏制作公司暴雪前员工也加入以分佈式帐本技术改善游戏产业的计划。首先可否简述一下区块链或分布式帐本技术能...

12720
来自专栏比原链

用bytomswap进行“跨链”资产转换

bytom是专注资产领域的公有区块链平台,最近开发者社区基于比原做了一款资产转换平台。我们可以在上面通过自己现有的资产在比原上发行资产。然后达到资产转换的目的。

10230
来自专栏维基链技术专区

晓说区块链 | 比特币区块的产生速度为何被设定为10分钟?

众所周知,比特币的block产生速度被设定为了10分钟,按着官方wiki所说,每一个节点需要一些时间来确认block(<10mins),但为什么是10分钟呢?和...

56140
来自专栏孟永辉

格格不入的数字货币:区块链世外桃源的终结者

区块链为我们打开的是思考新的发展模式和发展方式大门的钥匙,借助区块链技术和区块链思维我们能够找到破解互联网行业痛点和问题的方式和方法。一些在互联网的逻辑和思维下...

11840

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励