精华内容
下载资源
问答
  • ipfs

    2020-03-13 22:33:21
    ipfs目标ipfs 安装ipfs commandgo-ipfs-apiipfs test 目标 ipfs 安装 ipfs command go-ipfs-api ipfs test ipfs 安装 IPFS官网:https://ipfs.io/ 目前ipfs主要有俩个版本go-ipfs,js-ipfs; 本文使用的是go-ipfs...

    目标

    • ipfs 安装
    • ipfs command
    • go-ipfs-api
    • ipfs test

    ipfs 安装

    IPFS官网:https://ipfs.io/
    目前ipfs主要有俩个版本go-ipfsjs-ipfs
    本文使用的是go-ipfs
    1、通过源码自己编译安装
    2、直接从下载Releases下载对应版本

    //查看对应版本,当前最新版本为 v0.5.0-dev
    ipfs version
    

    ipfs command

    ipfs 基本命令
    ipfs bitswap 用来操作bitswap代理
    ipfs block 命令用来操作IPFS裸块
    ipfs bootstrap 命令用来显示或编辑引导节点列表
    ipfs config [] 命令族用来读取或写入ipfs的配置信息
    ipfs diag 命令生成诊断报告
    ipfs file 命令用来与表征unix文件系统的IPFS对象进行交互
    ipfs files 命令用来操作unixfs文件
    ipfs xxxx --help 查看各个命令的帮助,
    ipfs block --help
    ipfs files --help

    其他命令参考
    http://cw.hubwiz.com/card/c/ipfs/1/1/1/

    //初始化 ipfs
    ipfs init
    //启动 ipfs 本地节点 (启动成功后可以通过http://localhost:5001/webui)
    ipfs daemon
    //删除所有节点
    ipfs bootstrap rm all
    //加入私网,也可以通过设置环境变量 LIBP2P_FORCE_PNET=1 来强行启用私网配置,如果没有正确配置 swarm.key 会导致 daemon 启动失败
    //生成swarm.key 参考 https://www.jianshu.com/p/dfc61136324c
    ipfs bootstrap add <Address>
    //显示bitswap代理的诊断信息
    ipfs stats bitswap
    //上传文件
    ipfs add QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
    //上传文件夹 -r=递归
    ipfs add -r <dir>
    //保存ipfs网络数据
    ipfs get QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
    //查看内容
    ipfs cat QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
    ipfs cat /ipfs/QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
    https://ipfs.io/ipfs/QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
    
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200313220329761.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2R1eWF5dW4=,size_16,color_FFFFFF,t_70)
    

    go-ipfs-api

    https://github.com/ipfs/go-ipfs
    所有的api都有对应的命令行,源码中构造命令行的对象
    在这里插入图片描述
    Shell 实际是就是一个httpClient
    在这里插入图片描述
    AddAdd
    Add方法中的-r,在这里表示recursiveAdd方法中的-r,在这里表示recursive

    import (
    	"bytes"
    	"fmt"
    	ipfsapi "github.com/ipfs/go-ipfs-api"
    	"io/ioutil"
    	"sync"
    	"time"
    )
    
    const (
    	url = "127.0.0.1:5001"
    )
    
    var sh *ipfsapi.Shell
    var wg sync.WaitGroup
    
    //上传内容
    func UploadIPFS(str string) string {
    	//defer wg.Done()
    	sh = ipfsapi.NewShell(url)
    	hash, err := sh.Add(bytes.NewBufferString(str))
    	if err != nil {
    		fmt.Println("上传ipfs时错误:", err)
    	}
    	return hash
    }
    
    //上传文件
    func UploadIPFSFile(str string) string {
    	defer wg.Done()
    	sh = ipfsapi.NewShell(url)
    	hash, err := sh.AddDir(str)
    	if err != nil {
    		fmt.Println("上传ipfs时错误:", err)
    	}
    	fmt.Printf("hash:%v\n",hash)
    	return hash
    }
    
    
    //上传目录
    func UploadIPFSDir(str string) string {
    	defer wg.Done()
    	sh = ipfsapi.NewShell(url)
    	hash, err := sh.AddDir(str)
    	if err != nil {
    		fmt.Println("上传ipfs时错误:", err)
    	}
    	fmt.Printf("hash:%v\n",hash)
    	return hash
    }
    
    //下载文件
    func GetIPFS(hash string) (string,error) {
    	defer wg.Done()
    	downloadPath :="C:\\ipfsdownload\\"
    	sh = ipfsapi.NewShell(url)
    	err := sh.Get(hash,downloadPath)
    
    	if err != nil {
    		fmt.Println(err)
    	}
    	//path := fmt.Sprintf("",downloadPath,hash)
    	return "",err
    }
    
    
    //查看文件
    func LsIPFS()  {
    	sh = ipfsapi.NewShell(url)
    
    	ls ,err := sh.List("")
    	fmt.Print(ls)
    
    	if err != nil {
    		fmt.Println(err)
    	}
    }
    
    
    //查看文件
    func CatIPFS(hash string) string {
    	sh = ipfsapi.NewShell(url)
    
    	read, err := sh.Cat(hash)
    	sh.IsUp()
    	if err != nil {
    		fmt.Println(err)
    	}
    	body, err := ioutil.ReadAll(read)
    
    	return string(body)
    }
    

    ipfs test

    本地单机测试
    硬件环境
    在这里插入图片描述
    测试结果
    在这里插入图片描述
    win 生成文件方法,1000000kb
    fsutil file createnew F:\go\ipfs-api\testfile1M.txt 1000000

    测试方法

    func TestUploadIPFSFile(t *testing.T) {
    	startTime := time.Now()
    	for i := 0; i < 1; i++ {
    		wg.Add(1)
    		go UploadIPFSFile("F:\go\ipfs-api\testfile1M.txt");
    	}
    	wg.Wait()
    	endTime := time.Since(startTime)
    	fmt.Println("age: ", endTime)
    }
    
    展开全文
  • IPFS

    千次阅读 2018-01-15 15:14:10
    IPFS简介

    1.IPFS简介

    IPFS(InterPlanetary File System,缩写IPFS)中文译为星际文件系统,是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。是一个底层的互联网协议,致力于替代
    HTTP,实现的是互联网上各个节点的文件读取、分享、交换。在IPFS网络中的节点将构成一个分布式文件系统。而 HTTP 协议依赖于
    Internet 主干网。 IPFS
    是点对点的超媒体协议,可以让网络更快、更安全、更开放。它是一个面向全球的、点对点的分布式版本文件系统,试图将所有具有相同文件系统的计算设备连接在一起。
    2. IPFS的一些工作原理

    (1) 该系统中每个文件都被进行 Hash 处理,生成数字指纹。
    (2) 查找文件时,IPFS 通过使用一个分布式哈希表,可以快速找到拥有数据的节点进行检索,并使用哈希验证其是否是正确的数据,找到想要的文件。
    (3) IPFS 通过网络删除重复具有相同哈希值的文件,通过计算是可以判断哪些文件是冗余重复的。并跟踪每个文件的版本历史记录。
    (4) 每个网络节点只存储它感兴趣的内容,以及一些索引信息,有助于弄清楚谁在存储什么。
    (5) 使用称为 IPNS(去中心化命名系统),每个文件都可以被协作命名为易读的名字。通过搜索,就能很容易地找到想要查看的文件。
    3.IPFS网络部署

    1 在官网下载合适的go-ipfs版本,官网地址为:https://ipfs.io/
    2.官网的安装教程为:https://ipfs.io/docs/install/
    3.ipfsa初始化命令

    cd go-ipfs
    mv ipfs /usr/local/bin/ipfs
    ipfs init

    4.ipfs命令官网:https://ipfs.io/docs/commands/

    展开全文
  • ipfsIPFS简介-源码

    2021-02-03 20:04:56
    ipfsIPFS简介
  • ipfsIPFSIPFS群集API的包装器
  • IPFS powers the Distributed Web A peer-to-peer hypermedia protocol to make the web faster, safer, and more open. TL;DR Get help and talk about ideas in the IPFS Forums Visit the IPFS website ...
  • go-ipfs What is IPFS? IPFS is a global, versioned, peer-to-peer filesystem. It combines good ideas from previous systems such as Git, BitTorrent, Kademlia, SFS, and the Web. It is like a ...
  • ipfs:Erlang IPFS客户端API
  • ipfs-dart:用于Flutter应用程序的IPFS Dart原型,用于向IPFS发送数据和从IPFS接收数据
  • ipfs-gui是 IPFS实现的GUI包装。 ipfs-gui使用Electron和Angular 5。 产品特点 ipfs-gui当前缺乏很多功能。 随时贡献! :winking_face: 将文件上传到IPFS并获取其哈希值 跨平台兼容性 如果您想在ipfs-gui中查看特定...
  • docker-ipfs-cluster:具有IPFS docker-compose映像的IPFS群集
  • IPFS实验室 IPFS(星际文件系统)实验室
  • ipfs-share:ipfs-share
  • private-ipfs:运行私有IPFS
  • ipfs-docker:IPFS Docker映像
  • ipfs-api-kotlin:用于Kotlin通过http访问IPFS节点的IPFS API
  • IPFS内部:IPFS从入门到精通
  • clj-ipfsIPFS的Clojure客户端
  • noflo-ipfs:NoFlo的IPFS组件
  • ipfs_ynh:YunoHost的IPFS软件包
  • IPFS演示 演示了如何使用ReactJS和IPFS HTTP客户端进行IPFS使用,作为BCDV1011的实验证明- 计划中的区块 设计模式。 :person_running: 怎么跑 在要克隆项目的文件夹中打开终端 # Clone this repo git clone ...
  • 4.1 IPFSIPFS初识

    2018-11-19 09:22:26
    IPFS  简介:IPFS(InterPlanetary File System)是一个点对点的分布式超媒体分发协议 IPFS工作原理  每个文件及其中的所有块都被赋予一个称为加密散列的唯一指纹 IPFS通过网络删除重复的具有相同哈希值的...
    1. IPFS 
      1. 简介:IPFS(InterPlanetary File System)是一个点对点的分布式超媒体分发协议
    2. IPFS工作原理 
      1. 每个文件及其中的所有块都被赋予一个称为加密散列的唯一指纹
      2. IPFS通过网络删除重复的具有相同哈希值的文件,通过计算可以判断哪些文件是冗余的、重复的。并跟踪每个文件的版本历史记录。
      3. 每个网络节点只存储他感兴趣的内容,以及一些索引信息,有助于弄清楚认证在存储什么。
      4. 查找文件时,通过文件的哈希啥就可以在网络查找到储存该文件的节点,找到想要的文件。
      5. 使用IPNS(去中心化的命名系统),每个文件都可以被命名为易读的名字。通过搜索就能很容易地找到想要查看的文件。
    3. HTTP与IPFS 
      1. HTTP:超文本传输协议,是世界统一的全局信息格式协议,为分发和显示信息提供了规范
      2. HTTP目前所存在的问题 
        1. HTTP效率低下,服务器成本昂贵–使用HTTP协议从一台计算机服务器上一次只能下载一个文件
        2. 历史文件被删除–网页的平均使用寿命为100天,大量的网站文件不能得以长期保存,有些重要文件因操作不当也可能在互联网中永远消失
        3. 中心化网络限制了机会–中心化网络容易被控制,是对互联网良性发展的威胁
        4. 网络应用太依赖骨干网–为保证数据可靠性,我们开发的应用程序太依赖大型的中心服务器,并通过大量备份来保证数据安全
    4. IPFS:IPFS是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议,在IPFS网络中,节点构成一个分布式文件系统。 
      1. 相对于HTTP,IPFS所拥有的特性 
        1. 基于内容寻址,而非基于域名寻址。文件(内容)具有存在的唯一性,一个文件加入了IPFS网络,将基于计算对内容赋予一个唯一加密的哈希值。
        2. 提供了文件的历史版本控制器(如git),并且让多节点使用保存不同版本的文件
        3. IPFS网络运行着一条区块链,即用来存储互联网文件的哈希值表,每次有网络访问,即在链查询该内容(文件)的地址。
        4. 通过使用代币(FileCoin)的激励作用,让各节点有动力去存储数据。FileCoin是一个由加密货币驱动的存储网络。矿工通过为网络提供开放的硬盘空间获得FileCoin,而用户则用FileCoin来支付在去中心化网络中储存加密文件的费用。

     

    展开全文
  • ipfs同步 以原子方式同步IPFS上目录中的更改。 安装 安装需要转到: $ go get -u github.com/ipfn/ipfs-sync 用法 $ ipfs-sync 发布到IPNS $ ipfs key list $ ipfs key gen myrepo $ ipfs-sync --ipns-key=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,316
精华内容 4,126
关键字:

IPFS