一种基于区块链的社交媒体抽奖方法

专利2024-11-19  59



1.本发明属于区块链领域,具体涉及一种基于区块链的社交媒体抽奖方法。


背景技术:

2.区块链因为其数据的公开性,不可篡改性被广泛应用于存证取证、物流溯源 等诸多领域。为了达到推广产品或者吸引粉丝从而获得影响力等目的,大部分项 目方或知名用户会在twitter等社交媒体平台发布一些抽奖活动,一般来说,想 要加入此类抽奖活动需要进行关注、转发等一系列的操作,并且最后抽奖结果由 抽奖发起人公布。
3.上述现有的抽奖方法存在如下问题:
4.抽奖的透明性得不到保证。由于抽奖过程对参与用户来说是不透明的,用户 无法判断抽奖过程是否公平,容易出现“自抽自领”等现象。
5.抽奖的自动化程度不高。由于抽奖结束后需要联系当前社交媒体账号用户, 并且询问其链上地址之后手动进行nft转移、ft转账等操作,此过程较为繁杂, 并且过程中存在一定等安全隐患,会有假冒领取等风险。
6.抽奖容易遭受女巫攻击。攻击者为了增加自己获得奖品的概率,会批量注册 多个僵尸账号参与抽奖,采用人工筛查合法账号的方式需要耗费大量的精力,因 此一般无法有效抵挡这种攻击。
7.将抽奖过程转移至链上,利用智能合约规则前置和自动执行的特性可以很好 的解决上述问题。通过公开智能合约源码可以解决抽奖的透明性问题得不到保证 这一关键问题,合约中的伪随机算法等保证了抽奖结果的公平公正。已经有一些 工作解决了上述部分问题,例如在公开的专利cn2019111669941中提出了一种 基于区块链的抽奖方法,但是区块链只是作为生成随机数的工具,奖品发放过程 仍然在链下执行,因此这种方法仅保证了抽奖的透明性,无法保证抽奖的真实性 与有效性,同时没有针对现实中的具体问题,没有具体的应用场景,并且没有解 决容易遭到女巫攻击的问题。
8.本发明选择使用的智能合约平台为nearprotocol,near协议是一个使用分 片技术实现可扩展性的底层区块链。协议采用智能合约并使用权益证明(pos)共识 机制来保护网络。
9.near平台由alex skidanov和illia polosukhin于2020年共同创立,由near 团队合力搭建。项目方向是建立由社区运作的云基础设施,用于搭载去中心化应 用程序(dapp)。
10.near智能合约运行时主要是wasm环境,webassembly可以简称为web的 汇编。它是一种类似于汇编语言的低级语言,具有紧凑的二进制格式,使您能够 以类似本机的速度运行web应用程序。它还为c,c++和rust等语言提供了编 译目标,从而使客户端应用程序能够以接近本地的性能在web上运行。本发明 的智能合约系统选择使用rust编写。


技术实现要素:

