一种基于区块链的水权交易方法和系统
技术领域
本申请涉及数据处理技术领域,尤其涉及一种基于区块链的水权交易方法和系统。
背景技术
由于个体拥有的水权有限,而农田灌溉往往需要大量的水资源,因此以个体作为水权交易的主体,很难满足农业用水的需求。所以水权交易通常以“水权群体”为主体。水权群体可以是水使用者协会、水区、自来水公司、地方自治团体等,凡是水权群体均有资格进行水权的买卖。
当前,水权交易的常用方式为转让方和受让方直接交易,或通过具有相关资质的交易平台进行交易。
然而,受让人无法直接判断转让方提供的水权交易数据是否有效,使得受让人可能会质疑转让方是否能完成水权交易过程,但又无法获取确实的证据,这会阻碍水权交易有效进行。
发明内容
本申请实施例提供了一种基于区块链的水权交易方法和系统,能够保证水权交易有效进行。
第一方面,本申请实施例提出了一种基于区块链的水权交易方法,包括:
水权分配节点在一个水权交易周期,创建至少一个智能合约,并将各个所述智能合约写入至少一个区块中,所述智能合约对应区块所在的区块链对应的节点包括:水权分配节点、多个水权转让方节点、多个水权受让方节点、多个记账节点;所述智能合约包括:当前水权交易周期的水权更新时间、各所述水权转让方节点和各所述水权受让方节点的水资源分配量、各所述转让方节点和各所述受让方节点的水权账户地址;
所述水权转让方节点根据所述转让方节点的水权账户地址、所述水权受让方节点的水权账户地址、当次水资源交易量,生成交易单数据;
所述水权转让方节点根据自己的私钥对所述交易单数据进行签名,并将签名后的交易单数据进行打包并广播;
所述区块链中的多个记账节点对所述签名后的交易单数据进行验证,验证通过后,将所述交易单数据记录在所述区块链上。
在一个示例中,所述智能合约包括逻辑处理部分和数据部分。
在一个示例中,所述水权分配节点在首个水权交易周期,将所述智能合约的逻辑处理部分写入第一区块中,将所述数据部分写入第二区块中;
所述水权分配节点在非首个水权交易周期,更新所述数据部分,并将所述更新后的数据部分写入所述非首个水权交易周期中的第三区块中。
在一个示例中,所述水权分配节点在首个水权分配周期根据水权交易周期的水权清空时间、水权交易周期的水权分配时间,创建第一智能合约,并将所述第一智能合约写入第一区块;其中,所述水权更新时间,包括:所述水权清空时间和所述水权分配时间;
所述水权分配节点在各个所述水权交易周期,根据各所述水权转让方节点的水资源分配量和各所述水权受让方节点的水资源分配量、各所述转让方节点的水权账号地址和各所述受让方节点的水权账户地址,创建相应第二智能合约,并将所述第二智能合约写入第二区块。
在一个示例中,所述水权分配节点在每个所述水权交易周期,创建一个智能合约,所述智能合约包括:在所述当前水权交易周期的水权更新时间,执行清空各水权转让方节点的水资源分配量和水权受让方节点的水资源分配量;所述水权分配节点将所述智能合约写入至当前水权交易周期对应的一个区块中。
在一个示例中,所述记账节点记录当前水权交易周期内所述智能合约对应的区块的编码;
所述记账节点根据所述记录的编码,在相应的区块上获取各所述水权转让方节点的水资源分配量和各所述水权受让方节点的水资源分配量;
所述记账节点基于获取到的水资源分配量,验证交易单数据。
在一个示例中,所述智能合约还包括:水权交易的起始时刻、水权交易的周期数、每一个水权交易周期的周期长度。
在一个示例中,所述区块链节点还包括机井灌溉控制设备节点;
所述机井灌溉控制设备节点将所述水权转让方节点或者所述水权受让方节点对应的单次用水量生成账单数据,并向所述区块链中的各个节点进行广播,以生成相应区块。
第二方面,本申请实施例提供了一种基于区块链的水权交易系统,包括:
水权分配节点,用于在一个水权交易周期,创建至少一个智能合约,并将各个所述智能合约写入至少一个区块中,所述智能合约对应区块所在的区块链对应的节点包括:水权分配节点、多个水权转让方节点、多个水权受让方节点、多个记账节点;所述智能合约包括:当前水权交易周期的水权更新时间、各所述水权转让方节点和各所述水权受让方节点的水资源分配量、各所述转让方节点和各所述受让方节点的水权账户地址;
所述水权转让方节点,用于根据所述转让方节点的水权账户地址、所述水权受让方节点的水权账户地址、当次水资源交易量,生成交易单数据;
所述水权转让方节点,用于根据自己的私钥对所述交易单数据进行签名,并将签名后的交易单数据进行打包并广播;
所述区块链中的多个记账节点,用于对所述签名后的交易单数据进行验证,验证通过后,将所述交易单数据记录在所述区块链上。
在一个示例中,所述系统还包括:机井灌溉控制设备节点;
所述机井灌溉控制设备节点,用于将所述水权转让方节点或者所述水权受让方节点对应的单次用水量生成账单数据,并向所述区块链中的各个节点进行广播,以生成相应区块。
本申请实施例将水资源分配量以智能合约的方式写入区块链,以保证各个水权群体的水资源分配量的真实性,即从水权交易的源头保证交易的公正性。水权交易的过程通过区块链完成,以避免交易过程中不会出现转让方欺骗受让方的情况。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的一种基于区块链的水权交易方法的流程图;
图2为本申请实施例提供的一种基于区块链的水权交易系统的结构示意图。
具体实施方式
为了更清楚的阐释本申请的整体构思,下面结合说明书附图以示例的方式进行详细说明。
本申请的实施例公开了一种基于区块链的水权交易方法,如图1所示,包括以下步骤:
步骤101、水权分配节点在一个水权交易周期,创建至少一个智能合约。
在本申请实施例中,智能合约对应区块所在的区块链对应的节点包括:水权分配节点、多个水权转让方节点、多个水权受让方节点、多个记账节点。其中,水权分配节点为特定的节点,水权转让方节点、水权受让方节点和记账节点均用来表征节点的功能。即,在本申请实施例的区块链中,除水权分配节点以外,任意一个节点均能实现水权转让、水权受让、记账功能。除水权分配节点以外,任意节点的具有的功能与交易过程有关。例如,存在节点A、节点B、节点C,在节点A向节点B出售水权分配量时,节点A为水权转让方节点,节点B水权受让方节点,节点C为记账节点。反之,节点B为水权转让方节点,节点A水权受让方节点,节点C为记账节点。如果,点B和节点C进行水权交易则,节点A为记账节点。
智能合约包括:当前水权交易周期的水权更新时间、各水权转让方节点和各水权受让方节点的水资源分配量、各转让方节点和各受让方节点的水权账户地址。其中,水权更新时间,包括:水权清空时间和水权分配时间,在本申请实施例中,水权清空和水权分配同时进行,因此水权清空时间对应的时刻和水权分配时间对应的时刻相同。
步骤102,水权分配节点将各个智能合约写入至少一个区块中。
步骤103,水权转让方节点根据转让方节点的水权账户地址、水权受让方节点的水权账户地址、当次水资源交易量,生成交易单数据。
步骤104,水权转让方节点根据自己的私钥对交易单数据进行签名,并将签名后的交易单数据进行打包并广播。
步骤105,区块链中的多个记账节点对签名后的交易单数据进行验证,验证通过后,将交易单数据记录在所述区块链上。
在本申请实施例中,水权群体自身利用分配到的水权进行农业灌溉,为了将保证水权交易能够公开、公正的进行,将机井灌溉控制设备节点纳入本申请实施例的区块链中。机井灌溉控制设备节点对应于机井灌溉设备,机井灌溉设备计量各个用户在每一次灌溉农田时的用水量。机井灌溉控制设备节点根据水权转让方节点或者水权受让方节点对应的单次用水量,生成相应的账单数据,并向区块链中的各个节点进行广播,以生成相应区块。由于机井灌溉设备计费的过程没有人工参与,因此,在本申请实施例中,账单数据不需要各个节点达成共识,而是直接生成区块。
在本申请实施例中,在水权交易具有以下特点:
特点1:分配给各个水权群体的水权分配量通常是有使用期限的,一般情况下使用期限为1年。一旦超过使用期限,水权分配量会被清零并重新分配。例如,居民A在当年1月1日获得100立方米的水权分配量,如果在次年1月1日累计用掉50立方米的水权分配量,那么剩余的50立方米的水权分配量会在次年1月1日被清空,同时重新获得100立方米的水权分配量。
特点2:水权群体的组成相对固定。农业用水的水权群体大部分居住在农村,在不考虑不可抗力、人员死亡等情况下,除非水权群体中的个体的户口转成城镇户口,否则水权群体中的个体数量基本不会发生频繁或剧烈的变化。此外,由于土地的限制,水权群体中的个体也不会随意改变自身所属的水权群体。
特点3:每个水权群体的水权分配量相对固定。水权分配量通常与种植面积正相关,种植面积跟每户的居民数正相关。由特点2可知,水权群体中的个体数量不会发生频繁或剧烈的变化,因此水权群体的种植面积不会发生剧烈变化,由此推出每个水权群体的水权分配量基本不会发生剧烈变化。
因为水权交易具有上述特点,所以本申请实施例提供了三种生成智能合约的方法,具体方法如下:
第一种方法,水权分配节点在每个水权交易周期,创建一个智能合约,智能合约除了包括步骤101所述的各项之外,还包括:在当前水权交易周期的水权更新时间,执行清空各水权转让方节点和水权受让方节点的水资源分配量。之后,水权分配节点将智能合约写入至当前水权交易周期对应的一个区块中。上述智能合约生成方法主要考虑水权分配量有使用期限,在该种情况下水权交易周期的起始和结束,以创建智能合约为标志,即每个水权交易周期都创立一个智能合约用于水权分配。同时每一个周期都能对每个水权群体的水权分配量进行调整。
第二种方法,水权分配节点在首个水权分配周期根据水权交易周期的水权清空时间、水权交易周期的水权分配时间,创建第一智能合约,并将第一智能合约写入第一区块。
水权分配节点在各个水权交易周期,根据各水权转让方节点和各水权受让方节点的水资源分配量、各转让方节点和各受让方节点的水权账户地址,创建相应第二智能合约,并将第二智能合约写入第二区块。
水权更新过程中存在三个问题:一个是何时清空剩余水资源分配量,一个是何时重新分配水资源分配量,还有一个是每一个水权群体分配多少水资源分配量。可以理解的是,水权分配的时间和清空剩余水资源分配量的时间可以预先设定的,而每一个水权群体分配多少水资源分配量理论上讲是不断变化的,所以每一个水权群体分配多少水资源分配量不宜预先设定。因此,在本申请实施例中,将何时重新分配水资源分配归结为逻辑问题,即逻辑处理部分。将每一个水权群体分配多少水资源分配量归结为数量问题,即数据部分。水权分配节点针对逻辑处理部分创建第一智能合约,针对数据部分创建第二智能合约,并将第一智能合约和第二智能合约写入不同的区块中。
如此,水权分配节点除了在首个水权交易周期需要针对逻辑部分和数据部分分别创建第一智能合约、第二智能合约,在其他各个交易周只需要针对数据部分创建第二智能合约即可。
第三种方法,与第一种方法相比,创建智能合约的流程是相同的,只是在该方法中,智能合约除了包括步骤101中所述各项外,还包括:水权交易的起始时刻、水权交易的周期数、每一个水权交易周期的周期长度。根据特点2和特点3,水权分配节点可以执行中期的水权分配计划。例如,设定水权交易的起始年份,设定每一个水权交易周期为一年,水权交易周期个数为5,从而得到五年水权分配计划,即五年内每一年每一个水权群体的水资源分配量是相同的。
此外,对于第一种方法和第三种方法,在验证交易单数据时,记账节点通常会遍历每一个区块,验证各个交易单是否为有效交易。但在水权交易场景下,每个节点进行交易的数据基础是每一个周期的水资源分配量。因此,为了提高记账节点的数据验证效率,在本申请实施例中,记账节点记录当前水权交易周期内智能合约对应的区块的编码。记账节点根据记录的编码,在相应的区块上获取各水权转让方节点和各水权受让方节点的水资源分配量。记账节点根据获取到的水资源分配量,验证交易单数据。这样记账集结点每次验证账单数据时,只需遍历当前周期内各个区块就能验证交易单数据。
综上,第一种方法只考虑特点1,因此可以随时启动新的水权周期、并改变水权分配量,可应用于多种水权分配场景,例如水权分配方案的调研、测试、开发等环节,或直接应用于水权分配。第二种方法在考虑特点1的基础上固定水权更新周期的长度,并兼顾水权群体的组成和水权分配量存在变化的可能性,因此可以根据水权群体变化规律确定水权交易周期,例如,水权群体的组成大致一年一变,水权周期应设为一年。因此,第二种方法适合应用于水权群体的组成规律变动的场景。第三种方法同时考虑到点2和特点3,又兼顾水权群体的组成和水权分配量存在变化的可能性,适合应用于水权群体的组成变动频次小的场景,例如,水权群体的组成五年内可能会有变化,那么利用第三种方法可以执行五年内的水权分配方案。
如图2所示,本申请实施例提供的一种基于区块链的水权交易系统,包括:水权分配节点201、转让方节点202、受让方节点203、记账节点204,机井灌溉控制设备节点205。
水权分配节点201,用于在一个水权交易周期,创建至少一个智能合约,并将各个智能合约写入至少一个区块中,智能合约对应区块所在的区块链对应的节点包括:水权分配节点、多个水权转让方节点、多个水权受让方节点、多个记账节点;智能合约包括:当前水权交易周期的水权更新时间、各水权转让方节点和各水权受让方节点的水资源分配量、各转让方节点和各受让方节点的水权账户地址。
水权转让方节点202,用于根据转让方节点的水权账户地址、水权受让方节点的水权账户地址、当次水资源交易量,生成交易单数据。
水权转让方节点203,用于根据自己的私钥对交易单数据进行签名,并将签名后的交易单数据进行打包并广播。
区块链中的多个记账节点204,用于对签名后的交易单数据进行验证,验证通过后,将交易单数据记录在区块链上。
机井灌溉控制设备节点205,用于将水权转让方节点或者水权受让方节点对应的单次用水量生成账单数据,并向区块链中的各个节点进行广播,以生成相应区块。
其中,水权分配节点201为唯一确定的,通常对应于政府相关部门,或政府相关部门委托的机构、企业,其创建的智能合约可以不经过各节点共识直接写入区块。机井灌溉控制设备节点205为多个,其生成的账单数据可以不经过各节点共识,直接写入区块。
转让方节点202、受让方节点203、记账节点204的数量均为多个,通常对应于各个水权群体,除去水权分配节点201和机井灌溉控制设备节点205外,任意一个水权群体均可以成为转让方节点202、受让方节点203或记账节点204中的一个。此外,也可以指定固定的节点作为记账节点,指定的记账节点可以为水权群体可以是非水权群体。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。