DAFEX达菲官网|小菲达人3.0AIT智能投顾|跟单|托管|SKR托底保本的理财|达菲VIP系统
每一次时代浪花都能造就一批富翁,不玩信仰,不做韭菜。适可而止,有本有利。前瞻性布局,抢占财富风口。不推倒重来就是快。一年做三个项目远不如三年做一个项目。
文章1031浏览81421本站已运行252

热塔耶李是谁?LTG基金会主席:热塔耶李的简历

LTG 是全球首个兼容 IPFS\Filecoin 智能硬盘挖矿协议的、基于硬盘挖矿而构建的大规模在现实商业社会中应用的公链。吉比特和 LTG 基金会是战略合作伙伴,吉比特公司是一家在国内外拥有高知名度的新型科技公司,有丰富电力资源(吉尔吉斯斯坦两家电力公司),十几家比特币矿场和吉比特矿池,专业的技术核心团体,在项目创建和团队运营方面有独特优势。吉比特是 BTC 矿池,鱼池,蚂蚁矿池等多家矿池的 VIP 客户。LTG 基金会授权吉比特开发出吉比特 LTG 矿池,支持 Solo 和 Poc 去中心化挖矿。

LTG 是 Living the grace 的英文缩写,释义为活出恩典。LTG 是由吉尔吉斯斯坦 LTG基金会斥巨资,由美国硅谷知名区块链团队,历时一年多成功研发一条开源公链。采用HDDMining(存储挖矿)技术,Proof-of-Storoage 和 PoRep 存储数据和时空证明,产生区块“最快解”,赢得区块记账权获得挖矿奖励 LTG。

硬盘挖矿(HDD Mining),又称为“存储挖矿”,是基于硬盘存储器获取加密货币的过程。与基于图形处理单元(也称为 GPU 挖矿)的传统挖矿不同,硬盘矿工使用硬盘在分布式分类账本中生成新的数据块,获得奖励。除硬盘驱动器外,还需要一台计算机、显示器以及包含键盘和鼠标的输入设备,以便搭建硬盘挖矿的场景。这种加密货币挖矿方法的主要特点是,它不需要强大的 GPU 或中央处理器单元(CPU),这意味着它与比特币挖矿不同。硬盘挖矿的主要组件是 HDD,也就是硬盘,硬盘的容量和性能最重要。你不需要要单独的 GPU 来挖,一般是集成好的主板或有 CPU 内置的 GPU 就足够了。

硬盘挖矿优点:

(1)不需要购买带有大量 PCI 插槽的昂贵主板;

(2)不需要高级 GPU;

(3)硬盘挖矿的软件安装和配置一般比较简单;

(4)硬盘不需要进行大量的图形处理,因此能量消耗很小,节省电力成本;

(5)硬盘运行时热量小,无需使用风扇来降低设备温度(但是一般专业存储矿机都配有风扇,专业矿场都配有温控系统);

(6)硬盘挖矿整个过程简单,新手容易上手。

总结来说,硬盘挖矿减少了配置成本,节省了电力成本,降低了挖矿门槛。

第二章 项目简介

2.1 LTG简介

LTG 是 Living the grace 的英文缩写,释义为活出恩典。LTG 是由吉尔吉斯斯坦 LTG基金会斥巨资,由美国硅谷知名区块链团队,历时一年多成功研发一条开源公链。采用HDDMining(存储挖矿)技术,Proof-of-Storoage 和 PoRep 存储数据和时空证明,产生区块“最快解”,赢得区块记账权获得挖矿奖励 LTG。

LTG 是全球首个兼容 IPFS\Filecoin 智能硬盘挖矿协议的、基于硬盘挖矿而构建的大规模在现实商业社会中应用的公链。吉比特和 LTG 基金会是战略合作伙伴,吉比特公司是一家在国内外拥有高知名度的新型科技公司,有丰富电力资源(吉尔吉斯斯坦两家电力公司),十几家比特币矿场和吉比特矿池,专业的技术核心团体,在项目创建和团队运营方面有独特优势。吉比特是 BTC 矿池,鱼池,蚂蚁矿池等多家矿池的 VIP 客户。LTG 基金会授权吉比特开发出吉比特 LTG 矿池,支持 Solo 和 Poc 去中心化挖矿。如果你想在任何时候停止挖矿,你可以随时停止:您还可以删除与您的 LTG 节点实例关联的所有数据:

