首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

V神最新亲笔:“你是如何被欺骗的?”

  • 24-03-05 03:05
  • 3703
  • 6406
blog.csdn.net

640?wx_fmt=gif

640?wx_fmt=jpeg

作者 | Vitalik Buterin

编辑 | 乔治

出品 | 区块链大本营(blockchain_camp)



本文是以太坊创始人 Vitalik 在2019年4月3日发布的最新博客,也是他在2019年发布的唯一一篇博客。


Vitalik 在这篇题为《On Collusion》最新博客中到底说了啥?乔治小编第一时间做了翻译和整理,干货实在太多,老铁们必须读完哟。


 640?wx_fmt=gif


#特别感谢 Glen Weyl,Phil Daian 和 Jinglan Wang 的审核工作。


过去几年,人们越来越热衷于在不同场景下使用有意设计的经济激励和机制设计来引导参与者的行为。在区块链领域,机制设计首先为区块链本身提供安全性,鼓励矿工或权益验证者诚实参与,但最近它被用于“预测市场”、"代币管理注册表"和许多其他情况之中。


与此同时,新生的激进变革运动催生了哈伯格税、二次投票、二次融资等方面的实验。最近,人们也越来越有兴趣利用基于代币的激励措施来鼓励社交媒体上高质量帖子的发布。然而,随着这些系统的发展逐渐从理论走向实践,还有一些挑战需要解决,我认为这些挑战还没有得到充分的应对。


中国币圈社区「币乎」就是个很好的例子,它最近发布了一个基于代币的激励机制来鼓励人们写帖子。基本机制是,如果平台的用户持有 KEY 代币,他们有权利将这些 KEY 代币“押注”在文章上,每个用户每天可以进行 k 次 upvotes(类似于点赞、顶帖),每次 upvotes 的"权重"与进行 upvotes 的用户权益成正比。拥有更多 upvoting 的文章就会显得越来越突出,文章作者得到的 KEY 代币奖励大致与该文章的 KEY upvoting 数成正比。


这是一个十分简单化的问题,实际机制内包含了一些非线性因素,但这些因素对于机制的基本运作并非必不可少,KEY 代币之所以有价值,是因为它可以在平台内部以各种方式被使用。


这种设计并不是独一无二的,激励在线内容创作是很多人都在关心的事情,有很多类似特征的设计以及一些相当不同的设计。在这种情况下,这个特殊的平台已经被大量使用:


640?wx_fmt=png


几个月前,reddit 上以太坊交易板块 /r/ethtrader 推出了一个有点类似的实验功能,向发表评论并获得支持的用户发放一个名为 donuts(以下统称为“甜甜圈”)的代币,每周向用户发放一定数量的甜甜圈,依据用户评论获得的 upvotes 成比例发放。这些甜甜圈可以用来购买 banner 顶部横幅内容的使用权,也可以用来在社区中投票。


然而,与 KEY 系统不同,当 A(用户)upvotes B(用户)时,B 获得的奖励与 A 现有代币供应量不成比例,相反,每个 Reddit 帐户都有相同的能力为其他 Reddit 帐户做出贡献。


640?wx_fmt=png


这种试图以摒弃捐赠/小额付费的已知方式奖励高质量内容创作者的实验非常有价值。对互联网用户创造内容的补偿的不足,是整个社会面临的非常重要的问题,加密社区试图利用机制设计的力量来解决这个问题,这种行为是十分令人鼓舞的。但不幸的是,这些系统却很容易受到攻击。



自我投票、财团操控和贿赂


以下为如何从经济层面攻击上述设计。


假设一些十分富有的用户获得了一定数量的代币 n,结果每个用户的 k 个 upvotes 都给了接收者 n*q(q在这里可能是一个非常小的数字,比如 q = 0.000001)。用户只需为他们自己的另外一个账户 upvotes,给自己 n*k*q 的奖励,每个用户每个周期的"利率"为 k*q,然后,系统就崩溃了,这个机制什么也完成不了。


实际上,币乎机制似乎预见到了这一点,并且具有一些超线性逻辑,在这些超线性逻辑中,其中具有更多 KEY 的文章获得了不成比例的更大奖励,这似乎是鼓励支持流行的帖子,而不是自我提升。在代币投票管理系统中,通常会加入这种超线性逻辑,以防止自我投票破坏整个系统;大多数 DPoS 计划只有有限的代表名额,对于没有获得足够选票加入其中一个名额的人,奖励为零,效果类似。但这些计划总会带来两个新的弱点:


  • 补贴富豪集团,因为非常富有的个人仍然可以获得足够的资金进行自我支持。

  • 用户可以通过贿赂其他用户,通过全体投票来绕过这些限制。


贿赂攻击听起来可能有些牵强,但是在一个成熟的生态系统中,实际上它们比看起来还要真实得多。大多数情况下,贿赂发生在区块链领域,运营商使用一个委婉的新名称给这个概念一个友好的面孔:这不是贿赂,这是一个“分享股息”的“赌注池”。贿赂甚至可以被混淆:想象一下某些加密数字货币交易所,它花费巨大精力去搭建一个超级棒的用户界面,甚至不去尝试收取利润,是不是很良心?


恰恰相反,它会使用用户存入的代币来参与各种代币投票系统。不可避免,也会有人认为团队内部的串通是再正常不过的事情,比如最近的一起关于 EOS DPoS 的丑闻:


640?wx_fmt=png

640?wx_fmt=png


最后,还有"消极贿赂"的可能性,通过勒索、胁迫以威胁参与者,除非他们在机制内以某种方式行动。


在 /r/ethtrader 实验中,由于担心人们通过买甜甜圈来改变政府的民意调查结果,社区决定只让锁定的甜甜圈有资格用于投票。但是还有一种比买甜甜圈更便宜的攻击:租用甜甜圈。


如果攻击者已经持有ETH,他们可以在其他平台使用它,比如 Compound,换取一些代币,这些代币让你有权用于任何目的,包括参与投票,当他们完成后,只需将代币发回贷款合同即可获得抵押品。在每一种情况下,事实都证明,围绕贿赂、意外地过度授权、人脉广泛且富有的参与者的问题难以避免。



身份


一些系统试图通过使用身份系统来减轻代币投票中大富豪的影响。以 /r/ethtrader 甜甜圈系统为例,虽然治理调查是通过代币投票进行的,但决定你获得多少甜甜圈(即硬币)的机制是基于 Reddit 账户:一个账户一个 upvote 。


身份系统的理想目标是使个人获得一个身份相对容易,但获得多个身份相对困难。在 /r/ethtrader 甜甜圈系统中,这是 Reddit 账号,在 Gitcoin CLR 匹配小工具中,它是用于相同目的的 Github 帐户。但是身份,至少到目前为止的实施方式来看,它很脆弱......


640?wx_fmt=png

我完全痴迷于 click farms,

成千上万的机器排着队制造虚假的互动。


哦,你是不是懒得制作一大堆手机?好吧,也许你正在寻找这个:


640?wx_fmt=png

看起来超级粗略的网站,可能会也可能不会欺骗你,

你需要做你自己的研究与应用


按理说,像控偶师那样,通过简单地控制成千上万的假身份来攻击这些机制,甚至比费力贿赂别人还要容易。


但是请记住,有专门的犯罪组织,远远领先于你,即使所有的地下组织都被拿下,如果我们愚蠢到创造使这种活动有利可图的系统,敌对政府肯定会创造数百万的假护照。这甚至还没有提到反方向的攻击,身份认证机构试图通过剥夺边缘化社区的身份证件来剥夺他们的权力......



共谋


考虑到一旦多重身份甚至流动性市场出现,许多机制似乎都以类似的方式失败,有人可能会问,是否是因为某些深层次的共同因素导致了所有这些问题?


我认为答案是肯定的,而"共同点"是这样的:在一个参与者可以串通的模型中,让机制保持理想属性比在一个参与者不能串通的模型中保持理想属性要困难得多,而且更有可能是完全不可能的。大多数人可能已经对此有了一些觉察;这一原则的具体实例是建立在完善的规范和法律背后的,这些规范和法律往往促进竞争性市场和限制价格垄断、投票买卖和贿赂。但这个问题要深刻得多,也更普遍。


在聚焦于个人选择的博弈论中,每个参与者都独立地做出决定,并且不允许成群的代理人为了共同的利益一起工作。有数学证明,在任何一个博弈中至少必须存在一个稳定的纳什均衡点,机制设计者有非常广阔的空间来"设计"游戏以实现特定结果。但是考虑到合作博弈理论,有大量博弈没有任何稳定的结果,联盟不可能偏离这些结果而获利。


