一种基于类区块链网络的抽奖的简单构思

前段时间的一元抽奖闹得沸沸扬扬,近来差不多已经销声匿迹了。背后的原因不言自明,国家政策是一方面,但我想更多的还是因为这种抽奖后台操纵的空间太大。最近翻旧闻时又翻到了批判一元夺宝的文章,为人性的贪婪感叹之余,想到如果是我做这样的东西的话,会怎样实现一个靠谱点的方案,要求是过程可靠,结果公平。

下面记录一点粗浅的想法

假设我们有这样一个区块链网络,m个成员,n个记账节点,每个成员账户上有一定的虚拟货币金额R。要求组建k个成员(k<m)的抽奖系统。

一、成员K1向全系统广播发起抽奖活动A的邀请,彩票金额为f,奖池金额f*k-x (x为记账节点奖励),等待其余成员加入。

二、成员K2~Kh(h>=k)响应邀请,K1~Kh组成临时网络,互相检查成员账户金额R是否满足R>=f*3。如果有满足要求成员人数大于或等于k,则前k个响应的符合要求的成员进行活动A,确定时间戳T1,否则继续等待。

三、活动A中所有成员各随机出一个256位长整数Q,用自己的私钥对Q进行加密,生成字符串QS。然后用自己的私钥对活动A特征signA进行签名,生成签名signAS。

signA形式:T1 k,f  K1,K2,K3....Kk QS

四、成员交换各自的成签名signAS,形成活动A总账本signAT

signAT:T1 k,f  K1:R1:QS1:signAS1 K2:R2:QS2:signAS2 K3:R3:QS3:signAS3 .... Kk:Rk:QSk:signASk

五、将signAT发送给所有记账节点,加入总账本。

记账规则为:

1、检查signAT上记录的各成员金额是否正确

2、记录账本,并将活动A的所有成员账户金额清零

六、活动A的成员确认账本已提交后,向记账节点提交自己在步骤三生成的长整数Q,记账节点对照QS和signAS确认Q是否正确,若正确,则将成员的账户金额恢复为R-x/k -f( x为活动A的奖励金额,k为活动人数,f为A的彩票金额,R为账本中signAT记录的成员账户原始金额 )

七、所有活动A的成员将自己的Q提交完成后,记账节点计算Q1+Q2+Q3+....+Qk的和,并与k取模,得值v,成员Kv账户金额获得金额f*k,第一个计算出结果的记账节点获得奖励金额x。活动A结束。


几点解释:

1、记账的细节参照现有区块链项目的实现

2、要求检查成员账户初始金额R是否满足R>=f*3,是为了尽量避免步骤六中,最后一个提交的成员在未中奖的情况下拒绝提交自己的Q,造成真正的中间者无法领奖。即成员未中奖的损失f+x/k,远小不提交Q初始值的损失R-x/k -f

3、以上只是个人脑洞,个人不想也没有时间做具体实现,请勿较真。赌博违法,珍爱生命。



猜你喜欢

转载自blog.csdn.net/qq631431929/article/details/79740688