2.2 项目优势

(1)经过验证的成熟开源公链

整套系统已在硅谷经过反复测试,并将在交易所上线运营,支持全客服端和多语音,用户体验优秀。

(2)超前的数据应用矩阵

运用云计算存储,构建云原生服务体系,结合人工智能学习技能,5G 技术数据处理形成一套完整防作弊机制

(3)优势明显的核心技术

经权威认证的内存撮合技术,处理速度高达 300 万单/秒,远高于行业平均水平。

(4)国际化的投资顾问团队

丰富的资源和众多的合作伙伴为平台提供流动性,助力社区运营。

2.3 项目创新

(1)云计算和人工智能

硬盘存储大量数据信息,而每台电脑硬盘容积利用率有异,云计算和人工智能可有效对Compute,Networking,Storage 资源管理。LTG 开源存储用云计算方法可有效分配每张硬盘空间,实现云计算弹性和时间空间的灵活性。

(2)兼容 IPFS\Filecoin 双挖

LTG 开源公链兼容 IPFS\Filecoin 智能硬盘挖矿协议,在支持双挖,增加收益的同时,还能利用区块链的技术整合全球闲置的硬盘和带宽共享存储、共享带宽,提升处理效率,减少资源浪费,既环保,又高效。

第三章 LTG系统结构

LTG 系统结构如下图所示:

如图,LTG 商业节点包含六层。其中蓝底的是 LTG 自身要实现的,灰底的是纳入 LTG生态的第三方系统。最底层为 LTG 宪法规则,为整个系统提供基于代码实现的治理规则,主要功能是控制其它所有软件的更新。资源池是矿工用于挖矿的各种类型的资源,包括硬盘、闪存、内存等存储资源池,以及带宽资源池。资源通证层是将各类资源通证化(Tokenize)后发放资源通证的机制,能够验证矿工是否真实提供了相应类型的资源。对存储资源用存储证明(FileCoin 的 PoSt 算法)机制发放存储类的资源通证,对带宽资源用流量证明机制。BSP 开放平台为各区块链存储系统提供核心技术赋能,并为上层应用提供各类存储服务,包括至关重要的加密去重技术,去中心化静态持久存储、去中心化动态持久存储、本地缓存、CDN 等存储服务,存储管理、跨链调度等管理功能,还包括账号管理、密钥管理等数据安全机制。所有这些都通过 BSP 区块链存储协议开放给所有区块链存储系统和上层应用。LTG 主链实现基于 DAG 的区块链系统,通过 DPOS 共识算法实现对矿工的激励,并提供 LTG 双向兑换各类资源通证以及用户使用资源通证购买各类存储服务或计算服务的内部交易市场。LTG 提供内容共享、云盘、账号代理和社区治理四个示范 DAPP 应用,同时这四个应用也是个人和企业使用 LTG 的基础和通用需求。第三方可以基于 LTG 开发独立的 DAPP应用。尤其重要的是,LTG 通过中心化存储接口模块提供兼容中心化存储的块存储、NAS 存储和对接存储等存储接口以及相应的存储管理功能,使得现有中心化存储的应用可以不用修改代码、不用编译二进制兼容,可无缝迁移到区块链存储上。

3.1 LTG存储网络

在传统存储提供商数据中心化的市场中,用户选择存储提供商并将数据付费存储,当用户需要获取数据时,通过存储提供商直接获取数据。存储提供商不需要实时向用户证明自己存储了数据(他只能且必须存储用户数据),而是当用户获取数据时,将存储的数据提供给用户。在这个市场中,中心化的存储提供商对于用户是公开的,用户可以自己选择相信存储提供商。LTG 是去中心化的存储网络,在 LTG 的存储交易市场中,用户付费将数据存储在存储提供商的存储区域。用户和存储提供商之间是“匿名”的,这就需要存储提供商提供有效证明,供 LTG 网络进行验证,证明自己确实安全的存储了数据。

3.1.1 文件安全

