【线上公开课】如何编写赢得万元奖金的智能合约?

【主讲嘉宾】:资深区块链研发经理-赵宇霆   资深软件开发工程师-韦心红   资深区块链工程师-周洋

【课程简介】:BSN第二次开发者大赛已落幕,本期邀请三位使用XuperChain作为底层框架的获奖人亲身揭秘赢得万元大奖的的智能合约如何编写

首先,资深区块链研发经理赵宇霆和大家开始分享他的案例:基于XuperChain的“微信”智能合约。区块链的特性在于分布式、去中心化、可溯源、防篡改,因此常用于存证取证场景。而聊天信息也已经成为司法取证中重要的证据。将两者结合,就可以打造一个基于区块链的可溯源、防篡改的聊天工具。

“微信”智能合约设计了四大核心功能,比如会员功能、机构功能、聊天群功能以及基础聊天功能。进行合约设计首先确定合约包含哪些模块,第二步确定哪些数据项要上链,第三步确定上链数据是否需要加密/脱敏,最后确定合约包含哪些身份,不同身份具备哪些权限。

XuperChain采用权限控制模型,可以预先对合约账户的权限进行划分,只有当一个或多个地址的权限权重之和大于权限控制模型中规定的权重值,才能进行签名。合约单测工具可以在不部署合约的情况下,测试智能合约方法是否能够正常运行,大大节省了合约测试的成本。单测工具通过编写js脚本来实现测试用例。执行测试用例时,通过断言来判断合约方法执行结果与预期是否相符。

合约单测工具可以解决一部分测试需求,但依然存在需要部署到链上才能进行测试的场景。XuperChain默认采用的是编译模式,部署后执行效率高。在测试时,我们可以启用XuperChain的解释模式,可以提升合约上链效率。

第二位资深软件开发工程师韦心红带来案例分享:在百度超级链上实现直播打卡挑战。打卡与直播相结合,通过打卡互动解决主播的引流问题,主播可以低成本吸引用户到直播间参与互动;通过区块链解决用户不信任抽奖问题。从商家发起活动,到用户参与、打卡、瓜分奖金,都记录到区块链上,在瓜分奖金时更是直接通过区块链智能合约来实现公开公平地下发奖金给用户。

为了达到奖金分配公开透明且不可篡改,需要上链的关键数据有:用户数据、余额充值/提现、活动数据、参与报名、打卡记录。在golang实现的合约中,只需要��个结构体保存我们的数据。分享人总结到:百度XuperChain的合约编写方式与Fabric相似,从Fabric迁移到百度超级链非常方便XuperChain官方提供了测试环境,还是比较贴心。相对于solidity,百度超级链使用golang开发合约感觉限制少很多,很方便。

第三位资深区块链工程师周洋的案例分享:审计合约在百度超级链上的应用,该合约旨在提供一个普适性的合规审计方案,在银行工作人员核算、检查与各商户的POS机业务情况背景下能够事先于智能合约中自定义在审计过程中的一系列检查项,使得事务执行者能够在规则约束下”合法“参与。

这是基于时空的智能合约,拥有安全的人脸验证功能,可以提高合规审计工作效率与真实性。在本次提交的智能合约实现中,团队设计了可应用于所有合规审计业务的普适性方案,并针对上述银行业务场景中所需的预言机服务以及规则方案做了细化。

最后周洋指出XuperChain单节点模式部署简单,且提供了公开的测试环境,能够让开发者无须感知链本身而进行智能合约方面的开发工作。同时使用go语言提高了方法级的测试便捷性。