如果存在一些固定的资源池和一些现有的资源分配机制,并且不可避免地有51%的参与者可以合谋夺取对资源的控制权,无论目前的配置是什么,总会出现一些阴谋,这对参与者是有利的。然而,这种阴谋反过来又容易受到潜在的新阴谋的影响,可能包括以前的阴谋者和受害者......


可以说大多数博弈的不稳定性这个事实被严重低估了,因为它是一个用来解释为什么政治上可能没有"历史的终结"的一般简化数学模型,也没有一个系统证明是完全令人满意的,我个人认为它比著名的阿罗定理有用得多。


有两种方法可以解决这个问题。


1、把自己限制在"无身份"和"共谋安全"的游戏类别中,这样我们就不必担心贿赂或身份问题。

2、直接攻击身份和共谋抵抗问题,并且解决得足够好,可以借此实现具有更丰富属性的非共谋安全博弈。



无身份和共谋安全博弈设计


即使工作量证明也是共谋安全的,直到具有总功能的约23.21%的单个参与者的界限,并且通过巧妙的工程设计,这个界限可以增加到50%。在一个相对较高的界限之前,竞争性市场是合理的共谋安全的,这在某些情况下很容易达到,但在另一些情况下则不然。


就治理和内容管理而言,一类行之有效的主要机制被描述为"通过预测市场进行治理"。futarchy 机制的工作方式是,它们进行的"投票"不仅是一种观点的表达,还是一种预测,它会奖励做出真实预测的人,惩罚做出虚假预测的人。


例如,在关于《prediction markets for content curation DAOs》的提议中,我建议一种半中心化式的设计,任何人都可以对提交的内容进行 upvote 和 downvote(不看好),被 upvote 的内容更加显眼,有一个"审核小组"负责做出最终决定。对于每个帖子,有一个很小的概率(与该帖子的 upvotes + downvotes 的总量成比例),将要求审核小组对帖子做出最终决定。


如果审核小组批准了一个帖子,那么所有对其进行投票的人都会得到奖励,并且每个投票给它的人都会受到惩罚,如果审核小组拒绝某个帖子,则会发生相反的情况;这种机制鼓励参与者进行赞成和反对的投票,"预测"审核小组的判断。


另一个可能有关于 futarchy 例子是带有代币项目的治理系统,如果投票获胜,任何投票赞成某个决定的人都有义务在投票开始前购买一定数量的代币;这保证了对一个糟糕的决定进行投票的代价是昂贵的,如果一个糟糕的决定赢得一次投票,每个支持该决定的人基本上必须买断项目中的其他所有人,高昂的代价降低、甚至消灭了廉价贿赂攻击的可能性。


640?wx_fmt=png

分别创造两个代表"可能的未来世界"的市场,并以更优惠的价格挑选其中一个


然而,这种类型的机制所能做的事情是有限的。在上面的内容管理示例中,我们并没有真正解决治理问题,我们只是扩展治理小工具的功能,而这些功能已经被认为是可信的。人们可以尝试用一个代表购买广告权利的代币价格预测市场来取代“调节面板”,但实际上,价格是一个过于嘈杂的指标,除了极少数非常大的决策之外,其它任何决策都无法实现这一点。通常我们试图最大化的价值,并不是一枚代币的所能代表的。


让我们更明确地看看为什么,在更一般的情况下,我们不能通过对代币价格的影响轻易地确定治理决策的价值,遗憾的是,识别好的或坏的公共物品的良好机制不能是无身份或串通安全的。如果一个人试图保护一个游戏的属性不受身份的限制,不再重要建立一个身份,而只有代币才重要的体系,那么在无法激励合法公共产品和过度补贴富豪之间,就不可能做出权衡。


论点如下。假设有一个作者正在生产一种公共产品(比如一系列博客文章),为一个10000人社区中的每个成员提供价值。假设存在某种机制,社区成员可以通过某种方式让作者获得1美元的收益。除非社区成员极其无私,采取这一行动的成本必须远远低于1美元,否则支持作者的社区成员获得的福利将远远低于支持作者的成本,因此,这一制度将沦为没有人支持作者的群体悲剧,而必须有一种方法使作者以远低于1美元的成本赚取1美元。


但是现在假设还有一个假社区,由同一个富有的攻击者的10000个马甲账户组成。这个社区采取了所有与真实社区相同的行动,只是他们不支持作者,而是支持另一个虚假账户,这也是攻击者的马甲。