11.本发明的目的在于解决传统的社交媒体抽奖活动中抽奖透明性、真实性得不 到保证的问题,提供一种基于区块链的社交媒体抽奖方法。
12.技术方案:一种基于区块链的社交媒体抽奖方法,包括如下步骤:
13.(1)抽奖发起者基于区块链创建抽奖信息,包括抽奖发起者地址、抽奖结 束时间、活动发起人社交账号、奖池内奖品信息和抽奖条件;
14.(2)抽奖合约在收到请求后,反序列化参数并且创建对应奖池prize,基于 智能合约初始化该结构体,且设置奖池状态为等待;等待抽奖发起人调用nft 合约,且将奖品转移至抽奖合约账户后,设置奖池状态为开始;
15.(3)从智能合约中查询奖池数据,并且筛选出state为start的奖池信息提 供给用户,用户选择合适的奖池后选择参与抽奖;
16.(4)去中心化预言机通过调用合约的touch函数,获取当前区块中的时间 戳和奖池对应prize结构体中的结束时间,判断当前奖池是否超时,若超时则将 该奖池应该添加进入开奖流程;
17.(5)智能合约利用签名该笔交易的账户的公钥以及当前区块内时间戳进行 取随机数的运算,得到奖池中每个奖品的获奖者的账户地址,智能合约根据prize 结构体中prizes信息调用每个奖品对应合约的transfer函数,将奖品转移至中 奖者的地址中;
18.(6)抽奖完成后,智能合约删除奖池的已完成的相关信息,且基于图数据 的去中心化链上数据索引工具thegraph,在删除奖池信息时,将原本的prize 结构体以及最终获奖结果信息以日志的形式打包进区块中,thegraph会同步当 前区块链中的每一个区块,发现相关日志则会将其保存至图数据库中。
19.进一步的,所述的奖池内奖品prices包括nft信息和ft信息,nft信息 包括nft合约地址以及序号,所述的ft信息包括ft合约地址以及数量。
20.步骤(1)中的抽奖信息使用json序列化之后将结果作为参数调用抽奖合约 的创建奖池函数。
21.进一步的,所述奖池prize结构体中包含创建人链上地址creatoraddress,奖 品信息prizes,结束日期deadline,抽奖人员名单joinedaccount,参与奖池的要 求requirements和当前合约状态state。
22.步骤(3)中,用户在选择合适的奖池后选择参与抽奖,包括如下过程:
23.将对应的奖池idpricepoolid,用户信息userinfo使用json序列化后发送至去 中心化预言机处理,去中心化预言机利用上述信息获取到对应用户的社交媒体信 息后进行校验判断,如果判断通过则会将对应用户添加至奖池的抽奖用户列表中, 用户信息userinfo包括用户的区块链账户地址以及社交媒体账户。
24.步骤(4)中,去中心化预言机定时调用智能合约的touch函数,touch函 数遍历目前奖池中存在的所有奖池。
25.步骤(5)中,取随机数的运算为模幂算法。
26.更进一步的,所述方法基于rust开发的智能合约、reactjs的前端界面、 thegraph的数据索引实现,包括基于社交媒体api和分布式爬虫的预言机;
27.智能合约中,先定义预先设定的输入条件和对应的输出动作,编码完成后编 译出
wasm文件,最后将智能合约部署到near协议中的指定账户上,外部用 户通过rpc的方式访问部署在账户上的智能合约;
28.前端界面由reactjs开发,通过near-api-js与智能合约进行交互;
29.the graph通过一个去中心化的协议实现区块链上数据聚合和索引,包括通 过graphql api进行查询,对奖品的流通情况进行追踪,并且存储已经结束的 抽奖活动的相关信息;
30.分布式爬虫的预言机,如果接入的社交媒体平台开放了公开的api,则可以 通过api直接获取到推广信息,如果未开放公开api,则通过分布式爬虫对平台 信息进行爬取和分析。
31.有益效果:与现有技术相比,本发明的突出的实质性特点和显著性进步主要 体现在以下几点:
32.(1)本发明采用了区块链进行抽奖,保证了抽奖过程的透明性;采用基于 vrf的链上随机数,保证了抽奖的公平性;抽奖结束后直接由智能合约转移奖 品,保证了抽奖的真实性;
33.(2)本发明采用了去中心化预言机的形式获取链上去链下数据,保证了参 加抽奖的账户的行为是真实有效的;
34.(3)本发明通过使用thegraph索引减轻了链上数据的存储压力,同时可以 更方便的进行链上数据的追溯与分析;
35.最后,本发明通过将智能合约进行公开审计并且开源的方法保证了抽奖过程 的安全性,通过使用成熟的链上随机数算法保证了抽奖结果的公平性,通过绑定 社交账号与区块链地址的方式防止了女巫攻击。
附图说明
36.图1为本发明应用的抽奖流程示意图;
37.图2为本发明所述中预言机架构图;
38.图3是本发明实施例中链上抽奖系统框架图。
具体实施方式
39.为了详细的说明本发明所公开的技术方案,下面结合说明书附图具体的阐述。
40.如图1-图2,本发明提供的是一种基于区块链的社交媒体抽奖方案,避免了 虚假抽奖活动以及内幕抽奖等情况的发生。下面结合方法的实现过程来具体表述。
41.为解决传统的社交媒体抽奖活动中抽奖透明性、真实性得不到保证这一问题, 本发明的通过将智能合约进行公开审计并且开源的方法保证了抽奖过程的安全 性,通过使用成熟的链上随机数算法保证了抽奖结果的公平性,通过绑定社交账 号与区块链地址的方式防止了女巫攻击。
42.首先,本发明所述方法由一组基于rust开发的智能合约、基于reactjs的前 端界面、基于thegraph的数据索引组,基于社交媒体api和分布式爬虫的预言 机组成。智能合约中,先通过定义预先设定的输入条件和对应的输出动作。编码 完成后编译出wasm文件,最后将智能合约部署到near协议中的指定账户上, 外部用户可以通过rpc的方式访问部署在
账户上的智能合约。前端界面主要由 reactjs开发,其中通过near-api-js与智能合约进行交互。the graph通过一 个去中心化的协议解决了链上数据难以聚合和索引的问题,该协议可以对区块链 数据进行索引并实现高性能和高效率的查询,然后用标准的graphql api进行 查询,在本发明中主要用于对奖品的流通情况进行追踪,并且存储已经结束的抽 奖活动的相关信息。在预言机部分中,如果接入的社交媒体平台开放了公开的 api,则可以通过api直接获取到关注、推文、点赞等信息,如果未开放公开api, 则通过分布式爬虫对平台信息进行爬取和分析。
43.本发明具体的实施步骤如下:
44.s1、抽奖发起者通过将创建抽奖信息,其中包括抽奖发起者地址 creatoraddress,抽奖结束时间deadline,活动发起人社交账号socialid,奖池内奖 品信息prices(其中nft信息包括:nft合约地址以及序号;ft信息包括:ft合 约地址以及数量),参与抽奖需要的条件requirements(在本发明中为关注、点赞、 转发的三种排列组合),将这些信息使用json序列化之后将结果作为参数调用智 能合约的创建奖池函数。
45.s2、抽奖合约在收到请求后,反序列化参数并且创建对应奖池prize,prize 结构体中包含如下字段:创建人链上地址creatoraddress,奖品信息prizes,结束 日期deadline,抽奖人员名单joinedaccount,参与奖池的要求requirements,当 前合约状态state。合约初始化该结构体并且设置奖池的state为pending态,说 明该奖池处于创建但是未完成的状态;等待抽奖发起人调用nft合约,并且将 奖品转移至抽奖合约账户后,合约会设置state为start。
46.即,智能合约中通过维护一个区块链地址与媒体账号的哈希表关系实现链上 与链下信息的结合,创建奖池之后奖池的state字段被设置为pending,智能合约 检测到奖品已经由发起人转移至抽奖合约中之后,将奖池的state字段变更为 start,前端界面会展示所有处于start的奖池。
47.s3、前端会从智能合约中查询奖池数据,并且筛选出state为start的奖池信 息在前端展示。
48.用户在选择合适的奖池后选择参与抽奖,其步骤如下:
49.把对应的奖池idpricepoolid,用户信息userinfo(包括用户的区块链账户地址 以及社交媒体账户)使用json序列化后发送至去中心化预言机处理,去中心化预 言机利用上述信息获取到对应用户的社交媒体信息后进行校验判断,如果判断通 过则会将对应用户添加至奖池的抽奖用户列表中。
50.用户通过抽奖网站查看目前所有处于开始状态的奖池,选择心仪的奖池后参 与抽奖。
51.进一步的,用户首先查看该奖池的参加抽奖的规则,接着完成奖池所规定的 关注,抽奖,转发等任务,然后点击参加抽奖按钮触发按钮事件,按钮事件会将 当前用户账户id与奖池prizepoolid打包后使用json序列化后发起一个post请求 至部署在云端的去中心化预言机。
52.去中心化预言机接收到该事件后对post请求中的参数进行反序列化,部署 在云端的去中心化预言机反序列化后根据用户账户id使用爬虫或者开放api去 获取对应账户最近数笔操作historyactions,并且利用pricepoolid去合约中查询 对应奖池的
requirements信息,判断:istoryactions∈requirements,如 果满足包含关系,则调用合约将该用户添加至抽奖名单中。
53.s4、去中心化预言机每隔数秒钟会调用一次合约的touch函数,touch函 数会遍历目前奖池中存在的所有奖池,并且获取当前区块中的时间戳 blocktimestamp和奖池对应prize结构体中的deadline进行判断当前奖池是否 超时,若果超时则将该奖池应该添加进入开奖流程。
54.由于区块链的特性,所有用户都可以调用touch函数,这增加了控制抽奖结 果的难度,智能合约会自动进行对所有奖池的开奖状态的审查:
55.s5、开奖流程中,为了保证链上随机数的安全性,合约利用签名这笔交易 的账户的公钥以及当前区块内时间戳进行取随机数的运算,随机数算法主要使用 了模幂算法,最终得到奖池中每个奖品的获奖者的账户地址,合约会根据prize 结构体中prizes信息调用每个奖品对应合约的transfer函数,将奖品转移至中 奖者的地址中。
56.其中,开奖函数会遍历目前合约中存储的所有的奖池信息,判断状态的状态 是否为start,并且根据区块中的时间戳blocktimestamp进行如下判断:
57.deadline≤blocktimestamp
58.如果到达了结束时间则将该奖池添加进入发奖流程。
59.智能合约会根据当前区块信息生成一定的随机数,并且根据随机数去分配奖 池中的奖品,最后会根据开奖结果将奖品自动转移到获奖者对应的地址中,至此 整个抽奖流程结束,奖池进入finished状态,合约删除奖池相关信息。
60.具体的,链上使用的随机算法如下:假设目前参与抽奖的人数为n,合约中 保存目前抽奖者名单的数组为joinedaccounts,调用touch函数交易的签名者 的公钥为pk,当前区块时间戳为blocktimestamp,奖池中奖品的总数量为k, 选取获奖的结果winner算法如下:
61.for i in k:
62.winner[i]=joinedaccounts[blocktimestamp
pk mod(n-1-i)]
[0063]
由于pk是一个较大的整数,可以使用快速幂算法进行加速运算。
[0064][0065]
上式为一种快速幂的算法,其中χ可以是任意数。
[0066]
s6、抽奖完成后,合约需要删除完成奖池的相关信息以减轻链上存储的压 力,同时为了实现历史数据的快速索引,本发明引入了一个基于图数据的去中心 化链上数据索引工具thegraph,合约在删除奖池信息时,会将原本的prize结 构体以及最终获奖结果信息以日志的形式打包进区块中,thegraph会同步当前 区块链中的每一个区块,发现相关日志则会将其保存至图数据库中。
[0067]
本发明实际应用中的经济性:由于智能合约运行需要一定的费用,并且占用 链上存储空间也需要一定的费用,为了保持平台的良好运转,本发明了设定了一 种经济模型,大体模型为:用户使用本平台发布抽奖活动时需要支付一定费用的 手续费;用户负责给预言机采集数据的可以得到一定数额的代币激励;合约中会 记录用户调用开奖合约的次数,
通过调用次数定期结算代币激励。

