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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

BCfans公众号

  • 比特币现金硬分叉,是技术革新还是权利之争?
    比特币现金硬分叉,是技术革新还是权利之争? 09-02 16:52

    在比特币诞生的短短不到十年的历史中,整个社区中爆发了多次的争论,不仅仅是核心开发者和矿工之间的矛盾,还包括开发者与开发...

  • LGGroup乐金钱包软件开发
    LGGroup乐金钱包软件开发 08-31 12:19

    LGGroup支付钱包系统软件开发欧生 137-6067-4940 (LGGroup支付钱包APP软件开发、LGGroup支付钱包APP系统开发、LGGroup支付钱包系统源码开发、LGGroup支...

  • 区块链跨链钱包开发,多币种钱包app开发
    区块链跨链钱包开发,多币种钱包app开发 08-31 12:19

    区块链跨链钱包开发,多币种钱包app开发  区块链钱包是最近非常火爆的一个方向,像新出的Plustoken、HOO等这些钱包app功能都是非常强大的,...

  • 基于华为云区块链服务快速部署和搭建链上应用
    基于华为云区块链服务快速部署和搭建链上应用 08-31 12:19

    华为云区块链服务的整体架构华为云区块链服务BCS是面向企业及开发者的高性能、高可用和高安全的区块链技术平台服务,可以帮助企业和开...

  • V神谈分片技术、等离子技术以及第二层解决方案
    V神谈分片技术、等离子技术以及第二层解决方案 08-31 12:19

    ​ V神,以太坊的创始人,今日在关于开发应该集中在第一层还是第二层这个问题上发表了自己的看法。他说两者之间的权衡这种将是这个......

  • 区块链交易平台开发 公开透明不可篡改
    区块链交易平台开发 公开透明不可篡改 08-30 21:32

    区块链给企业商家带来了不一样的惊喜,同时以区块链技术为基础诞生了许多的衍生系统.赢在移动区块链交易平台就是在这个基础上...

  • 区块链挖矿系统APP定制
    区块链挖矿系统APP定制 08-30 20:54

    区块链挖矿系统研发【咨询开发薇电180-2240-1717高坤】区块链挖矿系统软件定制 最近区块链行业非常热闹,币圈人,都是营销的集...

  • 区块链商城交易系统平台开发
    区块链商城交易系统平台开发 08-30 20:33

    区块链商城交易系统开发,区块链商城交易系统软件,区块链商城交易系统定制,区块链商城交易系统:138-2848-7919可微区块链给...

  • 以太坊开发者资源工具集合
    以太坊开发者资源工具集合 08-30 16:07

    image 1 开发语言、框架与工具 语言 Solidity - 官方推荐以太坊智能合约开发语言,也是目前最为主流的智能合约语言。 Bamboo - 是一种将智...

  • POWH3D区块链开发
    POWH3D区块链开发 08-30 15:15

    POWH3D区块链开发【185→94O6→0l81微电 曾生】​a,从日活的角度说,以太坊上现在dapp是啥?不是idex,也不是分叉以德,更不是以太猫,是一个...

  • 币圈资讯(8月30日)
    币圈资讯(8月30日) 08-30 14:00

    币圈区块链联盟99%币圈的人都关注了 2018.8.30 周四 区块链资讯 1.广州开发区金融局近日联合广州开发区经济和信息化局下发通知,...

  • LGGroup钱包系统开发
    LGGroup钱包系统开发 08-30 12:35

    LGGroup支付钱包系统软件开发欧生 137-6067-4940 (LGGroup支付钱包APP软件开发、LGGroup支付钱包APP系统开发、LGGroup支付钱包系统源码开发、LGGroup支...