如果"真实社区"的成员有可能以远低于1美元的个人成本给作者1美元,攻击者有可能以远低于1美元的成本反复给自己1美元,从而耗尽系统的所有资金。如果没有正确的保障措施,任何能够帮助真正协调不足的各方进行协调的机制,也会帮助已经协调的各方过度协调,从系统中榨取钱财。


当目标不是资金,而是确定哪些内容应该最明显时,就会出现类似的挑战。你认为什么内容可以获得更多的美元支持?


一个造福成千上万的人、让每个人都能得到好处的合法高质量博客文章?


还是这个?


640?wx_fmt=png


或者这个?


640?wx_fmt=png


那些近期关注"in the real world"政治的人,可能还会指出另一种有利于高度中心化行为者的内容:敌对政府对社交媒体的操纵。归根结底,中心化制度和去中心化制度都面临着同样的根本问题,“思想市场”远非经济学家通常所说的“有效市场”,这导致即使在"和平时期"公共产品生产量也仍不足,但也容易受到主动攻击。这只是一个难题。


这也是为什么基于代币的投票系统(如币乎)比基于身份的投票系统(如 GitcoinCLR 或 /r/ethtrader 甜甜圈实验)有一个主要的真正优势:至少大量购买账户是没有好处的,因为不管代币在多少个账户之间分配,你所做的一切都与你拥有多少代币成比例。


然而,不依赖任何身份模式而只依赖代币机制,从根本上不能解决中心化利益超过试图支持公共产品的去中心化社区的问题;一个赋予分布式社区权力的无身份机制不能避免过度授权的富豪假装成分布式社区。


但是,不仅仅是身份问题,公共产品游戏也容易受到攻击,这也是贿赂。要知道为什么,再考虑一下上面的例子,但是其中的"假社区"不是攻击者的10001马甲,攻击者只有一个身份,接受资金的帐户,其他10000个帐户是真正的用户,但是收到每笔0.01美元贿赂的用户会采取可能导致攻击者额外获得1美元的行动。


如上所述,即使通过代表用户投票以换取方便的第三方监管服务,这些贿赂也可能被高度混淆,就"代币投票"的设计而言,混淆的贿赂甚至更容易:人们可以在市场上通过租代币并利用它们参与投票来实现这一点。


因此,虽然某些类型的游戏,特别是预测市场或基于保证金的游戏,可以使用共谋安全和无身份,但广义公共产品融资似乎是一类无法使用无身份勾结和安全方法的问题。



共谋抵抗与身份


另一种选择是正面攻击身份问题。如上所述,简单地采用更高安全性的中心化身份系统,如护照和其他政府身份证明,不会大规模发挥作用;在充分激励的背景下,这些系统非常不安全,而且很容易受到发证政府的攻击!相反,我们在这里讨论的这种"身份"是某种强有力的多因素声明,即通过一组消息识别的参与者实际上是一个独特的个体。这种网络身份的早期原型可以说是 HTC 区块链手机的 Social Key Recovery:


640?wx_fmt=png


基本思想是,你的私钥在最多五个可信联系人之间进行秘密共享,以这种方式在数学上确保其中三个可以恢复原始密钥,但两个或更少不能。这是一个"身份系统",你的五个朋友定义试图恢复帐户的那个人到底是不是你。


然而,它是一个特殊用途的身份识别系统,试图解决一个问题:个人账户安全性,这个问题不同于试图识别独特身份的问题。也就是说,个人之间相互声称的一般模型很可能被引导到某种更强大的身份模型中。如果需要,可以使用上述 futarchy 机制来扩充这些系统:如果有人声称某人是独一无二的人类,而其他人不同意,而且双方都愿意签订合同提起诉讼,系统可以召集一个判决小组来决定谁是对的。


但我们也想要另一个至关重要的财产:我们想要一个你不能令人信服地出租或出售的身份。显然,我们不能阻止人们达成交易:"你给我50美元,我就给你我的钥匙",但我们可以做的是增加交易可信度的难度,从而避免卖家轻易地欺骗买家,给买家一把实际上不起作用的钥匙。实现这一点的一种方法是建立一种机制,通过这种机制,密钥的所有者可以发送撤销密钥的交易并用所有者选择的另一个密钥替换它,所有这一切都是以一种无法证明的方式进行的。


