星鉴网>IPFS技术>IPFS教程:基于Qtum和IPFS构建DApp

IPFS教程:基于Qtum和IPFS构建DApp

2018/12/28 14:51:04 3745人阅读

【导读】 IPFS通过将文件拆分为较小的片段并将其存储在网络节点的一部分中来解决此问题。我们认为区块链+ IPFS是DApps的未来。

  摘要
  
  众所周知,区块链不适合存储大文件,因为网络中的每个节点都需要保留数据的副本,这会消耗大量的网络带宽和磁盘空间。IPFS通过将文件拆分为较小的片段并将其存储在网络节点的一部分中来解决此问题。我们认为区块链+ IPFS是DApps的未来。因此,本文将介绍基于Qtum和IPFS的DApp解决方案。
  
  介绍
  
  区块链可以定义为“分散数据库”。当节点通过区块链网络达成共识时,他们需要同步整个区块链的数据。如果允许将大文件上载到区块链,则会导致存储和网络资源的浪费。因此,大多数区块链网络限制了它们的区块大小并设定了高昂的消耗费用,因此人们倾向于向区块链提供更有价值和简洁的信息。
  
  IPFS(星际文件系统)完美地解决了大文件分散存储的问题。当一个新文件上传到IPFS时,它被分成几个256KB的中继。每个主干都有一个哈希值来唯一标识其内容。最后,为整个文件生成哈希值,任何节点都可以像地址一样通过它下载文件。
  
  我们认为区块链和IPFS的组合将是DApps(分散应用程序)的未来。区块链用作存储结构化数据的数据库,IPFS用作存储大型文件(如图片和视频)的文件系统。
  
  本文提出了一种基于Qtum和IPFS 的DApp解决方案。该解决方案能够通过将文件上载到IPFS并在Qtum智能合约中记录IPFS地址,以分散的方式存储和共享大文件。代码已经上传到Github,熟悉区块链技术的开发人员可以直接引用Github。


  
  背景
  
  什么是QTUM
  
  Qtum是基于UTXO(未使用交易输出),PoS(股权证明)共识以及智能合约的虚拟机层的区块链。它结合了比特币和以太坊的优点。通过使用AAL(帐户抽象层)技术,Qtum允许UTXO模型与帐户一起使用,这与EVM智能合约兼容。通过这种方式,Qtum具有强大的兼容性和高性能。


  
  什么是IPFS
  
  IPFS旨在开发一个点对点分布式文件系统,该系统连接所有支持Internet的设备。换句话说,IPFS提供了高吞吐量的内容寻址块存储模型,具有内容寻址的超链接。这形成了一个通用的Merkle DAG和一个可以构建版本化文件系统的数据结构。IPFS没有单点故障,节点不需要相互信任。


  
  DApps基于区块链+ IPFS
  
  IPFS官方Github上有很多IPFS应用程序,其中一些基于区块链+ IPFS。
  
  Akasha

  
  Akasha被称为下一代社交媒体网络,由以太坊和IPFS提供支持。Akasha可以被视为一个分散的博客平台,博客通过IPFS网络而不是中央服务器发布。同时,用户可以使用ETH来奖励高质量的博客。它没有太多的监管限制,内容收入由创作者直接拥有。
  
  UPORT
  
  在电子商务领域,身份认证一直是关键点。uPort是基于以太坊和IPFS的身份认证DApp。用户可以使用uPort提供的智能合约来注册其身份,系统将在IPFS上记录他们的身份详细信息。基于uPort,用户可以拥有隐私的数字身份。只允许特定组织或个人访问其个人数据。
  
  系统介绍
  
  下面我们将深入了解提出的DApp解决方案。
  
  系统架构



  
  该系统有两层。
  
  首先是上层。它基于React框架,以及HTML和JS。用户可以通过网页访问系统。通过QtumJS和JS-IPFS-API,上层与下层通信:QtumJS通过调用和发送接口在Qtum上读写智能合约; JS-IPFS-API通过添加接口将文件添加到IPFS,并通过get接口获取文件。
  
  下层包含两部分,QTUM和IPFS。
  
  Qtum - 在Qtum上部署智能合约以存储结构化数据(文件名,哈希值,添加时间等)。我们可以使用add接口添加新记录,并通过getIndex和get接口获取所有记录。智能合约如下。
  
  pragma solidity ^0.4.24;contract IpfsRecord { string[] records; function add(string data) external { records.push(data); } function getIndex() public view returns (uint) { return records.length; } function get(uint index) public view returns (string) { return records[index]; }}
  
  IPFS - 它可以是本地节点或远程节点。当收到JS-IPFS-API发送的添加请求时,IPFS会存储该文件并返回其地址。当收到get请求时,IPFS根据其地址搜索文件并返回文件的内容。
  
  系统流程图

  
  上传一个文件
  
  当用户单击UPLOAD按钮时,JS会收到单击操作,并且有几个步骤要关闭:
  
  将文件转换为缓冲区。
  
  通过添加将其上传到IPFS 。
  
  从add的返回中获取文件地址。
  
  将文件地址,发件人地址和当前时间转换为字符串作为新记录。
  
  将交易发送到Qtum以将新记录添加到智能合约。
  
  它还可以说明如下:


  
  显示文件列表
  
  显示文件列表的过程如下:
  
  初始化QtumJS和IPFS-JS。
  
  向Qtum 发送CALL请求并调用getIndex接口以获取许多记录。
  
  根据索引获取合同中的所有记录。
  
  将所有文件信息返回给浏览器。

  
  如何使用这个系统
  
  简要介绍如下:
  
  克隆代码并安装依赖项;
  
  由于Qtum需要智能合约,因此您应该安装Solidity编译器和Solar;
  
  启动本地IPFS节点或使用远程节点;
  
  启动Qtum节点并设置CORS代理;
  
  部署智能合约并确保您的帐户中有硬币;
  
  最后,启动系统。
  
  有关详细步骤,请转到[3]中的快速入门。
  
  该系统使用起来非常简单。系统启动后,在浏览器中输入http://localhost:3000/,单击UPLOAD上传文件,智能合约中的所有记录将显示在按钮下方。
  
  未来的工作
  
  我们清楚地发现Qtum和IPFS之间的互补关系:IPFS可以极大地弥补区块链存储空间昂贵且难以扩展的问题,Qtum可以为IPFS提供共识,激励和所有权的特征。
  
  至于Qtum,它可以通过EVM智能合约与ERC721标准完美兼容,因此我们可以将NFT(非伪造令牌)和IPFS结合在一起。IPFS中的每个文件都可以由区块链上的标记表示,该标记可以进行交换。
  
  例如,我们可以将一堆艺术品上传到IPFS进行存储,然后使用ERC721令牌记录其所有权。因此,我们可以通过交换令牌来交换每件艺术品的所有权。区块链的透明度可以防止交易遭受恶意攻击。
  
  因此,我们正在考虑以下几个方面:
  
  在Qtum上结合NFT和IPFS;
  
  根据ERC721标准开发一个结合NFT和IPFS的演示;
  
  开发用于部署NFT合同和访问IPFS网络的工具;
  
  构建分散的NFT交换平台。
  
  参考

  
  [1] IPFS。https://ipfs.io/
  
  [2] Qtum。https://qtum.org/
  
  [3] qtum-ipfs。https://github.com/qtumproject/qtum-ipfs
  
  [4] IPFS应用程序。https://github.com/ipfs/awesome-ipfs/
  
  [5]阿卡莎。https://akasha.world/
  
  [6] uPort。https://www.uport.me/
  
  本文来源于Medium  作者:QtumX

29

参与讨论

登录后参加评论......

全部评论 0

作者

返回顶部