从用户需求角度,当用户选择一个存储介质存储自己的文件时,希望的是自己的文件是保密的,而不是完全公开的。存储系统本身也应该考虑到对自己存放的文件进行数据保护。从社会需求角度,对于宣扬极端恐怖主义等违反人类社会共同价值观的文件,也应该有手段屏蔽。目前在 IPFS 存储网络中文件的唯一索引标识 Hash,可以通过 Get(Hash)方式获取文件的全部内容,而且无须任何的认证,且文件难以被销毁。既无法满足个人需求,也无法满足社会需求。LTG 采用数据源端对文件进行加密后进行上传,当文件开始进入 DSN 网络时候就已经是经过加密的了,而且除了 owner 或其授权者,其他人是无法解密的。

3.1.2 文件分享

在 LTG 系统中文件是加密存储的,是安全的,获取文件必须拥有文件的存储密钥才能解密。A 用户想要将自己的文件分享给 B 文件,则 A 文件需要进行的操作就是YottaChain.share(EncD, St k , ObjectB)将存储密钥分享给 B,B 才能获取到存储密钥Stk 从而解密文件 EncD,但是这样就会存在在传递过程中泄露的风险。而且在 LTG 的密钥管理系统中,不存在文件的明文存储密钥 stk,而都是加密后的加密存储密钥 EncStk。这里存储密钥的交换用的是非对称加密算法交换存储密钥。具体的构建过程如图

pka---A 用户公钥

ska---A 用户私钥

pkb---B 用户公钥

skb---B 用户私钥

通过账号管理的消息传递机制,A 将格式化的消息YottaChain.setMes(EncHashD,EncStkb)-->Mes发送给BYottaChain.sendMes(A,Mes,B)-->MesID,B 收到消息并利用自己的处理脚本YottaChain.getMes(MesID)获得消息内容,从而获得通过 B 的公钥加密的加密存储秘钥,B 用户通过自己的私钥解密获得明文存储密钥。

3.1.3 存储交易市场

LTG 上的各种资源都会在 LTG 交易市场上公开交易,交易市场会根据提供服务的节点的资源数量、带宽、网络延迟、报价等因素撮合交易。每种不同的资源都有自己的通证,用户需要用对应的通证来购买所需的资源。所有的通证都可以与 LTG 进行自由兑换,当用户想要使用 LTG 上的资源时,需要用LTG 来兑换相应的通证,交易市场会提供各资源节点的报价,并用集中竞价的方式自动撮合交易。

3.2 LTG挖矿

3.2.1 挖矿原理

挖矿市场的矿工主要分为两类,一类是存储矿工,一类是检索矿工,。

1)存储挖矿

存储矿工:用户(存储需求节点)提交存储订单,并支付 LTG 代币,存储矿工提交承诺的存储空间,并抵押 LTG 代币才有资格接单。第一批 LTG 矿工可以免费获得相应的抵押币。简要说明:存储矿工的抵押代币和承诺的存储空间大小相关。对于这类矿工来说,对网络的要求不是特别高,但是硬盘需要 24 小时开着,所以需要能够长时间稳定运行的硬盘,来进行文件的存储。

2)检索挖矿

检索矿工:用户提交检索订单,并支付 LTG 代币。检索矿工进行数据查询,只有最快的矿工才能拿到文件分发权!所以想挖 LTG 的朋友,网速要快,低延迟,矿机性能要强且稳定。简要说明:检索矿工提供检索服务时,无需抵押代币。只有存储矿工可以竞争新区块的打包权,从而获取代币奖励,竞争的依据是提供的存储量占全网存储量的比重。

3.2.2 挖矿流程

LTG 网络将有多种类型的矿工:

1、储存矿工

2、检索矿工

3、修复矿工

在目前的实施中,我们主要关注存储矿工。存储矿工销售存储量以换取 LTG。

(1)开始挖矿

12

在进程完成与链同步后,您可以创建一个矿工。

