CN111125259B - 一种基于区块链底层的随机种子提供方法 - Google Patents
一种基于区块链底层的随机种子提供方法 Download PDFInfo
- Publication number
- CN111125259B CN111125259B CN201911406003.4A CN201911406003A CN111125259B CN 111125259 B CN111125259 B CN 111125259B CN 201911406003 A CN201911406003 A CN 201911406003A CN 111125259 B CN111125259 B CN 111125259B
- Authority
- CN
- China
- Prior art keywords
- block
- random
- seeds
- seed
- hash
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及大数据处理技术领域,本发明提出的一种基于区块链底层的随机种子提供方法,包括:S1、区块打包的节点准备未来要提交的随机种子,随机生成一串256位的随机种子;S2、提交摘要信息(hash)到区块扩展字段中,使用SHA256算法计算hash,为了节省空间,截取hash的后8byte,设置到区块的扩展字段中;S3、提交区块、缓存随机种子,阶段性结束,已经实现了未来种子的验证信息提交;S4、提交随机种子明文,下一轮出块时,将随机种子写入区的扩展字段中;S5、继续执行步骤S1,如此循环;S6、验证和存储。通过POC共识的两段式提交的随机种子生成机制,进而解决了现有随机种子生成机制的风险性和不便性的问题。
Description
技术领域
本发明涉及区块链技术领域,具体涉及一种基于区块链底层的随机种子提供方法。
背景技术
传统的随机数生成算法或多或少与单台机器的物理状态或运算状态相关,不同的机器,或者说不同的节点,会有不同的运算结果;区块链是一个分布式的系统,它要求各个节点的运算结果是可验证和可共识的,区块链的初衷是服务于一般大众,所以在区块链传统的随机数生成算法上是行不通的。
目前行业内普遍采用的随机种子方案有三种,1、采用区块的信息作为随机种子,生成随机数,然而区块信息对区块链维护者来说是可控的,并不是安全的方案;2、由第三方提供中心化的或者半中心化的随机种子,区块链程序或者智能合约通过接口获取,这种方式完全违背区块链去中心化理念,安全性完全由种子提供方决定,也存在一定的安全风险;3、用户交互式,由区块链信息和用户提供的信息,组装成一个随机种子,这种方案需要用户进行多次信息提交,使用上对用户来说并不太方便。
发明内容
本发明的目的是提供一种基于区块链底层的随机种子提供方法,实现方式是基于POC共识的两段式提交的随机种子生成机制,解决现有随机种子生成机制的风险性和不便性的问题。
本发明提出的一种基于区块链底层的随机种子提供方法,包括:
S1、区块打包的节点准备未来要提交的随机种子,随机生成一串256位的随机种子;
S2、提交摘要信息(hash)到区块扩展字段中,使用SHA256算法计算hash,为了节省空间,截取hash的后8byte,设置到区块的扩展字段中;
S3、提交区块、缓存随机种子,阶段性结束,已经实现了未来种子的验证信息提交;
S4、提交随机种子明文,下一轮出块时,将随机种子写入区的扩展字段中;
S5继续执行步骤S1,如此循环;
S6、验证和存储,
存储:其他人接收到区块后,验证种子明文是否正确,如果正确,则将种子信息存储在数据库中,供接口调用使用,
验证方法:将区块中的随机种子使用SHA256计算hash,对比此区块打包的节点前一个区块中的hash,是否一致。
本发明一种基于区块链底层的随机种子提供方法的有益效果:
1、更公平,基于底层共识实现,全部共识节点参与,串联难度大。
2、更安全,种子Hash与明文种子两段式提交,提交Hash时不能计算结果,提交结果时不能篡改;底层直接提供接口获取随机种子,随时可以根据参数进行验证。
3、更灵活,随机种子计算方法支持多种算法,增加随机算法复杂度,提高作恶成本。
4、更方便,底层直接提供接口获取随机种子,应用端使用时方便获取,安全、高效;在提供智能合约SDK接口的同时,还提供RPC接口的访问方式,不限制应用的使用场景。
附图说明
图1为本发明实施例的一种基于区块链底层的随机种子提供方法的流程图;
图2为本发明实施例的一种基于区块链底层的随机种子提供方法根据共识轮次实现的随机种子提供两次提交逻辑图;
图3为本发明实施例的一种基于区块链底层的随机种子提供方法的随机种子使用流程图。
具体实施方式
下面结合附图和具体实施例对本发明的一种基于区块链底层的随机种子提供方法作进一步的说明。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
如图1所示,本发明是一种基于区块链底层的随机种子提供方法,包括:
S1、区块打包的节点准备未来要提交的随机种子,随机生成一串256位的随机种子;
S2、提交摘要信息(hash)到区块扩展字段中,使用SHA256算法计算hash,为了节省空间,截取hash的后8byte,设置到区块的扩展字段中;
S3、提交区块、缓存随机种子,阶段性结束,已经实现了未来种子的验证信息提交;
S4、提交随机种子明文,下一轮出块时,将随机种子写入区的扩展字段中;
S5继续执行步骤S1,如此循环;
S6、验证和存储,
存储:其他人接收到区块后,验证种子明文是否正确,如果正确,则将种子信息存储在数据库中,供接口调用使用,
验证方法:将区块中的随机种子使用SHA256计算hash,对比此区块打包的节点前一个区块中的hash,是否一致。
本次设计的实现方式是基于POC共识的两段式提交的随机种子生成机制。即每个节点在出块的同时生成一个随机种子,并对该随机种子进行加密处理,将生成的密文包含在区块头中,同时获取该节点上次出块时生成的随机种子,将该种子的明文包含在区块头中,如此这般每个节点生成的随机种子都由前一个本节点出的块进行确认,确保不可随意篡改。生成最终随机种子的方式可以通过不同的算法,集合多个区块中的随机种子得出,从而保证随机性和安全性。
本发明一种基于区块链底层的随机种子提供方法的有益效果:
1、更公平,基于底层共识实现,全部共识节点参与,串联难度大。
2、更安全,种子Hash与明文种子两段式提交,提交Hash时不能计算结果,提交结果时不能篡改;底层直接提供接口获取随机种子,随时可以根据参数进行验证。
3、更灵活,随机种子计算方法支持多种算法,增加随机算法复杂度,提高作恶成本。
4、更方便,底层直接提供接口获取随机种子,应用端使用时方便获取,安全、高效;在提供智能合约SDK接口的同时,还提供RPC接口的访问方式,不限制应用的使用场景。
业务流程更改内容包括:
A、区块头创建流程的更改,在区块中增加数据,用于最终生成随机种子;
B、新区块存储流程的更改,从区块头中解析随机种子,并根据高度进行存储;
C、增加获取随机种子接口,增加RPC接口和SDK接口,用于应用获取随机种子。
1、在区块头的扩展字段(extend)中添加40个字节的数据,具体数据结构如下:
[注]、nextSeedHash计算方式:sha3-256(sha3-256(nextSeed))结果的最后8个字节。
2、节点第一次出块时的处理逻辑,
当节点第一次出块时,默认将seed设置为0,代表本次未产生新的随机种子。
3、节点丢失nextSeed的处理逻辑,
当节点因为重启、断电、服务器迁移等原因,导致丢失seed时,可以将seed设置为0,代表当前区块丢失随机种子。
4、当一个节点连续出两个块时的处理逻辑,
当一个节点在某个时间连续出块时,丢弃第二个块中的随机种子。这样做的原因是尽可能的确保随机种子的不可控。
5、提供多种供智能合约访问的获取随机种子的接口。
智能合约Native接口设计
调用方式:Utils.getRandomSeed(param,param1)
参数说明:
[注1]、seedsCount存在约束条件,允许的区间为:1-128;
[注2]、当区块中的随机种子值为0时,代表该区块未能成功生成随机种子;
[注3]、假设传入参数为:height:1000,seedsCount:10.代表从1000块开始向前查找seed,直到seed数量满足10个,如果在20块内(seedsCount*2)(1000-981块区间),不能凑足10个seed,则代表获取随机种子失败。
[注4]、algorithm:后续可以实现“1次SHA-256”,“2次SHA-256”,“Merkle Root”,xor,“RIPEMD-160”等等算法。
返回值说明:
随机种子的计算方式:
a、根据高度顺序拼接所有的区块种子;
b、对拼接后的字节数组进行SHA3-256计算;
c、将计算结果再进行一次SHA3-256计算;
d、返回计算结果。
如图2所示,根据共识轮次实现的随机种子提供两次提交机制。
如图3所示,随机种子使用方式。所采用的的聚合算法为多种,可以是seedn-seed(n+n)求和或者乘积等方式,目的就是生成一串新的字符串。
RPC接口
调用方式:GET:/randomSeed
参数说明:
返回值说明:
当前区块链随机数生成的主要方式包括:
根据链上未来数据生成,采用未来区块Hash得到;
或者结合外部数据生成,采用中心化随机数生成服务,由用户参与随机数生成的两段式提交。
当前区块链随机数生成的NULS的解决方案:
结合两种生成随机数的方式提出了NULS的解决方案,使用未来块中的数据进行随机,同时,每个随机种子的生成可以通过多个区块中的种子进行组合,每个种子生产前并不能知道前面块的种子,就让出块节点失去了控制随机数的可能。
当前区块链随机数生成的主要方式如下:
1、根据链上未来数据生成,如未来块区块Hash等。
2、结合外部数据生成,这种方式比较多样,如中心化随机数生成服务,由用户参与随机数生成的两段式提交等等。
第一种方式有一个缺点,就是出块节点可以控制随机数的生成结果,当随机数影响很大利益时,很难保证公平性。
第二种虽然有很多种实现方式,但要么违背去中心化的初衷,要么没有很好的用户体验,要么不能很好的做到安全、不可预测。
针对这种情况,我们结合两种生成随机数的方式提出了NULS的解决方案,是使用未来块中的数据进行随机,但未来块中的数据在前期就已经先公布了Hash,已经不可以再篡改,同时每个随机种子的生成可以通过多个区块中的种子进行组合,每个种子生产前并不能知道前面块的种子,就让出块节点失去了控制随机数的可能。
风险点:如果一个应用指定未来某个高度生成随机数种子,那么该高度的区块打包者可以提前10s(出块间隔)知晓该随机种子。出块者如果提前发现自己区块的随机种子,对某个应用中自己的结果有非常不好的影响,那么他可以选择不提交该区块的随机种子。针对该风险点,建议应用生成随机数时指定未来块高度时,不要指定过于靠近的区块,比如彩票应用,如果在停止投注后1个区块来开奖,就会有这个风险,但如果高度设置多一些,就可以避免。虽然可以通过共识惩罚的方式来增加作恶者的成本,但对共识的入侵太大了,并且该情况出现时只有刚好随机数是以某个节点来计算时才能有效,并且必须在10s内做出选择,选择的空间也只是提交和不提交两种,影响较小。所以大部分应用可以忽略这个风险点,小部分需要严格处理的应用可以在应用中编写逻辑,当选择的高度的区块本身没有提交随机种子,则等待下一个随机种子生成后再生成随机数。
Claims (7)
1.一种基于区块链底层的随机种子提供方法,其特征在于,包括:
S1、本轮区块打包的节点准备未来要提交的随机种子,随机生成一串256位的随机种子;
S2、本轮区块打包的节点提交未来要提交的随机种子的摘要信息(hash)到区块扩展字段中,使用SHA256算法计算hash,为了节省空间,截取hash的后8byte,设置到区块的扩展字段中,未来要提交的随机种子的摘要nextSeedHash计算方式为:sha3-256(sha3-256(nextSeed))结果的最后8个字节;
本轮区块打包的节点获取其上一次出块时生成的随机种子,将该随机种子的明文包含在区块的扩展字段中;
S3、本轮区块打包的节点提交区块、缓存本轮生成的随机种子,阶段性结束,已经实现了未来种子的验证信息提交;
S4、本轮区块打包的节点提交本轮出块时生成的随机种子的明文,下一轮本轮区块打包的节点出块时,将随机种子写入区块的扩展字段中;
S5继续执行步骤S1,如此循环;
S6、验证和存储,
存储:其他人接收到区块后,验证种子明文是否正确,如果正确,则将种子信息存储在数据库中,供接口调用使用,验证方法:将区块中的随机种子使用SHA256计算hash,对比此区块打包的节点前一个区块中的hash,是否一致。
2.如权利要求1所述的一种基于区块链底层的随机种子提供方法,其特征在于,当前区块链随机数生成的主要方式包括:根据链上未来数据生成,采用未来区块Hash得到;
或者结合外部数据生成,采用中心化随机数生成服务,由用户参与随机数生成的两段式提交。
3.如权利要求2所述的一种基于区块链底层的随机种子提供方法,其特征在于,当前区块链随机数生成的NULS的解决方案:结合两种生成随机数的方式提出了NULS的解决方案,使用未来块中的数据进行随机,同时,每个随机种子的生成可以通过多个区块中的种子进行组合,每个种子生产前并不能知道前面块的种子,就让出块节点失去了控制随机数的可能。
4.如权利要求1或2或3所述的一种基于区块链底层的随机种子提供方法,其特征在于,底层直接提供接口获取随机种子,在提供智能合约SDK接口的同时,还提供RPC接口的访问方式。
5.如权利要求1或2或3所述的一种基于区块链底层的随机种子提供方法,其特征在于,随机种子的计算方式:a、根据高度顺序拼接所有的区块种子;
b、对拼接后的字节数组进行SHA3-256计算;
c、将计算结果再进行一次SHA3-256计算;
d、返回计算结果。
6.如权利要求4所述的一种基于区块链底层的随机种子提供方法,其特征在于,业务流程更改包括:A、区块头创建流程的更改,在区块中增加数据,用于最终生成随机种子;
B、新区块存储流程的更改,从区块头中解析随机种子,并根据高度进行存储;
C、增加获取随机种子接口,增加RPC接口和SDK接口,用于应用获取随机种子。
7.如权利要求5所述的一种基于区块链底层的随机种子提供方法,其特征在于,业务流程更改包括:
A、区块头创建流程的更改,在区块中增加数据,用于最终生成随机种子;
B、新区块存储流程的更改,从区块头中解析随机种子,并根据高度进行存储;
C、增加获取随机种子接口,增加RPC接口和SDK接口,用于应用获取随机种子。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911406003.4A CN111125259B (zh) | 2019-12-31 | 2019-12-31 | 一种基于区块链底层的随机种子提供方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911406003.4A CN111125259B (zh) | 2019-12-31 | 2019-12-31 | 一种基于区块链底层的随机种子提供方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111125259A CN111125259A (zh) | 2020-05-08 |
CN111125259B true CN111125259B (zh) | 2023-08-18 |
Family
ID=70506050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911406003.4A Active CN111125259B (zh) | 2019-12-31 | 2019-12-31 | 一种基于区块链底层的随机种子提供方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111125259B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201818124D0 (en) * | 2018-11-07 | 2018-12-19 | Robot Protos Ltd | Method for generating verifiable random selections |
CN109753269A (zh) * | 2019-01-30 | 2019-05-14 | 百度在线网络技术(北京)有限公司 | 区块链的随机数生成方法、装置、设备和存储介质 |
KR20190124371A (ko) * | 2018-04-26 | 2019-11-05 | 주식회사 코드박스 | 확률적 트랜젝션의 처리방법 |
CN110545170A (zh) * | 2019-09-16 | 2019-12-06 | 福建中科中欣智能科技有限公司 | 一种基于密码抽签的区块链共识方法和装置以及设备 |
CN110599173A (zh) * | 2019-09-20 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 区块链的共识节点确定方法、装置、设备及存储介质 |
-
2019
- 2019-12-31 CN CN201911406003.4A patent/CN111125259B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190124371A (ko) * | 2018-04-26 | 2019-11-05 | 주식회사 코드박스 | 확률적 트랜젝션의 처리방법 |
GB201818124D0 (en) * | 2018-11-07 | 2018-12-19 | Robot Protos Ltd | Method for generating verifiable random selections |
CN109753269A (zh) * | 2019-01-30 | 2019-05-14 | 百度在线网络技术(北京)有限公司 | 区块链的随机数生成方法、装置、设备和存储介质 |
CN110545170A (zh) * | 2019-09-16 | 2019-12-06 | 福建中科中欣智能科技有限公司 | 一种基于密码抽签的区块链共识方法和装置以及设备 |
CN110599173A (zh) * | 2019-09-20 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 区块链的共识节点确定方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
张舒 ; 杨宇光 ; .区块链技术基础及应用.信息安全研究.2018,(06),第89-94页. * |
Also Published As
Publication number | Publication date |
---|---|
CN111125259A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109471744B (zh) | 基于区块链的主链加并行多子链系统架构 | |
EP4300323A1 (en) | Data processing method and apparatus for blockchain network, computer device, computer readable storage medium, and computer program product | |
US11316659B2 (en) | Primary and secondary blockchain device | |
CN112862490B (zh) | 一种异步网络下的输出共识方法 | |
CN111818185B (zh) | 启动智能合约的方法及装置、电子设备、存储介质 | |
TW202101350A (zh) | 基於處理模組跨鏈發送可認證訊息的方法和裝置 | |
US20240163121A1 (en) | Blockchain consensus method, apparatus, and device, and storage medium | |
CN111930845A (zh) | 一种区块链的共识方法、系统、终端、及存储介质 | |
CN110430045A (zh) | 一种基于分布式共识算法的随机数生成方法 | |
CN109859044B (zh) | 一种区块链构造方法 | |
CN109087105A (zh) | 用于挖矿的哈希搜索方法、挖矿机及区块链系统 | |
CN108399533B (zh) | 交易处理方法、装置、计算机设备和存储介质 | |
CN110069278A (zh) | 一种自动化分布式多任务打包方法及系统 | |
CN113919846B (zh) | 区块链节点动态分组方法、装置、计算机设备和存储介质 | |
CN112148350A (zh) | 作品远程版本管理方法、电子设备以及计算机存储介质 | |
CN111125259B (zh) | 一种基于区块链底层的随机种子提供方法 | |
CN110069533B (zh) | 一种基于区块链的事件订阅方法及装置 | |
CN116896564B (zh) | 基于区块链网络的区块生成方法、装置和计算机设备 | |
WO2019024631A1 (zh) | 区块链轻量化处理方法、区块链节点及存储介质 | |
CN113472513A (zh) | 一种基于区块链的并行安全多方计算方法 | |
CN116566712A (zh) | 一种基于信任分数的物联网区块链共识方法 | |
CN108989898A (zh) | 一种展示礼物连击动画的方法、存储介质、设备及系统 | |
CN110888892A (zh) | 一种区块同步方法、装置及存储介质 | |
CN112636904B (zh) | 随机数生成与验证方法、装置、电子设备及可读存储介质 | |
CN113746635A (zh) | 提高pbft共识可扩展性的方法、装置、计算设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |