IPFS直播最详细解读—FileCoin Demo演示

来源:知乎 作者:王闻宇 2018-08-08 13:56:01

Decentralized Web Summit (DWS) 2018 于2018年7月31到8月2日在旧金山举行。DWS由非盈利组织Internet Archive在2016年发起举办,致力于在全球打造一个能够保护个人隐私,数据安全和行为自治的去中心化网络,参会人员来自各行各业,畅所欲言,共同来定义去中心化网络。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

v2-4ccb9c92006288c1e39af9dcb305c9a3_1200x500.jpg0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

Protocol Labs作为主要赞助方之一,在前两天都有不少的主题宣讲,在最后一天还举办了Lab Day,和观众进行深度互动。当然比较瞩目的还是基于IPFS的FileCoin,作为2017年第二大的私募项目(最大的是BM牵头的EOS),在极短的时间内就募集了2.57亿美元。按照官方的说法,FileCoin承诺最迟将于2022年7月主网上线并开始挖矿,按这个时间进度看,这次FileCoin演示是属于很早期演示,其内容也是合理的。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

本文将主要从技术角度点评IPFS创始人Juan Benet在DWS的第二天,做的FileCoin第一次公开在线演示,详细信息可以参考视频(https://www.youtube.com/watch?v=kW6e1GCpqpE 6:54 – 7:02),由于时间限制Juan只用了8分钟做了快速演示,但基本了解到了FileCoin目前进展情况。虽然在第三天的Lab Day有更深入的演示,但限于视频没有公开,目前还没有了解的更详细的信息。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

一、演示主要分为两部分:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

FileCoin的场景下IPFS节点之间传输什么?0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

filnetsim (FileCoin网络模拟器)和go-filecoin (FileCoin命令行工具)演示0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

Log展示0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

网络可视化演示0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

区块链数据演示0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

go-filecoin一些核心命令演示0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

以下篇章将重点按照这些内容展开:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

二、IPFS节点0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

v2-b1921f8f29fa17101a9b234d8c2f42d1_hd.jpg0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

如上图所示,FileCoin的环境下,IPFS节点间不仅仅只是利用libp2p来传输共享文件,而又承载了维护区块链的重要能力,如Juan提到的:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

Peer连接别的有Blockchain的Peer0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

Peer传播block0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

Peer传播transactions0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

Peer之间传输需要保证安全可靠0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

点评:对于区块链来说,这些观点并没有新意,只不过对于传统的IPFS节点而言,并不需要负担用来维护区块链的存储和网络的额外成本,这些都是传统的IPFS节点升级到FileCoin环境下所要面临的问题,因为FileCoin主节点要求存储快,带宽大能够支撑得起足够多足够快的存储交易量,不过在经济激励的前提下,主力矿机或者矿池应该能够承担起主节点角色。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

三、filnetsim和go-filecoin0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

filnetsim(filecoin-network-sim)和go-filecoin都是filecoin-project的私有项目,非protocol-lab成员暂时无法查看。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

filnetsim是一个FileCoin的网络模拟器,可以在一台机器上模拟多个FileCoin的IPFS节点之间发生的询价、报价、交易、支付和挖矿等行为,同时基于这些行为,产生Logs,Network Viz,Chain Viz三大核心模拟功能。值得一提的是filnetsim与FileCoin的核心是完全解耦的,可视化的架构不受底层是DHT、Kaldemlia还是Bitswap实现的影响,当然可能呈现的方式会有些不一样。log文件是模拟器可视化的输入,所以原则上只要把log文件输入到可视化模块,就能看到网络的运行情况。以下几点主要是从filnetsim的帮助来分析这个工具所能提供的主要功能:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

目前只支持到单机运行,在未来会支持跨机器运行;0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

模拟6类Actions:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

SendPayment:Miner和Client之间互相转账0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

StorageAsk:Miner在市场上挂一个卖单0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

StorageBid:Client在市场上挂一个买单0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

StorageDeal:Miner和Client之间匹配买单和卖单0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

SendFiles:针对存储,从Client向Miner发送成交的File;针对下载,从Client到Miner(注意:针对Retrieval市场,Miner是可以从Client获取内容)0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

MineBlock:矿工出块并广播0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

缺省模拟最大节点数为15个,初始节点数为3;0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

缺省12秒模拟新加入一个节点,300毫秒发出一个Action,3秒自动出一块;0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

可设置是否自动发布StorageAsk,StorageBid,StorageDeal,MineBlock或者SendPayment这些Actions,缺省为“是“;0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

fork-branching:缺省为1,每次出块的Leaders有几个,如果有多个,要在多个之中选择一个出块,其他作为BFT容错,这在FileCoin的白皮书里指的是EC(Expected Consensus)共识模式;0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

fork-probability:每个Leaders出块的可能性,缺省为1,即为100%,如果fork-branching参数为1,那这个参数一定也为1;0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

go-filecoin应该是FileCoin的核心命令了,底层应该还是基于IPFS,之上包装了激励层,从命令帮助来看有和钱打交道的钱包地址,交易和支付,有和使用角色打交道的矿工和用户等一系列命令。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

filnetsim是通过调用go-filecoin来完成模拟的核心功能的,以下将以Juan展示的顺序,重点讲解这两个命令的深层含义:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

1、filnetsim模拟命令0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

1.jpg0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

如上图所示,Juan启动了filnetsim命令,用来模拟如下情况:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

开始3个节点,最多15个节点,中间应该有节点进进出出的模拟,这个量级的模拟,在P2P工程角度看,算是非常初级的工程模拟。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

每3s生成一个Block0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

每300ms提交五项Actions中的一项:Ask(要价),Bid(竞价),Deal(成交),Payment(支付),Mine(挖矿)0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

--fork-branching 和 --fork-probability 值都是10WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

矿工自动挖矿0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

filenetsim结果首先列出了它的核心三大功能及地址:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

Logs:http://127.0.0.1:7002/logs 所有logs会被下面的两个可视化的Web界面来消化并展示,所以它也必须是可以Web访问的0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

Network Viz:http://127.0.0.1:7002/viz-circle 展示整个模拟网络运行情况,稍后会详细说明0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

Chain Viz:http://127.0.0.1:7002/viz-blockchain 区块链浏览器,展示区块生成情况及内容,稍后会详细说明0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

接下来,filnetsim会调用go-filecoin来启动3个初始节点,一个客户,一个矿工,另外一个视频中没有显示。它们尽管身份不同,未来绑定的相关Action可能不同,但是从P2P网络的节点来看,其实是对等的,列出了5个属性:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

repo dir:数据所在的根目录0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

main wallet address:节点钱包地址0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

miner actor address:只有Miner有,应该是Miner的Peer Address0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

go-filecoin swarm connect:兼容以太swarm协议的链接地址0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

go-filecoin cmdapiaddr: API能够调用的本地端口地址0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

2、Network Viz模拟0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

2.jpg0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

如上图所示,http://127.0.0.1:7002/viz-circle 将展示整个模拟网络运行情况,总共分为5个部分:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

CHAIN:显示区块信息,每3秒出一块,每块包含块地址及出块矿工地址,每出一块,对应的ORDERBOOK就会显示块中所包含的BID和ASK以及DEALS里包含的DEAL的智能合约情况。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

ORDERBOOK:显示区块内的BID和ASK存储合约情况,ASK合约来自矿工,显示能够提供的存储情况,包括矿工地址,提供的存储单元,存储单元报价;BID合约来自用户,显示需要提供的存储情况,包括用户地址,需要的存储单元,存储单元报价。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

STORAGE MARKET DEPTH:直译为存储市场深度,能够动态呈现存储市场变化,横坐标显示存储单元价格,从0到26;纵坐标显示在某存储单元价格下的所有存储合约需要的总的存储单元数,从0到24,000;左侧颜色显示为BID合约,右侧颜色显示为ASK合约。以上图为例,显示ASK存储合约总体深度大于BID存储合约,因此表明矿工存储量供给大于用户存储量需求。价格撮合明显在横坐标中部才能得到满足,不能够匹配的节点只能根据市场行情重新调整自身合约的价格,以便能够被市场撮合成功。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

DEALS:显示已撮合成功的存储合约,包括ASK方账号,BID方账号,合约存储单元及单元成交价格。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

NETWORK:显示当前网络节点的动态流转信息,包含出块信息,合约信息,交易信息0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

3、Chain Viz模拟0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

3.jpg0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

如上图所示,http://127.0.0.1:7002/viz-blockchain 展示的是实时区块信息,也可以称为区块链浏览器,主要包括:区块高度,打包的消息数量,及打包的矿工账号生成情况及内容。点击某个区块后,如下图所示:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

4.jpg0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

以上图为例,显示了高度为24的区块的4条消息的细节,前2条为交易信息,显示From和To账号及交易值;后两条是调用智能合约的方法”addAsk” 及参数的消息和返回结果。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

4、go-filecoin详解0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

5.jpg0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

如上图所示,显示的go-filecoin的一级命令,每个命令都会有二级命令。下图所示的例子就是获取某节点orderbook里的所有deals的交易,如需连接到某个节点,只需指定--cmdapiaddr的参数即可:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

go-filecoin --cmdapiaddr =:61037 orderbook deals0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

6.jpg0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

下图是结果友好的json呈现:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

7.jpg0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

如果想获取该节点文件的内容,可以用如下命令:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

go-filecoin --cmdapiaddr =:61037 client cat QmQ…Mz0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

总结一下,go-filecoin主要有如下几类功能:0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

init:初始化,类似于ipfs的初始化,初始化本节点对应的本地存储目录0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

config:配置的设置和获取0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

daemon:启动后台服务进程0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

wallet,paych:钱包管理,支付通道操作,这是FileCoin所独有的,钱包账号转账管理0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

client,miner,mining:角色管理,根据Client或者Miner角色的不同,相对应的行为和属性也不同,对于Miner来说,还单独有mining一级命令管理0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

actor,address,bootstrap,dag,log,orderbook,message,show:与一些核心服务或数据结构的交互0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

chain:获取区块数据0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

id,ping:网络相关的信息0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

swarm:与以太的swarm协议互联0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

mpool:这是内存池mempool的展示。注意,不是矿池,有公众号文章说这是矿池,误导大家认知。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

version:版本号0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

四、总结0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

短短8分钟,Juan第一次在公众面前做了FileCoin的Demo,主要是一个网络模拟器filenetsim和go-fileicon的交互,但是FileCoin整体架构中最难的部分,也就是各种硬盘证明机制,这次演示并未提及,另外,之前在公开的白皮书8.2上悬赏解决的6大问题,也没有公布进步,估计还没有大的突破,还有这次演示只有几个节点的模拟,说明项目还是处于很早的时期。 不过,这次演示也算是给到FileCoin广大热心群众一个交代。从技术上初步判断,FileCoin的主网上线和启动挖矿的时间,比官方承诺的2022年7月,至少还是能提前1年的,对于广大IPFS爱好者来说,也是一件好事。0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

五、互动环节0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

能读到这里的一定是IPFS的忠实用户,大家觉得还要等多久?0WPBCfans | 区块链爱好者_区块链技术_区块链开发_区块链是什么

公众号关注 bcfanscom 或搜索“区块链粉丝”,参与大咖直播和糖果空投活动

BCfans公众号

  • 技术工坊|拆解公链案例,60分钟了解区块链架构设计(上海)
    技术工坊|拆解公链案例,60分钟了解区块链架构设计(上 08-08 16:32

    image 周末去参加了一个区块链技术闭门座谈,发现现在区块链技术团队的2个主要问题,首先是熟手不好招,仿佛又回到了“一万元培训赚......

  • 风格指南——Solidity中文文档(10)
    风格指南——Solidity中文文档(10) 08-08 16:32

    image 写在前面:HiBlock区块链社区成立了翻译小组,翻译区块链相关的技术文档及资料,本文为Solidity文档翻译的第十部分《风格指南》,...

  • Yul语言及对象说明——Solidity中文文档(9)
    Yul语言及对象说明——Solidity中文文档(9) 08-08 16:32

    image 写在前面:HiBlock区块链社区成立了翻译小组,翻译区块链相关的技术文档及资料,本文为Solidity文档翻译的第九部分《Yul语言及对象...

  • IPFS直播最详细解读—FileCoin Demo演示
    IPFS直播最详细解读—FileCoin Demo演示 08-08 13:56

    Decentralized Web Summit (DWS) 2018 于2018年7月31到8月2日在旧金山举行。DWS由非盈利组织Internet Archive在2016年发起举办,致力于在全球打造一个能够保护个人隐私,数据安全和行为自治的去中心...

  • 学习时的BUG——降级思维与上帝思维
    学习时的BUG——降级思维与上帝思维 08-08 13:09

    本文是基于学习李笑来老师专栏并进行复盘所得除本文外,还涉及了手绘视频你是否想要一个人生的作弊器定义学习能力:一个人的学习能力...

  • Fomo3D 源码解析, 部署指南
    Fomo3D 源码解析, 部署指南 08-08 13:08

    Fomo3D 合约源码分析 准备工作 环境准备 (用于调试合约) git, nodejs, Chrome ganache-cli, remix-ide 代码 及 IDE 安装好 Git 后, 下载源码 git clone https://git......

  • 区块链DAPP游戏系统开发
    区块链DAPP游戏系统开发 08-08 08:45

    DAPP区块链游戏系统开发【137*6067*4940 欧生 微/电】DAPP区块链系统、区块链系统、区块链游戏、区块链系统定制开发DApp基于区块链,主要出现在......

  • Bitun疯狂矿场app系统开发
    Bitun疯狂矿场app系统开发 08-07 12:26

    Bitun疯狂矿场区块链挖矿系统开发【找:欧生 137-6067-4940 微/电】。疯狂矿场详细规则如下:(1)综合矿场,支持BTC和ETH,最终统一以BTC结算分红...

  • A派生活公排系统开发
    A派生活公排系统开发 08-07 12:26

     A派公排系统开发找137-6067-4940 欧生 (软件开发公司,不是平台,粉丝勿扰)A派模式系统开发,A派全国系统源码开发,A派软件定制开发,A派理财...

  • ONE钱包模式app开发
    ONE钱包模式app开发 08-07 12:26

    ONE钱包系统开发ONE钱包虚拟币系统开发,找(137-6067-4940 欧先生 可微信)ONE钱包挖矿ONE钱包APP系统开发、ONE钱包挖矿系统ONE钱包挖矿开发、ONE钱...

  • 火牛视频平台定制开发
    火牛视频平台定制开发 08-07 12:26

    火牛视频挖矿app系统开发,找欧先生(137* 60674 *94O)火牛视频打赏挖矿APP系统软件开发、火牛视频挖矿分红理财系统定制开发、火牛视频系统开...

  • 区块链精进手册 | 005 | 公地和私地
    区块链精进手册 | 005 | 公地和私地 08-07 08:12

    1. 一种通证:EOSEOS,根据2018年6月28日公布的《火币区块链大数据周度数据洞察》,与比特币和以太坊一起,是热度最高的三种数字货币。......