默认情况下,LTG 节点未设置为我的。LTG 网络上的挖掘区块需要向网络提交存储容量。开采区块,并根据提交的存储量成比例获得区块奖励。一个潜在的矿工首先要选择一个存储的规模,并抵押抵押品。承诺包括在 LTG 区块链上发送讯息。与以太坊类似,讯息处理需要花费“燃料”,每个讯息指定它将消耗的最大“燃料”单元数,以及 LTG (LTG 网络令牌)中的每个单元的价格。现在,我们可以为它们指定一些随机数字。

1.使用默认扇区大小(256MiB)创建一个以 100 LTG 作为抵押品的矿工,一个讯息“燃料”价格为 0 LTG / unit,限制为 1000 个“燃料”单位。成功时,将返回新创建的矿工地址。

注意:这个步骤可能需要大约一分钟来处理,但是如果它处理的时间更长,请再次检查gas-price 是否低于$YOUR_WALLET_BALANCE / LIMIT.

2.一旦创建了矿工,我们可以运行以下程序来开始挖掘:

go-LTG 挖矿开始了恭喜,您现在正在 LTG 网络上挖掘区块!让我们绕道去探索这些区块。(或者,要开始挖掘未使用的存储空间,请直接跳转到设置存储空间的价格。)

(2)探索采矿区块

您可以使用 LTG 区块资源管理器或通过命令行探索 LTG 区块链。例如,让我们获取区块链的第一个块的 blockID ,这被称为头部。

1.显示链头并复制一个 blockID (可能有多个):

2.然后,使用 show block 查看该区块的内容:

对于机器可读的输出,许多命令还支持 --enc=json 选项。

(3)设定存储价格

在 LTG 存储市场中,矿工运行一个命令,通过创建一个询问订单来设置他们的存储价格,该订单提供了他们可用存储空间的一些细节以及他们为存储收取的费用。客户向矿工提出他们想要存储的文件的交易。设置价格需要以下值:

1.您愿意以什么价格卖出这么多存储空间(以 LTG /字节/块为单位)

2.这个有效要价的区块数

3.开采这条信息所消耗的每一单位“燃料”的价格(单位:LTG)

4.此讯息要消耗的最大“燃料”单位数

(4)定价格

1.我们将价格设定为 0.000000001 LTG /字节/块,对 2880 块有效,讯息“燃料”价为 0.001 LTG /单位,限制为 1000 个“燃料”单位:

2.一旦设定了价格,就可以查看客户列表 - 要求查看您的询问(查找您的矿工地址):

接受交易并获得报酬客户向拥有足够存储空间且价格低于其支付意愿的矿工提出存储交易。目前,矿工接受客户用足够资金向他们提出的所有交易。付款验证是自动完成的,因此您无需采取任何行动来接受支付您要价的交易。交易付款使用 LTG 的内置付款渠道实施。因此,在整个交易期间,矿工会通过支付渠道定期获得资金贷记。

(5)查看您的矿工进行的所有交易

14

您将看到有关此类交易的元数据列表:

{

"minerAddress": "t2mpmyigmpopcwguhe2tpdeonoppuht5mtvd2ljcq",

"pieceCid": {

"/": "QmbHmUVAkqZjQXgifDady7m5cYprX1fgtGaTYxUBBTX3At"

},

"proposalCid": {

"/": "zDPWYqFD8U3ktr58iiqWTwzEV3sKyz7SGQjLg1zKS1Mgpo5N2nr1"

},

"state": "staged"

}

To get more information about a specific deal run

在上面的例子中应该是您可以查看交易的状态、约定的存储期有多长,以及履行交易将获得多少报酬。交易持续时间结束后,您可以通过运行以下代码兑换全额付款。这将向区块链提交一条讯息,从您和您的客户之间建立的支付通道中赎回资金。等待网络处理输出讯息,瞧!现在你将会在你的钱包里看到这笔交易的付款。

 

 

 

如果你想在任何时候停止挖矿,你可以随时停止:您还可以删除与您的 LTG 节点实例关联的所有数据:

高级选项

指定客户端数据的存储位置有两种方法可以指定扇区存储目录的位置:

sectorbase.rootdir 配置项

go-LTG init 的--sectordir 选项

如果未指定位置,则默认情况下,数据存储在 LTG repo 目录的父目录下名为.LTG_sectors 的目录中。

LTG核心技术

4.1加密DSN

加密的 DSN 方案协议:

