精华内容
下载资源
问答
  • 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.zip搭建ipfs.zip搭建ipfs.zip
  • 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 ...
  • IPFS使用教程 | java对接IPFS的SDK

    万次阅读 2021-06-01 13:48:41
    首先,引入IPFS的包 maven方式 <repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories> <...

    首先,引入IPFS的包

    maven方式

    <repositories>
    	<repository>
    		<id>jitpack.io</id>
    		<url>https://jitpack.io</url>
    	</repository>
    </repositories>
    <dependency>
       <groupId>com.github.ipfs</groupId>
        <artifactId>java-ipfs-api</artifactId>
        <version>1.3.3</version>
    </dependency>
    

    如果上述1.3.3版本的无法下载依赖包,可尝试1.2.2版本。
    这个时候如果api包导入成功,但是使用的时候提示相关的依赖无法import,可以手动加入下面的依赖(都是IPFS的内部依赖包)

    <dependency>
        <groupId>com.github.multiformats</groupId>
        <artifactId>java-multihash</artifactId>
        <version>v1.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.github.multiformats</groupId>
        <artifactId>java-multibase</artifactId>
        <version>v1.1.0</version>
    </dependency>
    <dependency>
        <groupId>com.github.multiformats</groupId>
        <artifactId>java-multiaddr</artifactId>
        <version>v1.4.1</version>
    </dependency>
    <dependency>
        <groupId>com.github.ipld</groupId>
        <artifactId>java-cid</artifactId>
        <version>v1.3.1</version>
    </dependency>
    

    jar包方式

    如果maven一直导入失败的话,可以尝试使用jar包的方式进行依赖。

    下载链接:
    java-ipfs-api.jar.
    java-multiaddr.jar.
    java-multibase.jar.
    java-multihash.jar.
    java-cid.jar.

    接入代码实现

    import io.ipfs.api.IPFS;
    import io.ipfs.api.MerkleNode;
    import io.ipfs.api.NamedStreamable;
    import io.ipfs.multihash.Multihash;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    /**
     * @Author: luowenxing
     * @Date: 2021/5/31 21:30
     */
    public class IPFSUtis {
        /**
         * ipfs的服务器地址和端口,替换成自己的ip,port
         */
        private static IPFS IPFS = new IPFS("/ip4/ip/tcp/port");
    
        public static String upload(String fileName) throws IOException {
            NamedStreamable.FileWrapper file = new NamedStreamable.FileWrapper(new File(fileName));
            MerkleNode addResult = IPFS.add(file).get(0);
            return addResult.hash.toString();
        }
    
        public static String upload(byte[] data) throws IOException {
            NamedStreamable.ByteArrayWrapper file = new NamedStreamable.ByteArrayWrapper(data);
            MerkleNode addResult = IPFS.add(file).get(0);
            return addResult.hash.toString();
        }
    
        public static byte[] download(String hash) {
            byte[] data = null;
            try {
                data = IPFS.cat(Multihash.fromBase58(hash));
            } catch (IOException e) {
                e.printStackTrace();
            }
            return data;
        }
    
        public static void download(String hash, String destFile) {
            byte[] data = null;
            try {
                data = IPFS.cat(Multihash.fromBase58(hash));
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (data != null && data.length > 0) {
                File file = new File(destFile);
                if (file.exists()) {
                    file.delete();
                }
                FileOutputStream fos = null;
                try {
                    fos = new FileOutputStream(file);
                    fos.write(data);
                    fos.flush();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
    
                }
            }
        }
    }
    
    展开全文
  • ipfs:Erlang IPFS客户端API
  • ipfs-gui是 IPFS实现的GUI包装。 ipfs-gui使用Electron和Angular 5。 产品特点 ipfs-gui当前缺乏很多功能。 随时贡献! :winking_face: 将文件上传到IPFS并获取其哈希值 跨平台兼容性 如果您想在ipfs-gui中查看特定...
  • ipfs-dart:用于Flutter应用程序的IPFS Dart原型,用于向IPFS发送数据和从IPFS接收数据
  • IPFS安装包

    2018-10-23 14:37:47
    linux版本ipfs安装包 ipfs version 0.4.17,仅供学习
  • docker-ipfs-cluster:具有IPFS docker-compose映像的IPFS群集
  • IPFS实验室 IPFS(星际文件系统)实验室
  • 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 ...
  • 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
收藏数 12,486
精华内容 4,994
关键字:

IPFS