笔者一直强调,一定要利用区块链的特点来解决行业存在的问题,并且该问题最好用区块链解决或者说只能用区块链解决。彩票行业就是个例子。
在讲解代码之前,首先讲解一下业务设计,如图6.15所示。
图6.15 区块链彩票业务流程
限于篇幅和业务复杂度,该系统并没有按照现有的福彩逻辑来设计,而是本着讲明白实现原理的目的,简化了系统的设计,读者可以根据自己的需求来设计符合自己需求的系统。首先在传统的福彩流程中,用户会花费人民币购买彩票,然后福彩系统将相关的投注信息传送到福彩中心。当投注日期截止后,通过机器摇号的方式决定中彩信息,工作人员记录投注信息,为投注人兑奖。在这个过程中,摇号机器可以被认为操控,在巨大的利益密切,公证人员也形同虚设。
而在本系统的设计中,用户投注的不再是人民币,而是一个彩票token,该token需要通过数字货币ETH来购买,购买的方式和过程不需要人工参与,是通过智能合约来实现。上图中的流程1,用户将ETH发送到token智能合约,该合约会按照ETH与彩票token的比例,返回用户一定量的token,然后用户通过流程2,将手中的token与一定的投注信息发送给福彩管理合约,该合约接收福彩token并记录用户的投注信息。