在 Put 数据之前的处理,随机产生文件的存储密钥(St k ),通过存储密钥 St k 对文件进行加密,生成加密文件,以用户的加密公钥来加密存储密钥,分别计算数据明文的Hash 值和密文的 Hash 值,然后将密文、加密后的存储密钥、明文 Hash 和密文 Hash都保存起来。

  1. Hash(Data) →H data 计算明文 Hash
  2. RandomSym()→St k 随机生成对称密钥作为文件的存储密钥
  3. Enc(St k , Data)→EncData 用存储密钥加密文件
  4. Hash(EncData) →H enc 计算密文 Hash
  5. Enc(S pub , St k ) →EncSt k 以用户的加密公钥加密存储密钥
  6. PutStatic(EncData) 将加密数据存入到持久化静态存储中
  7. PutPri(H data ,H enc , EncSt k ) 将加密后的存储密钥,密文 Hash 存入到用户权限列表,记录在明文 Hash 项下在 Get 数据的时候,从明文 Hash 取出对应的密文

Hash,通过密文 Hash 从持久化静态存储中取出密文和加密后的存储密钥,以用户的加密私钥对加密后的存储密钥进行解密获得存储密钥,用存储密钥对加密数据进行解密,获得数据明文。

1.GetPri(H data )→H enc ,EncSt k 从权限列表中通过明文 Hash 获取到密文 Hash和加密的存储密钥

2.GetStatic(H enc )→EncData 用密文 Hash 从持久化静态存储中取出密文

3.Dec(S prv , EncSt k )→St k 以用户的加密私钥对加密后的存储密钥进行解密获得存储密钥

4.Dec(St k , EncData)→Data 解密获得文件数据优化的 DSN 方案有效地保证了数据的安全性。安全性:在数据源之外只以密文出现,只有利用用户的加密私钥才能获取到数据明文,用户只要保管好自己的加密私钥就不用担心数据被泄密。完整性:Hash 对应的数据 D,不会存在通过 Get(hash)获取到 D1,其中 D1≠D。数据可恢复性:Put 成功的数据 D,一定存在一个成功的 Get 请求获取到数据。以上方案不能解决数据去重问题。传统上行业内都公认加密后不能去重,服务器端要想零知识加密的话,重复的数据就只能重复保存,这是因为相同的数据在加密后就变得不一样了。这就是所有的大型云存储服务商都不提供零知识加密存储的原因,IPFS 为此干脆都不提供加密机制。LTG 提供了一种特殊的机制,既能防止存储重复数据,同时还能保证同样的安全性,打破行业“公知常识”实现鱼与熊掌兼得。采用这种机制时,除了用户权限表外,还要维护一个全局的元数据表,记录明文 Hash 和密文 Hash 的对应关系,在写入数据时要先查询。是否存在相同 Hash 的数据,如果没有该项再存:

1.Hash(Data) →H data 计算明文 Hash

2.If CheckDup(H data ) = TRUE goto 11 如果已经存在相同的数据,转到第 11 步

3.RandomSym()→St k 随机生成对称密钥作为文件的存储密钥

4.Enc(St k , Data)→EncData 用存储密钥加密文件

5.Hash(EncData) →H enc 计算密文 Hash

6.GenKey(Data) →S data 从数据明文生成对称密钥,可以用数据明文加盐之后计算Hash 值的方式生成。之所以要加盐是因为明文 Hash 是一个公开的值,不加盐的话不拥有数据明文的人也能获得该密钥。为了保证一致性,盐值可以是一个固定的算法生成,例如先做第一次 Hash 作为盐值,然后加盐后再计算第二次 Hash 作为对称密钥,两次 Hash可以采用不同的算法。

7.Enc(S data , St k ) →EncSt k ’ 以数据明文生成的对称密钥来加密存储密钥。

这是非常“诡异”的一步,以明文作为密钥,密钥作为明文来加密,大多数人看这个算法的时候都以为写反了,实际上就是专门这么设计的,而且这一步可是 TruPrivacy 的核心步骤。

8.PutStatic(EncData) 将加密数据存入到持久化静态存储

9PutMeta(H data , H enc ,EncSt k ’) 将密文 Hash 和明文加密的存储密钥记录在全局元数据表中,记录在明文 Hash 项下

