王明皓 邬少飞
(武汉工程大学计算机科学与工程学院,湖北 武汉 430000)
由于比特币的面世,区块链技术已成为人们最受关注的技术之一。各个国家与企业积极研究和探索区块链技术带给人类社会的创新与发展。有人认为区块链技术将来会成为绝大多数行业产业的支撑技术并且改变人类社会的信任机制。同时随着时代的变化与社会的发展,我国人民已经从注重追求温饱逐渐转变为注重运动健康。因此本研究考虑将两者结合,在传统区块链技术的基础上进行创新改进更好地服务于运动健康产业。
本研究将区块链技术与健康产业相结合,改进区块链技术的共识来更好地推动健康产业的发展。在其创新性的结合发展后,将提高人们运动的积极性从而提高人们对于健康的关注度,有关部门也可以利用区块链的特点对健康产业进行有效的管理。在健康产业中产生的海量数据是具有极高价值的,由区块链技术的不可篡改特点来保证这些数据的真实性,以此来使用这些可信任的数据来进一步推动产业的发展。
现如今区块链的应用范围主要集中在虚拟货币领域与少量的其他领域。我们认为区块链技术具有去中心化、可追溯、可信任性等特点,这些特点在绝大多数产业领域都可以适用,不应仅仅局限于个别产业。传统的区块链系统中使用的是传统的共识机制,其专用挖矿设备集中、出块时间过长是显而易见的缺点。并且传统的区块链技术是为了服务于虚拟货币而产生的,其主要是想要维护货币拥有者的权利,这点并不适用于其他产业,需要进行一定的改进。
本论文的研究内容如下:
在传统的区块链技术中以单纯比拼算力的工作量证明机制作为共识机制,本研究考虑增加其对内存空间的要求,这样可以使得参与设备更加贴近于人们的生活,使得人们都能参与到系统的维护中。
传统的区块链系统应用于虚拟货币领域,其主要保护的是个人的账户财产。本研究需要更契合于健康产业的区块链系统,因此在其中增加了剩余优势,以此来对使用此系统的用户进行区分,更为频繁的使用者将在维护此系统中存在相应的优势。这样可以提高系统的运行效率,并且更好地实现由系统的使用者来作为系统的维护者。
将区块链技术与健康产业相结合,对运动健康的预约与管理进行创新使其更加智能化,从而推动健康产业发展,也对区块链技术的应用提供更多的可能。
区块链技术被认为是继三次工业革命蒸汽机、电力、电子计算机与互联网之后的下一个颠覆性的核心技术。如果说蒸汽机的广泛应用极大地释放了人们的生产力,电力的发明解决了人们基本的生活需求,电子计算机与互联网的产生彻底改变了人们之间的主要信息传递方式,那么区块链技术作为一种新型的构造信任机制的模式[1],可能将彻底改变整个人类社会的价值传递方式[2,3]。区块链技术作为下一个信任模式的基石,其最核心的革命特征是改变了人类社会千百年来落后的信任机制。
区块链是一种特殊的分布式数据库[1],其主要作用是存储信息。任何想要存储的信息都可以写入区块链中,没有任何局限性。任何人都可以设置节点加入到区块链网络中。去中心化是区块链最大的特点,其内部不存在所谓的中心节点,任何一个节点的添加或删除都不会影响整个区块链的正常运行,所有节点都是平等存在的,他们都独立拥有数据信息。正因为区块链不受单一节点的影响与控制,所以它具有很好的可信任性。区块链采用密码学技术,在向区块链中写入信息时需要对其进行数字签名,并进行哈希运算,保障数据无法篡改与抵赖,具有良好的安全性。
点对点的去中心化分布式存储。每个节点都可以对区块链中的所有数据信息进行存储,并且就是由这些存储了所有数据信息的节点来保证其内部数据的安全性,每个节点中保存的区块链只有相同时才能得到其他节点的认可,并不依赖于某一节点的权威性。
加密算法。区块链网络中每个账户都有一对公私钥对。公钥可以对外公开,私钥需要自己保存。每个账户在区块链中发布数据信息时都需要由自己的私钥对其进行签名,其他账户节点可以使用其公钥对其解密查看原文信息是否一致以此来判断其数据发布的真实性。并且区块链是由一个个区块链接而成的,后一区块总是包含着前一区块的哈希值,因此后一区块确定了前一区块的内容就无法被更改了。
共识机制[4-7]。区块链网络内部通过执行某种一致的共识来决定由哪个节点进行区块打包。其余节点收到打包区块后需要对其进行验证,验证通过后可以将其加入到区块链网络中。一般常见的共识机制包括:工作量证明PoW、权益证明PoS、授权股权证明DPoS、实用拜占庭容错算法PBFT等。
智能合约[8,9]。就是向区块链中写入一段固定代码,在区块链中自动执行不受到人为的外在干扰,其一旦发布到区块链中就无法被更改了,因此区块链在发布使用之前需要进行完整的考虑与测试,否则一旦出现问题则无法挽回。
传统的区块链共识机制即是比特币中用于创建新区块的挖矿共识机制。其内容简单来说就是网络中每个节点首先在自己本地对于网络中发布的各种交易信息进行整合打包形成一个新的区块,并且要在区块中的区块头处进行竞争添加一个随机数nonce,使得这个区块头block header可以满足Hash(Block Header)<=target。其中的target为区块链中此时的阈值。若不满足则重新选取随机数nonce,再次进行计算直到满足条件则可以发布到网络中由其他节点对此进行验证,验证通过后则可认同此区块链接到此时的区块链网络中。
3.2.1 生成验证数据集与试探数据集
若直接使用传统的共识机制则会出现需要经过大量计算、出块时间过长、消耗能源过多、挖矿设备专业化等问题。这些问题的产生使我们不得不衡量消耗的成本与达到效果的均衡,以及避免挖矿成功节点集中在个别专业化挖矿设备上,导致区块链中心化。
因此考虑增大对于内存的访问需求。在内存中开辟出一块较大的空间存储一个随机生成的数据集以使得对于区块的产生不仅依赖于强大的计算能力还需要有足够的内存空间。并且此时的目标为需要有一定的难度来寻找新区块的写入权限而在验证区块时应该相对简单。
在此过程中需要用到哈希函数,本研究使用的哈希函数为Keccak。其计算过程大致如图1所示。
图1 Keccak计算过程
将输入数据进行填充后进行分组,每组的长度为r,将长度为r的输入分组input_0与长度为r的内部状态data_0进行异或操作,并将异或后的结果与长度为c的容量C_0一起放入函数f中得到结果data_1与C_1,并利用得到的结果循环上述步骤进行下一轮吸收操作。
直到将所有输入分组都进行计算后的结果data_x与C_x,其中data_x为输出分组1,再次重复上述的计算过程可得到输出分组2,直到获取所需长度的数据,将其组合起来就是最后得到的哈希结果。
图2 生成验证数据集内容
在生成验证数据集时首先通过一个种子数据伪随机生成一个验证数据集,此时需要保证每个节点处生成的验证数据集都应该一样。其生成过程为首先将种子数据作为输入放入到哈希函数中进行运算,将得到的结果添加到验证数据集中,并且将此结果再次放入哈希函数中进行计算,将新得到的结果添加到验证数据中,循环足够多次数以获得一定的数据。
由此验证数据集生成数据量更大的试探数据集。其生成过程(图3)如下:当请求试探数据集中的第i个元素时,先得到验证数据集中第i个元素的内容,若超出验证数据集个数则取余,将得到的内容取哈希后得到临时值X1,将此X1代入到已知固定方法get_int_from_item中获得到一个位置序号j,在验证数组中取出位置j处的内容数据X2,并将X1与X2混合后得到新的临时值X1,循环上述操作一定次数以保证充分的工作量与随机性,对最后以此生成的临时值X1取哈希即得到了试探数据集中位置为i处的数据内容。
图3 计算试探数据集过程图
其中的get_int_from_item是为了从较长的输出数据压缩转变成为一个较小的序号值,本研究中是将数据对验证数据集长度取余后得到结果序号。mix是将两个数据混合后生成新的随机数据。
由此可以得到试探数据集中的所有数据内容(图4),并且将得到的整个试探数据集保存在本地在组装权限竞争时使用。
图4 生成试探数据集内容
3.2.2 组装权限竞争
将发布在网络中的数据信息打包到一个区块中,并且随机取一个随机数nonce,将此区块的区块头与随机数nonce取哈希得到一个临时值Y,将此Y代入到已知固定方法get_int_from_item中获得到一个位置序号a,并在已经得到的试探数据集中取出位置a处的内容数据Z1与位置a+1处的内容Z2,之后分别与临时值Y结合生成两个新的临时值Y1、Y2,将这两个新的临时值混合后的结果更新Y,循环上述操作一定次数以保证充分的工作量与随机性,将最后一次得到的临时值Y取哈希,得到的值即为结果result,比较result<=target是否成立,若成立则说明此区块合法,可以将此区块广播到网络中供其他节点进行验证,此时绝大多数节点验证通过后,则可以确定此时该区块已经被成功写入到区块
表1 基础阈值00051bf480000000000000000000000000000000000000000000000000000000时的实验结果
表2 基础阈值000051bf48000000000000000000000000000000000000000000000000000000时实验结果
图5 计算获得组装权
3.2.3 引入剩余优势
传统的共识机制应用场景是各种虚拟货币,在区块链中其重点需要保护的数据信息就是每个账户的余额,而本研究中区块链中需要保护的重点是各账户在区块链中产生并存储的数据信息。并且本研究结合权益证明PoS的思想,考虑到通过降低系统使用者的竞争难度来让系统的使用者更有资格保护整个系统的正常运行。因此对于每个账户提出剩余优势的概念,每当各账户预约并使用成功或是有数据信息保存到区块链网络中,则使其账户中的剩余优势增加以此来使其账户在组装权限竞争中降低一定的阈值难度来取得一定的优势。并且大量剩余优势的账户会降低大量的阈值难度,以此可以进一步提高整个区块链系统的运行速度。为了避免剩余优势绝对庞大而威胁到整个系统的竞争公平性,在降低阈值难度的过程中不能无限降低而应该有一个适当的下限,并且每次在使用剩余优势后获得了组装权限的账户中应当扣除一定的剩余优势。以此既能做到有系统使用者来保护系统的内部良性循环,又能保护区块链的核心特征避免其出现严重中心化问题。
我们多次在相同基础目标阈值时,不同的剩余优势下进行了实验,将剩余优势分为25,30,35,40,45,50,55,60。在相同的目标阈值下,每个剩余优势都进行了20次实验,得到每次获取到组装权时所需要尝试的次数,将其相加得到在此目标阈值下,每个剩余优势在20次实验中各自所尝试的次数之和,并可求出每个剩余优势下所需的平均次数。在不同的基础目标阈值下进行多次实验。
部分实验数据如表1,表2,图6,图7所示:
图6 剩余优势与平均计算次数关系图1
图7 剩余优势与平均计算次数关系图2
由此可以看出剩余优势的引入加快了整个区块链系统的运行效率,并且剩余优势较大的账户节点平均情况下取得结果的计算次数明显减少,从而使得剩余优势较大的账户也就是经常使用该区块链系统的账户能够由更大的优势来参与到该区块链系统的管理和维护中。3.2.4 验证组装区块
验证节点的本地只需要保存一个验证数据集即可,当接收到已经打包好的区块时,首先检验其区块内部数据信息的合法性,之后与组装权限竞争时所采取的方法类似,取出其区块头与其中的随机数nonce取哈希得到一个临时值Y,将此Y代入到已知固定方法get_int_from_item中获得到一个位置序号a,此时需要获取到试探数据集中序号a处的数据信息,但验证节点处可能没有保存数据量较为庞大的试探数据集,可以根据前面描述的取得试探数据集的方法来直接获得a处位置的数据信息Z1和a+1处位置的数据信息Z2之后分别与临时值Y结合生成两个新的临时值Y1、Y2,将这两个新的临时值混合后的结果更新Y,循环上述操作一定次数以保证充分的工作量与随机性,将最后一次得到的临时值Y取哈希,得到的值即为结果result,比较此结果与其降低难度后的阈值相比是否满足条件,若满足则承认此区块的合法性,将此区块添加到区块链中。
在该区块链系统中存在三类实体,分别为体育馆、用户、有关部门。健康产业由体育馆发布预约信息,由用户自由选择预约地点与时间,由有关部门接收其系统中产生的各类数据并对其进行分析进一步推动该产业的良好发展。系统中每个账户都是一个独立的个体,由一对公私钥对组成,使用椭圆曲线加密算法将私钥映射生成公钥,一个私钥仅能对应一个公钥,公钥可以公开,私钥由个体独立保存,以此能够极大地保证账户的安全性。
由体育馆方首先提出可预约信息审核,待审核通过后可以将可预约信息上链发布。上链后,用户可以通过注册后的账户对已发布的可预约信息进行预约,并且将此预约成功信息上链,用户在预约成功并成功使用后可以使账户中积攒一定的剩余优势。因此在此阶段区块链网络中上链的信息包括:审核通过的体育馆可预约信息、用户成功预约信息、用户获得的剩余优势。此类信息上链后将永久存在并且很难被篡改。为今后发生纠纷事件提供充分的证据。
有关部门对于整个系统有监督管理的责任,首先需要将体育馆方提出的可预约信息进行审核,审核成功后由有关部门方账户对于此信息进行上链操作。以此来确保上链信息都是由有关部门审核过的。通过智能合约中自动执行的特点对其中的各类账户进行分类并保证每类账户对系统中的访问权限进行隔离,这样可以保证区块链中部分隐私信息的安全性。可以在智能合约中设置有关部门相应权限来获取区块链中产生的数据信息。例如各时间段各体育馆的预约使用情况数据信息可由相关部门调取,并且进一步分析规划来推动产业健康发展。同时由于上链信息都是真实可靠的,有关部门可以调取区块链中各体育馆的经营状况来发放补贴。区块链上的信息都是真实可靠的,这些数据信息也可以成为后期税收等工作核对的关键性公证证据。
本研究将区块链技术应用于新型健康产业模式,对传统区块链技术进行改进,提出剩余优势的概念,实现使用者与维护者、管理者的统一,避免传统区块链技术中运行速度过慢和外部力量干预而出现的中心化问题,进一步实现管理的内部良性循环。同时可以保证其中数据信息的安全性、真实性,并且后期有关部门可以利用这些可信任的数据信息对于整个健康产业进行更好的规划与建设,形成产业的良性循环。