关于ipfs:集成IPFS星际文件系统并基于WeBASEFront发送交易接口实现文件类上链存证的方案
集成IPFS星际文件系统,并基于WeBASE-Front发送交易接口实现文件类上链存证的计划作者简介: 孙运盛 吉科软信息技术有限公司 大数据技术研究院架构师。负责吉科软区块链BaaS平台设计研发,基于FISCO BCOS的区块链技术钻研以及在智慧农业、智慧城市、智慧食安行业畛域的区块链技术利用研发。一、背景随着业务的倒退,越来越多的业务诉求集中到文件上链,比方图片类、各类电子证明文件、视频文件等文件类型数据上链。常见文件类上链场景如电子证照类、医疗影像类、电子票据类、数字藏品类等等都波及对文件不可篡改个性的需要,借助区块链上链存储实现文件的不可篡改和一致性校验;对于文件类上链有两种计划:计划一为文件内容间接上链,这样生成的交易内容较大,蕴含交易的区块大小增长较快,随着业务量减少,对区块链的网络和存储带来较大的压力;计划二为文件内容hash上链,具体计划为将文件存储在对象存储服务器上,将文件内容hash以及相干信息上链,上链信息较小,针对大数据量和高并发场景实用;其中计划二更优,当查问链上文件信息时,校验链上文件内容hash与对象存储服务器上文件内容hash是否统一,来确认文件内容是否被篡改。这种形式可极大防止对区块链产品的网络和存储压力,同时也能保障对文件内容的可信与可验证。 本文将依据IPFS星际文件存储系统和基于CRUD的代理模式合约,对文件类上链的处理过程进行示例阐明,如何将业务方的文件存储到IPFS,同时计算文件内容哈希,再通过智能合约将文件内容哈希、IPFS文件存储哈希以及业务方上送的其余文件属性信息一并上链存储。计划流程如下图: 二、试验环境名称版本号阐明FISCO BCOSv2.9.0 WeBASE-Frontv1.5.4 Solidity^0.6.10 IPFS(kubo)v0.21.0最新IPFS版本已更名为kubo三、IPFS公有网络多节点部署3.1 下载安装文件ipfs官网地址:https://dist.ipfs.tech/ 下载kubo(go-ipfs),装置列表中适配的操作系统进行下载对应的安装文件。 3.2 装置及初始化将下载的文件放到任意装置目录下,进行解压 #1.解压安装包tar -zxvf kubo_v0.21.0_linux-amd64.tar.gz#2.进入解压后的目录cd kubo#3.执行install.sh脚本./install.sh#4.执行初始化ipfs init#5.解决跨域问题ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST", "OPTIONS"]'ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers '["Authorization"]'ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers '["Location"]'#6.启动ipfsipfs daemon#7.若启动时与本地服务端口发生冲突,能够在IPFS的配置中对端口进行从新指定3.3 公有网络部署多节点3.3.1 装置golang环境官网下载go,地址 https://go.dev/dl/下载合乎操作系统的版本 ,如 https://go.dev/dl/go1.20.6.linux-amd64.tar.gz下载后解压文件 tar -zxvf go1.20.6.linux-amd64.tar.gz 配置环境变量,批改/etc/profile文件,减少go的bin目录,如: export GOROOT=/home/bigdata/goexport PATH=$PATH:$GOROOT/bin执行 source /etc/profile,使更改失效。 3.3.2 各节点服务器顺次下载并装置IPFS参考上节的单机装置ipfs,查看节点的ID [root@localhost .ipfs]# ipfs id{"ID": "12D3KooWPRK2HL5deq1wn8ZuoeJKqctzh6ywoTsg9cz7Fwzwzpn3","PublicKey": "CAESIMobs4cyoWjM0h980TSqNLp+FYEWpXrhKz+GTGJyWMk4","Addresses": null,"AgentVersion": "kubo/0.21.0-rc3/","ProtocolVersion": "ipfs/0.1.0","Protocols": null}3.3.3 IPFS 配置文件批改IPFS多节点 能力构建一个本地的分布式文件系统,在联盟链开发环境下,少数会应用到IPFS多节点公有网存储文件。为了搭建多节点的IPFS拜访,须要批改~/.ipfs目录下的config 文件 ...