10.Goto 14

11.GetMeta(H data ) →H enc ,EncSt k ’ 从全局元数据表中取出密文 Hash 和明文加密后的存储密钥

12.GenKey(Data) →S data 以同样算法从数据明文生成对称密钥

13.Dec(S data , EncSt k ’) →St k 用该对称密钥解密出存储密钥

14.Enc(S pub , St k ) →EncSt k 以用户的加密公钥加密存储密钥

15.PutPri(H data ,EncSt k ) 将加密公钥加密后的存储密钥存入到用户权限列表,记录在明文 Hash 项下在 Get 数据的时候,从全局元数据表中从明文 Hash 取出对应的密文 Hash,通过密文 Hash 中从持久化静态存储中取出密文,从权限列表中取出加密后的存储密钥,以用户的加密私钥对加密后的存储密钥进行解密获得存储密钥,用存储密钥对加密数据进行解密,获得数据明文。

1.GetMeta(H data )→H enc 从全局元数据表中通过明文 Hash 获取到密文 Hash

2.GetPri(H data )→EncSt k 从权限列表中通过明文 Hash 获取到加密公钥加密的存储密钥

3.GetStatic(H enc )→EncData 用密文 Hash 从持久化静态存储中取出密文

4.Dec(S prv , EncSt k )→St k 以用户的加密私玥对用户加密公钥加密后的存储密钥进行解密获得存储密钥

5.Dec(St k , EncData)→Data 解密获得文件数据优化的 DSN 方案不仅有效地保证了数据的安全性,而且还能实现加密去重。为了更好地实现去重效果,可以将数据按固定长度分块,每块分别去重。上述方案只能用于存储静态数据。当存储动态数据时,不仅要用不随内容变化的 ID 代替 Hash 作为数据的标识,而且还要加上写权限的验证以防止数据被其它人覆盖篡改。这时创建流程如下:

1.RandomAsym()→Sw pub ,Sw prv 随机生成非对称密钥作为写权限密钥

2.Create(Sw pub ) →ID 创建一个动态数据,获得一个唯一的 ID,并记录该 ID 对

应的写权限公钥

3.RandomSym()→St k 随机生成对称密钥作为存储密钥

4.Enc(S pub , St k ) →EncSt k 以用户的加密公钥加密存储密钥

5.PutPri(ID,EncSt k ) 将加密公钥加密后的存储密钥存入到用户权限列表,记录在 ID项下

每次写数据时的流程如下:

1.GetPri(ID) →EncSt k 从用户权限表中取出加密公钥加密后的存储密钥

2.Dec(S prv , EncSt k )→St k 以用户的加密私钥对用户加密公钥加密后的存储密钥进行解密获得存储密钥

3.Enc(St k , Data)→EncData 用存储密钥加密文件

4.Hash(EncData) →H enc 计算密文 Hash

5.Enc(Sw prv , H enc ) →EncH enc 用该 ID 的写权限私钥对密文 Hash 进行签名

6.PutDyn(ID, EncData, EncH enc ) 写入加密后的动态数据,以签名数据代表写授权。存储动态数据各碎片的节点在写入动态数据时,需要先验证写权限:

7.GetKey(ID) →Sw pub 取出该 ID 对应的写权限公钥

8.Hash(EncData) →H enc 计算密文 Hash

9.If Dec(Sw pub , EncH enc )= H enc Write(EncData) 如果签名验证通过,写入数据

动态数据的读流程如下:

1.GetPri(ID)→EncSt k 从权限列表中获取 ID 对应的用加密公钥加密的存储密钥

2.GetDyn (ID)→EncData 用 ID 从动态数据存储区读出密文

3.Dec(S prv , EncSt k )→St k 以用户的加密私钥对用户加密公钥加密后的存储密钥进行解密获得存储密钥

4.Dec(St k , EncData)→Data 解密获得文件数据

 拜占庭容错

