Skip to content

Latest commit

 

History

History
81 lines (55 loc) · 6.95 KB

10.添加评论.md

File metadata and controls

81 lines (55 loc) · 6.95 KB

评论的数据产权属于谁?

一般来说,用户是可以对留言板上的留言进行评论的。 现在,我们思考这样一个问题:评论的数据产权属于谁? 其实,在思考这个问题之前,我们需要先搞清楚什么是数据产权。 数据产权是建立在数据主权之上的一种所有权证明,是对数据财产的所有权,这种所有权表现为对财产的占有、使用、收益、处分。 换句话说,我们的评论数据在未来是可能产生价值的。比如某位日后获得诺贝尔文学奖的作家,他曾在我们的留言板上发表过很有哲理的评论数据,这样的评论数据很多人都想出高价索要。 现在,我们似乎可以回答前面的问题了:评论的数据产权应该属于评论者自己。 但是,我们似乎忘了一个前提:评论是基于留言进行的二次创作。 这样看来,评论的数据产权属于留言的创作者也是可接受的。 所以,评论的数据产权划分并没有一个硬性的规定。评论的数据产权可以属于评论者,也可以属于留言者,也可以属于 DAO 组织,甚至可以属于智能合约(全人类)。

数据产权的金字塔论和对应的处理方法

数据产权的金字塔论

从上一节的问题出发,我们可以做更进一步的假象:如果未来的某个时刻,那条价值不菲的评论数据需要在多方的参与和授权下完成产权的转移,其中的利益相关方会通过签署合同的方式来达成此次的交易,这时候的评论数据产权转移到了新的所有者那里,同时,签署的合同也创造了一种新的数据产权,这种产权属于签署合同的多个所有者。 所以,我们可以发现:数据的产权随着时间的推移和数据交换模式的改变,呈现出金字塔的结构。

对应的处理方法

针对数据产权的金字塔模型,我们总结 4 种处理方法:

  1. 私有计算:只有一个 Owner 这种情况最为常见,意味着 DEC 运算过程的数据所有权是全私有的,通常也是隐私的且不适合公开。今天运行在传统设备里的本地计算都属于这类模式。输入命名数据的读取,计算,和结果命名数据的保存都可以在单机完成,并不依赖网络里其它人的信息。

  2. 再创作计算:有多个 Owner 这是基于旧数据进行独立创作。代表着基于别人的信息进行二次加工,得到一个独享的专有内容。这是互联网上公开信息存在的主要形式。今天的传统互联网内容生成都属于这类,CYFS 的 ObjectLink 可以实现可信的依赖已有内容。

  3. 数据交换计算:有有限多个 Owner 这是 DEC 的一般形式,代表着多人协作构建新信息。比如修改一份三方合同,只要签订合同的三方都认可,就可以修改合同内容到新的版本。 实际上,人类大部分可信计算的需求都应落在这个分类,这也也是联盟链会存在的根本原因。 DEC 的计算结果只需要数据的产权共有方验证即可,不需要得到网络中其它节点的认可。这类计算可以更好的被实现是 CYFS 有权数据网的首要设计目标。

  4. 共识计算:有无穷多个 Owner 产权属于全人类,求其修改需要得到整个网络的认可,此时 DEC 等价于智能合约。账户余额一个典型的例子,其数据产权属于整个网络。目前保存在区块链上的链上数据都是这类数据,这类数据非常重要,但也只占人类数据的一小部分。我们不应该盲目的把所有的数据都放到区块链上。

数据交换合约的基本工作原理

数据交换合约可以用下面公式定义:

{S} = Fn({D}) 其中:
{D}为已知命名数据的集合
Fn为命名函数,又称作数据交换合约
{S}是结果命名数据的集合,表示Fn以{D}为参数运行后的结果。
我们可以用三元组(Fn,{D},{S})来描述一个运行完成的数据交换合约。

这里有 2 个概念需要解释一下:

  1. 命名数据:对数据进行命名操作可以得到命名数据的 ID(数据的名字),这可看做一种通用的,把任意数据封装进可信信封的方法。
  2. 命名函数:一个 FP(函数式编程)里的"Pure Function":即运行依赖的所有状态均来自其输入参数。

通过命名数据、命名函数的定义,我们进一步抽象出数据交换合约的基本工作原理:一组确定产权的确定数据,经过一个确定的计算,得到一组新的确定产权的确定数据,该计算过程是可验证的,对计算结果的篡改能被发现。一组已经存在的命名数据,经过计算得到一组新的命名数据的过程,就是数据交换过程。

评论小组 的共识计算开发

这里先解释 2 个概念:

  1. 评论小组:拥有评论列表的小组成员集合。在设计上可以有两种选择,一个是全球言论管理 DAO,DAO 里有算法随机分配一个编辑小组来拥有这个评论列表。 另一个是智能合约,通过在合约代码中预设一个编辑小组来拥有这个评论列表。
  2. 共识计算:在去中心化的节点中为达成共识而进行的计算过程。主要形式是通过各节点对数据对象进行签名,只要已签名的比例大于等于规定比例(共识率)的节点完成签名,就算是达成共识。

我们规定任何一条评论都必须在全部小组成员签名后才算达成共识,即共识率为 1。 因此,一条评论要完成在评论小组内的共识,需要 3 个步骤:

  1. 创建新的评论对象并自己完成签名;
  2. 将自己签名后的评论对象保存在评论投票列表并通知其他小组成员;
  3. 小组成员接收到评论对象后,验证自己是否已经对其签过名:
    • 如果自己没有签名,则自己签名后验证投票率。如果投票率达到共识率,说明此时的评论对象已经达成了共识,把这个评论对象保存到评论列表、删除评论投票列表对应的评论对象并通知其他小组成员。如果投票没有达到共识率,就把这个评论对象保存到评论投票列表并通知其他小组成员。
    • 如果自己已经签过名,则验证投票率,如果投票率达到共识率,说明此时的评论对象已经达成了共识,把这个评论对象保存到评论列表并删除评论投票列表对应的评论对象即可。如果投票没有达到共识率,判断当前评论对象的签名率是否比评论投票列表对应的评论对象的签名率大,如果更大,则替换评论投票列表的评论对象,如果小于等于则忽略。

为防范 DDos 攻击等安全风险,不管是采用 DAO 还是智能合约,都推荐使用防御性编码并进行全面的测试。


权限控制

新增的共识过程中,我们主要是对指定的共识接口进行 Call 调用。这里的权限控制可以参考前面学习过的为留言板添加跨 Zone 的 Call 权限的内容。