1.一种基于区块链的众包资源分布式匿名配给方法,其特征在于:包括如下步骤:步骤1:节点在系统上进行注册,所述节点包括请求节点与服务节点,系统为各节点分配一个随机数作为节点私钥,并通过椭圆曲线算法生成相应的公钥,之后通过对节点公钥的哈希和编码生成节点的钱包地址,在区块上创建智能合约实现对用户注册信息的记录;
步骤2:生产该区块的矿工通过挖矿这种工作量证明机制向其他矿工证明自己的可信性,使得其他矿工节点能够同意该矿工将新生成的区块加入当前的区块链上,从而实现将交易信息上链;
步骤3:在区块上创建任务发布智能合约,当请求节点在系统上成功发布服务任务时执行该合约,实现对任务发布信息的记录,所发布的服务任务包括服务任务描述、需支付的报酬及对服务节点的要求;
步骤4:服务节点通过系统接收请求节点发布的任务,在任务截止时间前提交一份满足请求节点服务任务的达成计划书,该计划书被用请求节点的公钥加密后放在分布存储空间中;
步骤5:请求节点用其私钥打开服务节点提交的达成计划书,然后请求节点根据服务节点的信誉值、服务节点给出的服务方案和服务节点提出的服务费用,选择出最优质的服务节点;
步骤6:在区块链上创建哈希时间锁定合约,通过哈希时间锁定合约在两个用户之间建立支付通道,然后基于支付通道在网络中为请求节点和服务节点间的交易Tx建立一条洋葱路由,实现交易双方的匿名通信。
2.根据权利要求1所述的基于区块链的众包资源分布式匿名配给方法,其特征在于:所述步骤1的具体内容如下:步骤1.1请求节点或服务节点在注册时无需提供真实的身份信息,而是被直接分配一个256bit的随机数作为其私钥 其中 表示节点ni的私钥,R为请求节点,W为服务节点;
步骤1.2私钥 经过椭圆曲线算法SECP256K1的处理生成节点ni的公钥 ni∈{R,W};
步骤1.3 表示节点ni的公钥哈希值,其中hash()表示hash函数,这里采用SHA‑
256算法;
步骤1.4将一个字节的地址版本号连接到 的头部,然后对其再进行两次
SHA256运算,将结果的前4字节作为 的校验值,连接在其尾部,对生成的字符串使用BASE58进行编码从而得到节点的钱包地址;
步骤1.5在区块上创建用户注册智能合约,当用户注册成功时执行该合约记录用户注册信息。
3.根据权利要求1所述的基于区块链的众包资源分布式匿名配给方法,其特征在于:所述步骤2中的具体内容为:步骤2.1在创始区块的头部nBits字段设其难度值为0x1d00ffff,另设最大目标值,最大值为:
0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
步骤2.2对区块的头部数据进行两次哈希运算,如下式所示,尝试不同的Nonce当其获得哈希值小于等于目标哈希值时,则接受该区块;
SHA256(SHA256(Version+HashPreBlock+Merkle_root+Timstamp+nBits+Nonce))≤目标哈希值其中,Version表示版本号、HashPreBlock为前一区块的Hash值、Merkle_root为交易数据的Merkle树根、Timstamp为交易的时间戳、nBits为目标计算难度、Nonce为矿工不断尝试的随机数;
步骤2.3区块的难度即为目标哈希值,每隔2016个区块重新计算一次,难度值的计算方法如下:新难度值=旧难度值*(上一组2016个区块花费的时长/20160分钟)目标哈希值=最大目标值/新难度值。
4.根据权利要求1所述的基于区块链的众包资源分布式匿名配给方法,其特征在于:所述步骤3中的具体内容为:步骤3.1在区块上创建一条只有请求节点且没有服务节点的交易,区块体中的数据字段存储任务发布智能合约;
步骤3.2请求节点用私钥 加密服务任务,加密后的服务任务信息包括对服务任务的描述、拟支付的报酬及对服务节点的要求,在系统上成功发布后执行步骤3.1中的智能合约;
步骤3.3在区块上创建一条只有请求节点且没有服务节点的交易,区块体中的数据字段存储请求节点私钥加密后的服务任务信息;
步骤3.4最后将新生成交易区块上链。
5.根据权利要求1所述的基于区块链的众包资源分布式匿名配给方法,其特征在于:所述步骤4的实现包括如下:步骤4.1服务节点通过配给系统接收请求节点发布的加密服务任务描述文件,之后用请求节点的公钥验证该节点的身份真实性;
步骤4.2服务节点根据解密后的服务任务描述文件,在任务截止时间前提交一份满足请求节点服务任务的达成计划书;
步骤4.3鉴于达成计划书需要提交相关的附件材料证明计划书的可行性,这里用请求节点的公钥加密后放在分布存储空间中。
6.根据权利要求1所述的基于区块链的众包资源分布式匿名配给方法,其特征在于:所述步骤6的实现包括如下:步骤6.1在区块链上创建哈希时间锁定合约,通过哈希时间锁定合约在两个用户之间建立间接支付通道,该间接支付通道的建立过程如下:(1)请求节点ni发给服务节点ni+m发一个随机种子r,服务节点ni+m用其私钥对随机种子进行签名,并通过SHA256生成哈希值H,并返回给请求节点ni;
(2)节点ni找到与其建立支付通道的中间节点ni+x,然后节点ni生成交易的哈希时间锁定合约,此HTLC的内容为:如果节点ni+x找到暗语H,则节点ni+x直接拿走HTLC中的以太币,否则HTLC中的以太币在锁定期后就会被释放,x≤m;
(3)节点ni+x找到与其建立支付通道的服务节点ni+m,用1个以太币来换服务节点ni+m的暗语H,同时更新节点ni+x和服务节点ni+m的支付分配,更新与步骤(2)相同,反之,若节点ni+x未找到与其建立支付通道的服务节点ni+m,那么重复步骤(2)的过程;
(4)节点ni+x会拿着暗语H去找请求节点ni,并从请求节点ni处拿到以太币,请求节点ni则以间接支付通道的形式付给服务节点ni+m约定的以太币;
步骤6.2在区块链网络上构建二层匿名交易网络实现众包服务交易的匿名,即是指基于所构建间接支付通道在网络中为请求节点和服务节点间的交易Tx建立洋葱路由,该洋葱路由的内容为:其中 为节点ni+m的公钥,m为请求节点ni到服务节点ni+m之间的可达路径的跳数,Encrypt()为加密函数,中间节点ni+x使用其私钥逐层解密出洋葱路径,从而以匿名的方式实现众包服务交易匿名,中间节点在本次交易中相对于其前一跳节点为虚拟服务节点角色,相对于其下一跳节点为虚拟请求节点的角色。
7.一种用于实现权利要求1至6任意一项所述的基于区块链的众包资源分布式匿名配给方法的配给系统,其特征在于:包括众包服务业务逻辑层、区块链层和数据存储层;区块链层中的区块通过存储文件资源的指针来定位数据存储层的资源;众包服务业务逻辑层与区块链层交互;区块链层采用以太坊进行实施,区块链层上部署的二层零确认匿名交易网络则采用哈希时间锁定合约和洋葱路由进行实施;数据存储层通过搭建星际文件系统进行实施,即利用分布式哈希表解决数据的传输和定位问题,把点对点的单点传输改变成P2P的传输,其中存储数据的结构是哈希链,区块链层通过资源的哈希值来定位数据存储层中资源的位置。