拜占庭将军问题出现的主要背景是:拜占庭罗马帝国地域广阔,各个军队相隔很远,军队之间的通讯只能通过信差,任何的战略部署都需达成统一后才能展开行动。如果军队中将军或者信差有不可信的人存在就会扰乱作战计划,无法达成共识。因此在已知有叛军存在的情况下,如何意见达成统一就成为了拜占庭将军问题。存储故障即称为拜占庭故障,即有不诚实不可信的矿工丢失了他们的数据,从而让文件无法获取成功。拜占庭容错方案:Put(D,n,m),当数据上传的时候使用冗余编码将数据分为 n 个碎片,并允许最多 m 个碎片失效(即只要能任意获取 n-m 个碎片即可完整读取数据)指定 n 个存储节点来存储这部分数据,每个节点存储一个碎片,这样可以容忍 m 个节点故障。当故障节点节点存储数据。节点 n 的选择,以及容错节点 m 的选择用户可以自己选择,系统会默认设定一个值,其中 n>3m+1。

4.3 标准格式文件 STDFILE

具备自我描述功能,通过获取文件的头信息即可获得文件的相关信息。什么是文件头信息(HeadHash),先简单了解一下默克尔树(Merkle Tree)它是装载 Hash 列表的一个树形结构。在树的最底层是已经被切割的具有固定大小的数据小块(除去最右侧小块), 有相应的 Hash 与其对应,相邻两个小块合并再做 Hash,以此上推,至最上层的 Top Hash 也就是默克尔根。文件索引:通过获取文件的 Hash(top Hash),来获取到叶 Hash,获取到叶子 Hash,最后获取到最小的数据小块。

Merkle Tree 插入通过插入一个具有固定格式固定大小的数据块 0 (Data Block)来改变 Merkle Tree,但是基本不改变结构关系。因为 1,2,3,4,5 的数据块内容未发生改变。经过插入后的

Merkle Tree 变为:

这里要研究的就是数据块 0 的内容。因为在获取文件数据的时候,可以将 0 作为文件头 Head,>0 的数据块作为文件内容 Data,而数据块 0 就是文件的自我描述,它可能会包含类似文件编码格式、创建时间、文件格式、文件名的元数据。以固定的格式表述这些元数据并通过特定的转换方法 Convert(HeadInfo)将其转换为固定数据块大小的文件头信息(HeadBlock),连同文件内容(Data)一并被存储。SFILE :Hash(HeadBlock(Finalsize)+Data)-->Top HashHeadBlock(Finalsize),不会影响到数据在 Merkle Tree 中的整体结构,如果最底层数据块是偶数个,那个当 0 被插入的时候,会产生孤儿,但是孤儿永远是最右边(end)的一个。

SFILE 文件索引:从 Top Hash 开始查询叶节点,当查询到最底层数据块 Hash 时,你永远都知道第一个块儿是头信息块,它用来描述文件,并非文件内容的一部分,所以在组织数据时可以忽略掉。SFILE 旨在创建一种具有自我描述功能的标准格式文件,从而实现文件的一些信息交换。

基于安全的复制证明和时空证明

这里主要参考了 FileCoin 的复制证明(PoRep)和时空证明(Post),PoRep 改善了 PDP 和 PoR 方案,有效的防止了三种攻击。

1.SEAL 封箱操作

存储矿工存储数据时通过 SealτAES-256 方法存储数据并生成副本,目的是让存储矿工可以诚实的存储数据 D 独立的 N 份副本数据,并保证有足够的时间允许验证者 V 生成随机验证挑战 RC。

2.复制证明

定义:复制证明(PoRep)允许存储提供商通过提供副本证明(π)来说服验证者,在验证者发出随机挑战时,提供证明,证明数据 D 相对于证明者的特定副本 R 已经存储在唯一的专用物理存储区了。该方案是一种交互式协议。

复制证明(PoRep)的三个构建阶段:

PoRep.setup() -->副本 R,副本 Hash 树根 Merkel root of R,封装证明πSEAL

PoRep.prove() -->存储证明πPOS

PoRep.Verify() -->bit b (存储有效性证明 b1(πPOS)^封装有效性证明 b2(πSEAL))

3.具体构建实践

PoRep.setup()

inputs:

--proverkey pair (pkP , skP)

--proverSEAL key (pkSEAL)

--data D

outputs:R,Merkel root of R,πSEAL

