CN112436962A - 区块链共识网络动态扩展方法、电子设备、***及介质 - Google Patents

区块链共识网络动态扩展方法、电子设备、***及介质 Download PDF

Info

Publication number
CN112436962A
CN112436962A CN202011262145.0A CN202011262145A CN112436962A CN 112436962 A CN112436962 A CN 112436962A CN 202011262145 A CN202011262145 A CN 202011262145A CN 112436962 A CN112436962 A CN 112436962A
Authority
CN
China
Prior art keywords
consensus
node
nodes
network
blockchain
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.)
Granted
Application number
CN202011262145.0A
Other languages
English (en)
Other versions
CN112436962B (zh
Inventor
李弋凡
阮亚芬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mrray Chengdu Technology Co ltd
Original Assignee
Mrray Chengdu Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mrray Chengdu Technology Co ltd filed Critical Mrray Chengdu Technology Co ltd
Priority to CN202011262145.0A priority Critical patent/CN112436962B/zh
Publication of CN112436962A publication Critical patent/CN112436962A/zh
Application granted granted Critical
Publication of CN112436962B publication Critical patent/CN112436962B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明公开了一种区块链共识网络动态扩展方法、电子设备、***及介质,该方法首先根据节点扩展请求,获取该扩展请求所设置的共识节点数量,再根据该扩展请求所设置的共识节点数量,确定中间状态共识节点数量;通过向区块链网络添加新节点,使区块链网络的共识节点数量达到中间状态共识节点数量,然后,在进一步向区块链网络添加新节点,使区块链网络的共识节点数量达到该扩展请求所设置的共识节点数量;由于区块链网络的共识节点数量达到中间状态共识节点数量,已经满足扩展后的区块链网络仍正常工作的基本条件,因此,本发明能够向区块链共识网络添加大量共识节点,并实现区块链共识网络稳健扩展。

Description

区块链共识网络动态扩展方法、电子设备、***及介质
技术领域
本发明涉及区块链技术,尤其涉及一种区块链共识网络动态扩展方法、电子设备、***及介质。
背景技术
PBFT算法,PBFT是Practical Byzantine Fault Tolerance的缩写,意为拜占庭容错算法,是一种高效的拜占庭问题解决办法,同时也是区块链平台上的核心算法。PBFT算法允许***有不超过f=(n-1)/3的恶意节点,即在恶意节点数量不超过f时,仍能保证共识***的安全性和有效性。
目前,针对基于PBFT算法构建的共识网络,虽然可以通过管理端对节点进行添加与删除操作;而添加与删除操作通常是针对在区块链网络中行为会发生异常共识节点,例如故障、伪造或丢弃信息等,添加的数量较少,且必须满足共识条件即可。但目前还没有针对通过向区块链共识网络添加大量共识节点,实现区块链共识网络稳健扩展的方案。
发明内容
鉴于以上所述现有技术的不足,本发明的目的在于:提供一种区块链共识网络动态扩展方法,能够向区块链共识网络添加大量共识节点,并实现区块链共识网络稳健扩展。
为实现上述发明目的,本发明提供以下技术方案:
一种区块链共识网络动态扩展方法,其包括以下步骤:
S1:接收到节点扩展请求后,获取所述节点扩展请求所设置的共识节点数量;
S2:根据所述节点扩展请求所设置的共识节点数量,确定中间状态共识节点数量;其中,所述节点扩展请求所设置的共识节点数量为3f+1,则所述中间状态共识节点数量为2f+1,且f为大于1的整数;
S3:判断通道下注册的节点数量是否超过所述中间状态共识节点数量;若未超过,则向所述通道注册节点,并继续执行步骤S3;若超过,则执行步骤S4;
S4:由区块链网络中共识节点发起添加新节点的投票,且当每个共识节点均投赞成票时,将新节点添加至区块链网络中,否则继续执行步骤S4;
S5:判断区块链网络中的共识节点数量是否达到所述中间状态共识节点数量;若未达到,则继续执行步骤S4;若达到,则执行步骤S6;
S6:判断通道下注册的节点数量是否超过所述节点扩展请求所设置的共识节点数量;若未超过,则向所述通道注册节点,并继续执行步骤S6;若超过,则执行步骤S7;
S7:由区块链网络中共识节点发起添加新节点的投票,且当每个共识节点均投赞成票时,将新节点添加至区块链网络中,否则继续执行步骤S7;
S8:判断区块链网络中的共识节点数量是否达到所述节点扩展请求所设置的共识节点数量;若未达到,则继续执行步骤S7;若达到,结束。
根据一种具体的实施方式,本发明的区块链共识网络动态扩展方法中,所述节点注册至所述通道时提供的节点信息内包含预先设定的权重值;以及由区块链网络中共识节点发起添加新节点的投票,按照所述权重值的数值大小的排序,依次选取节点加入至区块链网络中进行共识。
进一步地,当区块链网络中共识节点发起添加相应的新节点的投票次数超过预设次数,则发起添加下一个新节点的投票。
本发明的另一方面,还提供一种电子设备,其被配置为:在参与区块链共识网络时,实施本发明的区块链共识网络动态扩展方法。
本发明的另一方面,还提供一种区块链***,其包括至少用于构成区块链共识网络的四个共识节点,以及至少三个未参与所述区块链共识网络的节点,其中,节点均采用本发明的电子设备。
本发明的另一方面,还提供一种可读存储介质,其上存储有一个或多个程序,其特征在于,该一个或多个程序被一个或多个处理器执行时实现本发明的区块链共识网络动态扩展方法。
与现有技术相比,本发明的有益效果:
本发明的区块链共识网络动态扩展方法,该方法首先根据节点扩展请求,获取该扩展请求所设置的共识节点数量,再根据该扩展请求所设置的共识节点数量,确定中间状态共识节点数量;通过向区块链网络添加新节点,使区块链网络的共识节点数量达到中间状态共识节点数量,然后,在进一步向区块链网络添加新节点,使区块链网络的共识节点数量达到该扩展请求所设置的共识节点数量;由于区块链网络的共识节点数量达到中间状态共识节点数量,已经满足扩展后的区块链网络仍正常工作的基本条件,因此,本发明能够向区块链共识网络添加大量共识节点,并实现区块链共识网络稳健扩展。
附图说明
图1为本发明方法的流程示意图;
图2为本发明区块链***的架构示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
如图1所示,本发明的区块链共识网络动态扩展方法,其包括以下步骤:
S1:接收到节点扩展请求后,获取所述节点扩展请求所设置的共识节点数量;
S2:根据所述节点扩展请求所设置的共识节点数量,确定中间状态共识节点数量;其中,所述节点扩展请求所设置的共识节点数量为3f+1,则所述中间状态共识节点数量为2f+1,且f为大于1的整数;
S3:判断通道下注册的节点数量是否超过所述中间状态共识节点数量;若未超过,则向所述通道注册节点,并继续执行步骤S3;若超过,则执行步骤S4;
S4:由区块链网络中共识节点发起添加新节点的投票,且当每个共识节点均投赞成票时,将新节点添加至区块链网络中,否则继续执行步骤S4;
S5:判断区块链网络中的共识节点数量是否达到所述中间状态共识节点数量;若未达到,则继续执行步骤S4;若达到,则执行步骤S6;
S6:判断通道下注册的节点数量是否超过所述节点扩展请求所设置的共识节点数量;若未超过,则向所述通道注册节点,并继续执行步骤S6;若超过,则执行步骤S7;
S7:由区块链网络中共识节点发起添加新节点的投票,且当每个共识节点均投赞成票时,将新节点添加至区块链网络中,否则继续执行步骤S7;
S8:判断区块链网络中的共识节点数量是否达到所述节点扩展请求所设置的共识节点数量;若未达到,则继续执行步骤S7;若达到,结束。
在具体实施时,节点注册至通道时提供的节点信息内包含预先设定的权重值;以及由区块链网络中共识节点发起添加新节点的投票,按照权重值的数值大小的排序,依次选取节点加入至区块链网络中进行共识。其中,权重值可以用数值的形式来表征节点的网络状态、性能指标、可信度以及对区块链网络中的区块数据的同步程度等指标参数,而且,可以通过检测不同指标参数的数据,来计算更新权重值。因此,节点的权重值既可以人为设定,也可以通过检测计算动态更新,如此,依据权重值可以选择评价更好的节点加入区块链网络中,更能够有利于保障区块链共识网络的稳健性。
实际上,区块链网络中共识节点发起添加相应的新节点的投票时,如果需要当前区块链网络中的共识节点均投票赞成,可能有节点投反对票的情况出现,此时,可以继续由相应共识节点继续发起添加相应的新节点的投票,但是如果发起添加相应的新节点的投票次数超过预设次数,则发起添加下一个新节点的投票。如此,便可避免由于新节点的原因,造成无法继续后续流程。当然,也有可能存在情况,即当前区块链网络中有共识节点发生异常或者故意作恶,此时仍可以设置预设尝试次数,如果连续多轮投票均是某个节点反对票,则可将其视为异常节点或作恶节点,并添加新节点来替换该节点。
本发明的区块链共识网络动态扩展方法中,如果节点已注册到通道下,但当前还未参加区块链共识网络的共识,但为了避免这些节点被选入参加区块链共识网络时,需要同步大量的区块数据,因此当区块链网络产生区块时,会由共识节点将区块链中的区块同步给这些节点。当然,共识节点与这些节点的数据传送关系是固定的,即配置共识节点给特定节点进行区块数据同步;或者共识节点与这些节点的数据传送关系是非固定的,可根据共识节点与备份节点之间网络连接状况来即时调整数据传输关系。
在一个具体的实施例中,以场景当前共识节点数量为4的区块链网络扩展到共识节点为7:具体实施步骤为:
(1)计算中间状态共识节点数量。由于节点扩展请求所设置的共识节点数量为7,即3f+1=7,那么,中间状态共识节点数量为6,即2f+1=5。保证当前共识网络能正常工作的情况下,即要求至少存在2f+1个共识节点,继而通过管理端更新通道的共识节点数量为5,然后执行通道信息上链逻辑。
(2)共识节点检测到通道的共识节点数量已被修改,且大于当前的值,就发起投票,从注册到通道下的节点中选择一个权重值大的且健康的节点加入到共识层中,直到共识节点数满足2f+1,本实施例中,满足5即可。
(3)然后,通过管理端更新通道的共识节点数量为7,然后执行通道信息上链逻辑。
(4)共识节点检测到通道的共识节点数量已被修改,且大于当前的值,就发起投票,从备份节点中选择一个权重值大的且健康的节点加入到共识层中,直到共识节点数满足3f+1,本实施例中,满足7即可。如此,便实现将当前共识节点数量为4的区块链网络扩展到共识节点为7。
本发明的另一方面,还提供一种电子设备,其被配置为:在参与区块链共识网络时,实施本发明的区块链共识网络动态扩展方法。
如图2所示,本发明的另一方面,还提供一种区块链***,其包括至少用于构成区块链共识网络的四个共识节点,以及至少三个未参与所述区块链共识网络的节点,其中,节点均采用本发明的电子设备。
本发明的另一方面,还提供一种可读存储介质,其上存储有一个或多个程序,其特征在于,该一个或多个程序被一个或多个处理器执行时实现本发明的区块链共识网络动态扩展方法。
应该理解到,本发明所揭露的***,可通过其它的方式实现。例如所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,模块之间的通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (6)

1.一种区块链共识网络动态扩展方法,其特征在于,包括以下步骤:
S1:接收到节点扩展请求后,获取所述节点扩展请求所设置的共识节点数量;
S2:根据所述节点扩展请求所设置的共识节点数量,确定中间状态共识节点数量;其中,所述节点扩展请求所设置的共识节点数量为3f+1,则所述中间状态共识节点数量为2f+1,且f为大于1的整数;
S3:判断通道下注册的节点数量是否超过所述中间状态共识节点数量;若未超过,则向所述通道注册节点,并继续执行步骤S3;若超过,则执行步骤S4;
S4:由区块链网络中共识节点发起添加新节点的投票,且当每个共识节点均投赞成票时,将新节点添加至区块链网络中,否则继续执行步骤S4;
S5:判断区块链网络中的共识节点数量是否达到所述中间状态共识节点数量;若未达到,则继续执行步骤S4;若达到,则执行步骤S6;
S6:判断通道下注册的节点数量是否超过所述节点扩展请求所设置的共识节点数量;若未超过,则向所述通道注册节点,并继续执行步骤S6;若超过,则执行步骤S7;
S7:由区块链网络中共识节点发起添加新节点的投票,且当每个共识节点均投赞成票时,将新节点添加至区块链网络中,否则继续执行步骤S7;
S8:判断区块链网络中的共识节点数量是否达到所述节点扩展请求所设置的共识节点数量;若未达到,则继续执行步骤S7;若达到,结束。
2.如权利要求1所述的区块链共识网络动态扩展方法,其特征在于,所述节点注册至所述通道时提供的节点信息内包含预先设定的权重值;以及由区块链网络中共识节点发起添加新节点的投票,按照所述权重值的数值大小的排序,依次选取节点加入至区块链网络中进行共识。
3.如权利要求2所述的区块链共识网络动态扩展方法,其特征在于,当区块链网络中共识节点发起添加相应的新节点的投票次数超过预设次数,则发起添加下一个新节点的投票。
4.一种电子设备,其特征在于,被配置为:在参与区块链共识网络时,实施如权利要求1~3任一项所述的区块链共识网络动态扩展方法。
5.一种区块链***,其特征在于,包括至少用于构成区块链共识网络的四个共识节点,以及至少三个未参与所述区块链共识网络的节点,其中,节点均采用权利要求4所述的电子设备。
6.一种可读存储介质,其上存储有一个或多个程序,其特征在于,该一个或多个程序被一个或多个处理器执行时实现如权利要求1~3任一项所述的区块链共识网络动态扩展方法。
CN202011262145.0A 2020-11-12 2020-11-12 区块链共识网络动态扩展方法、电子设备、***及介质 Active CN112436962B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011262145.0A CN112436962B (zh) 2020-11-12 2020-11-12 区块链共识网络动态扩展方法、电子设备、***及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011262145.0A CN112436962B (zh) 2020-11-12 2020-11-12 区块链共识网络动态扩展方法、电子设备、***及介质

Publications (2)

Publication Number Publication Date
CN112436962A true CN112436962A (zh) 2021-03-02
CN112436962B CN112436962B (zh) 2023-04-18

Family

ID=74701270

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011262145.0A Active CN112436962B (zh) 2020-11-12 2020-11-12 区块链共识网络动态扩展方法、电子设备、***及介质

Country Status (1)

Country Link
CN (1) CN112436962B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113204597A (zh) * 2021-05-06 2021-08-03 杭州复杂美科技有限公司 一种区块链执行器水平扩展的方法、设备及储存介质
CN117544472A (zh) * 2024-01-08 2024-02-09 中国信息通信研究院 分布式网络的节点管理方法、装置、电子设备和存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107171829A (zh) * 2017-04-24 2017-09-15 杭州趣链科技有限公司 一种基于bft共识算法实现的动态节点管理方法
CN108768665A (zh) * 2018-07-02 2018-11-06 上海达家迎信息科技有限公司 区块链生成方法、装置、计算机设备以及存储介质
CN109347901A (zh) * 2018-08-23 2019-02-15 泰链(厦门)科技有限公司 区块链***的共识机制实现方法、介质、装置及***
CN110298660A (zh) * 2019-06-13 2019-10-01 广东投盟科技有限公司 基于区块链的节点管理方法
CN111131399A (zh) * 2019-12-03 2020-05-08 北京海益同展信息科技有限公司 一种区块链中共识节点动态增加方法及装置
CN111444210A (zh) * 2020-03-26 2020-07-24 腾讯科技(深圳)有限公司 区块链共识节点管理方法、装置、设备以及存储介质
CN111464353A (zh) * 2020-03-31 2020-07-28 财付通支付科技有限公司 区块链节点管理方法、装置、计算机以及可读存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107171829A (zh) * 2017-04-24 2017-09-15 杭州趣链科技有限公司 一种基于bft共识算法实现的动态节点管理方法
CN108768665A (zh) * 2018-07-02 2018-11-06 上海达家迎信息科技有限公司 区块链生成方法、装置、计算机设备以及存储介质
CN109347901A (zh) * 2018-08-23 2019-02-15 泰链(厦门)科技有限公司 区块链***的共识机制实现方法、介质、装置及***
CN110298660A (zh) * 2019-06-13 2019-10-01 广东投盟科技有限公司 基于区块链的节点管理方法
CN111131399A (zh) * 2019-12-03 2020-05-08 北京海益同展信息科技有限公司 一种区块链中共识节点动态增加方法及装置
CN111444210A (zh) * 2020-03-26 2020-07-24 腾讯科技(深圳)有限公司 区块链共识节点管理方法、装置、设备以及存储介质
CN111464353A (zh) * 2020-03-31 2020-07-28 财付通支付科技有限公司 区块链节点管理方法、装置、计算机以及可读存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
MINGYU HOU等: "A Blockchain Based Architecture for IoT Data Sharing Systems" *
韩嗣诚: "优化可扩展的拜占庭容错共识算法" *
韩嗣诚等: "优化可扩展的拜占庭容错共识算法", 《物联网学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113204597A (zh) * 2021-05-06 2021-08-03 杭州复杂美科技有限公司 一种区块链执行器水平扩展的方法、设备及储存介质
CN113204597B (zh) * 2021-05-06 2022-06-24 杭州复杂美科技有限公司 一种区块链执行器水平扩展的方法、设备及储存介质
CN117544472A (zh) * 2024-01-08 2024-02-09 中国信息通信研究院 分布式网络的节点管理方法、装置、电子设备和存储介质
CN117544472B (zh) * 2024-01-08 2024-03-22 中国信息通信研究院 分布式网络的节点管理方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
CN112436962B (zh) 2023-04-18

Similar Documents

Publication Publication Date Title
CN112436962B (zh) 区块链共识网络动态扩展方法、电子设备、***及介质
WO2023040364A1 (zh) 共识方法、装置及区块链***
CN112069169B (zh) 区块数据存储方法、装置、电子设备及可读存储介质
CN109413016B (zh) 一种基于规则的报文检测方法和装置
CN112087497B (zh) 数据同步方法、装置、电子设备及可读存储介质
CN111901176B (zh) 故障确定方法、装置、设备及存储介质
CN110619022B (zh) 基于区块链网络的节点检测方法、装置、设备及存储介质
US11341842B2 (en) Metering data management system and computer readable recording medium
CN110740064A (zh) 分布式集群节点故障处理方法、装置、设备及存储介质
CN111404737B (zh) 一种容灾处理方法以及相关装置
CN112511338A (zh) 区块链共识网络动态恢复方法、电子设备、***及介质
CN113824755A (zh) 区块链数据处理的方法、***及相关装置
CN110545268A (zh) 一种基于过程要素的多维度拟态表决方法
CN112511337B (zh) 区块链共识网络自恢复方法、电子设备、***及存储介质
CN111092956A (zh) 资源同步方法、装置、存储介质及设备
CN109428906B (zh) 请求处理方法、装置、***及终端
CN112202863B (zh) 数据同步方法、装置、电子设备及可读存储介质
CN109254880A (zh) 一种处理数据库宕机的方法及装置
CN112258184B (zh) 冻结区块链网络的方法、装置、电子设备及可读存储介质
CN114510507A (zh) 一种数据校验方法、装置、终端设备及介质
CN107346273B (zh) 一种数据恢复方法、装置及电子设备
CN111917826A (zh) 一种基于区块链知识产权保护的pbft共识算法
CN112486726A (zh) 一种用于区块链的时光回滚方法及***
CN117992501B (zh) 数据库集群脑裂预防方法、装置、电子设备及存储介质
CN113760519B (zh) 分布式事务处理方法、装置、***和电子设备

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