技术特征:
1.一种基于区块链的社交媒体抽奖方法,其特征在于,包括如下步骤:(1)用户基于区块链创建抽奖信息,包括抽奖发起者地址、抽奖结束时间、活动发起人社交账号、奖池内奖品信息和抽奖条件;(2)抽奖合约在收到请求后,反序列化参数并且创建对应奖池prize,基于智能合约初始化该结构体,且设置奖池状态为等待;等待抽奖发起人调用nft合约,且将奖品转移至抽奖合约账户后,设置奖池状态为开始;(3)从智能合约中查询奖池数据,并且筛选出state为start的奖池信息提供给用户,用户选择合适的奖池后选择参与抽奖;(4)去中心化预言机通过调用合约的touch函数,获取当前区块中的时间戳和奖池对应prize结构体中的结束时间,判断当前奖池是否超时,若超时则将该奖池应该添加进入开奖流程;(5)智能合约利用签名该笔交易的账户的公钥,以及当前区块内时间戳进行取随机数的运算,得到奖池中每个奖品的获奖者的账户地址,智能合约根据prize结构体中prizes信息调用每个奖品对应合约的transfer函数,将奖品转移至中奖者的地址中;(6)抽奖完成后,智能合约删除奖池的已完成的相关信息,且基于图数据的去中心化链上数据索引工具thegraph,在删除奖池信息时,将原本的prize结构体以及最终获奖结果信息以日志的形式打包进区块中,thegraph会同步当前区块链中的每一个区块,发现相关日志则会将其保存至图数据库中。2.根据权利要求1所述的社交媒体抽奖方法,其特征在于,所述的奖池内奖品prices包括nft信息和ft信息,nft信息包括nft合约地址及序号,所述的ft信息包括ft合约地址以及数量。3.根据权利要求1所述的社交媒体抽奖方法,其特征在于,步骤(1)中的抽奖信息使用json序列化之后将结果作为参数调用抽奖合约的创建奖池函数。4.根据权利要求1所述的社交媒体抽奖方法,其特征在于,所述奖池prize结构体中包含创建人链上地址creatoraddress,奖品信息prizes,结束日期deadline,抽奖人员名单joinedaccount,参与奖池的要求requirements和当前合约状态state。5.根据权利要求1所述的社交媒体抽奖方法,其特征在于,步骤(3)中,用户在选择合适的奖池后选择参与抽奖,包括如下过程:将对应的奖池idpricepoolid,用户信息userinfo使用json序列化后发送至去中心化预言机处理,去中心化预言机利用上述信息获取到对应用户的社交媒体信息后进行校验判断,如果判断通过则会将对应用户添加至奖池的抽奖用户列表中,用户信息userinfo包括用户的区块链账户地址以及社交媒体账户。6.根据权利要求1所述的社交媒体抽奖方法,其特征在于,步骤(4)中,去中心化预言机定时调用智能合约的touch函数,touch函数遍历目前合约中存在的所有奖池。7.根据权利要求1所述的社交媒体抽奖方法,其特征在于,步骤(5)中取随机数的运算为模幂算法。8.根据权利要求1所述的社交媒体抽奖方法,其特征在于,所述方法基于rust开发的智能合约、reactjs的前端界面、thegraph的数据索引实现,包括基于社交媒体api和分布式爬虫的预言机;
智能合约中,先定义预先设定的输入条件和对应的输出动作,编码完成后编译出wasm文件,最后将智能合约部署到near协议中的指定账户上,外部用户通过rpc的方式访问部署在账户上的智能合约;前端界面由reactjs开发,通过near-api-js与智能合约进行交互;the graph通过去中心化的协议实现区块链上数据聚合和索引,包括通过graphql api进行查询,对奖品的流通情况进行追踪,并且存储已经结束的抽奖活动的相关信息;分布式爬虫的预言机,如果接入的社交媒体平台开放了公开的api,则可以通过api直接获取到推广信息,如果未开放公开api,则通过分布式爬虫对平台信息进行爬取和分析。

技术总结
本发明公开了一种基于区块链的社交媒体抽奖方法,该方法首先由用户发起创建奖池的请求,然后由智能合约创建且设置奖池的状态,接着针对用户发起参与奖池请求后,通过预言机获取链下的数据,包括合约利用签名这笔交易的账户的公钥以及当前区块内时间戳进行取随机数的运算;最后采用分布式调用合约开奖,通过合约检查现有的全部奖池是否满足开奖需求。本发明还引入了一个基于图数据库的去中心化链上数据索引工具TheGraph,通过将智能合约进行公开审计并且开源的方法保证了抽奖过程的安全性,通过使用成熟的链上随机数算法保证了抽奖结果的公平性,通过绑定社交账号与区块链地址的方式防止了女巫攻击。的方式防止了女巫攻击。的方式防止了女巫攻击。


技术研发人员:朱友文 陆艺仁
受保护的技术使用者:南京航空航天大学
技术研发日:2022.06.20
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-10395.html

最新回复(0)