处理过程:

1.计算 hD=CHR(D)

2.封装计算生成副本 R=SEALτ(D,skP)

3.通过散列函数输出树根 rt=MerkelCRH(R)

4.设置参数 x

=(pkP,hD,rt)

*设置参数 w

=(skP,D)

*计算副本封装证明πSEAL=SCIP.Prove(pkSEAL, x, w)

*输出 R,rt,πSEAL

PoRep.Prove()

inputs:

--proverProof-Of-Storage key pkPOS

--replica R

--random challenge c

outputs: a proof πPOS

处理过程:

 

1.计算 Merkel 树根 rt=MerkelCRH(R)

2.计算从根 rt 到叶子 Rc 的路径path

3.设置 x

=(rt, c)

*设置 w

=(path, Rc)

*计算存储证明πPOS=SCIP.Prove(pkPOS, x, w)

*输出存储证明πPOS

PoRep.Verfy()

inputs:

--proverpublic key ,pkP

--verifier SEAL and POS keys vkSEAL , vkPOS

--hash of data D, hD

--Merkel root of R, rt

--random challenge ,c

--tuple of proofs,(πSEAL,πPOS)

outputs: bit b =1 表示有效

处理过程

*设置 x

=(pkP,hD,rt)

*计算 b1=SCIP.Verify(vkSEAL, x,πSEAL)

*设置

w=(rt,c)

*计算 b2=SCIP.Verify(vkPOS, w,πPOS)

*计算 b1^b2

时空证明

允许存储提供商能够提供证明在某一时间段(t)内,都有效的存储了数据。采用时空证明(PoSt)审核存储提供商提供的存储,没有指定的验证者,任何的网络成员(有权限的网络成员)都能够进行验证,该方案是非交互式的协议。Post 的构建方案:

PoRep.setup() -->副本 R,副本 R 的 Merkel 树根 R,封装证明πSEAL

PoRep.prove() -->t 时间内生成顺序的存储证明πPOST

PoRep.Verify() -->bit b (存储有效性证明 b1(πPOS)^封装有效性证明 b2(πSEAL))

在 Post 的构建方案中,setup()和 Verify()跟 PoRep 复制证明一样,在 Prove()中,证明人接受验证者的随机挑战生成复制证明,并将复制证明作为输入迭代 t 次后输出顺序的存储证明πPOST

蒲公英技术

对于 LTG 的隐私性而言,最大的威胁是区块链节点可以在打包并广播交易记录前记录交易的信息。在核销之前,交易输出在要在节点本地内存池(mempool)(未经验证的交易池)中保存一些时间。这使得恶意节点可以在构建交易图(transaction graph)并可能发现发送方的 IP 地址。蒲公英试图降低恶意节点创建交易图的机会,方法是“在交易被确认之前先悄悄地在网络中转发它,从而延迟交易在网络上出现的时间(Andreas Antonopoulos[1])。通常,当有人向区块链发起交易时,交易信息会向所有的区块链节点广播。蒲公英将交易的广播划分为两个阶段,从“阀杆(stem)”或“匿名(anonymity)”阶段开始,在这一阶段,交易信息将其被随机广播到某一个节点,然后再由这个节点将交易信息发送到另一个随机挑选的节点,依此类推,直到收到交易信息的节点数目满足一定要求,则进入第二阶段。第二阶段称为绒毛阶段(fluff phase),在这一阶段交易信息会被广播到所有的节点。这样做可以防止观察节点将交易映射回原始地址。一种蒲公英技术的改进(Dandelion++)使得创建交易图变得更加困难。在 LTG 中,交易也可以在匿名阶段之前进行混币,从而使将交易输入与交易映射关联更加困难。 Beam 通过增加占位空输出使得在没有足够的输出也可以进行上述混币操作蒲公英技术的一个问题是,在匿名阶段,如果交易被传递到某一随机节点后,这个节点掉线,那么这笔交易将永远不会被传播到区块链网络。Grin 和 Beam 解决了这一问题——如果某交易没有在合理的时间内达到“绒毛阶段(fluff phase)”,则这个交易将被自动广播到更广泛的网络中。

上一篇:
下一篇:

添加新评论

隐藏边栏