# 考虑的问题

By [leaf](https://paragraph.com/@leaf-6) · 2022-11-19

---

开发者必须考虑的问题：
-----------

开发者要思考第三方提供的利益相关者保护服务，设计出去中心化的保护方式。如果做不到，开发者必须知会利益相关者：这项技术缺乏他们习以为常的那种保护。开发者甚至可以因为用户风险太高而决定放弃开发应用。

用户必须考虑的问题：
----------

用户必须明白没有保护对于自己和自己代表的各方（提供咨询的客户、照顾的患者、要保护其权益的公民）造成的风险。必须坦陈这种风险，从服务对象处获得有效的知情同意。还应当寻求能够填补空白的非区块链解决方案。

*   缺乏隐私性
    

比特币和以太坊这两个最热门的区块链是公开的，以透明度和可及性著称，任何人都可以访问、添加和审计整个区块链。但如果透明度对用户隐私造成严重威胁，或许就需要私人区块链了。例如Nebula Genomics用私人区块链技术让患者“完全控制”自己的基因组数据。

区块链或许包含只应让部分用户看到的信息，这种情况可能需要综合方法，组合使用私人区块链和公开区块链。例如，电子健康记录既包含必须保持私密的高度敏感数据，又包含应当与疾病防控中心和医疗保险提供商等机构分享的信息。Hashed Health、Equideum Health和BurstIQ等综合区块链都可以在分享生物特征信息的同时，让患者对自己的数据有更大的控制权。

*   开发者必须考虑的问题：
    

开发者要仔细思考自己平衡透明性和隐私性的道德义务，然后决定手头的应用适合的是公开区块链、私人区块链还是综合模式。一个应当重视的要素是，区块链成员可能被确定身份，这可能造成怎样的道德后果。其他重要决定还包括确定哪些人可以在何种条件下访问哪些数据，以及可访问的时间范围等。

*   用户必须考虑的问题：
    

用户要了解透明性对自身业务和服务对象的影响。必须了解和应对钱包持有者可能被找到的风险（包括钱包持有者无意间泄露自己身份的情况）。

假设某金融服务公司的客户因为不愿公开捐款数额、政治倾向或从属关系，想匿名捐款给慈善机构或政党。该金融服务公司或许会推荐通过区块链打款，因为区块链会将客户身份匿名化。但公司也有义务知会客户，这个匿名转账记录是公开的，并讨论避免泄露身份的最佳方法。

零状态问题
-----

第一个区块，即“初始区块”包含的数据准确性受到质疑，会出现零状态问题。如果对数据的尽职调查未妥善执行，出了错误或出现恶意造假，就会发生这种状况。例如在一个供应链上用于追踪货物的区块链，第一区块错误地显示某辆卡车装满了来自某个矿井的铜，实际上这些铜来自另一产地。与卡车装载物相关的人员可能被欺骗或收买了，创建初始区块的人并不知情。

把这里的货物换成血腥钻石（未经加工的钻石原矿，用于为内战冲突筹集军火资金——译者注）或房地产，道德上的问题就凸现出来。如果政府建立了区块链作为保存土地登记处记录的数据库，在第一区块输入信息的人写错了土地所有者，就会引起严重的不公，相当于土地被偷走了。创建了保护隐私的安全加密货币的Zcash等一些组织，竭尽全力保证初始区块正确无误也是理所当然的。

*   开发者必须考虑的问题：
    

开发者必须仔细验证初始区块要包含的所有信息，不遗余力地确保这部分信息准确输入。还必须提醒用户注意零状态问题，并公布区块链可能含有错误信息这一事实，让用户评估潜在的风险，进行尽职调查。

*   用户必须考虑的问题：
    

区块链用户应当审查初始区块如何创建、数据源自何处。要格外留意记录在区块链上的信息是否曾经成为诈骗、贿赂和盗取的目标。要想一想，建立初始区块的组织是否可信，这个区块是否有可靠的第三方审查。

用户还需要明白，即使初始区块和后续区块的数据准确合法，也依然可能出问题。举例来说，卡车里装载的是来路正当的钻石，多次运转的路径都准确地记录在区块链上，但聪明的窃贼还是有可能在途中偷梁换柱，用假钻石换走真货。用户必须将零状态问题知会服务对象，公布对初始区块进行的尽职调查，并找到防止诈骗的保护方案（如果有的话）。

*   区块链治理
    

用来形容区块链技术的词语有一大堆：去中心化、无需许可、自治——这些词可能会让用户对治理做出预设，比如以为是自由主义者和无政府主义者的乐园，或者以为所有成员对于区块链运行方式有同等的发言权。但其实区块链治理非常复杂，涉及重大的道德、名誉、法律和财务影响。区块链上哪些人掌握权力、如何获得权力、有什么监督或没有监督、实行怎样的决策，全部由区块链创造者决定。下面两个例子很能说明问题——一个恶名昭彰，另一个正在发生。

*   第一个去中心化自治组织（DAO）在以太坊网络上运行。这是一种对冲基金，最初叫“The DAO”。成员各自拥有的表决权不同，取决于为基金投入了多少钱（以太币）。2016年DAO被黑，价值约6000万美元的以太币被盗，成员对于应对措施的想法截然不同，甚至连黑客行为是否构成盗窃都没有共识。一派认为坏人利用软件漏洞非法获取的钱财应当回收，归还合法所有者。另一派认为The DAO不应该再考虑改写欺诈交易，只需修复漏洞，让区块链继续运行。后者坚持“规则就是法律”和“区块链不可改变”，黑客的行动遵守规则，因此并不是伦理上不可接受的。最终前者获胜，以太坊实行“硬分叉”，将资金转到修复地址，让用户能够收回投资，从实质上改写了区块链的记录。
    
*   第二个例子是有关Juno治理的争议。Juno是另一个去中心化自治组织。2021年2月，Juno在其网络上“空投”，向社区成员发送免费代币以提升参与度。一个加密货币钱包持有者破解了这个系统，获得了在当时价值超过1.17亿美元的大量代币。2022年3月，社群提议移除这名“巨鲸”用户的大部分代币，将其持有的代币降到空投代币可领取的正常范围内。一个月后，提案以72%的投票率通过，他的代币只剩5万枚，其余都被废除。现在这名声称自己在用别人的钱投资的用户威胁要起诉Juno。
    

这几件事说明，必须十分谨慎地为区块链及其上运行的应用构建治理方式，做好尽职调查。

开发者必须考虑的问题：

开发者必须确定妥善的治理方法，特别是要注意治理结构可能给黑客和不法分子留下可乘之机。这不是一个机械式的问题。开发者的价值观要在区块链中明确表达和体现。比如DAO事件中以太坊开发者如何权衡，是修改区块链还是只修复漏洞，表明了两者观念的差异。Juno事件中投票赞成没收巨鲸用户代币的人和反对的人之间的分歧也与此类似。为了避免这样的伦理问题，开发者应当从一开始就建立治理指导原则。

权力和钱在系统中的分配和获取方式如果没有经过充分考虑，就会出现分歧。DAO事件中的黑客利用了软件漏洞，引起社群内部混乱：规则，有瑕疵的规则，究竟能不能当作法律。Juno事件里，动荡的部分原因在于对代币最初分发的方式没有考虑周全。开发者要明白，有投票权的人们各自有着截然不同的信念、价值观、理想和愿望。健全的治理是管理这些差异的最重要工具之一，而且如果开发者的价值观体现在监管区块链的基础设施、政策和流程里，应该可以避免重大伦理及财务风险。

用户必须考虑的问题：

用户必须思考，区块链创建者的价值观是否与自己所在的组织、自己的客户相符。必须确定自己与客户能够承担多大的波动、风险和失控。必须明确表达自己认为好的、负责任的治理标准，只使用达到标准的区块链。用户也许是在使用一个没有单一权威者的分散网络，但肯定在跟某一个政治实体打交道。

为区块链建立伦理风险框架

一切技术的伦理风险都跟用途一样多。例如AI控制的自动驾驶汽车，可能给行人造成生命危险。社交媒体应用有传播假消息的风险。几乎伴随着所有数据驱动型技术的伦理和名誉风险，在区块链上也存在。应用区块链的时候，高层领导者必须建立用于减轻风险的框架。应当仔细考虑各种情况：我们的组织必须极力避免哪些重大伦理问题？边缘状况如何处理？应当预料到伦理问题会出现，思考：我们有怎样的治理结构？需要怎样的监管？区块链技术是否会损害我们的组织价值和伦理价值，如果是，那么我们该如何减轻这种损害？应当安排怎样的保护措施，保护我们的利益相关者和品牌？所幸，这些问题很多已经在毗邻的AI伦理风险文献中得到了解答，我也写过一个关于执行AI伦理项目的指南。一切区块链项目都可以先从这类材料着手。

账户抽象 (Account Abstraction, AA) 自 2015 年以来就一直被讨论，并提出了几个不同版本的 EIP (EIP-101、EIP-86、EIP-859、EIP-2938、EIP-4337)。最近，账户抽象的研发似乎又成为了社区的讨论热点，应用层面上也陆续推出账户抽象的解决方案。那么账户抽象究竟是什么？大家想要通过 AA 来解决什么？本文讲述了以太坊账户类型、账户抽象的 EIP、以及账户抽象的潜在用例。

“智能合约”一词最早由美国计算机科学家尼克·萨博（NickSzabo）在1994年提出，其含义是以计算机代码形式记录合同当事人承诺履行的义务，并在约定条件下由代码实现强制履行。但是萨博只是提出了概念，没有说明如何落地实施。在1996年，伊恩·格里格（IanGrigg）提出“李嘉图合约”，既能够被人读取，也可以被程序解析，赋予了智能合约法律属性，成为后续智能合约探索的主要路线。而智能合约的有效实现需要满足以下几个特征。

*   一致性：就是智能合约需要与合约文本保持一致，并且不与现行法律发生冲突。可观测性：合约内容与其执行过程都应该是可观测的、透明的，合约各方能够通过用户界面去观察、记录、验证合约状态。一旦合约建立，就无法篡改。
    
*   可验证性：是智能合约所产生的结果应能够被验证，具有一定的容错性，代码运行符合合约，重复运行可以得到相同的结果，具备成为司法证据的条件。隐私性：智能合约的运行应该保障当事人身份信息与合约内容控制在“最小、必要”的知悉范围内，满足商业信息保密和个人隐私保护需求。
    
*   自强制性：这个特征既是智能合约的核心内涵，也是智能合约的主要价值所在，意思是在合同约定条件具备后，不依靠法律强制力的情况下，智能合约应该具有不被干扰、不可抵赖地履行义务的能力。
    
*   同时满足以上几个条件是比较困难的，因此在智能合约设想诞生后的十多年里，实践应用非常有限。后来，“以太坊”利用区块链去中介化、不可篡改等特性，实现了智能合约的运行。智能合约也与区块链在某种程度上被“绑定”在了一起，以至于人们认为只有区块链和Defi才能实现智能合约的价值。至今，“以太坊”的智能合约仅在加密资产、NFT、博彩、游戏等少数领域得到应用，并没有发挥对实体经济的促进作用。而且，由于缺乏可扩展的应用生态以及虚拟货币的投机属性等问题，应用也受到局限。实际上，智能合约概念的出现远早于区块链，智能合约的运行条件也并非只有区块链才可满足。
    
*   自比特币问世以来，私营部门推出各种所谓加密货币。据不完全统计，目前有影响力的加密货币已达1万余种，总市值超1.3万亿美元1。比特币等加密货币采用区块链和加密技术，宣称“去中心化”“完全匿名”，但缺乏价值支撑、价格波动剧烈、交易效率低下、能源消耗巨大等限制导致其难以在日常经济活动中发挥货币职能。同时，加密货币多被用于投机，存在威胁金融安全和社会稳定的潜在风险，并成为洗钱等非法经济活动的支付工具。
    
*   针对加密货币价格波动较大的缺陷，一些商业机构推出所谓“稳定币”，试图通过与主权货币或相关资产锚定来维持币值稳定。 有的商业机构计划推出全球性稳定币，将给国际货币体系、支付清算体系、货币政策、跨境资本流动管理。
    

推荐阅读下列文章，更好地理解账户抽象：

✦《账户抽象的动机、历史和分析》by 沙漏:

[https://mp.weixin.qq.com/s/ZGzw3VE-8KEQE5xu7Jw\_8A](https://mp.weixin.qq.com/s/ZGzw3VE-8KEQE5xu7Jw_8A)

✦《引介 | 概述以太坊账户抽象化》by EthFans:

[https://mp.weixin.qq.com/s/3VvjB2GXcH95j2Hr3zcsVg](https://mp.weixin.qq.com/s/3VvjB2GXcH95j2Hr3zcsVg)

✦《引介 | 账户抽象化（EIP-2938）：为什么 & 做了什么》by EthFans:

[https://mp.weixin.qq.com/s/CKtk6xKcXFVjyPKDxHBnhw](https://mp.weixin.qq.com/s/CKtk6xKcXFVjyPKDxHBnhw)

✦《论账户抽象(2022)》by 沙漏:

[https://mirror.xyz/0xbeC73ba0817403cd11C11bE891D671EA30443562/95LlE7sLCL4UTvL7rU3ZAXnBvlDbh7X-rm0QWkc43Us](https://mirror.xyz/0xbeC73ba0817403cd11C11bE891D671EA30443562/95LlE7sLCL4UTvL7rU3ZAXnBvlDbh7X-rm0QWkc43Us)

✦《EIP-4337》by Plancker DAO:

[https://www.notion.so/EIP-4337-0baad80755eb498c81d4651ccb527eb2](https://www.notion.so/EIP-4337-0baad80755eb498c81d4651ccb527eb2)

此外，普朗克社区和 ECN 社区合办的首期“他的名字叫小V”活动对 EIP4337合约钱包进行了分享。

计算机编程中的抽象和数据抽象指的是隐藏除了“对象”相关数据以外的所有数据的过程，目的是减少复杂性并提高有效性。它通过省略不必要细节的方式来表示对象。抽象是面向对象编程（object-oriented programming）的三大原理之一，它与封装和数据隐藏有关。这篇文章将为以下方面提供概览：

➤ 以太坊账户抽象

外部账户/用户账户

合约

➤ 为账户抽象提议的 EIP

EIP-86：事务来源和签名的抽象

EIP-2938：账户抽象

EIP-4337：通过入口点合约 (Entry Point Contract) 实现的账户抽象

➤ 用例

钱包

赞助交易混币

DeFi 协议

账户抽象

以太坊的账户抽象以创建单一账户类型为目标，这种账户将包含所有相关方面，而且没有任何无关的方面，让开发人员的工作更加轻松。

以太坊账户类型

目前，在以太坊区块链上有两种类型的账户：

图片

用户账户（EOA）

用户账户是给一般人使用的（人类）。

这些账户由对应公共地址的私钥所控制，比如用户的钱包账户。

这些账户又称为外部账户(EOA)，不需要 ETH 余额就可以在区块链上创建一个外部账户。但是，两个外部账户之间可以用 ETH 进行交易，也可以用 ERC 支持的其他代币。

外部账户 (钱包) 用于加密货币的发送和接受功能存在于以太坊虚拟机（EVM）的外部。

合约

合约是一组由代码控制的指令。

因为使用了网络储存，所以创建一份合约通常会产生相关成本。

用户可以操作多种功能，比如接收来自外部账户和合约账户的事务，以及向它们发送事务。

它还可以启动一个执行多种活动的代码，包括兑换代币或是创建一个新合约。

合约账户是存在于 EVM 的“智能合约”。

如果你发送 1 个 ETH 到由代码合约控制的账户，那就没有人可以再控制这个 ETH了。唯一可以转移这个 ETH 的是合约的执行，即代码本身。

两种账户类型都具有接收、保留和发送 ETH 和代币的潜能，还有与部署在网络上的其他智能合约进行通信的潜能。

账户抽象提案

以太坊账户抽象 (AA) 是对这两种账户形式的加强，让它们更具有可比性，还使外部账户的管理逻辑像合约账户一样通用。

它的目的是将合约账户的两种形式减为一种形式。单个账户形式的用途包括铸币和合约转账。开发者和用户将不再需要区别账户类型，因为事务将完全转移到 EVM 上并脱离区块链协议。

以太坊开发者一直在寻找实现的方法，但一直没有达到 Final 状态的提案。在以下部分，我们将概述迄今为止提议账户抽象的三个以太坊改进提案 (EIP)。

账户抽象提案的时间线

图片

2016：

Vitalik Buterin 为 Metropolis 提出最初的抽象变化想法。

其目的是准备一种账户安全抽象。在传统的模型中，ECDSA（椭圆曲线数字算法签名） 和默认的 nonce 方案是保护账户的唯一途径。在此模型中，所有账户都是合约账户，它可以支付 gas，且用户可以自由定义他们的安全模型。

2017：

Vitalik Buterin 提出了用于事务来源和签名的抽象的 EIP-86。

其目的是抽象出签名验证和 nonce 检查机制，允许用户建立账户合约来执行任意所需签名或 nonce 检查，而不是依赖于传统的方法。

2020：

Vitalik Buterin、Ansgar Dietrichs、Matt Garnett、Will Villanueva 和 Sam Wilson 提议了用于账户抽象的 EIP-2938。

目的在于允许合约成为可以支付费用和执行事务的“顶级”账户类型。

2021：

Vitalik Buterin、Yoav Weiss、Kristof Gazso、 Namra Patel 以及 Dror Tirosh 提议了通过入口点合约规范进行账户抽象的 EIP-4337。

其目的在于避免共识层协议变更，而是依靠更高层次基础设施。

EIP-86：事务来源和签名的抽象

根据其“摘要”，EIP-86 提议实现一系列改变，这些改变服务于“抽象出”签名验证和 nonce 检查的综合目的，允许用户创建用于执行任意所需签名/nonce 检查的“账户合约”，而不是依赖于使用目前这种硬编码到事务处理的机制。

传统模型：ECDSA 和默认的 nonce 方案是保护账户的唯一方式。

新模型：所有账户都是合约账户，它可以支付 gas，且用户可以自由定义他们的安全模型。

以 forwarding contract 为例，作者 Vitalik Buterin 解释道，这种合约会验证签名，如果签名是有效，它开始向矿工发起付款，然后使用给定的值和数据向指定地址发送调用指令。

➤ 优势

这个提案的主要优势如下：

多签钱包

传统方法：多签钱包中的每一笔交易都必须由所有的参与者进行同意。我们可以通过将所有参与者签名结合为单一批准事务对此进行简化，但这种方法还是会增加复杂性，因为所有参与者的账户都必须持有 ETH。

新方法：在这个 EIP 的帮助下，现在的合约可以持有ETH，直接提交包含所有签名的事务至合约上，合约将会支付这笔费用。

自定义密码学

传统方法：用户必须遵循 ECDSA，这是一种使用椭圆曲线的密码学。

新方法：用户可以升级至 ed25519 签名或用户自己希望升级的任何方案；不要求用户采用 ECDSA。

EIP-2938：账户抽象

根据 EIP-2938 的摘要，“账户抽象 (AA) 允许合约成为可以支付费用和执行事务的“顶级”账户。

传统模型：事务的有效性直接由 ECDSA 签名、一个简单的 nonce 值以及账户余额进行定义。

新模型：

1.  1.账户抽象通过执行随机的 EVM 字节码来扩展事务的有效性条件。
    
2.  2.为了表示有效性，引入了新的 EVM 操作码 PAYGAS，还设置了合约的 gas 价格和 gas 使用上限。
    
3.  3.账户抽象现已分为两类：
    

单租户 AA：这种类型旨在支持钱包或其他参与者很少的用例。

多租户 AA：这种类型旨在赋能像 Uniswap 这种有很多用户的应用。

共识变更

NONCE 操作码：添加一个 NONCE 操作码，推送事务的 nonce 字段。

PAYGAS 操作码：添加一个 PAYGAS 操作码，创建一个不可逆的检查点，确保 PAYGAS 之前的状态变更无法被逆转。

Sam Wilson 是这个提案的作者之一，它在这里解释了 AA 事务与其他传统事务的不同之处。

在 AA 事务中，不会有 gas 价格或是 gas 上限、没有发送的值和签名字段，并用 target 代替 to 。在多签合约中，这些字段在 calldata 中进行传递，并用合约进行处理。

如果一笔事务到达节点，事务的有效性会被检查。但是传统事务和 AA 事务进行检查的方式不同。

在传统事务中：节点检查：他们的 nonce 与账户的下一个 nonce 匹配、账户余额足以支付他们的价值以及最高的 gas 费用，并且他们的签名与账户的地址匹配。

在 AA 事务中：节点检查：他们的 nonce 与合约的下一个 nonce 完全匹配、合约的字节码以标准的前缀开始、验证逻辑在达到验证 gas 上限之前调用 PAYGAS 、没有禁止的操作码在 PAYGAS 之前被调用，以及合约余额足够支付 PAYGAS 设定的 gas 费。

区块广播时间是一个新区块到达网络大多数节点所需平均时间。

当具有 AA 事务的区块到来时，同一账户的所有待处理事务都将被删除。另一方面，传统事务会被重新验证并可能在收到新区块时发布。

EIP-4337：通过入口点合约实现的账户抽象

这是 Vitalik Buterin 和社区提出的最新议案。它作为一项 ERC 提议出来，而这个提案包括了避免共识层协议的变更，而依靠于更高层的基础设施。

它旨在完成下列目标：

账户抽象：允许用户使用包含随机验证逻辑的智能合约钱包作为他们的主要账户，而不是 EOA。

去中心化：允许打包交易捆的人参与包含账户抽象用户活动的过程。用户不需要知道任意活动者的直接通信地址，就可以处理发生在整个公共内存池中的任意活动。

无共识变更：为了更快的采用，这个提案避免了共识变更。

交易费支付：用 ERC-20 标准的代币支付交易费，使得开发者为其用户支付费用，以及类似于 EIP-3074 这样的赞助的交易提案所支持的用例。

这项提案怎么运作？

图片 图片来源：Infinitism

Vitalik Buterin 在这里很好地解释了这项提案的运作。

这是账户抽象最新的提案，现在还是 draft（起草）状态，等待被合并成为一项 EIP。对比常规的以太坊事务内存池，这项设计增添、维护以及牺牲了一些功能。

关键亮点

➤ 没有中心化的活动者、移除了用户端钱包设置复杂性，完全支持 EIP-1559、具有代替交费的能力，发送、移除了用户端钱包设置复杂性，完全支持 EIP-1559、具有代替交费的能力，发送一个比旧 UserOperation 具有更高溢价的新 UserOperation 来替换操作或保留了让它更快被打包的功能。

➤ 有一些增添的新优势：

验证逻辑的灵活性

足以让执行层达到量子安全

钱包可升级性

执行逻辑灵活性

➤ 然而，尽管协议已经尽了最大的努力，它还是会略微增加 DoS 攻击的可能性，它还会增加 gas 开销，并且一次只执行一个事务。

账户抽象用例

钱包

EOA 和合约钱包

EOA 钱包：由私钥保护的钱包。

合约钱包：使用智能合约在链上实现的钱包。

安全考虑：如果智能合约代码中存在 bug，合约钱包将面临来自易受攻击的智能合约的安全风险。这种风险可以通过由钱包提供商完成的安全测试和审查进行最小化。然而，在 EOA 钱包中，风险会完全由钱包用户承担，就像用户不小心丢失了私钥也由他们自己承担。

Argent, Dapper, Gnosis Safe 和 Monolith 都是智能合约钱包的案例。

EOA 的元交易

以太坊区块链用户需要一个持有 gas 的 EOA 与区块链网络进行连接，或依赖钱包供应商通过他们的中继或第三方中继网络（例如 Gas Station 网络）促进元交易。前者依赖于 (需要做 KYC 的) 中心化交易所购买的 ETH，试图通过将消费者的责任转移给中继者来尽量减少用户体验摩擦，费用由链上/链下钱包供应商和/或链下用户支付。

元交易是一种包含了带有执行交易意愿者所签署的数据信息的交易。

基于中继者的架构有一些缺点：

1.  1.可以将他们视作拥有抑制交易能力的中心化中介
    
2.  2.由于中继交易需要额外的 21,000 基本 gas 收费，及其公司在 gas 费基础上盈利的需要，他们在技术上/经济上的效率低下。
    
3.  3.对中继者专用协议权力的使用。
    

账户抽象允许智能合约钱包在不依赖中继网络的情况下，接受用户的无 gas 费的元交易并为他们支付 gas 费。在不失去以太坊去中心化保证的情况下，这种基础层的能力还会大大提升这种钱包的 UX（用户体验）。

赞助交易 (Sponsored Transactions)

Sponsored Transactions 囊括在 EIP-2711 (状态为已撤销) 中，这个 EIP 提议了一种机制：通过允许其他人代付 gas 费，可以让人们无需拥有任何 ETH 就可以进行交易。

一些用例：

1.  1.允许应用开发者代表用户支付费用。
    
2.  2.允许用户用 ERC-20 代币支付费用，合约则像中介收集 ERC-20 代币并以 ETH 的方式支付网络费用。
    

运作

这项提案可以通过出纳机制 (paymaster mechanism) 来支持这些用例。

对于用例 1：Paymaster 会验证赞助者的签名被纳入在 paymasterData 中，表明赞助已做好为 UserOperation 进行支付的准备。如果签名有效，Paymaster 就会接受这项指令，并从赞助者的份额中扣除 UserOperation 的费用。

对于用例 2：Paymaster 会检查 sender 的钱包是否有足够的 ERC-20 余额来支付这项 UserOperation。如果足够，Paymaster 会接受这项指令，并在索要 postOp 里的 ERC-20 代币之前支付 ETH 费用。

混币

一起探讨 Tornado Cash 混币机制的例子，以此理解我们如何在 DeFi 协议中使用 AA。

传统的 Tornado Cash 合约中的隐私问题

当用户进行提款时，Tornado Cash 为其提供隐私保护。他们可以证明这笔款来自一笔独一无二的存款，但除了用户之外没人知道这笔存款来自哪里。

用户通常不会在自己的提款地址里持有 ETH，如果用户使用他们的存款地址来支付 gas，这就会在存款地址和提款地址之间生成一条链上链接。

这个问题可以由第三方中继者解决，他们会验证 ZK-Snark 和 nullifier 仍然有效的状态，发布使用其 ETH 支付 gas 的交易，并从 Tornado Cash 合约中收集用户的返款。

账户抽象提供的解决方案：用户可以提交一个针对 TC 合约的 AA 事务，在这之后执行 ZK-SNARK 验证和 nullifier 检查，并直接快速地调用 PAYGAS。这可以让提款者直接用发送到他们提款地址的代币中支付 gas，无需中继者或连接其存款地址的链上链接。

DeFi 协议

一起探讨 DeFi 协议 Uniswap 的案例，了解我们可以在 DeFi 协议中如何使用 AA。

可以创建一种 Uniswap 的新版本，它允许直接进行针对 Uniswap 合约的交易。

目前，用户可以将代币提前存进 Uniswap；Uniswap 可以储存用户的余额和公钥，以便验证花费这些余额的事务。

AA 的目标在于通过禁止不符合高级标准的事务被打包到链上（例如，匹配订单的存在），从而提高 DeFi 协议的 gas 效率。

在传统模型中：正常的交易员会将他们的代币储存在 Uniswap 的合约之外。

在新模型中：套利交易员会将他们的代币存在 Uniswap 上，在外部市场发生变化的情况下，他们还可以转移执行套利的交易。最终，另一个套利交易员如果首先执行这笔交易时，这些没有获利的交易不会被打包上链。这让套利交易员避免了支付 gas 并减少了打包上链的垃圾交易数量。这将会增加区块链的可扩展性和市场效率，因为套利交易者更能做到纠正跨链交易在价格上的差异。

套利交易员指的是利用两个或更多市场之间的差价，由此同时低价购入并高价卖出的交易员。

原文链接：[https://etherworld.co/2021/10/06/an-overview-of-account-abstraction-in-ethereum-blockchain/](https://etherworld.co/2021/10/06/an-overview-of-account-abstraction-in-ethereum-blockchain/)

六、 以太坊未来的PoS 协议

Casper PoS是一种基于保证金的经济激励共识协议(security-deposit based economic consensus protocol)。协议中的节点，作为“锁定保证金的验证人(bonded validators)”，必须先缴纳保证金(这一步叫做锁定保证金，"bonding")才可以参与出块和共识形成。Casper共识协议通过对这些保证金的直接控制来约束验证人的行为。具体来说就是，如果一个验证人作出了任何Casper认为“非法”的事情，他的保证金将被罚没，出块和参与共识的权利也会被取消。保证金的引入解决了"nothing at stake（无代价、无抵押）"，也就是经典PoS协议中做坏事的代价很低的问题。现在有了代价，而且被客观证明做错事的验证人将会付出这个代价。

未来以太坊将使用Caspor PoS协议，这个协议不是用算力证明，而是用数字资产去证明自己的存在。即不需要花费金钱去买矿机挖矿，而是通过实体资产去买ETH ，让自己变成证明人（Validator）。

Plain text

七、 以太坊编程具有挑战性

编码并没有那么难的，特别是有其他软件编程基础的话。但是如果编程人员想成为以太坊的核心编程者去研究诸如安全性和扩展性的技术型问题，那这会相对困难一点，因为这毕竟是一个很新的技术，只有很少一部分正在理解这些挑战，但不是没有可能的。如果在座的人有想加入以太坊研究小组的话，我们也正在招人，当然也欢迎来做志愿者。除此之外，我们也是相当欢迎大家来以太坊其他的项目工作的。总而言之，我们以太坊社区有很多不同的方面，有些人进来做是以为他对这项技术感兴趣，另外有人想在其基础上做其他软件开发，有些人现在平台做研究以了解有什么东西可以在平台上开发。区块链技术即使已经出来9年了，但我还是觉得他还很年轻，发展还很快，还有很多不同的途径可以参与进来。

Plain text

八、 V神推荐学习方法

人感兴趣成为以太坊的编程者，推荐开始关注这两个网站：

[http://ethereum.org(这个网站有关于如何编写智能合约，如何上传，如何写APP的教程和指导)](http://ethereum.org\(%E8%BF%99%E4%B8%AA%E7%BD%91%E7%AB%99%E6%9C%89%E5%85%B3%E4%BA%8E%E5%A6%82%E4%BD%95%E7%BC%96%E5%86%99%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6%EF%BC%8C%E5%A6%82%E4%BD%95%E4%B8%8A%E4%BC%A0%EF%BC%8C%E5%A6%82%E4%BD%95%E5%86%99APP%E7%9A%84%E6%95%99%E7%A8%8B%E5%92%8C%E6%8C%87%E5%AF%BC\));

[http://github.com](http://github.com) (这个网站则有很多关于以太坊模型工作原理具体技术上的信息等更多信息)。

第一件：以太坊是什么？

以太坊是一个基于智能合约平台，在分散的互联网应用基础之上创建的平台，能对任何比特币/以太币的付款做编程，也就是说平台通过区域块链接可以对全世界不同国家的比特币以太币交易平台价格进行对比，一旦发现差价，即从价低的平台买入比特币和以太坊，转到价高的平台售出，从中牟取差价利润，这就是圈内逐渐兴起的一种新职业，俗称“搬砖”套利。

采用大型高端云计算，在全世界币种交易平台上做空或做多（低吸高抛），在0.28毫秒之内完成交易，以浮动交易点无上限做增值，确保每个投资者的分红增值。我们会员只需要把我们比特币，以太币托管给平台来进行交易，不需要任何操作，以太坊平台保证每位会员每月高达15%--25%的收益，只要数字货币存在，价格又波动，那么利差空间就永远存在，就永远有利可图高达15%--25%的收益，只要数字货币存在，价格又波动，那么利差空间就永远存在，就永远有利可图，大家都知道今年是数字货币发展的元年，所以平台的的造血功能和稳定性可想而知。

第二件：公司情况介绍？

公司介绍

公司成立筹备于2015年，项目全球启动于2016年。截止到目前，已经在45个国家获得顺利推广，平台我们拥有全球18种语言版本，我们客服团队达到百人，交易员达到千人团队。在很短的时间，我们成功地展示我们最好的一面，我们的团队是是年轻的，充满活力的专业人士，并且总是渴望达到目标。现在，我们逐渐掌握复利，通过优质的资产管理服务，我们获得巨大成功。

我们的平台是借助你的投资与复利进行交易。每月的平均收入为30％?50％，其中（15-25％）的一半计入投资者。加密数字货币市场允许人们获得更多的利润,但我们的策略主要是为了资金的安全。

在这里投资，你投资的是互联网区块链的未来！我们致力于Ethereum平台的全球化普及，推广其优质的能力和前景，以及资产管理计划的实施，并获得通过的加密貨幣交流交易活动获取经济利益。

第三件：创始人是谁？

以太坊创始人：Vitalik Buterin

一个誓言用区块链颠覆真实经济体系的俄罗斯小子，他打造的全新区块链平台，从科技大厂IBM、三星，到投资银行巴克莱、瑞士信贷，都争相借重他的专才。

出生：1994年

现职：区块链平台「以太坊」创办人兼首席科学家

学历：加拿大滑铁卢大学

获奖：奥林匹亚资讯奖铜牌、提尔奖学金、2014年世界科技奖

区块链释意：区块链是以密码学演算法和经济模型组成的分散式帐本。

他开发的加密货币，声势直逼比特币，他击败Facebook创始人MarkZuckerberg，获得2014年IT软件类世界技术奖。这个奖项表彰了Buterin设计发展比特币2.0平台Ethereum的突出成就。

Vitalik Buterin 传奇故事

1994年出生于俄罗斯17岁开始研究比特币、创《比特币杂志》

18岁获得奥林匹亚资讯奖铜牌

19岁自加拿大滑铁卢大学休学；该年11月，公布《以太坊白皮书》初版，开始募集开发者

20岁获得提尔奖学金、成立非营利组织以太坊基金会，在迈阿密的比特币会议公开发表以太坊计画，该年7月，启动以太坊计画众售募资，募得3.1万枚比特币（当时约合1840万美元）

21岁以太坊最初版本Frontier问世、以太币开始在世界各地交易所公开交易

22岁被《财星》杂志评选为2016年40岁以下的40大杰出人物

Vitalik Buterin 22岁黑客颠覆真实经济体系

今年九月《财星》（Fortune）杂志的斗大标题，也是全世界区块链专家们争论不休的热门话题。

话题围绕的主角，是年仅22岁的VitalikButerin。

他是炙手可热的区块链平台以太坊（Ethereum）创始人。在一般人刚刚踏出校园的青涩年纪，他却已经怀抱着改变世界的野心：用区块链，颠覆真实的经济体系。

现今，全世界有700多种以区块链技术为基础的加密货币，而以太方平台自2015年7月底上线开放，就横扫虚拟货币市场，截至2016年10月31日，以太币（Ether，维持以太坊平台运作的加密货币）的总市值约达9.44亿美元。

虽与比特币的111.8亿美元距离尚远，但其窜起势头之猛烈，仍被各界视为比特币的头号竞争对手。

Vitalik Buterin 共吸引逾亿美元投资

——以太坊与相关应用及其募资金额

以太坊公共区块链平台------共募资1840万美元

DigixDAO ------建立以太坊金本位金融平台，共募资550万美元

Augur -----去中心化的市场预测平台，采用以太坊智能合约为基础共募资532万美元

The DAO -----基于以太坊平台的创投组织，投资使用区块链技术的共享经济计画共募资1.32亿美元

第四件：项目发展怎么样？

回顾以太坊平台大事件：

2016年1月1日，以太坊项目国外发展，全球40多个国家启动，平台8种语言。

2016年8月1日，以太坊进入中国

2016年10月22日，菲律宾见面会

2016年10月23日，中国区第一家俱乐部

2016年11月4日，越南见面会2016年11月7日，俄罗斯的见面会

2016年11月13日，菲律宾慈善现场

2016年11月18号，俄罗斯俱乐部开业

2016年11月24日，越南第二次会议招商

2016年11月28日，马来西亚见面会

2016年12月4日，菲利宾慈善

2016年12月7号，俄罗斯在叶卡捷琳堡大俱乐部开幕

2016年12月17日，在莫斯科的大会议

2016年12月17日，在巴基斯坦球赛

2016年12月18日，‪深圳招商会议‬

2017年1月8日，马来西亚第二会议与俱乐部

2017年1月8号，第二家中国俱乐部在宁波开幕

2017年1月15日，中国区云南招商会

2017年1月20日，冬季促销获奖人员合照

2017年4月10日，以太坊飞速发展，全球会员数突破23万会员。

2017年5月21日，全球会员数突破30万，以太币突破价格1000元。以太坊成为继比特币之后，首个千元数字货币。加密数字货币历史已经改写！

2017年5月21日，以太坊贸易全球会员突破427000会员、并且每天倍增！以太坊价格飙升3000元人民币，企业以太坊联盟（EEA）新增86家成员机构！其中包含：德勤（Deloitte）、DTCC、Infosys、三菱UFJ金融集团、加拿大国家银行、美国道富银行、丰田、三星SDS、旧金山证券交易所、华尔街新兴技术中心、华尔街区块链联盟、江苏华信区块链研究院等。完整成员名单可访问：[https://entethalliance.org/enterprise-ethereum-alliance-release-05-19-2017.pdf](https://entethalliance.org/enterprise-ethereum-alliance-release-05-19-2017.pdf)

以太坊团队开发了以太坊贸易，Vitalik Buterin股东之一。以太坊的发展为以太坊贸易奠定了生生不息的基础，以太坊贸易团队向全世界推广普及以太坊，ETC,ETH在以太坊贸易推动下短短几月暴涨数倍

物以类聚、人以群分；某一群人，一定是有共同的价值观，或共同的目标、爱好等等；这就是共识。简单地说，就是群众的力量！共识达到一定的广泛性和高度，就会形成品牌；品牌的知名度和影响力，也是共识度的折射。品牌代表了共识、价值认知、信用、信任、信心等等。未来是独角兽的天下，也是品牌之争的时代。

整个链圈在泡沫吹起来后也不断走火入魔。 我看到的最有趣的现象是那些真正拥有技术的团队一点都不着急，可能和他们融资顺利有关，反而是不知道哪里冒出来的简历包装的无比牛逼但概念全是拼凑甚至逻辑不自洽的团队

从代码提交的活跃程度来看，以太坊无疑是开发最活跃的区块链。无论是 GitHub 上的提交数量，存储库中星号和分叉的数量，以及开发人员数量，都远超过比特币、Ripple、比特币现金、EOS，以及莱特币等其它所有加密货币。

以太坊是一个开源的区块链底层系统，有点类似区块链版本的安卓，提供 API 与接口让所有人都能在上面快速开发各种去中心化应用程式（Dapp）。尽管目前区块链在速度与效率上还比不上传统互联网，但根据链塔智库统计，截至 2018 年 9 月 30 日，以太坊平台收录 DApp 已来到 940 个，其中游戏类 DApp 共有 352 个，占比达 37.5%，竞猜类 DApp 占 20%，交易市场类占 5%，其他类占 37.5%。

简单来说，以太坊开发社区由外而内、由上层应用项目到底层架构，可以粗略分成三种开发者层次。

最外层是是搭建在以太坊底层架构之上的各种上层应用项目开发。这些开发者或许不直接参与底层架构的技术推进，但仍贡献了整个社区生态的繁荣。从红极一时的加密猫（Cryptokitties），到曾经单日吸金上亿元的“资金盘”游戏 Fomo 3D，都是架构在以太坊之上的 DApp。

第二层则是来自基金会以外、但同样投入底层架构的外围开发人员。由于以由于以太坊是一个完全开源的生态体系，所以世界各地的开发人员只要有兴趣，都可以用各种形式参与到底层开发工作当中。以太坊的链下扩容解决方案雷电网络（Raiden Network）即是一例。

最核心的是由创始人 V 神为首的“以太坊基金会”（The Ethereum Foundation），总部设立在新加坡，目前拥有约 30 余人的研究团队，分散在世界各地，专职投入底层核心架构的研究与开发。其中有许多都是跟 V 神一样的 90 后开发者。

为解决加密货币必须靠工作量证明机制（PoW），也就是挖矿，从而导致大量能源耗费的问题，以太坊社区近年积极研究如何转向权益证明机制（PoS）。而分片技术正是以太坊由 PoW 转向 PoS 机制的关键技术。

PoS 机制的一大难点在于如何产生出很好的随机数，以保证攻击者无法有效同时尝试很多随机数来达到攻击的目标。而这部分就必须仰赖由 Justin Drake 主导的可验证延迟函数（VDF）等密码学，以及特制 ASIC（专用芯片）等硬件研究。

过去币圈所谈的 ASIC 矿机，主要是针对 PoW 计算，目的是快速计算 PoW，抢得区块生成的优势。而如今在以太坊所谈的 ASIC 则是专门运算 VDF。Justin Drake 的目的就是想要设计出一种 ASIC，让攻击者无法很简单地靠性能超越、靠强大算力来破解其随机数。也就是说，整个网络被攻破的可能性可以降低到某个几乎不需要担心的程度。

以太坊另一个重点方向 Casper 的主要开发人员则是 Danny Ryan。Casper 是以太坊从工作量证明（PoW）过度到权益证明（PoS）机制的关键，被期待可以解决节点联合作恶等 PoS 机制的固有缺点，以顺利取代 PoW 机制。

为解决加密货币必须靠工作量证明机制（PoW），也就是挖矿，从而导致大量能源耗费的问题，以太坊社区近年积极研究如何转向权益证明机制（PoS）。而分片技术正是以太坊由 PoW 转向 PoS 机制的关键技术。

PoS 机制的一大难点在于如何产生出很好的随机数，以保证攻击者无法有效同时尝试很多随机数来达到攻击的目标。而这部分就必须仰赖由 Justin Drake 主导的可验证延迟函数（VDF）等密码学，以及特制 ASIC（专用芯片）等硬件研究。

过去币圈所谈的 ASIC 矿机，主要是针对 PoW 计算，目的是快速计算 PoW，抢得区块生成的优势。而如今在以太坊所谈的 ASIC 则是专门运算 VDF。Justin Drake 的目的就是想要设计出一种 ASIC，让攻击者无法很简单地靠性能超越、靠强大算力来破解其随机数。也就是说，整个网络被攻破的可能性可以降低到某个几乎不需要担心的程度。

以太坊另一个重点方向 Casper 的主要开发人员则是 Danny Ryan。Casper 是以太坊从工作量证明（PoW）过度到权益证明（PoS）机制的关键，被期待可以解决节点联合作恶等 PoS 机制的固有缺点，以顺利取代 PoW 机制

![](https://storage.googleapis.com/papyrus_images/e6a9f2aced5150a153797b159051a674b651dd8e7a020cdee35d6647d4eb4453.png)

目前以太坊在全球约有 14,000 多个节点，分布在世界各地。其中多数节点在美国与欧洲，单是美国节点便占了 43％。而亚洲地区则以中国为最多，占全球节点比重达 13％。

事实上，中国的以太坊社区从很早就开始发展，许多早期以太坊核心开发者都来自中国。但过去一段时间在区块链创业潮爆发下，大陆的以太坊早期成员大量流向各式其它项目，反而是台、港的以太坊核心开发社区生态持续越来越见蓬勃。

以台湾来说，成立 2 年多的台北以太坊社群，包含 V 神本人，以及莱特币创始人 Charlie Lee 等许多区块链界大咖，都曾经亲自参与。另外，目前以太坊基金会的全球开发者团队约有 30 多人，而其中就有 4、5 个人是来自台湾。

以太坊的开发工作可以简单分为 4 个流程，依序是研究理论、写成规格、实作雏形，到实作客户端。实际上软件程序的生产当然并没有那么简单，实际运作方式是比较复杂一点，不过在顺序上仍不脱先进行研究、写成规格，接着再做开发与实作。

以太坊基金会除了欢迎外围开发者义务贡献外，为号召更多程序员投入解决难度较大的问题，也设有奖励金。2018 年初迄今，就已经对 52 个项目发出合计高达 1,100 万美元的奖金。

其中，针对解决以太坊扩展性（scalability）与安全性（security）项目得到了最多奖金与项目的支持。以金额来看，有 61.3％的奖金投入了扩展性的项目，16.8％投入安全性项目。以项目数量来看，有 29.1％是扩展性项目，18.8％是安全性项目。

开发奖金申请流程分为几个步骤。第一步是提交项目申请。申请者必须具体呈现出对以太坊生态系的承诺、开发能力、开发焦点与进度规划。同时，也必须呈现出与其它项目的差异化所在。当然，项目必须支持开源。

![](https://storage.googleapis.com/papyrus_images/3333a7558945954c098153aa6161550a897ae0563001be501d3a60352195b42b.png)

Gavin Wood 在以太坊黄皮书里给出了非常明确的定义，虽然有一些内容肮脏地让人匪夷所思，但整体的结构还是很清楚的，看完黄皮书，你大概就知道以太坊不仅具有相当多的革命性创新，还具有可以不断自我强化的技术壁垒。如果你再看了vitalik的紫皮书，你就会明白人家早在你之前在未来的扩展性上有了非常深入的思考。

我下面简要地跟你们普及一下以太坊的技术亮点，至于那些号称要颠覆以太坊的项目是不是能做到，你们自行判断。

无敌的易用性

以太坊的接口设计谈不上优雅但非常简单，协议理解起来也非常容易，虽然从技术的角度上有很多槽点，但这些并不是为了实现DAPP的开发者最关心的。你想要做一条更好的链，你得先实现：好用的VM、一套支持开发的语言、参数序列化和反序列化脚本、存储数据结构模型、leveldb存储接口以及线路协议等等。

由于头部效应，未来会有大量的工具链是基于以太坊的，这就让公链上的颠覆变得更加困难。切换主链带来的重置成本非常高。

强大的EVM

比市面上现有的通用VM轻便的多，简单好用。没有一大堆的外部依赖。且具有临时存储数据并选择用stack或者memory的方式，而stack和memory的大小都不受限制。

我可以预测未来在EVM之上还会有大量的高级语言工具链将引入更多的如类型，抽象等能力扩展应用的边界，但对于EVM起到的作用，它已经够了。

从UTXO到Accounts的实现

这里先说个别的例子，百度当年由于搜索能力特别强，百度的贴吧用的不是论坛模式，而是关键词索引模式，也就是你进入一个论坛，你看到的一系列帖子是一个搜索的结果而非一个版块。 有时候出了问题时一楼不见了，二三楼都在，所以才有了“一楼喂熊”的说法。

UTXO一度在我眼里是比特币的神作，和我们惯性思维相悖，而是从区块链出发通过寻找所有可被用户签名的交易，去构建用户的账户余额体系。同时正因为UTXO队列的存在，比特币用打包和长短链比对很轻松地实现了一个防止双花的技巧。

以太坊用了账户体系，用一个state的概念简化了实现的难度以及节省空间，这个取舍其实是很难判断的，因为每笔交易要额外配置一个nonce防止重放攻击，另外扩展性和隐私保护也有一些槽点。

但不管怎么说，这个体系艰难地跑了很长时间，直到今天。在我看来，它让轻客户端的实现非常的简单，这对开发者是很有意义的。

Trie的设计，对轻客户端友好

以太坊每个区块头的三个指针代表了三个核心的树：状态、交易、收据。

交易树比较简单，收据是一个RLP编码的数据结构，除了索引变得更加简单，logbloom的使用也让轻客户端使用起来非常方便。

区块头的设计和轻客户端是密切相关的。绝大多数节点并不需要完全同步，但要求访问数据的便利性。

区块内的主要数据结构是MPT，这里面稀疏区域用KV节点。在状态和账户的树里，diverge nodes 深度为64，使用sha3(k)作为key，非常难以DOS攻击。

目前整个状态的访问查询可以变得更快，全节点的全同步也可以变得很快，但这不在我们今天讨论的范围内。

未来的机会

因为紫皮书带来了新的方向，我就不再介绍压缩算法或是uncle区块实现等，紫皮书引入了POS机制，更友好的轻客户端同步实现，计分和测了实现， 分片以及跨分片通信等，以太坊不仅在增长，它也有大量的实际业务可以时刻验证自己的设计，获取反馈，光是这一点，其他的通用公有链是不能吐槽几句以太坊扩展性就以为自己可以搞定的。

假设你参加了一个聚会，这个聚会参与的共有23个人，这23个人里面有两个人生日是同一天的概率是多少呢？

正确答案是约50.7%，是不是和你直觉所感受到的不一样？

这就是著名的生日悖论，我们很容易被容易看见的东西所蒙蔽，并陷入一个自己认为逻辑正确实际却掉进坑里的迷局。

为了证明这个概率的真实性，我写了两段程序，第二段是一个循环公式，直接计算365/365 \* 364/365 \* 363/365 \* …… \* 343/365，结果跟正确答案一样。第二段是穷举10万组每组23个生日的数据，跑下来重复的结果为49.8%，接近正确答案。

意犹未尽的我又跑了一段时间，当人数再多一些的时候，撞上生日的概率已经非常接近于1。也就是说一个标准国内中小学班级上有两个人生日相同的概率是非常非常高的。

对于可能的认知偏差，我一贯的做法都像这两段代码一样，先做理论上的分析，再通过实践数据来论证。

也有一些不仅直觉容易出现偏差，当下也论证不了的东西。就像我的第一篇关于比特币的微博互动发生在比特币20元的时候，我对于以太坊的memory hard如此蹩脚展开抨击的那篇文章发生在ETH 0.8美金一枚的时候。那时候不仅直觉告诉你这个数字游戏很可能归零，也没有人能意料或者推演到后来一发不可收拾的局面。

Ruffchain诞生的第一天就饱受争议。甚至这个赛道本身，也是充满了各式各样极端化的解读。我们来不及去解释，也没有必要去解释， 如果我是一个评论家，我可以每天都找出各式各样的信息解读看到的一切并作出一些不负责任的预测。然而我对于Ruffchain的设想并不复杂，我的精力和有限的能力也只容许我做到这些：

1.  1.做一条好用的公链，它会是一个交易和合约分离的，而不是像ETH那样用合约来实现交易，也不是像BCH那样用一条交易来打包一条合约。
    
2.  2.根据接入一些适合的行业客户的业务数据，形成一站式的解决方案。这样任何人未来都可以以绝对低廉的成本使用区块链服务。
    

我曾经多次吐槽过以太坊的技术，但它带来的低成本低门槛的合约，直到现在还一直保持着智能合约头把交椅。

这次的开发整整经历了近两年的时间，无数次的迭代，对潜在的区块大小增长的推演和优化，对p2p网络协议的反复调整（未来还要再做一次大升级），工作量比我预计的大地多，在这个过程中我发现了整个行业比我预想地要早期的多，很多基础技术并没有很好地被沉淀下来，我们到现在都没一个随机读写高性能的分布式数据库，我们也没有足够好用的p2p网络支持未来各式各样的区块链业务，市场上除了几条大主链的技术迭代升级外，都没有像样的可工程化的方案，众多白皮书中的技术创新在当前的基础设施下是完全不可用的。

但这也是一个机会，一旦这些技术成熟，我们可见的应用场景也会丰富起来。就像人工智能最火的时候是1950年代，但直到后来GPU阵列等硬件加速能力起来，再到FPGA到ASIC，我们才有能力将人工智能真正应用到日常的场景中。

关于行业的接入，幸运的是，我们的目标客户给了我们非常多的支持，甘愿当我们的白老鼠，提供了丰富的测试业务数据，并鼓励我们把技术做好，这代表区块链并非伪需求，这些客户需要解决多方操作数据的信任关系，并承认这是他们业务流中间成本极高的部分。

然而这部分又有一些别的挑战：我们需要将一些潜在客户的应用上链并提供技术支持服务，这部分和BAT等公司一样，需要做主动备案，备案的要求和内容非常繁多，比如内容的监管，由于区块链数据是不可篡改的，一旦产生了不符合应用所在地法律法规的内容并被打包，如何回滚，如何清理， 这部分比起技术开发来说，更加消耗精力，也是团队始料未及的工作。

主网上线后会进入一个监管试运营的阶段，该阶段的区块数据在试运营后会全部清空，而其中任何未经过滤的违反各地法律法规的区块信息，将会被节点标记并强制回滚。

1.  1.新的p2p网络协议，更好的存储、检索上的优化，性能更强，可支持一些对网络要求更高的业务场景。
    
2.  2.我们需要社区力量的支持，完善一个丰富的开放技术生态，希望在未来的一年可以拥有更加丰富的应用库，中间件库，业务模块，以及各类优化和安全模块。对此Ruffchain基金会将会提供丰厚的奖励支持。
    
3.  3.更多的业务合作，应用会带来更多技术上的反馈，以业务落地为基础是主网未来技术演进的主要方合规性依旧是个挑战，一旦涉及到资产数据上链，安全和隐私的工作量必不可少，如果涉及到金融数据，工作量还要大一个量级。
    
4.  5.主网冷启动和后续的发展都社区用户的支持，我们诞生于牛市之末，熊市之初，牛市都是“信仰”，熊市都是"骗局"，运营的压力一直很大，未来我会将更多的工作中心继续放在布道和商务拓展上，近期的AMA，节点计划等活动会陆续推出。
    

叉来完成。在没有一个EVM以及大的状态树的情况下，为了保持BCH本身的中心化同时又能支持合约，omni协议就只能利用现有数据结构中的op-return字段做文章，尽管在BTC主网上有了USDT的实现，但它离合约还很远。

首先，Op-return依然是被包含在交易里的，也就是说一段合约的执行需要一笔实实在在的交易来承载，由于每一笔交易都需要签名，一旦改了字段签名就失效，所以正常的BCH交易里是无法加载外部信息进op-return字段。这样导致会出现大量的新增BCH交易作为载体，这些交易本身可能是没有意义的，网络压力会很大，并且被打包除了支付官方燃料WHC外还需要支付BCH。

其次，没有EVM的存在，纯文本的账本解释压力是很大的，错了也需要被解释。 一个op-return字段只要不为空，就必须每次都要被外挂系统解释，即便它是不合法的。 如果在外部加一个跳过的逻辑，则又属于一种中心化的干预。

平常写错了代码可以不执行，退回来重做，而op-return的任何输入都是默认合法的，一旦开始支持大量的token，状况非常堪忧。

根据虫洞的发展计划，它的第一步是将omni移植过来，第二阶段要做个去中心化协议，类似0x，第三阶段是支持ERC721这样的非同质化代币需求。而第四阶段是要引用plasma这样添加链外的结算机制。

但在我看来这个路径的设计是很奇怪的。如果顺着我前面的分析来推演应该是这样的：主链能支持的也就是利用一个字段去拓展出一个账本，还最好不要制造大量的交易，所以虫洞一旦要计划支撑dapp的第一天就应该有一个layer 2的体系来解释执行一定量合约，最后创建一笔BCH上的交易来打包提交。WHC的计量单位应该是gas，而这个gas可以通过对网络资源的评估计算出每一个区块所包含的合理的合约执行量（数量趋于稳定）。

正确的顺序应该是： 1. 移植omni。 2. 在一笔交易中实现BCH和token之间的去中心化结算。（这里有个坑，由于eth不是erc20标准的代币，0x这样的协议还需要一个eth代币来辅助，bch也是如此。）3. 建立一个独立的扩展层负责打包WHC合约再集中提交。 4. 等别的新技术起来了，追上去。

给火币公链提建议的时候，第一段就是写其战略定位，也就是动机是什么，为什么要做这个，然后再去订技术和运营上的目标。

BCH网络上支持合约的目的是什么？ BCH本身的宿命又是什么？ 比特币的白皮书讲述的是一个点对点的支付系统，而非一个支持众多分布式应用的超级大账本加操作系统。

虫洞的历史使命不是要干死以太坊，战翻eos。 支付宝也不是炒作系统，支付宝是银行。

在系统性能方面，CDN在网络性能优化方面具有重要的地位。本来想学习一下P2PCDN的相关原理和技术，没想到P2P本身的学习就花去了较长的时间，P2P与我原来的认知有着较多的不同。

虽然 P2P 系统是最近才显得火爆，但是 P2P 系统的技术先驱已经存在很长时间了。早期的示例包括 NNTP 和 SMTP，以及 Internet 路由系统，它们大多是去中心化的，依赖于参与者的资源贡献。然而，这些系统中的节点是有组织的，协议也不是自组织的。

曾经的那些鼓舞人心的P2P系统是怎样的呢？

1.  1.P2P 的往事如烟 点对点(P2P)计算并不是什么新鲜的技术，乘坐时光机，追溯到“互联网泡沫”前的1999年，3个系统的发布而引发了第一次P2P热潮，它们是：
    

Napster 音乐共享系统

Freenet 匿名数据存储

SETI@home 志愿者为基础的科学计算项目。

Napster 允许用户通过互联网直接从对方的电脑上下载音乐。由于带宽密集型的音乐下载直接发生在用户的电脑之间，Napster 节约了巨大的运营成本，能够向数百万用户提供免费服务。虽然最终的法律问题决定了Napster 的命运，但合作共享资源的想法启发了许多其他的应用程序。

Freenet旨在将分布式存储与内容分发、抗审查和匿名结合起来。它仍然活着，但背后可能要涉及“暗网”，不便多提。而SETI@home 是全球规模最大、影响范围最广的分布式计算项目。SETI(搜寻地外文明)是一个寻找地球以外智慧生命的科学实验，使用射电望远镜来监听太空中的窄带无线电讯号，因为有些信号是不可能自然产生的，如果能探测到这样的信号就可以证明地外文明的存在。

1999年5月17日，SETI@home开始正式运行，吸引了全球海量志愿者参与。SETI@home项目总部位于加州大学伯克利分校的空间科学实验室，而记录和分析的信号资料来自波多黎各的阿雷西博天文台，那里有曾经世界上最大的单面口径射电望远镜，直径350米，现在这个记录属于我国贵州的FAST天眼工程。去年3月31日SETI@home官方宣布进入休眠期(hibernation)，分布在全球的志愿者计算资源将不再接收新的数据包。项目所需分析的数据已经全部处理完毕，接下来研究人员要全力进行结果的后端分析，并发表项目研究成果。在某种程度上，SETI@home或许是一个最成功的P2P项目。

二十多年过去了，P2P 技术已经远远超出了音乐共享、匿名数据存储和科学计算的范畴，已经在开源社区和行业中得到了越来越广泛的应用，尤其skype的成功，和P2P在IPFS及FIlecoin区块链领域的大放异彩，P2P技术再次受到了极大的研究关注。

1.  1.什么是P2P？ P2P 系统到底是什么意思呢？
    

P2P网络，即对等计算机网络，是一种在对等者（Peer）之间分配任务和工作负载的分布式应用架构，是对等计算模型在应用层形成的一种组网或网络形式。——百度百科

然而， 实际上P2P 没有统一而完整的定义。

2.1 P2P 的特点 一般地，P2P 系统是一个的分布式系统，具有3个典型的特征：去中心化，自组织和多管理域。

2.1.1 高度去中心化 对等节点实现了client/server的功能，系统的大部分状态和任务都在对等节点之间动态分配，几乎没有具有集中状态的专用节点。因此，操作系统所需的大部分计算、带宽和存储都由参与节点提供。

2.1.2 自组织 一旦一个节点被引入到系统中(通过提供参与节点的 IP 地址和一些必要的关键数据) ，维护系统几乎不需要手动配置。

2.1.3 多个管理域 参与的节点不是由单个组织/机构拥有和控制的。一般来说，每个节点由一个自愿加入系统的独立个体拥有和操作。

2.2 P2P 的系统分类 根据中心化组件存在与否，可以对 P2P 系统的体系结构进行大致的分类。

2.2.1 半中心化的 P2P 系统 这样的系统中有一个专用的控制器节点，用于维护节点的集合并控制系统。半中心化的 P2P 系统相对简单，可以通过控制器由单个组织管理。比如，BitTorrent 的早期版本有一个“跟踪器”，这个节点来跟踪一组节点是否上传和下载相同的内容，并定期为节点提供一组可以连接的节点; BOINC 志愿计算平台有一个网站来维护会员资格和分配计算任务; Skype 有一个中心网站来提供登录、账户管理和支付服务。

半中心化的 P2P 系统也可以提供有机的增长和丰富的资源。但是，不一定提供可伸缩性和弹性，因为控制器形成了一个潜在的瓶颈和单点故障。

2.2.2 去中心化的 P2P 系统 在去中心化P2P 系统中，没有影响系统运行的专用节点，没有固有的瓶颈，可以很好地进行规模扩展，对故障、攻击和法律挑战有着潜在的弹性。

在一些去中心化的 P2P 系统中，资源丰富的节点、高可用性和公共可路由的 IP 地址充当超级节点。这些超级节点还有额外的职责，例如充当防火墙后节点的交汇点、存储状态或保持可用内容的索引。超级节点可以提高 P2P 系统的效率，但也可能增加其对节点故障的脆弱性。

图片

1.  1.P2P 的技术优劣 由于这些技术特点的存在，使得P2P 技术有了先天的优势:
    

3.1 部署门槛低 由于 P2P 系统很少或根本不需要专用的基础设施，因此与CS系统相比，部署 P2P 服务所需的前期投资往往很低。

3.2 有机增长 由于资源由参与节点提供，P2P 系统几乎可以任意增长，而不需要对现有基础设施进行”升级”，例如，用更强大的硬件替换服务器。

3.3 对故障和攻击的适应能力 P2P 系统对故障的适应能力很强，因为对系统运行至关重要的节点很少。为了攻击或关闭 P2P 系统，攻击者必须同时攻击大部分节点。

3.4 资源的丰富性和多样性 流行的 P2P 系统拥有丰富的资源，很少有组织能够单独承担。这些资源具有不同的硬件、软件架构、网络、电力供应、地理位置和管辖权。这种多样性降低了级联故障、攻击甚至审查制度的脆弱性。

事物都有其两面性，P2P 也是如此。例如，P2P 的去中心化能力可以帮助公民避免审查; 同时，它也可能被滥用，来试图躲避执法，进行犯罪活动。P2P系统的可扩展性可用于在全球范围内有效地传播，但也可用于版权内容的非法传播。因此，P2P 技术面临着诸多挑战，引起了对其可管理性、安全性和执法性的关注。此外，P2P 应用正在影响互联网服务提供商所提供的流量，并有可能扰乱当前的互联网经济。

1.  1.P2P 系统是如何工作的？ P2P 系统中最重要的技术是构建一个网络覆盖层，其路由能力能够在高节点流失的情况下很好地工作。针对 P2P 场景，更为具体的问题是应用状态的维护、应用级节点的协调和内容分发。
    

4.1 覆盖层网络的维护 P2P 系统维护了一个覆盖网络，可以认为是一个有向图G = (N,E)，其中 N 是计算机的集合，E是一组覆盖链路。通过 E 中的链路连接的一对节点知道彼此的 IP 地址，并通过互联网直接进行通信。

在半中心化的 P2P 系统中，新节点通过连接到位于已知域名或 IP 地址的控制器来加入覆盖层网络。因此，覆盖层最初有一个星形的拓扑结构，控制器在中心。在控制器引入的参与者之间可以动态地形成覆盖层链接。

在去中心化的P2P系统中，新加入的节点需要通过外部通道获得已经参与系统的某个节点的网络地址(例如 IP 地址和端口号)。例如，可以从 Web 站点获取这种引导节点的地址，新节点联系引导节点来加入覆盖网络。

4.1.1 非结构化的覆盖层网络 在非结构化的 P2P 系统中，不同节点之间的链路没有约束，因此覆盖图没有任何特定的结构。在一个典型的非结构化 P2P 系统中，一个新加入的节点通过重复执行一个从引导节点开始的随机遍历并请求一个到该遍历终止节点的链接来形成它的初始链接。通过执行更多的随机遍历，节点获得额外的链接。

通常，选择最小的节点度来维护覆盖图中的连通性，维护最大的节点度是为了绑定与维护覆盖链接相关的开销。

4.1.2 结构化的覆盖层网络 在结构化的覆盖层网络中，每个节点在一个数字空间中有唯一的标识符，标识符使它们在该空间中均匀分布。覆盖层网络图有一个特定的结构：节点的标识符决定了它在该拓扑结构中的位置，并限制了它的覆盖链接集。

分配节点时也使用了密钥。密钥空间在节点间进行划分，每个密钥通过一个简单的函数准确地映射到当前的某个覆盖层节点之一。例如，一个密钥可以被映射到其标识符是密钥空间中最接近的逆时针方向节点。在这种技术中，密钥空间被认为是循环的。

覆盖层网络的结构化是为了提高基于密钥路由的转发效率。基于密钥的转发方案实现了KBR (n0，k)，即给定一个起始节点 n0和一个密钥 k，KBR 生成一条路径，即一系列覆盖节点，它们的终点是密钥k 所代表的节点。一般来说，它们在每个节点所需的路由状态数量和传递消息所需的转发节点数量之间取得了平衡。典型的实现需要每个节点的状态量和若干个转发跃点，二者在网络的大小上都是对数关系。

由此可见，在半中心化的 P2P 系统中，控制器有利于覆盖层的形成。在其他 P2P 系统中，覆盖层网络的维护是完全去中心化的。与非结构化覆盖网络相比，结构化覆盖网络需要投入更多的资源来维护特定的图结构。作为回报，结构化覆盖能够有效地执行基于密钥的转发方法。

非结构化覆盖和结构化覆盖之间的选择取决于基于密钥的转发方法对应用的有用程度，也取决于覆盖成员的更新频率。基于密钥的转送方法可以可靠而有效地定位唯一标识的数据项并维护成员节点之间的生成树。然而，在高流失环境中维护一个结构化的覆盖需要相关的成本，如果应用程序不需要基于密钥的转发方法提供的功能，就要避免这些成本。

当然，一些 P2P 系统同时使用了结构化和非结构化覆盖，例如 控制器采用结构化的覆盖，而内容分发可以采用非结构化的覆盖。

4.2 分布式的网络状态 大多数 P2P 系统维护一些特定于应用的分布式网络状态。一般地，认为网络状态是具有唯一键的对象集合。分布式网络状态的维护，就是这些对象的存储和定位机制。

4.2.1 半中心化系统中的网络状态 在半中心化的 P2P 系统中，状态对象通常存储在插入对象的节点，以及随后下载对象的任何节点。控制器节点维护关于系统中存在哪些对象、它们的键、名称和其他属性以及当前存储这些对象的节点信息。查询一个给定的关键字，或者一组与对象名称或属性匹配的关键字，被定向到控制器，控制器通过一组节点进行响应，从这些节点可以下载对应的状态对象。

4.2.2 非结构化系统中的网络状态 与半中心化的系统一样，内容通常存储在将内容引入系统的节点上，并在其他下载器上进行复制。为了方便查找内容，一些系统将插入对象的副本(或指针)放在其他节点上，例如，沿着覆盖图中随机遍历的路径。

为了定位对象，查询节点通常会通过覆盖层网络发送请求消息。查询可以通过键、元数据或关键字指定所需的对象。接收查询并具有匹配对象(或指向匹配对象的指针)的节点响应查询节点。在这种情况下，节点 i 将一个对象插入到系统中并保存其唯一的副本，但是沿着以节点 r 结尾的随机遍历在所有节点上插入指向该对象的指针。当节点 s 尝试定位对象时，它会发送大量的查询，首先到达距离为1个hop的所有节点，然后到达距离为2hop的所有节点。在最后一步中，查询到达节点 r，它返回 i 的地址。

通常，洪泛的范围仅限于用所需的消息数量召回系统中存在的对象被找到的概率。一种替代洪泛的方法是查询节点沿着覆盖层进行随机遍历发送请求消息。

4.2.3 结构化覆盖网络中的状态 在结构化覆盖层网络中，分布式状态使用分布式散列表(DHT)来维护。DHT 具有与传统哈希表相同的 put/get 接口。通过一个简单的函数将插入的键/值对分布在结构化覆盖层网络的节点之间。

给定了这个副本放置策略，DHT 的 put 和 get 操作可以直接使用 KBR 原语实现。为了插入(放置)一个键/值对，我们使用 KBR 原语来确定密钥 k 的负责节点，并将该键值对存储在该节点上，然后该节点将其传播到 k 的副本集合中。负责的节点可以响应提取请求或将其转发到副本集中的一个节点。

当 DHT 波动时，密钥到节点的映射发生变化，必须在节点之间移动键值对。为了最小化所需的网络通信，大数据结构通常不会直接插入到 DHT 中; 相反，在密钥对应的value中插入一个间接指针，它指向实际存储值的节点。

由此可见，非结构化的覆盖层网络在定位广泛复制的对象方面非常有效，而基于 KBR 技术可以可靠和有效地定位系统中存在的任何对象，不管它是否稀疏。换句话说，非结构化覆盖网网络善于找到普通存在的东西，而结构化覆盖网络善于大海捞针。非结构化网络支持任意的基于关键字的查询，而基于KBR的系统直接支持基于关键字的查询。

4.3 分布式协调 通常，P2P 应用中的一组节点必须在没有集中控制的情况下协调它们的操作。例如，复制特定对象的节点集必须相互通知对象的更新。再例如，对接收特定的流内容感兴趣的节点而言，可能希望在当前接收该信道的节点中找到附近并具有可用的上游网络带宽的节点。

一般地，有两个不同的方法来解决这个问题：自复制技术，其中信息通过系统进行类似病毒的传播

基于树的技术，其中分布树形成传播信息。

这里，只需关注去中心化的P2P系统即可，因为在半中心化的系统中，控制器节点可以完成协调。

4.3.1 非结构化覆盖网络中的协调 在非结构化覆盖网络中，协调通常依赖于自复制技术。在这些协议中，信息传播的方式类似于感染在人群中传播的方式: 产生信息的节点将信息发送给覆盖层的邻居节点，邻居节点将信息再发送给它的邻居节点，以此类推。这种传播方法非常简单和有效，但信息传播的速度与管理费用之间存在着权衡。此外，如果一个给定的信息片段只对节点子集感兴趣，并且这些节点广泛分散在覆盖层网络中，那么这些信息最终被不必要地传递给所有节点。

协调一组节点之间动作的一种更有效方法是在节点之间形成一个生成树。生成树嵌入到覆盖层的网络图中，使用分布式算法完成生成树。然后，可以使用该树向所有成员发送多播消息，或计算组内状态变量的摘要(例如总和、平均值、最小值或最大值)。然而，这种增加的协调效率必须与在非结构覆盖网络中维护生成树的开销相平衡。

4.3.2 结构化覆盖网络中的协调 在结构化的覆盖网络中，使用 KBR 原语可以非常有效地形成和维护覆盖节点群中的生成树，使树成为覆盖节点中首选的协调方法。要加入生成树，节点使用 KBR 路由到与组关联的唯一密钥。来自所有组成员的路径的结果联合形成一个生成树，根在负责组的密钥节点上。然后，使用这个 KBR 树聚合和传播与组相关的状态，并实现组播和选播。

因为一个连接消息一旦被树截获就会终止，所以组成员关系的维护是去中心化的，也就是说，一个节点的到达或离开只由树中节点的父节点和子节点记录。因此，这种技术可以扩展到大量的群组，以及大型高动态的群组。

由此可见，通常用于协调非结构化覆盖层网络的的自复制技术简单而且对覆盖层的混乱具有鲁棒性，但是它们可能不会扩展到大型的覆盖层或大量的群组对象，而且信息往往传播缓慢。生成树可以提高协调效率，但在非结构化覆盖中维护生成树会增加成本。维护结构化覆盖层的额外开销与覆盖层成员总数的波动成正比。一旦支付了这些开销，KBR 树就能够在覆盖图中潜在的大量、大型和动态子群之间实现高效和快速的协调。

4.4 内容发布 P2P 系统中的另一个常见任务是向一组感兴趣的节点分发批量数据或流内容。P2P 内容分发技术可以分为两种：

基于树的技术，是通过结构化覆盖层或嵌入非结构化覆盖层形成固定的分发树

群集协议，是对于路由内容没有固定树的概念，通常形成非结构化覆盖层

关于分发树的相关技术比较常见，可以重点看一下群集协议——swarm protocol。

在群集协议中，内容被划分为一系列的块，每个块对所有覆盖节点进行单独的多播，使不同的块沿不同的路径分布。一个群集协议的基本操作很简单: 每一个群集间隔(例如，一秒钟) ，覆盖层的邻居交换信息，指示他们有哪些内容块可用。在流内容分发中，通常只有最近发布的块是有趣的。每个节点交叉从其邻居那里收到的可用性信息，然后从拥有它的邻居那里请求一个它尚未拥有的块。

重要的是，块在对等点之间得到很好的分配，以确保邻近的对等点可以交换块，并且当一些对等点离开系统时，块仍然可用。为了实现这样的分布，系统可以随机选择下载块和请求邻居的块。在一种可能的策略中，一个节点选择下载其覆盖邻居所持有的所有块中最稀有的块。

1.  1.P2P 的典型应用 虽然最早的 P2P 系统主要是文件共享的应用，但目前 P2P 技术的应用更加多样化，包括数据、软件、媒体内容的分发，以及互联网电话和科学计算。此外，越来越多的商业服务和产品依赖于 P2P 技术。
    

5.1 文件的分发与共享 比较流行一点的 P2P 文件共享是eDonkey和BitTorrent，如果没有听说过，只能说明自己太年轻了。这两种类型的系统都可以被看作是 Napster 的继承者。在 Napster 中，用户与其他参与者共享他们磁盘文件的子集，这些参与者可以在文件名中搜索关键字。然后，通过共享查询结果的对等实体，用户将直接下载查询结果中的任何文件。在BitTorrent 中，为了减少大文件的下载时间，BitTorrent 设计了大量的用户可以快速有效地下载大容量数据。BitTorrent 不包括搜索组件，用户下载不同的内容时彼此并不知情，因为它们形成了单独的网络。该协议被广泛用于数据、软件或媒体内容的传播。

5.2 流媒体 流媒体分发和 IPTV是一种日益流行的 P2P 应用。与文件共享一样，基本的思想同样是利用客户端的带宽，以降低带宽成本。流媒体分发比下载大容量数据有更严格的时间要求，因为数据必须在播放期限之前交付才有用，示例系统包括 PPLive17和 Cool Streaming等。

5.3 电话通信 P2P 技术的另一个主要用途是进行音频和视频通话，这正是Skype 应用取得成功的原因。利用参与节点的资源为用户提供无缝的视听连接，而不管他们当前的位置或互联网连接类型。对等接点帮助那些没有公共路由 IP 地址的用户建立连接，从而解决防火墙和网络地址转换引起的连接问题，而不需要集中的基础设施来处理和转发呼叫。

5.4 志愿计算 第四个重要的应用是志愿计算。在这些系统中，用户将他们的空闲 CPU 周期用于科学计算，通常是在天体物理学、生物学或气候学等领域。这种类型的第一个系统就是 SETI@home。志愿者安装一个屏幕保护程序，在用户不使用电脑的时候运行 P2P 应用程序。该应用程序从 SETI@home 服务器下载射电望远镜收集的观测数据的块。然后应用程序分析这些数据，搜索可能的无线传输，并将结果发送回服务器。SETI@home 和类似项目的成功导致了 BOINC 平台的开发，该平台已被用于开发许多的共享 P2P 系统。

5.5 区块链的基石 区块链的核心是去中心化，这和P2P网络的观念不谋而合。在区块链应用中，比特币使用的是gossip, 以太坊使用的是Kademlia DHT。gossip是一种非结构化的p2p协议，基本上是随机连上一些节点就可以了，网络拓扑会呈现更随机的形状，比特币中的参数是每个节点最多主动连8个节点，最多接受117个的外来连接。Kademlia DHT是一种结构化的p2p技术，这也是根据文件分享应用的需求而来的。完美的网络结构当然是最好按照物理距离来，每个节点连接和它物理距离最近的节点。但使用物理距离比较困难，Kademlia算法使用节点id之间的异或操作来当作节点之间的距离。Kademlia网络中查找节点内容的通信复杂度是对数级别，路由表缓存效率更高，网络扩展性更好。

从某种意义上，区块链可以看做是P2P技术的一次重生。区块链实现了数字货币的功能，顺便解决了激励问题。

5.6 其他应用 P2P内容分发网络(P2PCDN)，获得了相对广泛的应用。在这些系统中，一组合作的用户组成了一个网络缓存和域名服务网络，当用户访问 Web 内容时，这些服务器复制 Web内容，从而减少了源服务器的负载。

为 P2P 应用程序开发的技术也被纳入到其他类型的系统中。例如，Dynamo (是一个存储，亚马逊内部使用它的许多服务和应用程序)使用了分布式散列表(DHT) 。尽管这些系统由单一组织控制，因此不严格满足P2P 系统的定义，但它们是基于 P2P 技术的。

P2P 的那些挑战 P2P 系统的许多潜力来自于独立于专用基础设施和集中控制的特性。然而，这些特性也使 P2P 系统面临一些独特挑战。

6.1 控制成员资格 大多数 P2P 系统具有开放或松散的成员关系。由于缺乏强用户身份，攻击者可以通过创建许多不同的身份来填充 P2P 系统中的节点。一旦他控制了大量的“虚拟”对等点，攻击者就可以击败针对节点故障或不当行为的多种防御措施。例如，攻击者如果希望抑制与 DHT 中某个密钥 k 相关的值，可以向系统中添加虚拟节点，直到他控制了存储该值副本的所有节点。然后，当密钥 k 的 get 操作发出时，这些节点可以否认键/值对的存在。

解决这种攻击的最初建议需要工作量证明(例如，解决加密谜题或下载大文件) ，然后新的节点才能加入覆盖。虽然这些方法限制了攻击者获得身份的速度，但它们也使合法用户更难加入。此外，有足够资源或访问僵尸网络的攻击者仍然可以发起这样的攻击。

另一种解决方案需要经过认证的身份，其中一个可信中心为对等身份和相应的现实世界实体之间的对应关系提供担保。认证身份的缺点是，受信任的授权机构和必要的登记过程在某些应用程序中可能的不切实际或不适用的。

6.2 数据保护 P2P 系统健壮性的另一个方面是存储在系统中或由对等点下载的数据的可用性、持久性、完整性和真实性。不同类型的 P2P 系统设计了不同的机制来解决这些问题。

6.2.1 完整性和真实性 对于 DHT，通常使用自证明命名对象来验证数据完整性。DHT 利用了这样一个事实，即它们在选择存储在 DHT 中的值的密钥时具有灵活性。通过在 put 操作期间设置 key = hash (value) ，下载程序可以通过对 get 操作的结果应用密码哈希函数来验证检索到的数据是否正确，并将其与原始密钥进行比较。存储可变数据的系统和允许用户为插入内容选择任意名称的系统可以使用加密签名来保护数据的完整性和真实性。但是，这样的系统需要一个基础设施来管理密钥。

不能保护插入数据完整性的系统往往充斥着标签不正确或损坏的内容。解决内容污染问题的一个可能的方法是由对等节点对数据的真实性进行投票。

6.2.2 可用性和持久性 一个挑战是如何确保存储在 P2P 系统中数据的可用性和持久性。即使在没有攻击的情况下，确保可用性也会因为频繁更新而变得困难。要使数据对象可用，至少有一个存储副本的节点必须始终处于联机状态。为了确保某个对象在不断变更的情况下仍然可用，系统必须不断地将副本移动到活动节点，这可能需要大量的网络带宽。可扩展存储、高可用性和抗流失能力是一个实用的 P2P 存储系统的不可能三角。

另一个挑战是 P2P 存储系统的长期成员资格(即定期在线的节点集)必须不减少，以确保存储数据的持久性。否则，由于其余成员之间可用的存储空间可能低于存储所有数据所需的空间，系统可能会永久丢失数据。

6.3 激励措施 人们期望 P2P 系统的参与者为共同利益贡献资源。然而，如果用户可以免费使用这项服务，他们就不一定有贡献的动机。这些用户可能希望节省自己的磁盘空间、带宽和计算周期，或者他们可能不希望在共享系统中贡献任何内容。这种用户在许多 P2P 系统中都非常普遍。那些人的存在减少了 P2P 系统的可用资源，并可能恶化该系统能够向用户提供的服务质量。

为了解决这个问题，在 P2P 系统的设计中加入了奖励计划。例如，一个用户必须上传同一个文件的另一部分，否则就要冒着与该用户断开连接的风险，才能从对方那里下载文件。这为用户共享他们的上传带宽提供了动力，因为不上传数据的话，对方的下载性能会很差。这些机制都试图将服务的质量与节点的贡献联系起来。

6.4 管理 P2P 系统 这是一个悬而未决的问题，P2P 系统是否比其他分布式系统更容易管理呢？

一方面，P2P 系统适应各种各样的工作负载和资源可用性条件，能够自动从大多数节点故障中恢复，并且用户可以独立地管理自己的硬件。因此，与基于服务器的解决方案相比，P2P 系统的日常运维似乎较少。另一方面，P2P 系统可能会经历难以管理的大范围停服，然而，要解决这个问题还需要更多的研究和实践。

1.  1.P2P与互联网服务供应商的纠葛 互联网服务提供商见证了 P2P 应用的成功，而且心情复杂。一方面，P2P 推动了对网络带宽的需求。另一方面，P2P 流量模式挑战了互联网服务提供商在设计网络和为服务定价时所做的某些假设。
    

互联网是一个由独立网络提供商组成的有等级的集团。本地互联网服务供应商通常连接到区域互联网服务供应商，而区域互联网服务供应商又连接到(跨)国家主干网供应商。处于同一层级的互联网服务提供商(即所谓的对等互联网服务提供商)也可以直接交换流量，主干网供应商之间是完全互联的。通常情况下，对等网络服务提供商之间并不直接交换流量，但是用户需要为他们发送给服务提供商的流量付费。

这种定价模式起源于client-server应用主导互联网流量的时代。商业服务器运营商为所使用的带宽向互联网服务提供商支付费用，而互联网服务提供商则向各自的供应商支付费用。然而，对于 P2P 内容分发的应用，家庭P2P 节点可以相互上传内容。除非 P2P 节点碰巧连接到同一个 ISP 或两个直接相互对等的 ISP，否则上传节点的 ISP 必须将数据转发给自己的提供商。因此，一些互联网服务提供商已开始约束网络流量，甚至阻塞P2P的流量。

这些问题必须得到解决， P2P 应用才能蓬勃发展，同时确保互联网服务提供商的利润。一个很有前途的技术方法是将 P2P 应用中的对等点选择偏向于连接到同一互联网服务提供商或互相对等的互联网服务提供商节点。另一个解决方案是互联网服务提供商改变他们的定价模型。

从长远来看，互联网服务提供商可能会直接或间接地受益于 P2P 系统带来的创新和新服务的涌现。此外，互联网服务提供商可以通过为P2P的成功服务提供基础设施支持，从而找到新的收入来源。

1.  1.结束语 作为一种破坏性创新，P2P 为互联网、工业和社会创造了巨大的机遇和挑战。P2P 技术最重要的承诺在于它能够显著降低创新的障碍。立于专用的基础设施和集中的控制是一柄双刃剑，因为它创造了新的挑战，必须通过技术、商业和法律手段来应对。
    

当前的现实是，P2P成为了新思想和新服务的试验场，具有特别的价值。那些最终被证明是受欢迎的、合法的、商业上可行的服务，然后可能会转化为更基于基础设施的商业服务。在那里，P2P思想可以与传统的集中式方法相结合，构建高度可扩展和可靠的系统。

---

*Originally published on [leaf](https://paragraph.com/@leaf-6/2okvKTW5xpEM4c5KCdG2)*
