在Filecoin网络中,存储矿工是最为重要的角色, 因为存储矿工不仅提供存储服务,同时,也只有存储矿工具有挖矿获得区块奖励的资格。本文不谈存储矿工如何挖矿,专谈,存储矿工如何与客户达成交易,并且获取存储收费。
一些基本要素
在展开叙述之前,我们一定要明白,Filecoin网络的一些基本常识。在此基础上,讨论存储的过程和收费就相对比较容易。对于这些基本常识,我在之前的一些文章中也有叙述,再此简单罗列如下:
- Filecoin网络是一个去中心化网络,也就是说,这里没有一个老大哥来监管整个系统,系统完全靠共识、靠算法运行来维护;
- Filecoin存储矿工需要为自己背书,背书的方法就是抵押FIL到网络之中,作为对自己承诺的保证,当不能实现自己的承诺时,同意抵押被没收;
- Filecoin矿工的挖矿是在成功提供存储服务的基础之上进行的,因此,挖矿和提供服务是相辅相成的;
- Filecoin网络提供一个透明的存储市场,在这个市场中,矿工和用户之间可以自由交易。
存储交易的大致流程
前面提到,Filecoin的存储市场是一个透明的市场。在这个市场上,矿工是主要角色。当矿工希望提供存储服务时,需要做以下几件事:
存储矿工准备基本流程:
- 存储矿工在网络登记(在Filecoin节点上执行创建矿工的指令);这时,Filecoin的链上会增加相应矿工的角色
- 存储矿工承诺可使用的存储空间并进行质押;这即是承诺质押(Pledge Collateral)
- 存储矿工挂单,声明单位存储的价格;并声明这个价格的有效期为多久。
目前实现说明(0.1.4版):
- 矿工必须与一个钱包地址绑定,而此钱包地址属于Filecoin节点。当前规定;一个节点只能拥有一个矿工
- 矿工可以从一个节点移至另一个节点,但目前还未实现;
- 区块链数据是透明的,全网可查。
前面的基本流程,总结起来就是如下两条指令:
## 创建矿工并登记,同时设置承诺质押,一步进行
$ go-filecoin miner create <pledge> <collateral>
## 挂单
$ go-filecoin miner set-price <storageprice> <expiry>
那么,作为存储用户,如果需要存储数据,则可以通过以下步骤进行:
存储用户达成交易基本流程:
- 存储用户可以询问网络,目前有哪些矿工在提供服务
- 经过比较,选定一个矿工,来提出交易要求
- 存储矿工收到交易申请,回复并达成交易
目前实现相关说明(0.1.4版):
- 在目前的实现中,如果客户提出的申请符合矿工开出的条件,交易自动达成
- 自动撮合的存储市场在将来可能实现,但基本考虑是链下进行
- 目前链上没有矿工信用值统计等的直观反应,可以有人来利用区块数据实现线下信用查询,这会是一个不错的服务。
交易达成的过程主要通过两条指令实现:
## 查询矿工挂单:
$ go-filecoin client list-asks
## 客户提出交易申请
$ go-filecoin client propose-storage-deal <miner> <data> <ask> <duration>
交易达成的更多细节
交易达成虽然只有一条指令,但其中涉及到很多细节。大致包括如下方面:
-
查询区块链,查看是否指令中涉及到的矿工及其挂单是否有效;有效则继续,无效返回错误;
-
连接矿工所在节点,如果不能连接,返回错误,能够连接,继续;
-
等待矿工返回同意存储申请;
-
传输需要存储的文件给矿工;
-
创建支付通道,客户付费给支付通道(注意,不是直接付给矿工)
-
矿工接收完数据,开始做封印(Seal)
-
矿工Seal完成,验证数据保存完整
-
在存储交易要求的区间内,矿工持续证明存储完好,并从支付通道获得报酬。
支付通道?
支付通道是个什么东西?
支付通道在这个网络中是一个很关键的角色,注意,是个角色。记住,矿工在网络中也是一个角色。也就是说,你可以把支付通道看成是一个人。实际上它是一个智能合约。当客户申请交易时,此智能合约自动建立,并在之后自动执行。也就是说,客户的费用是付给了智能合约,而智能合约只在矿工能够成功证明自己持续保有数据的情况下,才会付费给矿工。
也就是说,矿工的所有存储收费不是直接来自用户,而是来自支付通道。
其实,支付通道不是一个新鲜概念,在BTC网络和以太坊中已经有实现,很多是为了减低链上交易的压力,为链下交易而提出来的。
支付通道存在的问题
Filecoin直接在链上实现支付通道。当然,一种最简单的方式就是对一个文件的存储就创建一个支付通道,也就是说运行一个智能合约。这看起来简单,实现容易,但是,当网络规模变大的时候,区块链上的支付通道将变得过多,反复执行,交易量将会很大,使得整个网络的交易速率下降,出现拥塞。这对于区块链而言并不陌生,Filecoin似乎也不可避免。
有没有更好的办法呢?当然有,既然实现支付通道,为什么不实现链下交易。很多小额交易完全可以链下进行,通过双方签名,达到一定额度上链即可。
另一个办法,一个用户可能会信任几个特定的矿工,那么他们的交易会很多,系统可以提供一种支付通道归并的方式,来实现多个通道统一一次性交易,这样讲大大减少交易信息量和实际交易量。
当然,这些目前都还只是设想,还有大量的工作要做。我相信,在Filecoin上线之前,这些都会有很大的进步;在上线之后,进步也不会停滞。我们必然会迎来一个逐步变好、被逐步广泛使用的网络。
网友评论