也许解决这个问题最简单的方法要么是使用运行计算的可信方并仅发布结果,要么是通过多方计算去中心化相同的功能。这样的方法不会完全解决串通问题,一群朋友仍然可以聚在一起坐在同一张沙发上协调投票,但他们至少会将其降低到一个可控的程度,而不会导致这些体系彻底失败。


还有一个更进一步的问题:密钥的初始分配。如果一个用户在第三方保管服务中创建自己的身份,然后存储私人密钥,并利用它秘密进行投票,会出现什么情况?这将是一种隐秘的贿赂,即通过用户的投票权换取向用户提供便利的服务。更重要的是,如果系统是安全的,它成功地防止贿赂,使第三方主导的秘密投票也将无法察觉。解决这个问题的唯一方法似乎是面对面验证。


例如,可以有一个"发行者"生态系统,每个发行者发行带有私人密钥的智能卡,用户可以立即将其下载到智能手机上,并发送一条消息,用一个不向任何人透露的不同密钥替换前一个密钥。这些发行者可能在见面会或者某个会议上,或者是被某些投票机制认定值得信赖的个人。


建立可能的抗共谋机制的基础设施,包括强大的去中心化身份系统,是一项艰巨的挑战,但如果我们想释放这种机制的潜力,我们必须尽力尝试。如果我们想扩大类似投票机制的作用,包括如二次投票和二次融资等更先进的形式,我们别无选择,只能直面挑战,非常努力地尝试,并希望能够成功地为至少某些用例创建足够安全的东西。


免费技术公开课 | 倒计时3天

搞定区块链安全问题 |挑战高薪区块链工程师


640?wx_fmt=jpeg

推荐阅读:

  • 90%人都不知道, 有这样一个能让你在链上隐身, 抹掉痕迹的神器 | 干货

  • EOS现状: 72%应用涉赌被列为高危, 说好的诗和远方, 你竟沦落成了这样?

  • “这跟香蕉吃不吃?别墨迹!”来自密码极客的无奈与怒吼…

  • 吃了公司零食被指“偷吃”,外包怎么了?

  • 凉山火灾启示录:面对大火,AI 能做些什么?

  • 00后的AI开发者进阶之道:从入门到鏖战MIT编程大赛 | 人物志

  • 分布式架构系列: 负载均衡技术详解 | 技术头条

  • 曝光!月薪 5 万的程序员面试题:73% 人都做错,你敢试吗?


猛戳"阅读原文"看V神亲笔哟!


老铁在看了吗??

更多内容请见: python3案例和总结-专栏介绍和目录

文章目录

    • 一、环境准备
      • 1.1 安装依赖库
      • 1.2 连接 MongoDB
    • 二、CRUD 操作
      • 2.1 插入数据(Create)
        • 2.1.1 插入单条数据
        • 2.1.2 插入多条数据
      • 2.2 查询数据(Read)
        • 2.2.1 查询单条数据
        • 2.2.2 查询多条数据
        • 2.2.3 使用投影(Projection)
      • 2.3 更新数据(Update)
        • 2.3.1 更新单条数据
        • 2.3.2 更新多条数据
      • 2.4 删除数据(Delete)
        • 2.4.1 删除单条数据
        • 2.4.2 删除多条数据
    • 三、聚合操作
      • 3.1 聚合管道(Aggregation Pipeline)
        • 3.1.1 简单聚合
        • 3.1.2 多阶段聚合
      • 3.2 常用聚合操作符
    • 四、索引管理
      • 4.1 创建索引
      • 4.2 查看索引
      • 4.3 删除索引
    • 五、事务管理(MongoDB 4.0+)
      • 5.1 开启事务
    • 六、总结
      • 一. 插入数据案例
      • 二. 查询数据案例
      • 三. 更新数据案例
      • 四. 删除数据案例
      • 五. 聚合查询案例

基础篇(能解决工作中80%的问题):

  1. MongoDB的概述、应用场景、下载方式、连接方式和发展历史等

  2. MongoDB数据类型、重要概念以及shell常用指令

  3. MongoDB文档的各种增加、更新、删除操作总结

  4. MongoDB各种查询操作总结

  5. MongoDB对列的各种操

数据知道的成长之路
微信公众号
成长进阶、技术分享、资源获取
注:本文转载自blog.csdn.net的区块链大本营的文章"https://blog.csdn.net/Blockchain_lemon/article/details/89117453"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top