转让域名

This domain for sale!

Email:filapp@protonmail.com

Twitter:

https://twitter.com/RalapXStartUp

Telegram:

https://t.me/bigdog403
  • X

    Lotus是什么

    构建(编译)和安装

    启动节点Daemon

    获取测试代币,创建矿工

    初始化矿工,开始挖矿

    数据存储

    搜索与检索

    总结

    Lotus是什么

    Lotus 是 Filecoin 分布式存储网络的实验性实现,也就是说 Lotus 是 Filecoin 规范的另一个实现,跟 go-filecoin 项目类似, 它也实现了钱包、矿工、存储证明、时空证明(PoST)、数据存储、检索等一系列的功能, 只不过 Lotus 是 Filecoin 规范的简单实现,而 go-filecoin 是一个更完整的实现。 那什么是 Filecoin 规范呢?简单的说就是白皮书里面提到的构建 DSN 网络的 Filecoin 协议,协议里面写明了如何实现一个全球性的分布式存储网络,并把全球的闲置存储空间利用起来。

    构建(编译)和安装

    1、安装 Go 1.13 以上的版本 2、安装依赖软件库 3、克隆项目到本地,并切换到项目根目录 4、编译源代码,并安装到本地 因需要从 Github 下载很多依赖组件, 导致整个过程时间有点长, 两种解决方案,第一种方案是上梯子,这种方式简单粗暴,有风险,不推荐;第二种方案是把编译环境搭建在现有的服务器上,编译完成之后把编译好的可执行文件拷贝到本地就可以了。 5、节点安装和配置 如果是初次运行 Lotus 的话,就不必进行任何初始化和配置,因为当前 Lotus 构建版本默认使用 build 目录中的创世区块和引导文件自动加入 Lotus 开发网络。 但是如果你之前有运行过 Lotus, 请执行下面的清理脚本:

    启动节点Daemon

    1、可以新打开一个终端窗口,检查是否已连接到网络: 2、接下来需要等待节点同步数据,可以通过以下方式跟踪同步状态: 会看到类似下图的返回信息,其中 height: 是当前同步的区块高度。如果同步完成了这个值会编程 0, 也可以去 https://lotus-metrics.kittyhawk.wtf/chain 查看当前开发网络最新区块高度和其他网络指标。 让人惊喜的是,笔者发现开发网络的统计最新区块出块时间指标显示的居然是中文,说明 Filecoin 协议实验室也意识到了大部分矿工来自中国,给协议实验室点个赞。

    获取测试代币,创建矿工

    获取测试代币的地址为 https://lotus-faucet.kittyhawk.wtf/ Lotus 获取开发网代币有两种方式,一种是 [Send Funds] 这个接口每次请求会给你的钱包地址充值 0.0000000005 个测试代币,并且为了防止薅羊毛,接口请求的次数是有限制的。每个 IP 每 5 分钟发出一次请求,初始并发次数为5,最大并发数为 20。 下面我们来看下当前网络创建一个矿工需要抵押多少代币:

    lotus state pledge-collateral
    21.719350748900198182
    21.7 个!!!也就是说,如果靠薅羊毛,你就是薅到明年,也不够你创建一个矿工。

    所以 Lotus 还提供了另外一种申请测试代币的方式:[Create Miner],就是直接申请一笔足够创建矿工的资金,同时帮你创建一个矿工。这个接口一个地址只能调用一次,每次调用费时大概 5 分钟,一般我们都是直接用这个接口去申请代币。

    初始化矿工,开始挖矿

    创建矿工成功之后,Faucet 页面会返回类似下面的指令。

    lotus-storage-miner init --actor=t0394 -owner=t3qtzwoevzlzzfbnovoj3gf3l62rlhx3elub5otw7oyalmorhgb6o3dfjcoaub5yzp7zoa53ynffgra7he5aja
    这条命令把矿工相应的信息提交到区块链,如果上链成功的话(这个过程将花费 30-60s),此命令应成功返回。

    下图是执行过程,主要是获取用于生成 PoSts 的参数到本地(/var/tmp/filecoin-proof-parameters)。 运行矿工,开始挖矿:

    lotus-storage-miner run
    你可以通过下面的方式查看矿工信息:

    ~$ lotus-storage-miner info
    Miner: t0394 # 矿工 ID
    Power: 0 / 888370369416 (0.00%) # 当前矿工的存储算力
    Sealed Sectors: 0 # 已经密封的扇区
    Sealing Sectors: 0 # 等待密封的扇区
    Pending Sectors: 0 # 正在追加的扇区
    Failed Sectors: 0 # 密封失败的扇区

    存储数据

    自动存储随机数据

    Lotus 允许我们密封一些随机数据以开始生成PoSts,这点如果要在 go-filecoin 网络实现的话,需要自己写额外的刷单脚本。

    ~$ lotus-storage-miner store-garbage
    1
    返回的是订单的序号,在单一节点是递增的(1,2,3…)。

    现在你可以使用矿工 ID 检查矿工存储算力和扇区使用情况: 查看全网算力

    $ lotus-storage-miner state power

    查看指定矿工的算力

    $ lotus-storage-miner state power <miner>

    查看指定矿工的扇区密封状态

    $ lotus-storage-miner state sectors <miner>
    存储指定的数据

    导入数据到节点 创建一个简单文件

    $ echo "Hi my name is $USER" > hello.txt

    导入数据

    $ lotus client import ./hello.txt
    bafkreifgxbfutlcrbfnwpk5gx6o5of4mpleqvbkt5thphvbnsg6mnasp3q

    查看当前节点的所有 <Data CID>

    $ lotus client local
    bafkreifgxbfutlcrbfnwpk5gx6o5of4mpleqvbkt5thphvbnsg6mnasp3q hello.txt 23 ok查看矿工订单价格
    $ lotus client query-ask t0394
    Ask: t0394
    Price per Byte: 3
    发起一笔存储交易

    $ lotus client deal bafkreifgxbfutlcrbfnwpk5gx6o5of4mpleqvbkt5thphvbnsg6mnasp3q t0394 3 10
    bafyreibcvxlzzfqgwic3tyuayndgctzszttnnyemlbn4e7us6iimcd3mvi
    Bash

    这里笔者发现一个问题,就是这里提交订单成功了,但是我在运行矿工的终端却发现了报错信息:

    2019-10-20T06:52:17.187+0800 INFO deals deals/handler.go:165 Deal bafyreibcvxlzzfqgwic3tyuayndgctzszttnnyemlbn4e7us6iimcd3mvi updated state to 2
    2019-10-20T06:52:17.196+0800 INFO deals deals/handler_states.go:155 waiting for channel message to appear on chain
    2019-10-20T06:52:17.217+0800 INFO deals deals/handler.go:165 Deal bafyreibcvxlzzfqgwic3tyuayndgctzszttnnyemlbn4e7us6iimcd3mvi updated state to 5
    2019-10-20T06:52:17.217+0800 ERROR deals deals/handler.go:167 deal bafyreibcvxlzzfqgwic3tyuayndgctzszttnnyemlbn4e7us6iimcd3mvi failed: minimum price: 690
    github.com/filecoin-project/lotus/chain/deals.(*Handler).onUpdated
    /var/www/go/src/lotus/chain/deals/handler.go:167
    github.com/filecoin-project/lotus/chain/deals.(*Handler).Run.func1
    /var/www/go/src/lotus/chain/deals/handler.go:135
    2019-10-20T06:52:17.219+0800 ERROR deals deals/handler_utils.go:30 deal bafyreibcvxlzzfqgwic3tyuayndgctzszttnnyemlbn4e7us6iimcd3mvi failed: minimum price: 690
    github.com/filecoin-project/lotus/chain/deals.(*Handler).failDeal
    /var/www/go/src/lotus/chain/deals/handler_utils.go:30
    github.com/filecoin-project/lotus/chain/deals.(*Handler).onUpdated
    /var/www/go/src/lotus/chain/deals/handler.go:168
    github.com/filecoin-project/lotus/chain/deals.(*Handler).Run.func1
    /var/www/go/src/lotus/chain/deals/handler.go:135
    Bash

    报错内容大概是交易的 Price 值太小了,最小为 690. 但是问题是我上面查询出来的明明是 3 ,既然有最小值怎么订单又是发送成功的。 关于这个问题我们工程师在 Lotus 的 GitHub 项目上创建了一个 issue,对这个问题有兴趣的同学可以跟踪一下,地址为: https://github.com/filecoin-project/lotus/issues/426 如果想知道数据数据密封的进度,再次执行 lotus-storage-miner info :

    ~$ lotus-storage-miner info
    Miner: t0394
    Power: 889192448 / 943248642952 (0.00%)
    Sealed Sectors: 63
    Sealing Sectors: 291
    Pending Sectors: 0
    Failed Sectors: 0
    下面我们简单分析一下 Lotus 挖矿的整个过程,由于 lotus-storage-miner run 打印了详细的日志信息,因此我们通过分析日志就可以清晰的知道整个挖矿的流程,具体做了哪些事情。

    2019-10-20T07:06:05.288+0800 INFO storageminer storage/miner.go:122 committing sector
    2019-10-20T07:08:22.128+0800 WARN storageminer storage/post.go:35 PoSts already running 8468
    2019-10-20T07:12:50.288+0800 INFO storageminer storage/miner.go:122 committing sector
    2019-10-20T07:16:03.681+0800 WARN storageminer storage/post.go:35 PoSts already running 8468
    2019-10-20T07:19:45.438+0800 INFO storageminer storage/miner.go:122 committing sector
    2019-10-20T07:21:49.554+0800 WARN storageminer storage/post.go:35 PoSts already running 8468
    2019-10-20T07:21:49.556+0800 INFO storageminer storage/post.go:121 running PoSt {"delayed-by": 0, "chain-random": "hRnfQ1MxjBRgWC99bvtufOEiMxt50/VB5jGOnartsNBVRqlTyGWWdmYcOYgkN8ahCDAh1EtjvvQhJiHn1tawX2JSVIUtc0LOJlSCm6C4ds5IhsCs5OvQfNO6XnBNERaI", "ppe": 8468, "height": 8448}
    2019-10-20T07:21:49.558+0800 WARN storageminer storage/post.go:35 PoSts already running 8468
    2019-10-20T07:24:16.683+0800 INFO storageminer storage/post.go:133 submitting PoSt {"pLen": 192, "elapsed": 147.127304159}
    2019-10-20T07:24:16.683+0800 INFO storageminer storage/post.go:155 mpush
    2019-10-20T07:24:16.704+0800 INFO storageminer storage/post.go:162 Waiting for post bafy2bzaced7iklxtorijackxgnnv7kwvgocz473sgcostj2i4ocretlm2z6f6 to appear on chain
    ...
    Bash

    1、矿工接收到客户端发送过来的数据包之后立即进行封包(sealing) 操作,完成封包之后进行 committing sector (提交打包好的 sector)

    2、运行时空证明(running PoSts)

    3请求将 PoSts 上链(Waiting for post bafxxx to appear on chain)

    4、上链成功,返回上链区块高度("height": 8448)

    下面截图可以让你看到一些更详细的信息 而且从日志中我们可以看出,我用的笔记本的封包速度大概是4分钟一个。 这个速度一般,而且 8 核的 CPU 资源几乎全被 Lotus 占满了。

    搜索与检索

    如果已将数据与矿工存储在网络中,则可以按CID搜索它: 通过 CID 搜索数据

    $ lotus client find <Data CID>
    LOCAL
    RETRIEVAL <miner>@<miner peerId>-<deal funds>-<size>
    从矿工那里检索数据:

    $ lotus client retrieve <Data CID> <outfile>

    比如检索我们刚刚存储的数据

    Lotus client retrieve bafkreifgxbfutlcrbfnwpk5gx6o5of4mpleqvbkt5thphvbnsg6mnasp3q hello.txt
    上面的指令将启动检索交易并将数据写入hello.txt。(此过程可能需要一些时间。)

    总结

    总体来说, Lotus 的整体挖矿体验比 go-filecoin 要好一个档次,可能是因为它是 轻量级 实现,整个流程体验下来不会卡壳。所以 Lotus 作为 Filecoin 的备用网络,让我们对 Filecoin 网络的健壮性又多了一些信心。 1、Lotus 的 API 完善程度很高,几乎不用通过统计页面,直接通过命令行工具就可以获取想要知道的整个网络信息。 2、Lotus 实现了多种扇区大小,因此具有许多不同存储配置的矿工都可以在网络上进行挖矿。之前我们用低配置的笔记本电脑在测试 go-filecoin 的时候每 30 分钟才能完成一个 sector,现在Lotus版本只需要 4 分钟。因为 Lotus 扇区小一些,也正因为如此,你能在很短时间内体验一次整个挖矿流程。 3、Lotus 的存储挖矿功能是作为一个单独的模块(lotus-storage-miner)实现的,因此高级矿工可以根据自己的特定硬件配置优化其挖矿过程(我们会针对此问题专门写一篇如何优化的文章,敬请关注)。 4、Lotus 还提供了Pond UI 作为CLI的替代,这对于那些不熟悉命令行操作的同学是非常友好的,直接通过图形界面完成上述操作。(针对此问题,我们后期也会专门写一篇如何使用 Pond 的教程,敬请关注)。

    阅读更多
  • X

    Lotus 的测试网的源代码编译只有三个文件 lotus, lotus-storage-miner, lotus-seal-worker。 其中 lotus 和 lotus-storage-miner 分别是区块链节点和矿工节点的启动程序, lotus-seal-worker 是数据密封节点的启动程序。在没有高配机器的情况下,我们可以使用 一台 Miner 节点 + N 台 Worker 节点来实现自己 上排行榜 的需求。

    闲话休说,下面我们就看看具体怎么搭建这个集群。

    配置方案
    配置方案:Master Miner 节点 x 1 + seal-worker 节点 x N
    Master Miner 节点:使用一台带 GPU 的大容量机器作为 miner 主节点,这机器主要做的工作是 add pieces 和提交 PoSt proving

    Seal Worker 节点: 多核 CPU 配上高速企业硬盘,以便可以增加 sealing 速度, 如果 CPU 的能力不强,可以使用 GPU 代替,效果更好。

    配置步骤
    在 master 矿工初始化之后,也就是在下面的脚本运行之后
    lotus-storage-miner init --actor=t01849 --owner=t3v3gwdujm35f6vwrv6x7utimbhu7s64hvto6m327xscsoyraj5dyzxom2bthormfd7e3imqnpabp7hp55tlfq
    (1) 修改矿工配置文档 vim .lotusstorage/config.toml

    [API]
    ListenAddress = "/ip4/{IP}/tcp/2345/http"
    Timeout = "30s"
    这里的 {IP} 是当前 master 节点的 ip 地址,默认是 127.0.0.1 这里你需要把它改成局域网或者公网 IP(如果你有静态 ip 的话), 如果你搞不清你是否需要外网访问,你就配置成 0.0.0.0

    如果所有 worker 节点都在一个网络的话,建议使用内网 IP,如果需要大量外网机器同时挖,则需要填写公网 IP

    (2) 启动 master 矿工

    BELLMAN_CUSTOM_GPU="GeForce RTX 2070 SUPER:2560" lotus-storage-miner run
    前面的变量是你 GPU 的配置信息,具体配置详情, 请参考: https://docs.lotu.sh/en+hardware-mining

    (3) 拷贝 master 节点的 /var/tmp/filecoin-proof-parameters, .lotusstorage/api 和 .lotusstorage/token 到 worker 节点, 同时拷贝 lotus-seal-worker 到 worker 节点

    (4) 运行 worker 节点

    nohup ./lotus-seal-worker run > miner.log &
    如果你的 worker 有 GPU 的话,则你可以启用 GPU 做复制证明

    BELLMAN_CUSTOM_GPU="GeForce RTX 2070 SUPER:2560" nohup ./lotus-seal-worker run > miner.log &
    启动成功会看到类似的信息

    INFO main lotus-seal-worker/sub.go:69 Waiting for new task
    这时你在 master 节点运行 lotus-storage-miner info 应该可以看到 remote worker

    (5) 接下来按照步骤 (4) 的方法启动 N 个 Worker 节点

    到此,整个集群就开始运行了,等你的 Miner 节点准备好密封数据(PreCommit),Worker 就会开始拉取数据计算了,计算完之后会 Push 回 Miner 节点。

    这里需要注意的是,Worker 计算完之后会 Push 11GB 数据回去,也就是说复制证明会计算 10 次,Master Miner 节点需要准备的磁盘空间与实际存储数据的 比值是 1:11,所以你得准备足够多的磁盘空间,以免磁盘空间不足导致矿工程序退出。不过这些 cache 数据再你完成 Proving 之后会删除大部分,只保留 2.1GB。

    阅读更多
  • X

    当前版本
    开发网 go--filecoin--0.5.7(alphanet)

    开发网运行状况
    0.5 版本的 user-devnet 自上线以来跌宕起伏,十分“精彩”

    0.5.6版本上线以来,连续遭受与重量计算方式有关的攻击多达10余次,采用的重量攻击方式主要有两种:

    #3502: long-range fork attack - 长程分叉攻击:此攻击手法利用0.5.6及以前版本中重量计算方式的缺陷,通过分叉增加个人分叉链的重量进行攻击,此攻击手法在重量算法改进后将不再有效;

    #3523: 同一高度重复出块攻击:此攻击手法利用共识惩罚机制的不完善进行攻击。在惩罚机制中,如果一个矿工在同一高度出多余一个区块,将被判处死刑,即没收全部抵押,取消算力,终止此矿工的永久挖矿资格。在0.5的当前版本中,此惩罚机制还未实现;

    #3502的攻击具有重量上限:总重量不能突破高度的 110 倍,但利用 #3523 的缺陷进行攻击完全没有上限,几乎可以无限增加重量;

    在0.5.6版本运行不正常的情况,Filecoin团队推出0.5.7版本,但仅仅改变了重量算法(针对#3502),未对#3523采取任何应对措施

    0.5.7版本于10月10日正式推出,版本推出的主要目的是(1)修复#3502,(2)测试升级

    0.5.7版本推出之后,攻击再现,目前网络基本上停滞,主要原因是因为长程攻击和多区块攻击出击,导致整个网络需要大量的时间进行同步,而且采用多区块攻击者区块高度远低于长程攻击攻击者。

    网络目前显示最高区块高度为 43260;

    但,最重区块高度为 23276(同一高度重复出块多达500个);

    尽管如此,从43000以上高度的区块来看,新的重量算法已经生效;并且,升级也取得成功。同时可以肯定的是,网络停滞与新代码没有关系。

    当前需要解决的主要问题:

    对#3523的攻击进行惩罚,代码要尽快出台;

    必须要有手段抑制长程攻击(新的重量算法下也许不再需要,但是0.5.7的版本中包含新老算法);

    ProvingPeriod 更新的问题;

    Filecoin开发日志
    网络升级以及alphanet 权重函数 (#3536)

    (本周重点Issue)过去一周,多个矿工利用 issue#3523 和issue#3502 对网络进行长程攻击。
    所谓长程攻击,就是采用私自挖矿的方式,在私有网络内把网络的高度回退到较早的一个高度,重新挖矿。与此同时,在每一个高度利用前述漏洞增加网络的重量,当私网内网络的重量超越主网后,将私网中节点加入主网,从而用私网的链数据替换主网的链数据,实现长程攻击。这种攻击方式在比特币的PoW时代已经存在,只是比特币采用最长链规则,而filecoin采用最重链规则。

    为了应对这种攻击,官方迅速更新网络计算重量的算法。由于当前网络实现了升级功能,官方希望通过升级来实施权重函数的替换,因此这个issue不仅实现了新的权重函数(重构权重函数从根状态中读取数据,升级父块的权重校验方法),还包含了对网络升级的支持。另外,这个issue还引入了alphanet中临时的仲裁高度43000,并由 IsHeavier 函数来判断升级前后的处理。

    由于 issue#3523 尚未修复,攻击者很容易对网络实施长程攻击。尽管当前的开发网络包含了这个更新,但在网络升级的过程中,又遭到了一次更严重的攻击。所以,目前网络处于崩溃状态:部分节点处于升级后的43000+高度,部分节点处于升级前的23000+的高度。

    微信进群

    http://www.feirke.com/blog/65affd61671

    阅读更多
  • X

    本期周报我们一起回顾IPFS在2019年迄今为止所取得的成就。
    从重新组合我们的工作组和发布新版本这样的里程碑,到加入我们的许多了不起的(和新的)贡献者,以及今年剩余时间将会发生的事情,我们希望您能喜欢这个季度回顾。

    感谢成为我们社区一员的每一个伙伴,没有您,我们无法实现IPFS。

    正 文

    里程碑

    已上“星际飞船”的IPFS项目Q3优先级和工作组
    在7月份,我们重新组合了项目工作组,包括Team Bifrost、包管理器等等!

    大量的项目发布

    js-ipfs 0.37.0和0.38.0发布
    0.37.0版本提供了一个新的构造函数、更好的DNSLink支持和委托路由,0.38.0版本增加了对垃圾收集、Gossipsub和IPNS对“ipfs解析”的支持!

    js-libp2p 0.26.0发布
    8月初,js-libp2p也得到了Gossipsub的支持,并有望实现libp2p API。

    go-ipfs 0.4.22发布
    go-ipfs版本0.4.19、0.4.20和go-ipfs 0.4.21发布了非常多的关键回归,这些回归都是在这个最新的补丁版本中修复的。

    go-ipfs改进了IPFS的发布过程

    前面提到的回归需要对发布过程采用一种新的方法,在今年8月已经详细说明了这一点。新方法对5个阶段的流程增加了三个具体的更改。

    现在可以在浏览器中发布JS IPFS HTTP API客户端

    由于技术原因,浏览器中的HTTP API上的pubsub不受支持。但是一旦fetch API支持取消,支持js-ipfs的pubsub就到来了。

    IPFS桌面0.9发布

    9月初,IPFS桌面的最新版本0.9.2发布了,您现在可以浏览、在IPFS上使用npm、在系统中添加IPFS命令行工具等等。

    IPFS浏览器更新

    我们的目标是让多个浏览器实现完全的本地(和互操作)IPFS的支持。
    作为这一进展的一部分,我们已经与Firefox、Brave、Opera和其他浏览器进行了持续的合作。

    IPFS + ENS无处不在:引入EthDNS
    (技术实现上在Q4,但我们不得不分享)

    本月早些时候,EthDNS宣布,将传统的网络世界与新宇宙ENS-named连接起来,支持IPFS-backed分散的站点和dapp,通过古老但不可或缺的域名系统。

    IPFS Camp

    IPFS营是在第二季度举行的,但是很多令人惊奇的内容直到第三季度才开始出现。

    闪电会谈和Poster项目

    2019年IPFS Camp深潜会议的故事,是由一位DWeb历史研究员在遥远的未来所讲述的

    IPFS Camp核心课程视频

    IPFS Camp Sci-Fi Fair视频

    这些IPFS教程,看过吗

    管IPFS上的Slate文档, Temporal

    如何开始使用IPFS和Node,BetterProgramming

    使用IPFS分散化我们的网站,Henrique Dias

    在IPFS上构建一个零依赖的Notes应用程序,SimpleID

    以太坊网格中的IPFS入门,Ethereum Grid

    使用IPFS和Blockstack构建版本控制系统,Hackernoon

    使用IPFS、IPNS和DNSLink托管一个网站,SimpleAsWater

    阅读更多

Looks like your connection to Filecoin中文网 was lost, please wait while we try to reconnect.