区块链
项目的特点
1. 共识协议:DDPOS。高TPS,兼顾精英治理与大众普选,避免成为少数人的专政。
2. 完善的系统升级机制:区块链系统的每次升级即是一次硬分叉。由于各种原因,部分用户选择不更新客户端,因此和升级后的客户端失去共识,造成系统价值的损失。Genesis将投票功能built in客户端,系统升级在系统中多数人达成共识后自动进行,保证了系统升级的时候的价值得以延续。
3. DApp Store(1.0版):传统的区块链主链像windows一样,开发者开发的DApp散落无组织。 Genesis中有一个DApp store作为面对普通用户的入口,开发者和用户都必须遵守一定的规则和监管。作为一个去中心的自制社区,这个监管由社区自行投票拟定。最初的原始规则采用类似reddit的排名机制(基于用户投票排名)。
4. 自带存储侧链:目前市面上的公链大都不具备存储能力。Storj和siacoin之类 虽然允许开发者存储数据,但是这些链设计复杂,更适合于专业的去中心存储场景。Genesis存储侧链自带数据存储的经济体系,开发者可以直接调用来开发需要存储大量数据的应用。
5. 开发进度30%:基于Rust开发,系统编程、安全、并发、高效。Framework链计划于2018年9月测试,主网testnet计划于2018年12月上线。
6. 和其他主链项目的对比:Genesis作为一条公链,通过侧链实现扩展,和现有的公链的对比如下:
项目的目标
我们希望最终Genesis要打造的不仅仅是一个区块链基础链,更是John Barlow 梦想中的,能实现DAO治理的理想国,一个全新的,完全独立自治的,不受任何中心化权威控制的互联网虚拟世界,一个未来将颠覆所有现有社交网络和互联网生产关系的互联网空间。
Genesis系统介绍
出发点
用户为社交平台贡献了大量的内容,成就了脸书等社交平台的巨大成功。然而,用户提交的内容所产生的收益大部分被这些平台拿走,并没有分享给这些用户。实际上,用户只有这些社交平台的使用权,没有所有权。Genesis用区块链技术打造一个去中心的社区。社区所有内容由全体用户拥有,社区的规则也由用户自己制定。社区依托于一条高性能的公链,用户可以通过在其上发布的各种去中应用来实现各种功能和场景。
治理机制
Genesis用区块链技术打造一个去中心的社区。社区所有内容由全体用户拥有,社区的规则也由用户自己制定。Genesis的核心治理原则为“自治”, 用户参与自治最重要的工具是“投票”。
Genesis里有下面这些核心对象:
1. 人
Genesis系统里的第一要素是人,也就是用户。Genesis由共享同一用户系统的一条主链和多条侧链组成。Genesis中的用户可分为普通用户、地主和元老三种。其中地主负责维护一个云盘,而元老负责维护整个区块链系统。
Genesis的用户具有如下特点:
● 用户名无需注册,生成私钥/公钥即可以使用。
● 出生纸:用户激活时,设定一个仅自己知道的字符串,用于被质疑时验证身份。
● 投票权:每个用户都有投票权利,用于对各种事件作出选择。
Genesis的用户在系统里有不同角色,例如:
● 元老 Block Producer:元老负责对全网数据进行共识维护。
● 地主 Landholder:地主负责以Merkle Tree的形式维护一个云盘。
● 普通用户 Users:普通用户可以从市场购买应用并且参与投票等。
2. 货币
Genesis系统流通的货币叫Gencoin或者创世币。创世币是驱动Genesis生态系统的动力。
获得创世币渠道:
● 普通用户:
○ 保持在线状态会有机会获得创世币
○ 用户的事件记录被应用端程序调用时会获得创世币
○ 参与投票等活动会获得发起投票的人所附上的奖励
○ 创造出有用的内容
○ 创建应用程序并发布在应用商店上
● 地主:维护云盘获得创世币
● 元老:维护区块链共识机制等获得创世币
消耗创世币的渠道:
● 应用端程序每次获得用户授权需要消耗创世币
● 普通用户:
○ 发起投票等活动可能会消耗创世币
○ 使用应用程序或购买应用程序内的功能
类似EOS的模式,基本上任何需要消耗计算力的事件都需要用创世币做抵押,这样可以有效防止Ddos攻击。 以下是Genesis创世币的经济关系图:
3. 市场
市场(Genesis Market/DApp store)是DApp的交易场所,也叫应用商店。在这里,普通用户可以找到所有在Genesis生态圈里的应用。用户通过对这些应用的下载和使用来实现其在Genesis虚拟世界的各项生活需求。对于开发者来说,这里是他们发布应用并获取收入的场所。
4. 宪法
Genesis允许用户签订共同希望遵守的协议,即宪法(如果是少数用户直接的协议,则叫法律)。宪法是系统的最高规则,所有用户和活动必须遵守宪法。宪法由大法官来负责发起投票动议,并且由全体用户投票的方式来更新。
5. 投票
通过投票来参与到管理是Genesis的核心治理原则。用户的投票权作为核心机制写在区块链里。系统运行之后,算法成为基本逻辑的坚定执行者,任何一种全局性改变都需要群体通过投票的来决定。投票的机制是Genesis演化和用户自治的核心手段。区块链中记录的不可篡改的特点让Genesis里的投票具有绝对的公信力,因此集体通过投票达到的系统进化即可以代表大多数用户的意愿。
Genesis主要通过用户投票的机制完成对自身协议的更新, 实现进化。对于程序无法处理的逻辑,Genesis通过人工投票来完成决策。例如软件出现bug,必须更新的情况,即可由系统里的任何一个人提出动议,并且附上更新后的版本以及愿意为该动议支付的货币,其它人用投票方式表决是否接受新版本。Genesis中投票应用广泛,还可以用于仲裁用户之间的纠纷等场合。
Genesis的区块链技术
Genesis的共识机制
Genesis项目在发展过程中,设计过两种共识机制。第一种是将POW的算力用于数据模型训练的POC(Proof of Comprehension)共识。第二种是民主代理人权益证明 DDPOS(Democratic Delagated Proof of Stake)共识。两种机制都为Genesis团队原创并申请专利。POC作为Genesis共识的最初版本,将被做成一个DApp放在侧链。目前Genesis采用第二种共识机制,即DDPOS。
1.0版:POC(Proof of Comprehension)
POC(Proof of Comprehension)是一种基于POW的改良。传统区块链工作量证明POW是一个复杂的加密机制, 当矿工节点试图去制造一个区块时, 会将若干笔交易通过hash算法进行加密,来形成一个符合协议的字符串。这个加密的过程会消耗几乎100%的cpu运算量以及时间,加密出来的字符串被称为解。传统POW机制产生的解是无意义的,其好坏只由反映出区块链的健壮性的特定序列的长度来决定。
众所周知基于深度学习的人工智能算法近些年在包括语音识别,图像识别等领域都取得了突破性进展。而训练深度学习模型需要消耗大量的算力,可以说算力的堆积对于深度学习模型的效果有着决定性的作用。由于GPU等高性能计算设备价格昂贵且在市场上经常供不应求,而算力的缺乏成为了学术界和工业界搭建更优秀深度学习系统的瓶颈之一。
Genesis将区块链加密所必须的工作量证明和深度学习进行了有机结合。不同于传统的POW方法仅仅依赖于算力的多少来进行工作量证明,我们通过验证矿工使用算力训练所得到的深度模型的有效性来判断其工作量,这也就是所谓的POC(Proof of Comprehension)。鉴于之前我们提到的模型有效性与算力之间的正比关系,因此矿工所训练深度模型的有效性可以作为其工作量的证明,同时,挖矿的过程最终将缔造出强大的人工智能系统,使整个求解的过程具有实际意义,解决了传统POW算力浪费的问题并且为Genesis提供了一个极其广阔的应用空间。
Genesis的Proof of Comprehension 本质上是一个具有自动学习和理解能力的人工智能机制。POC在不断的数据训练中会变得更强大和聪明,让Genesis的共识过程更高速,单位时间内处理更多交易。不同于大多数区块链项目,Genesis单位时间处理交易的次数tps是随着系统的进化动态增加的一个指标,随着使用人数和处理数据越多,系统tps反而会越大。
另外一方面,随着Genesis训练的数据越多,Genesis将有能力理解更多人类逻辑,从而未来系统有可能进入到其它需要大量运算力的领域,前景非常广阔。需要强调的是,Genesis 的POC共识机制仅仅会放在侧链上作为一个DApp运行。
Genesis的POC机制是Genesis团队原创,已经申请专利。POC的详细实现流程如下:
数据获取和模型输出
数据通过DApp store里的DApps输入Genesis。第三方的应用程序开发团队可以在Genesis现有的基础上进行DApps的开发,并通过这些DApps提供个人或者实体上传数据的渠道。同时数据提供者也通过DApps获得补偿。
数据进来Genesis后,将会被存在一个分布式的文件存储系统。Genesis中,每一个farmer都是一个数据资源的维护者,而所有的farmer的集群可以看作是一个由所有farmer共同维护的可实时扩充的分布式文件存储系统。
数据经过POC训练后,通过DApp输出结果。
数据存储
数据在Genesis中被存储在一个虚拟数据中心当中供下一步POC使用。
1. 虚拟数据中心
Genesis系统中用于存储数据的节点被称为存储节点,存储节点和普通节点使用一样的地址空间。数据集将以碎片的形式复制并分散到不同的存储节点上。 存储节点的集群被称为虚拟数据中心。每当用户提交transaction时, 该用户将会和虚拟数据中心的若干节点签订存储合约来租赁数据中心的存储空间。该技术将确保Genesis的可扩容性和数据一致性。
2. 默克尔树
默克尔树常用于不可信源数据验证。 默克尔树有如下特征:
● 默克尔树的叶子节点上的值为等长数据块。
● 非叶子节点的value是根据它下面所有的叶子节点值,然后按照一定的HASH算法计算而得出的。如果非叶子节点的子节点也同为非叶子节点,该非叶子节点的值由其子节点的值组合后HASH加密后得到。
● 用户会以默克尔树的一个分支路径进行数据同步。这个路径被称为验证路径。 每一个验证路径会被默克尔树根验证。
Genesis使用二叉默克尔树进行数据存储。假设数据块的数量为N, 那么根据二叉树的特性可知一个默克尔树的生成复杂度为O(2-N)。
3. 数据存储方式
Genesis的数据以默克尔树的形式存于不同的存储节点中。处于激活状态的存储节点在p2p网络中广播自己的IP,用户收到广播后会将可信度高的存储节点置于节点队列中并构建虚拟数据中心。之后用户将自己的默克尔树同步到虚拟数据中心并在数据同步校验成功后和虚拟数据中心签订存储合约。
4. 存储合约的制定与发布
存储合约是存储空间租赁者和存储节点之间达成的协议。 协议内容以脚本的形式存在于合约的payload中, 协议内容包含签订者双方应当履行的义务。合约在发布前会要求合约附上数据提供者与数据中心的数字签名组。 一旦合约签订发布,合约将不能被修改。合约内容包含:
● 合约hash头
● 合约创建时当前区块链高度
● 租赁周期(以区块高度计算)
● 验证数据有效性的默克尔树根
● 数字签名组(包含数据提供者和虚拟数据中心的数字签名)
● 存储节点的外网IP组
● 双重锁定脚本(数据上传者会将一个周期内的奖励通过虚拟数据中心的公钥组合特殊验证路径进行双重锁定, 需要矿工使用特殊验证路径以及存储节点使用私钥进行解锁)
● 存储合约将以transaction的形式发布到存储区块链上。
5. 存储链与存储合约的执行
负责维护存储合约的侧链名为存储链。存储链由矿工负责维护。矿工在创建新存储链块的时候会将当前有效周期内的部分存储合约指向的数据进行下载验证,当数据被存储合约上的数据可信根验证通过,矿工会将一个带有特定数据验证路径的交易发布到主链上,该交易会复制存储合约中双重锁定脚本并进行一次解锁,上述过程被称为合约履行。用户客户端会监听区块链上的交易并收到合约履行成功的事件。存储合约在有效周期过后会从存储侧链上移除。在合约周期快结束时,用户可以选择是否向数据中心进行续租。
6. RS码纠错
由于网络抖动或者数据损坏等原因,虚拟数据中心的节点会提供错误数据。Genesis采用RS编码来进行数据纠错。 RS编码是一种简单实用的代数编码模式,该技术广泛用于数据传输中并有着较强的抗干扰能力。
POC实现
Genesis的POC机制采用基于深度神经网络模型的优化和验证逻辑,下面详细描述其实现。
1. 深度神经网络
基于深度神经网络(Deep Neural Network)的深度学习已经被证明在包括图像识别,自然语言处理在内的人工智能应用中极其有效。神经网络模型采用类似大脑神经突触联接的结构进行信息处理,主要用于监督式学习领域。通过处理给定的带有标签的数据,抽象数据的分布特征,从而学习出从数据特征到标签的映射,使训练出的模型具有数据分类(classification),回归(regression)等功能。增加神经网络的层数后,即可通过组合低层特征形成更为抽象的高层标书属性类别或特征,可更好地刻画数据的分布。
例如在图1展示的深度神经网络,通过对将数据输入模型的输入层(input layer),经过多层隐含层(hidden layers)的特征提取及抽象,在输出层(output layer)生成数据的标签。其中,层与层之间的联系往往是线性变换,而每一次的神经元则对应了一个非线性变换。深度神经网络可以用于解决不同的实际问题。举例而言,当使用神经网络进行人脸识别时,将图片通过输入层,经过隐含层的特征提取及抽象,判断该图片是否包含人脸(例如,当输出层输出1则有人脸,输出0为无人脸)。
神经网络的架构有很多种,卷积神经网络(Convolutional Neural Network)通常用于图像识别。递归神经网络(Recurrent Neural Network)以及衍生出来的长短期记忆网络(LongShort Term Memory)则更多的应用于自然语言处理。生成对抗网络(GAN)则是一类在无监督学习中使用的神经网络,在图片,视频,自然语言和音乐的生成方面有着广泛应用。
2. 深度神经网络的参数优化
在使用深度神经网络时,除了设计网络结构(网络的层数及每层的结构)一个重要的问题是如何通过给定的训练集(数据及对应的标签)对模型进行训练,以决定其每一层的参数。具体而言,这个问题可以定义为,给定数据集D = {X,Y},其中X={X_1,。..X_N}为输入数据,且每一个样本向量xk为一个d维的向量,Y={y1,…,yN}为对应样本的标签。而我们优化的目的就是找到一个由X到Y的映射F(X),这样给定一个样本向量,我们可以确定它的标签。为了达成这个目标,一般的做法是确定一个损失函数L(F(X),Y),使得映射F(X)相对于Y的损失值最优。常见的损失函数包括squared loss,cross-entropy等。
其中n是预先设定的学习率。在实际的训练过程中,通常会在开始训练的时候选取一个稍微大一点的学习率(比如0.1),加速训练的过程,在训练的过程中慢慢的调小学习率,以求达到精确的结果。由于深度神经网络模型所需优化的参数数量很多,即使使用了不同的正则化方法(如使用卷积神经网络,或使用Dropout技术)稀疏所需优化的参数,想要训练如此巨大的模型仍旧需要大量数据,那么计算梯度往往会导致运算速度过慢。一个标准化的处理方法是使用随机梯度下降(stochastic gradient descent)的方法。具体而言,就是每次计算梯度以更新参数时,都随机从原训练数据集中抽取部分数据计算梯度并进行参数更新,在有限次迭代更新中同样可以取得稳定的表现。
3. 验证深度神经网络的表现
在实际的使用中,我们需要在训练好模型后判断神经网络的表现是否足够优秀。在训练模型时,我们已经使用了大量数据进行参数优化,由于在训练样本的过程中已经包含了训练时使用数据的信息,那么在测试模型是否真正有效时,我们需要预留一部分用于交叉验证的测试数据,并只是用训练数据进行模型训练,以规避模型训练中常见的过拟合信息。如图2所示,一个在训练集中表现优秀的模型可能对于新数据表现不够稳定。而只有当测试数据在训练好的模型中表现优秀,我们才可以信任训练好的深度学习模型。
4. 模型训练与工作量证明
Genesis的POC共识机制是基于深度神经网络模型的优化及验证逻辑,通过模型的有效性来验证miner的工作量证明。同时,POC中深度学习模型的训练是和侧链技术紧密结合的,其中每个模型训练任务都是互相独立并由一条侧链单独完成。
2.0版:DDPOS(Democratic Delegated Proof of Stake)
传统共识机制的弊端
目前市面上有各种各样的共识机制,应用比较广泛的有POW(Proof of Work)、POS(Proof of Stake)和DPOS(Delegated Proof of Stake)。这些共识机制在实际应用中,逐渐暴露出来一些问题。
POW强调“全民参与”,任何节点都可以成为矿工去挖矿,维护整个系统。然而实际应用中,特殊矿机的出现让普通人几乎不可能挖到矿,更糟糕的是,矿场和矿池的出现让系统的挖矿算力变得越来越集中,系统越来越中心化。
POS采用通过计算节点持有币数占总币数的百分比,包括节点占有币数的时间来决定一个节点获得本次记账权利的概率,这导致穷人参与到系统维护的机率渺茫,可以说POS是一种”富人游戏“。
DPOS是 POS 的进化方案。DPOS中,系统首先选出delegates,然后由这些超级节点来负责维护整个系统。这些超级节点被赋予了对系统维护的至高权力,同时他们也因为提供维护系统的服务进而获得更多系统的stake,和POS一样,这会导致富人更富,系统越来越中心化的问题。
DDPOS简介
Genesis团队经过长时间的研究后,提出一种全新的共识机制DDPOS(DemocraticDelegated Proof Of Stake)。DDPOS可以完美的保留DPOS的高速tps的特性,同时又可以有效的解决DPOS的“富人更富”的问题。
以下详细描述DDPOS的概念与逻辑。
元老院:元老院由21个超级节点组成,这些节点有维护区块的绝对权利,包括打包,回滚,删除账号等。
元老选举:元老的选举指元老院的超级节点通过某种机制将其中全部或者部分成员换成新的节点的过程。所有元老都可以从普通节点中直接选举产生。每次选举根据之前的表现更换排名最靠后的3位元老。
选举期:系统正常运行一定阶段后,会自动进入的一个进行元老院中元老的选举和置换的过程,称为选举期。 并且,在上一个选举期之后系统内发生的任何投票动议(系统升级,回滚,删除账号等所有投票动议)都会在这个选举期中汇总,并决定是否执行。
第一次全民公选:第一次元老会成员的选举通过全民公投来进行。采用某种投票的办法,系统的开发者发起第一次全民公投,由所有节点参与投票后选出21个元老。
DDPOS的选举过程:
(1)元老院的第一期成员由全网公投选举产生。
(2)维持循环,并且按一定周期自动调整元老会。
执政期:系统正常运行的时期,由若干个循环周期组成,其中每21个块周期为一个循环周期(Round),元老院每产出一个块为一个块周期(slot);在执政期内,所有的区块由元老院的全部元老依次生成,每个元老生成一个块。
选举期:当一轮执政期完成后,系统会迎来为期若干个循环周期(Round)的选举期。值得一提的是,在DDPOS中,每个元老会成员会在打包时以自己的区块头生成一个Hash谜题发布到区块中,谜题类型与POW中的Hash碰撞谜题相似。选举期开始时,当前最高区块的有效谜题会被推举为选举谜题。全网任何节点都可以提交对谜题的解,每次提交需要支付一定的token作为费用;选举期结束后,剩余的18名元老会通过谜题答案来推选出3名新的元老会成员。 因为每一个区块的区块头都必须由前一个区块的区块头组成,我们不用担心最高区块的打包者会以此作弊。通过对每一个节点有效提交次数的限制,我们可以在确保不对选举期的整个网络造成拥堵同时尽可能地筛选出优质的竞选者。
奖励周期:根据区块链高度,设置里程碑时间(Milestone),在某个时间点调整区块奖励。
(3)循环产生新区块,广播
DDPOS的创新之处
DDPOS中更换元老的方式通过在选举期的算力比拼,让那些有较强算力的普通节点也有机会成为元老会成员,进而参与到系统的治理过程中,避免了整个系统被小部分节点垄断的风险。同时,通过严格的惩罚机制和末位轮换制度,即使进入了元老会的超级节点也需要提供高效的出块率来保障自己的长期收益,整个系统因此更公平高效。
Genesis的DDPOS机制也是Genesis团队原创,已经申请专利。DDPOS的详细技术原理请见Genesis的专利申请。
Genesis的升级机制
在一个中心化的软件系统里,系统的升级一般通过服务器来完成。当有新的软件版本时,服务器推送消息给用户,提醒用户去官网下载或者如果更新包比较小的话,直接将新版本推送到用户客户端,用户安装新的版本后,更新过程完成。
在一个去中心的分布式系统中,节点与节点通过共识机制形成联系,整个系统没有服务器的概念,因此一旦系统客户端有了新版本,是否升级取决于每个节点:
1. 是否得知这个新版本的消息。
2. 是否愿意自己去下载这个新版本并且进行升级。
这个情况导致系统的更新并不像中心化系统那样有效率,新旧客户端混合在一起。如果这个版本更新是一次硬分叉的话,会导致旧版的客户端和新版客户端实际运行在两个不同的共识机制下,整个系统也一分为二,这个对一个分布式系统来说,是一种严重价值的损害。
Genesis系统的升级采用发起特殊投票的方式,这个机制的目标是让尽可能多的节点在同一时间完成升级。分为以下几个步骤:
1. 提出投票动议
任何节点都可以提出一个投票动议,在系统里相当于发起一个特殊类型的交易。这个交易包含以下内容:
● 动议的描述
● 愿意为此投票动议所支付的token奖励
● 可执行代码
2. 投票
动议提出后,这个动议(特殊交易)通过p2p网络在全网广播,系统中的所有节点将收到这个动议以及其附带的奖励和可执行代码。这些节点必须对这个动议做出选择:同意、不同意、弃权(默认无操作)
3. 动议通过,客户端完成升级
当满足要求数量的节点对这个动议做出选择后,如果选择同意的节点超出一定的比例,则认为这次投票动议获得通过,这时,该动议所附的可执行代码被激活,将所有节点的客户端自动升级到新版本,同时把附带的奖励平均分配给参与了投票的节点。
这个投票的机制保证了系统升级只是在大多数节点人工投票“同意”后才进行,系统升级后,大多数节点也将运行在同一个共识机制下,系统的价值得以最大程度的保留。
Genesis里,投票可以分为多个级别的投票,一般遵循的方案是只需要涉及到的节点参与投票。如果一个动议只涉及到侧链上的少数人,则这个动议只需要侧链上的少数人投票即可。如果这个动议涉及到系统里所有的节点,则这个动议是一次对宪法的公投,需要系统内所有节点的参与率达到一定比例,并且选择“同意”的节点和选择“不同意”的节点超过一定比例才可以。
侧链技术
Genesis的将大部分核心内容放在主链上,同时大量采用侧链技术来分担网络的负担并且增加可扩展性。Genesis的主链上包含用户核心信息、交易(Genesis所有行为都以交易的形式来呈现,如投票、 用户互动 以及提交文件等)。Genesis的主链全部采用经过验证的成熟技术,以稳定为优先。
侧链是实现Genesis进化的关键技术。用户可以通过投票更新侧链协议,甚至可以整体迁移到一个全新的侧链,从而达到系统的进化。
Genesis的侧链都可以有单独的合约,主链通过动态索引实现与侧链沟通。Genesis目前有两条内置侧链,分别负责实现文件存储、应用商店机制,未来还将上一条侧链运行POC。另外,Genesis上可以快速生成一条和主链架构完全一样的侧链,作为程序员的开发测试环境。
Genesis的侧链技术详细描述如下:
双向锚定以及简化支付验证机制(SPV)
简化支付验证(SPV)的概念最初出现在Satoshi2008年写的一个区块链文档中。Satoshi没有运行完整的节点来验证区块链中的交易,而是讨论了一种更有效(更轻)的方法,即简化版验证过程。这个机制是这样的:只保留最长工作证明链的块头的副本。可以通过查询尽可能多的网络节点来获得区块链的头部,直到获得满足可信度的最长链为止。然后,获得一个包含这笔交易的,带有时间戳的Merkle分支。
与全节点验证相比,SPV不会验证所有内容,而是将其作为高难度的可信度作为有效性证明的代理。这是一种DMMS,可以使用概率和随机游走进行进一步的理论分析来证明这一点。从实际角度来看,SPV提供了一种简易的方法来确定某个特定交易处于区块链的某一块中,而无需存储和检查整个区块链。由于每个交易都具有哈希值,并且每个块都有哈希值,因此可以建立Merkle树证明交易的哈希和区块的哈希。
Merkle树是一种数学模型,其中树根位于顶点,所有交易都放置在树叶中。整个结构呈一个树状。 Merkle树证明包含顶点(块)和叶子(交易)之间所有哈希的列表。为了证明某一笔交易在某个区块中,只需要块的一小部分。基本验证有两个步骤:1。验证Merkle分支的存在,证明交易处于块中。 2.验证块本身是否在区块链的主链中。这两个步骤足以证明交易的真实性。
在Genesis Space中,我们使用SPV和Merkle树来实现父链和侧链之间的验证过程。我们现在讨论虚拟币转移示例的步骤。该设计主要基于Back等人的Enabling Blockchain Innovations with Pegged Sidechains 理论的常见侧链框架。最初,父链上的币被发送到父链上的特殊输出,该输出只能通过侧链上的SPV证据解锁。为了使两个链保持同步,定义了两个等待(缓冲)周期:
1)确认期。侧链之间转移的确认期是在将虚拟币转移到侧链之前必须将虚拟币锁定在父链上的持续时间。此确认期的目的是允许创建足够的工作量证明,使得在下一个等待期间的DDOS攻击变得更加困难。典型的确认期限为一天或两天。
在父链上创建特殊输出后,用户将等待确认期,然后在引用此输出的侧链上创建一个交易,提供SPV证明它已创建并隐藏在父链的足够工作量证明之下。确认期是一个每侧链的安全参数,它以交叉链传输速度换取安全性。
2)竞争期。然后用户必须等待验证期间。其的目的是通过在重组期间转移先前锁定的硬币来防止双花。如果在此延迟期间的任何时候,发布的新证据包含具有更多聚合工作的链,该链不包括创建锁定输出的块,则转换将追溯无效。我们称之为重组证明。
如果可能的话,侧链的所有用户都有动机提出重组证明,因为证据不正确的结果是所有虚拟币价值的稀释。典型的竞争期间也将是一天或两天的量级。为避免这些延迟,用户可能会使用原子交换进行大多数传输。
当锁定在母链上时,虚拟币可以在侧链内自由转移而无需与母链进一步交互。但是,它保留了作为母链币的身份,并且只能转移回它来自的链。当用户想要将币从侧链转移回母链时,他们会按照原始转移过程执行相同的操作:将侧链上的币发送到SPV锁定输出,生成足够的SPV证明,这样做,并使用证明解锁父链上具有相等面额的多个先前锁定的输出。
Genesis的存储侧链
作为社交社区平台,当用户与Genesis Space交互时,预计会产生大量数据。因此,为数据存储的可扩展性和安全性建立分散的存储机制至关重要。在Genesis Space中,采用了存储侧链以满足这些要求。除了一些核心敏感数据(如用户配置文件和钱包数据)之外,大多数数据都存储在此存储侧链中。这样既保证了社交网络对区块链的快速反应和记录的要求,同时也满足了社交网络等系统产生的大数据的存储需求。在目前的设计中,轻量级数据将直接存储在侧链上(类似与Steemit存储方案);更大的数据(超过1MB的文件等)将采用ipfs进行存储,仅在侧链上记录指向该块存储的Hash值。提供存储的侧链节点将受到奖励。
Genesis 中的存储链用作对等存储网络,其中文件管理记录在存储侧链中被索引。当Genesis Space用户想要存储文件时,用户可以创建包含文件元信息的文件合同,以及他愿意为此支付的付款。 Genesis 中的其他用户可以将文件存储在本地硬盘上来充当主机。文件合同由客户签署,主机指定存储协议以及奖励。合同存储在存储侧链上并且是不可变的。为避免虚假的主机,还需要从主机进行存储证明。在发送来自客户的奖励付款之前,证据将被发送到存储侧链。此外,该文件可以分为几个部分和多个副本,以提高文件的完整性和可检索性。
Genesis的去中心应用商店侧链
Genesis包含一个DApp的商店(即Genesis市场),帮助开发者发布应用,同时方便所有的用户查找并下载应用。Genesis的应用商店有一个基于投票的应用审核、上架、下架和反馈的机制。同时,Genesis采用类似Reddit的vote机制对应用做出排名,让优秀的应用更容易被用户发现。Genesis的应用商店是整个Genesis系统基础设施建设中最主要的表现形式,也是最重要的一个环节。
Genesis Space中的DApp Store通过侧链实现。 DApp开发人员可以在DApp商店中发布他们的应用程序。当他们这样做时,相关的应用程序信息将被散列并添加到侧链中。为了使用户更容易找到相关的应用程序,DApp元数据被索引为Merkle树,并且根将被记录在块头中。
如图所示,Genesis Space中DApp Store Side Chain的框架。客户端和DApp开发人员之间的应用程序购买交易是通过侧链完成的。此外,为了鼓励应用用户提高参与率,开发人员还可以根据用户在DApp上的注意力提供奖励激励(以Gencoins的形式)。关注度是Herbert A. Simon于1971年在“为信息丰富的世界设计组织”中创造的一个概念。它指的是消费者对信息作为稀缺资源的关注。注意模块是预定义的智能合约,用于评估客户参与度。根据用户的关注量向用户授予奖励,并将反馈发送给开发人员以进一步改进应用程序。同时,为了鼓励开发人员提供高质量的应用程序,还在侧链上跟踪声誉记录。基于用户投票和评级来评估信誉。较高的声誉将使应用程序获得更高的排名,并且还将向开发者授予奖励。
Genesis的测试链
除了使用侧链进行数据存储和实现应用程序市场外,我们还实现了第三个侧链,使开发人员能够试验和测试他们的应用程序。此侧链可帮助开发人员在DApp Store链中发布高质量且稳定的DApp,而不会让迭代的应用测试影响到应用商店链。该链也可供部分用户访问,例如自愿选择开发人员进行测试的用户(调查,行为反馈等)。奖励也以实验参与的形式授予,以开发人员和志愿者之间的交易形式。
独立合约
Genesis的每条侧链都可以有自己的合约,可以单独用来解决某一方向的问题。这种架构让单一业务的处理变的更容易,同时又极具扩展性和维护性。
索引
Genesis的主链包含侧链的索引,链与链之间可以很容易通过主链的Merkle Tree以及外部消息的输入验证来交互。
Genesis的经济模型
一个去中心的系统,除了技术以外,最重要的是保证系统内的各个元素有一个合理并且公平的经济平衡,只有这样才能激励系统内的各个对象,为系统的繁荣作出贡献,保证一个可持续的系统。Genesis的经济模型图如下:
系统中各个角色如下:
● 普通人:
正如现实世界从太阳获取能量,Genesis里用户花在系统里的时间就是系统的原始驱动力。因此普通用户只要保持在线状态就可以获得系统的token奖励。系统将BP的收入的一部分随机分配给在线的用户。
● 开发者:
Genesis强调将应用开发者的地位提高到和矿工一个等级,给他们直接的经济反馈,激励他们来开发更多更好的DApp。
● 大法官:
Genesis作为一个去中心系统,其发展依赖于持续不断的版本迭代。Genesis专门在系统里设置大法官的角色,用来推动系统的更新。大法官在系统里可以提出对宪法的更新的投票动议。大法官分享部分参议院(即Block Producer)的收益。
● 参议员:
参议院负责出块,又叫BP(Block Producer),负责维护整个系统,每次出块会获得系统的奖励。这个奖励的一部分自动分配给普通人和大法官。
● 地主:
地主负责维护一条存储侧链,为用户提供存储服务,通过智能合约的方式获得收益。
整个系统采用通货膨胀的方式每年增发5%的货币,用于支付上述的各项活动。系统范围内的所有服务都不需要费用,但是部分服务将需要用户将自己的财产抵押,这个设计主要是防止DDoS攻击。
全部0条评论
快来发表一下你的评论吧 !