• 图纸下载
  • 专业文献
  • 行业资料
  • 教育专区
  • 应用文书
  • 生活休闲
  • 杂文文章
  • 范文大全
  • 作文大全
  • 达达文库
  • 文档下载
  • 音乐视听
  • 创业致富
  • 体裁范文
  • 当前位置: 达达文档网 > 应用文书 > 正文

    融合IPFS与以太坊的爬虫智能合约研究

    时间:2021-01-14 08:01:58 来源:达达文档网 本文已影响 达达文档网手机站

    陈杰 张再跃 张晓如

    摘 要:目前的爬虫框架及分布式系统集群成熟,但是代价高,硬件设备昂贵,技术较复杂。结合区块链技术设计一种爬虫方案,部署简单且省去服务器资金投入。该方案融合IPFS技术,使用智能合约募集公网上闲散的硬件资源代替传统服务器,节约成本,使用简单,可为IPFS融合区块链技术的应用提供参考。

    关键词:爬虫;区块链;智能合约;IPFS

    DOI:10. 11907/rjdk. 191590

    中图分类号:TP391   文献标识码:A                文章编号:1672-7800(2020)003-0200-04

    Crawler on Smart Contract Based on IPFS and Ethereum

    CHEN Jie, ZHANG Zai-yue, ZHANG Xiao-ru

    (School of Computer Science, Jiangsu University of Science and Technology, Zhenjiang 212003,China)

    Abstract:The current crawler has a mature framework and cluster distributed system, but the cost is high, the price of hardware equipment is expensive, the technology is more complex. A crawler solution incorporating blockchain technology is designed that makes it easy for users to deploy and saves money on servers. The scheme integrates IPFS technology and uses smart contract to collect idle hardware resources on the public network. This research scheme replaces traditional servers with public network resources, saves expensive investment on server hardware,saves the cost and is simple to use, and provides a reference for the use of IPFS fusion blockchain technology in other directions and fields.

    Key Words:
    crawler; blockchain; contacts; IPFS

    0 引言

    在人工智能與大数据相互交叉时代,不论是工程领域还是研究领域,数据都是极其重要的战略资源,高效的数据采集是关键。现在的分布式爬虫在海量数据爬取上非常高效,但是分布式爬虫硬件需要投入大量资金,所以结合新技术构建信息采集系统是研究热点。

    分布式爬虫大多基于Scrapy-Redis、Nutch等框架开发,而现在已有部分AI公司创新地结合云技术开发云爬虫,通过开放API提供服务。Diffbot是美国一家指令机器学习和计算机视觉算法以及公共API开放的初创公司,该公司通过计算机视觉、机器学习和人工智能处理Web页面,计划实现整个网页的“机器可读”。但Diffbot收费较高,包月要5 000美元、拥有500万次调用,超出另付。一条数据需要多次API调用,在海量数据面前这种收费标准难以承受。

    本文将区块链分布式公共信用账本引入爬虫[1],通过在区块链上部署智能合约驱动爬虫[2]。该研究方案充分利用公网资源,可以更低成本和更高效率传递信息与价值[3-4],发挥比云端服务器更强性能[5],免去云爬虫的高昂使用费,节省传统分布式爬虫昂贵的硬件服务器费用。

    1 区块链底层核心算法与数据结构

    1.1 密码学哈希函数

    哈希函数是整个区块链的单元组成结构,整个区块链都是哈希函数的增加、改变、嵌套、迭代等[6]。虽然哈希函数是组成细胞,但其也要根据实际情况进行变种处理[7]。

    一般哈希函数的特性有:①哈希函数的输入不限制大小;②哈希函数的输出是固定大小;③哈希函数在合理的时间内能有效处理。

    但是,作为区块链项目的哈希函数还需要一些附加特性。

    (1)碰撞阻力。无法找到两个值x和y,x≠y,而且H(x)≠H(y),则称哈希函数H具有碰撞阻力(见图1)。我国密码学专家给出了包括MD5、RIPEMD等哈希函数的碰撞[8]。

    (2)隐秘性。假设哈希函数的输入为y=H(x),但是无法推导y→x,这是不可逆的。

    (3)谜题友好性。假设任意n位输出值为y,而k是一个非常随机的数,这种函数不可能再比2n小。

    1.2 区块链数据结构与哈希挖矿

    区块链在数据结构上就是用一个个哈希指针构造出的哈希区块组成一个公共链表,每个区块的整体哈希值可以指向唯一的下一个区块(见图2),每个区块都有自己的梅克尔二叉树[9],每个事务都有自己的哈希值。然后每两个结对再次计算哈希值,以此类推最后计算出来一个哈希值,也就是根哈希。Nance为优质的随机数[10]。

    哈希挖矿就是对整个区块做哈希值,让它小于某个值,这需要大量的时间算力[11],用式(1)表示为:

    1.3 区块链数字、签名和双钥

    数字签名由3个算法组成[12-13]:

    式(2)中,generateKeys是秘钥产生方法,把keysize作为输入产生一对公钥pk和私钥sk。sk必须秘密保存,所有人都可用pk验证签名。

    式(3)是签名方法。输入是两个参数,一个是私钥,还有一个是一段信息,对外输出是数字签名。

    式(4)是验证公式,通过keysize作为输入产生一个公钥pk和私钥sk,通过sk和一段信息产生数字签名sig,最后通过pk、message、sig作为验证函数的参数来验证数字签名。

    在区块链中,常用的数字签名方案是椭圆曲线数字签名算法,其利用椭圆曲线密码对数字签名算法进行模拟[14-16]。这种算法除以上几个特点外,还具有安全性高、生成公私钥较方便、处理速度较快和存储空间小等优点。

    公钥和私钥是密码学中非对称加密名词,通常情况下用公钥加密,再用私钥解密,其是一种公开的密钥算法。私钥可以决定公钥,公钥可以决定地址。

    1.4 共识算法

    区块链本质上是一种分布式系统,但是它是去中心化的,所以一致性问题是关键核心问题,但是和传统的分布式系统不同,它是异步的,每个节点同步时间不一样。其具有容错性,有些节点可能关闭或者没有同步或反馈[17]。

    FLP定理不允许传统计算机系统解决错误进程和网络分区问题[18],科学家结合社会学及博弈论引入了激励机制和随机性。

    激励机制。通过设置恰当的机制,让每个节点都能通过遵守规则实现利益最大化,让其自发成为公正的节点。

    随机性。POW共识协议就是算力共识,依靠算力解决哈希函数无限求解,优先计算出来的可以拥有打包权利从而获得网络的代币奖励。POS是权益证明共识,主要看参与者持有币的数量和时间,数量越大的人用越大的概率去打包区块从而获得奖励,有事实上的中心化趋势,“贫富”差距也会更大。

    1.5 区块链整体模型架构

    整个区块链系统由自下而上的数据层、网络层、共识层、激励层、合约层和应用层组成(见图3)。

    2 IPFS

    2.1 IPFS核心理念

    IPFS是Inter Planetary File System的简称,对标Http而言是一种点对点的分布式文件系统。传统的Http是基于中心化的服务器,具有天然瓶颈。服务器空间是珍贵的资源,这注定站点的数据不能长期储存,而且服务器文件定位不够平缓,都是多级目录形式。相对而言,IPFS没有这些局限性,它将文件的碎片分布在整个公网上,IPFS不使用多级目录储存,而是结合了密码学加密技术,可以基于内容对其进行寻址[19]。

    IPFS基本原理就是对整个内容进行哈希运算,然后反馈哈希值,这个哈希值就是对应储存的内容,可以通过哈希值寻找内容。

    2.2 爬虫代码储存

    为了充分延展爬虫程序的能力,将其部署在公链上。爬虫的代码储存在IPFS上,其它节点参与这个项目。可以从IPFS上下载相应的爬虫代码,然后由其它节点运行代码。同时,爬虫所采集的数据也储存在IPFS上。

    上传整个代码目录的IPFS伪代码:

    localhost:1121 chan$ ipfs add -r myscrapy/

    add 哈希值1 myscrapy/project/__init__.py

    add 哈希值2 myscrapy/project/items.py

    ……

    add 哈希值n-1 myscrapy/scrapy.cfg

    add 哈希值n myscrapy

    哈希值来源于对后面文件的整体哈希运算。

    下載上传IPFS文件的伪代码:

    Ipfs cat 哈希值n

    Ipfs daemon

    3 以太坊与智能合约

    3.1 以太坊

    如果比特币代表区块链1.0,那么以太坊就是区块链2.0的代表。由于比特币不太灵活,部分基于比特币的项目对比特币系统作了一些改变,添加了一些新功能,然后独立运行在不同的节点上,这就意味着每一个项目都要重复、独立地建立一个类似的比特币系统。以太坊塑造了一种能被重编程用于任意复杂计算功能的单一区块链。

    以太坊与比特币有许多不同,从性能表现和特性上看主要有以下区别:首先,以太坊有更快的“出块”速度及更先进的奖励机制。比特币的出块时间平均是10min,以太坊的出块间隔为12s,这表示以太坊有更大的吞吐量和更小的交易确认间隔;其次,以太坊支持智能合约,用户可以定义数字资产和流通逻辑,通过以太坊虚拟机几乎可执行任何计算。相比之下,比特币只支持转账,这说明以太坊可作为更加通用的区块链平台,支持各种去中心化应用。

    3.2 智能合约概念

    以太币作为一种雄心勃勃的虚拟币,致力于提供一种满足图灵计算要求的可编程语言[20],用这种语言可以编写脚本和合约[21]。在该体系中,智能合约是应用层程序,被以太坊的虚拟机执行。在这个体系中,智能合约起到任务发布和激励的作用,空闲的计算机可以发挥作用,降低大规模数据采集成本,减少大量硬件需求。

    智能合约行为由合约代码控制,合约账户存储则保存合约状态。合约代码运行在以太坊虚拟机上。合约的代码编写需要使用一些高级语言,例如语法与JavaScript相似的Solidity语言、与Python相似的Serpent语言、与Lisp相似的LLL语言等。

    3.3 爬虫合约与系统结构

    爬虫合约是爬虫系统的纽带,起着核心作用。为对整个系统产生激励作用,在Scrapy-redis框架基础上引入区块链技术[22],整个系统结构相对简洁明了,如图4所示。

    图4中MasterSpider是本机节点,a是确定采集的目标,然后反馈给主节点并同时通过b将爬虫代码传给IPFS。爬取的队列在缓存内,SlaveSpiders争取队列的数据采集,c是MasterSpider和所有SlaveSpiders共同维护的一个Redis,d代表所有的SlaverSpider从IPFS获取相应的爬虫代码,e是爬虫从队列中拿到任务并且去爬取并把爬取信息传送回Redis,f是把爬取的信息上传到IPFS,g是以太坊捕捉IPFS的触发信息,h是智能合约将激励发送给SlaveSpider。

    3.4 信息爬取与激励

    IPFS是非常重要的核心枢纽,信息爬取结果最后汇总在IPFS上,以太坊智能合约对参与者的奖励通过IPFS上的信息进行(见图5)。

    首先,信息爬取要求Master端和Slave端都安装好基于Python的爬虫基础框架Scrapy以及Redis数据库。Master端和Slave端需要共同维护存储在Master端的Redis,Slaver端连接远程Redis的命令是:redis-cli -h ip -p port。爬取过程中,Master端的Redis是有数据的,Slave端的Redis是没有数据的,共同维护一个Redis。Redis会给Slave任务,Slaver会获得任务并且完成相关爬取任务,并把结果传给Redis,最后上传到IPFS。数据结构应该包括数据的哈希值和参与者钱包地址。主机可以从IPFS上解析到所要的数据。

    其次,激励具体指智能合约通过Oraclize从IPFS上取出数据,并从数据中解析出钱包地址,向其发送相应代币,这样参与者就可以得到相应激励,以此不断循环。参与者一方面将数据传输给IPFS,另一方面通过IPFS得到相应激励。

    最后,通过这种业务逻辑募集公网上的闲散资源,一方面减少资源浪费,另一方面避免传统分布式系统昂贵的硬件投入。

    4 结语

    本文依托区块链技术,分析了爬虫智能合约的封装问题。爬虫合约充分利用區块链的去中心思想建立公共信任账本,对公网闲散资源进行众筹,这种公共信用体系将在金融等领域发挥重要作用。

    参考文献:

    [1]袁勇,王飞跃. 区块链技术发展现状与展望[J]. 自动化学报,2016,42(4):459-481.

    [2]SWAN M. Blockchain:
    blueprint for a new economy[M]. Sebastopol:OReilly Media Inc,2015:9-26.

    [3]袁勇,周涛,周傲英,等. 区块链技术:从数据智能到知识自动化[J]. 自动化学报,2017,43(9):1485-1490.

    [4]常汉杰,付赛红,石志明. 浅谈区块链对于文件存储系统的变革[J]. 计算机时代, 2019(3):101-104.

    [5]李世勇,苑凯博,汪棪,等. 企业应用云迁移与部署:现状、挑战与展望[J]. 管理现代化,2019(2):75-78.

    [6]王化群,吴涛. 区块链中的密码学技术[J]. 南京邮电大学学报:自然科学版,2017(6):61-67.

    [7]李佩丽,徐海霞,马添军,等. 可更改区块链技术研究[J]. 密码学报,2018(5):501-509.

    [8]WANG X Y. Collisions for hash functions md4, md5, haval-128 and ripemd[EB/OL]. http://eprint.iacr.org/2004/199.pdf,2004

    [9]蒋勇. 白话区块链[M]. 北京:机械工业出版社,2017:91-93.

    [10]杨振海,张国志. 随机数生成[J]. 数理统计与管理,2006(2):244-252.

    [11]唐长兵,杨珍,郑忠龙,等. PoW共识算法中的博弈困境分析与优化[J]. 自动化学报,2017(9):1520-1531.

    [12]ARVIND NARAYANAN,JOSEPH BONNEAU,EDWARD FELTEN,et al. Bitcoin and cryptocurrency technologies[M]. USA:Princeton University Press,2016:43-46.

    [13]赵翔. 数字签名综述[J]. 计算机工程与设计,2006(2):195-197.

    [14]张方国,王常杰,王育民. 基于椭圆曲线的数字签名与盲签名[J]. 通信学报,2001(8):22-28.

    [15]赵文清,姜波,王德文,等. 数字签名中哈希函数的分析与研究[J]. 计算机工程与应用,2004(32):155-157.

    [16]暴金雨. RSA公钥密码体制的原理及应用[J]. 科技传播,2019(6):137-139.

    [17]李剑锋. 基于拜占庭容错机制的区块链共识算法研究与应用[D]. 郑州:郑州大学,2018.

    [18]URBAN P,DEFAGO X,SCHIPER A. Chasing the FLP impossibility result in a LAN or how robust can a fault to lerant server be[C]. 20th IEEE Symposium on Reliable Distributed Systems,2001,28-31.

    [19]NIZAMUDDIN N,SALAH K,AJMAL AZAD M,?et al. Decentralized document version control using ethereum blockchain and IPFS[J]. Computers and Electrical Engineering,2019(3):183-197.

    [20]任晓明,刘川. 认知、信息与计算的哲学省思考[J]. 科学经济社会,2018(4):1-8.

    [21]邵奇峰,金澈清,张召钱,等. 区块链技术:架构及进展[J]. 计算机学报,2018(5):969-988.

    [22]严慧,彭绪富,朱小婉,等. 基于Scrapy-Redis分布式数据采集平台的设计与实现[J]. 湖北师范大学学报:自然科学版,2019(1):19-25.

    (责任编辑:杜能钢)

    收稿日期:2019-04-23

    作者简介:陈杰(1988-),男,江苏科技大学计算机科学与工程学院硕士研究生,研究方向为为软件工程、信息检索、智能信息处理;张再跃(1961-),男,江苏科技大学计算机科学与工程学院教授,研究方向为数理逻辑与应用逻辑、知识表示与推理、智能信息处理;张晓如(1963-),女,江苏科技大学计算机科学与工程学院教授,研究方向为智能信息处理、计算机教育。本文通讯作者:张晓如。

    相关热词搜索: 以太 爬虫 合约

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网