IPFS 探索

比特币当前是用于存金融交易数据,有leveldb 存关键小的交易数据。那么我们的文件,譬如一个网站里面的static file 怎么办?

IPFS(InterPlanetary File System)是一个点对点的分布式超媒体分发协议,它整合了过去几年最好的分布式系统思路,为所有人提供全球统一的可寻址空间,包括Git、自证明文件系统SFS、BitTorrent和DHT,同时也被认为是最有可能取代HTTP的新一代互联网协议。

先来看看例子:

https://ipfs.io/ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

启动:

ifs daemon
![daemon](http://wade-blog.oss-cn-shenzhen.aliyuncs.com/770ee8ad-4c6e-4f48-a0a5-9195d2f425a6.png)

http://localhost:5001/webui

peers

耗费网络的ipfs 节点

基本操作:

空间问题

GC

GC打出的log ,这里面包含其他的节点的别人的数据,我还是能在本地看到这些数据,



递归形:除了直接的内容访问外,还有一种特殊的,recursive

担心硬盘爆:

  • config 路径: ~/.ipfs/config
  • Datastore.StorageMax 默认10GB 限制max storage
  • StorageGCWatermark:90 90%存储空间使用了的时候触发GC

因为存储空间有限,不是每个人都自愿无偿的贡献存储空间的,所以数据不保证永久存储,想保证永久,要pin serivce

https://docs.ipfs.io/guides/concepts/pinning/) ,以避免重要的存储数据被触发delete 掉。

进一步了解关于pin机制: https://discuss.ipfs.io/t/trying-to-better-understand-the-pinning-concept/754/2

总结:

  • pin的内容会告诉自己的节点不要进入GC 删除他
  • 对pin的操作控制不同步到其他节点,其他人的节点爱咋地咋地
  • 自己的节点add的,会自动pin (Objects added through ipfs add are pinned recursively by default.)
  • 如果都pin了,应该是根据访问量、陈旧度来决定GC

ipfs vs BitTorrent 几大区别点

suck part:

--2018-10-22 12:30:01-- (try: 2) https://ipfs.io/ipfs/QmYx4BnhnLXeMWF5mKu16fJgUBiVP7ECXh7qcsUZnXiRxc

Connecting to ipfs.io (ipfs.io)|209.94.78.81|:443... connected.

HTTP request sent, awaiting response...

但 official资源比较快,如:

https://ipfs.io/ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

*

猜想:可能需要与是否永久存储的问题相关

  • 你关闭了节点daemon 后一段时间(1天以上),再访问自己的资源,发现不能访问;启动回daemon,1分钟内又可以访问了;再紧接着断开daemon ,disable local cache of chrome ,也还是能访问;后续又停了后,又不能访问了。 — 应该是ipfs.io 帮助cache 了,但没多少节点真正原意pin 并记录,可能要不在search,要不就找不到记录的节点。— 这个部分要深入看代码才知道(可能相关访问频率、访问时间的cache 机制在控制)。
  • 相对于传统cdn无权限访问控制

其他

注意通过浏览器获取回来还是经过了ipfs.io 的服务器,背后应该是经过gateway ,然后通过ipfs node 获取回来

more need to dive into:

  • public key usage
  • 对于可变内容, 参考:https://docs.ipfs.io/guides/concepts/ipns/
  • IPFS 未来要支持Namecoin ,那么代表传统DNS、ICANN 在网络中的工作角色会被干掉/替换。
  • FileCoin 对比
    • Storj
    • Fcoin
    • Ulord
    • Burst

FAQ :

是否add file 就永久存储:

  • content storage not forever , then who decide long persistence --> Filecoin http://www.infoq.com/cn/articles/how-ipfs-is-disrupting-the-web
  • IPFS doesn't solve the persistence problem for you, the only way currently to ensure that your files will exist is to pin them on an IPFS node, which means you need pin rights on that node. Run your own node, there are a few services out there that you can pay to pin content, find a node that will volunteer to pin your content, or wait for Filecoin which solves the problem by allowing you to pay Filecoin for persistence.

激励机制:

  • 符合存储证明的获得token奖励

    • 反欺诈机制(防止只存一段时间就删):

      • 隔断时间检查文件是否存在

        • 太频繁---导致消耗资源
        • 太少频率--导致欺诈概率上升

Ref:

http://liyuechun.org/2017/09/18/ipfs-blockchain/

IPFS 探索的更多相关文章

  1. IPFS: Merkle DAG数据结构

    今天带大家来深入探索一下IPFS的核心数据结构Merkle DAG 什么是 Merkle DAG? Merkle DAG是IPFS系统的核心概念之一,当然Merkle DAG并不是IPFS团队发明的, ...

  2. IPFS扫盲

    第二届深圳区块链技术与应用大会暨展览会,深圳区块链存储与IPFS技术应用大会暨展览会于2019年4月9日在深圳会展中心6号馆举行.那么这个IPFS是什么?和区块链有什么关系?有什么用?又怎么用呢?接下 ...

  3. IPFS - 可快速索引的版本化的点对点文件系统(草稿3)

    摘要 星际文件系统是一种点对点的分布式文件系统, 旨在连接所有有相同的文件系统的计算机设备.在某些方面, IPFS类似于web, 但web 是中心化的,而IPFS是一个单一的Bittorrent 群集 ...

  4. IPFS学习-IPNS

    星际名称系统(IPNS)是一个创建个更新可变的链接到IPFS内容的系统,由于对象在IPFS中是内容寻址的,他们的内容变化将导致地址随之变化.对于多变的事物是有用的.但是很难获取某些内容的最新版本. 在 ...

  5. IPFS学习-内容标识符(CIDs)

    内容标识符(CIDs) 内容标识符也称为CID,是用于指向IPFS中材料的标签. 它不会指示内容的存储位置,但会根据内容本身形成一种地址. CID简短,无论其基础内容的大小如何. CID基于内容的加密 ...

  6. IPFS初窥

    虽然区块链有很多令人兴奋的特性,但是也有其固有的缺点.比如,文件或者长度较长的文本信息就不适合存储在链上.那么如何解决这个缺点呢?一个解决方案就是IPFS(Interplanetary File Sy ...

  7. 【探索】机器指令翻译成 JavaScript

    前言 前些时候研究脚本混淆时,打算先学一些「程序流程」相关的概念.为了不因太枯燥而放弃,决定想一个有趣的案例,可以边探索边学. 于是想了一个话题:尝试将机器指令 1:1 翻译 成 JavaScript ...

  8. 【探索】利用 canvas 实现数据压缩

    前言 HTTP 支持 GZip 压缩,可节省不少传输资源.但遗憾的是,只有下载才有,上传并不支持.如果上传也能压缩,那就完美了.特别适合大量文本提交的场合,比如博客园,就是很好的例子. 虽然标准不支持 ...

  9. 探索C#之6.0语法糖剖析

    阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ...

随机推荐

  1. 运维架构之httpd

    Web Service 传输层:提供进程地址 Port number tcp:传输控制协议,面向连接,通信前需建立虚拟链路,结束后拆除:0-65535 udp:用户数据报协议,无连接:0-65535 ...

  2. C# 索引和长度必须引用该字符串内的位置 LENGTH

    今天遇到了 索引和长度必须引用该字符串内的位置 的问题. 原因是实用 Substring 对字符串进行了前五位的截取,但是忽略了字符串本身不足五位的情况. 如果不足五位,直接将整个字符串赋值过来,添加 ...

  3. QSSP软件一些参数的设置(远震波形合成)

    1.time window, sampling interval 这里需要注意的是两者的和必须是2的n次方,可以写成2047 1; 2046 2,或2047.75 0.25,2047.9 0.1等等 ...

  4. Linux基础命令--date

    date命令格式用法 yao@yao:~/shells/tmp$ date +%Y%m%d20190405 yao@yao:~/shells/tmp$ date +%Y%m%d%H%M%S201904 ...

  5. [ 转 ] RESTful

    一.什么是RESTful 定义: REST全程是Representational State Transfer,表述性状态转移.它首次出现在2000年Roy Fielding的博士论文中,Roy Fi ...

  6. vue中使用ajax

    var vue = new Vue({ el:"#vueid", data:{ selectById : "", }, methods:{ yourMethod ...

  7. java多态——基础

    多态 定义: 一个接口,多种实现,就是多种状态     价值: 特点:多态存在的特点,就是必须要有继承.覆盖.父类变量调用子类对象 场景: 首先检查父类中是否有该方法,如果没有,则编译错误:如果有,则 ...

  8. ubuntu下,python2.7安装mysqlldb驱动方法

    安装依赖: sudo apt-get install libmysqlclient-dev libmysqld-dev python-dev python-setuptools 安装MySQLdb p ...

  9. 我与java的故事

    前奏 2012年开始接触java,当时还是大二因为博客园的原因我选择了java这门语言进行深入的学习.一开始看的是<动力节点>的教学视频,请原谅我已经忘记那个讲师叫什么名字.但是的项目叫E ...

  10. 数据t转换

    #!/usr/bin/perl use strict; use warnings;    open my $fh,"a.out"; open OUT,">a_t.o ...