# 从功能、经济与技术三大层面分析区块链的可访问性难题

By [轮回](https://paragraph.com/@steelbane) · 2021-11-27

---

随着区块链技术迅速获得广大观众的关注，对话仍然集中在像每秒交易量、延迟性以及吞吐量这种网络的可扩展性的技术话题上。

为了成功构建消费者层面的体验，开发者必须跳脱出只对性能指标进行考量的思路，要更多的考虑与用户相关的因素：比如可访问性（是否易于采用与使用），对于加密开发专家和新用户来说是非常重要的性能。从长远来看，只有那些早期致力于发展可访问性的项目才能赢得大众的喜爱。

可访问性这一性能比可扩展性更难量化。本文提供了一个系统框架供组织和个人者使用，以可靠地衡量和评估区块链项目的可访问性。

**1对超越可扩展性的思考**

长时间以来我们都在说，可扩展性是区块链应用被大规模采用的必要前提。我们明白：2017 年时，Dapper Labs 创建了 CryptoKitties——可收藏的数字猫，这也因此引入了第一个非同质代币 (NFT) 标准——ERC-721。虽然 CryptoKitties 预示了消费级区块链应用在整个行业的巨大潜力，但它也为当时以太坊的技术局限性提供了证明。

最大的争论很快就变成了区块链应用的可扩展性问题——以太坊和其他区块链如何在不陷入困境或使用成本过高的前提下容纳越来越多的用户？

可扩展性问题使一批更年轻的第 1 层区块链涌现，如 Flow、Solana、Avalanche 和 WAX。以及像zkSync、Optimism 或 Polygon 之类的第 2 层或侧链解决方案也纷纷出现。以太坊本身专注于使用分片和各种升级而达到更高的可扩展性。

但被大规模用户采用不仅仅是关于可扩展性的问题。下面，我们借鉴从CryptoKitties 和构建 Flow 中吸取的经验教训，来分享一个框架。这个框架可以帮助构建者在不考虑底层协议或应用程序本身的前提下，只专注于应用的可访问性。

**2可访问性的原因和对象**

可访问性描述了区块链网络可以以无摩擦的方式被大量不同实体使用的能力。用户参与项目的应用程序、协议或生态系统越容易，给定区块链的可访问性就越高。可访问性不仅适用于终端用户，还适用于开发人员、创建者、产品所有者以及与网络交互的任何其他人员。

谁应该考虑可访问性？积极构建和管理支持区块链的应用程序的开发人员、架构师和高管在选择要构建的区块链时应进行可访问性分析。任何利用区块链生态系统现有服务的人——创作者、艺术家和知识产权持有者也都应该考虑给定项目的可访问性，因为它将决定网络上现有受众的规模和特征。

这两个群体都需要提出正确的问题：“这个生态系统的文化是什么样的？”“什么样的人会在这里建项目？”，“建立在其上的项目提供了哪些数字商品，以及围绕它的经济将如何发展？”，最重要的是，“这一切都适合大众吗？”，而不是单纯地只玩数字游戏。

回答这些问题的角度应该从 1) 功能、2) 经济和 3) 技术三个方面出发，得到了我们希望得到的框架，供希望获得主流认同的加密行业建设者使用。

二、功能的可访问性——你会用么？

功能的可访问性（也称为可用性），描述的是一个区块链的能力及其生态系统是否可以让用户有轻松入门的使用体验，以便用户与协议或应用程序的交互可以以简单有效的方式进行----这是评估任何一个项目的一个很好的起点。

1、新用户引导流程

所有用户的旅程都是从新用户引导流程开始的：用户交互的第一阶段包括账户的设置、给账户注入资本、直到第一次的网络交易。这个阶段应该尽可能的做到无摩擦，用户只需要有限数量的步骤即可操作完成（最好不需要用户有技术专长）。

冗长的新用户指南会有过多的步骤，这就代表了可访问性差。例如，用户注册应用程序、下载浏览器插件钱包、写下12个单词的助记词、访问外部交易所购买加密货币、等待交易所执行KYC（Know-Your-customer的缩写，了解你的客户）的检查，返回应用程序进行重新身份验证，然后才能继续执行所需的操作，例如交换代币或购买NFT。这个过程至少需要跨越三种不同的服务商进行六个操作步骤才能完成整个操作流程。

另一方面，也有项目会有非常整合和精简的流程，它们将用户从大部分复杂步骤抽离出来，使用户有了高度的“可访问性”体验。如果用户可以在注册应用程序的同时获得一个加密钱包，这就是一个整合度非常高的，精简后的注册流程。而使用通过 iFrame（iframe标签，一般用于包含别的页面，可以用于形成一个整合的支付入口），也可以消除了用户访问外部交易所来为账户注入资金的需要。

在这两个极端之间，有多种应用程序和服务会包含其中一部分过程。例如有些应用或服务不必依赖于浏览器插件钱包（消除对单独下载过程的需要）或整合了部分法币兑换加密货币的支付入口。

一些应用程序代表用户管理他们的私钥。虽然这种托管架构可以消除对外部钱包的需求来减少对新用户引导过程中的摩擦，但它是以更高的技术复杂性和法律要求为代价的。这些影响超出了本文的范围，选择托管架构的团队应该对该模型进行彻底的研究以权衡利弊。

确定特定区块链的三种最常见的入门路线是对可访问性进行分析的一个很好的起点。我们需要从用户的角度重新创建这些场景，并将所用的步骤收集到单独的文档中。由于单个协议通常有多种入门体验（取决于用户选择的特定应用程序以及钱包），此过程应涵盖所有常见场景和用户类型。

2）钱包

新用户引导流程包括一个用户与该区块链协议的交互。对于日常使用来说，用户交易的签名与提交至关重要。出于这个原因，分析这个区块链上可用的钱包（此类交易所必须的）是分析该应用的可访问性的非常重要的方法。

任何区块链交易都需要由给定用户使用数字签名进行验证——这可以防止恶意行为者进行未经授权的操作。为了创建这个签名，需要用户的私钥。因为私钥扮演着这个非常重要的角色，但不能（或者说不应该）单独存在于我们的记忆库中，所以它们需要以一种安全而方便的方式存储。这正是区块链钱包提供的功能。同时，钱包通常还提供了一个将交易发送到网络的访问点。

为了在功能上可访问，必须使用给定区块链的可用钱包轻松实现用户交易的签名。如果用户必须下载外部插件或手动设置他们愿意为给定交易支付多少费用的参数，那么随后的每笔交易都会涉及更多的摩擦。

为了获得最大的可访问性，钱包不仅应该易于使用，还应该被项目生态系统中的各种应用程序广泛接受。如果用户需要设置多个提供商的多个钱包来访问不同的应用程序，则可访问性水平大大降低。例如，如果 NFT 市场不支持用户在去中心化交易所交易代币的钱包，则用户本质上需要为另一个钱包再次进行注册并在未来跟踪该帐户。

这个问题与应用程序的开发直接相关：在大多数情况下，开发人员需要将可用于特定供应商的代码添加到他们的应用程序中以支持一个新钱包。这会产生技术开销并减慢跨应用程序的多个钱包提供商的集合度与和可用性。

3）法币支付的进出通道

虽然部分用户几乎完全在加密生态系统内进行交易，但被大规模的用户采用将要求不熟悉加密货币的用户能轻松地将加密收入转移到更熟悉的货币中。因此，功能可访问性还包括终端用户从网络中存入或提取价值的难易程度---法币支付进出通道对此至关重要。允许用户使用信用卡或其他方便的支付方式直接用法定货币购买一定数量的加密货币对提高可访问性非常重要。

虽然使用外部交易平台也可以达到交换货币的目的，但专用的集成服务确保用户不必离开给定的应用程序就能进入支付入口，这大大提高了该应用的可访问性。

一个很好的分析起点是粗略筛选网络代币在主要中心化交易所的列表。这样做时，您可能希望将给定网络上可用的稳定币列表也包含进去。下一步是系统地检查生态系统中主要钱包的集成入口工具，一些用户友好的钱包已经集成了这些功能。例如，多链钱包 Blocto 利用支付入口供应商Moonpay来允许用户使用信用卡等简单的支付方式直接在钱包中充值他们的加密货币。

最后，你可以检查网络中一些最常用的，提供法定货币支付入口选项的应用程序，并注意提供该服务的供应商。这种综合分析将详细的展示出终端用户可以从使用该网络中得到多少价值。

总结一下所有关于功能可访问性的元素，这些是开发人员在决定该在哪个区块链上构建应用时应该问自己的主要问题：

新人引导流程平均包括多少个步骤？完成它们需要多少先前的知识或技术专长？用户签署交易需要采取多少步骤？完成这些步骤需要多少先验知识或技术专长？集合钱包是否与用户体验无缝衔接？它们是否普遍适用于各种应用程序？用户在链上转法币需要几步？是否存在法币支付进出匝道？项目的区块链原生代币和稳定币在中心化交易所的上市情况如何？

**3经济上的可访问性——你能负担的起吗？**

经济上的可访问性基于协议和建立在协议之上的数字产品的普遍可负担性。

交易费：

区块链是公共资源，交易费用可以防止过度使用其网络容量，有助于避免大众的悲剧。它们还能保护底层网络免受Denial-of-Service（DoS，阻断服务）攻击形式的垃圾邮件的侵害。

交易费用可以是固定的，例如在提交交易时以已包含费用的形式出现。或者它们也可以是动态的，随着给定请求的复杂性而增加。大多数流行的区块链协议使用这些费用的类型之一或它们的组合。

交易费用是功能和经济可访问性重叠的地方。在日常使用中，交易费用既要低到每个人都能参与，又要高到能保证网络的稳定性。此外，这些费用的可预测性也很重要：如果交易费用存在不可预见的高度波动，这将阻止装备不足的用户向网络发送交易。因此，任何可访问性分析不仅需要考虑平均交易价格，还需要考虑日常确定这些价格的机制。

虽然用户可以自由选择Gas价格，但由于网络验证者需要选择他们想要在下一个区块中包含哪些交易，更高的 Gas 价格通常会被更快的执行。这个过程本质上类似于拍卖，用户为他们的交易竞标。而像 EthGasStation 这样的整个网站已经发展为以交易定价为目的的平台。

这种交易费模型隐含了几个问题：

这种拍卖模式之下，当人们需求旺盛的时候，可能会导致交易费用飞涨。例如，有时在以太坊上，一次简单的代币转账就会产生大约 50 美元的Gas费用。

由于Gas价格波动很快，因此正确定价交易费用是一个非常重要的过程。虽然最近采用的 EIP-1559定价机制和一些用户友好的钱包可能会规避其中的一些问题，但有复杂机制的高交易费用可能会阻碍项目的普遍可访问性。由于第 1 层的区块链和第 2 层的解决方案通常提供更高的吞吐量，因此交易费用（大部分）也显着更低。

这正是这些解决方案通常具有更高可访问性的原因。然而，应用程序架构师必须仔细权衡利弊，因为在某些情况下更快的吞吐量是以降低去中心化程度为代价的。

应用层的产品：

除了交易费用，经济层面的可访问性程度还涉及区块链项目应用层上提供的产品。一个重要的例子是给定生态系统上流行的NFT藏品的底价。底价类似于收藏品的最低价格，该指标经常与NFT藏品的总量（即所有收藏品价格的总和）结合使用，以分析收藏品的估值。

高底价会创造一个人迹罕至的生态系统，只有经济精英才能进入，这会阻碍真正的社区建设也因此减少了未来被大规模采用的机会。虽然总体价值很高对于区块链来说绝对是件好事，但如果大量的交易大多伴随着高底价，那么很可能只有少数富有的用户才能推动生态系统中的经济活动。

有些人可能会争辩说，分割 NFTs（NFT s的所有权在许多所有者之间分割）的这个概念从长远来看将规避这个问题。然而，这是以增加工程开销、增加用户复杂性和缺乏法律认定为代价的。

运行的节点：

最后，经济可访问性也是节点运营商（保护和验证区块链的验证者）关注的问题。只有当网络节点在达到硬件要求和最小质押量（在权益证明网络中）的前提下是可运行的，才会激励足够数量的验证者参与网络，只有这样它的去中心化和完整性才能被保障。

比特币和以太坊都是拥有大量节点运营商的网络，这说明它们协议的可靠性和安全性水平很高。但是，对可访问性的分析必须采取更加差异化的观点。例如，运行比特币节点的要求相当低，但不成比例的大量区块是由有专业设备的矿池而不是由个体矿工开采的，这使得某人运行自己的比特币节点变得不太可行且不易访问。

虽然以太坊的设计在很大程度上阻止了专业设备的使用，但挖矿仍然发生在集中式矿池中，硬件要求也明显比挖比特币的硬件要求。由于以太坊存储的数据比比特币多得多，因此新节点需要更长的时间来补上这些数据——现如今，建立一个完整的以太坊节点大约需要 17 个小时。由于时间和硬件资源都是有成本的，这使得节点运营商在经济层面的可访问性降低了。

在寻找替代方案时，还应密切关注节点运营商的其他非技术因素。例如，如果一个网络计划对谁有资格成为节点运营商施加永久的规则，这会使那些不满足这些标准的运营商无法访问该协议，这将导致网络去中心化程度变低。

对经济的分析有几个关键的问题：

平均交易费用最高能到多高，用户又可以提前预测到多少呢？在一二级市场上，项目应用层的热门产品的底价有多少？谁是协议整体交易量背后的主要驱动者？他们是否是少量的大型机构？还是一大群价值较小的交易者？对节点运营商的硬件要求和最低权益余额有多苛刻？

**4技术的可访问性？——你可以在链上开发应用吗？**

技术可访问性描述了开发人员在给定链上构建应用程序的难易程度。这个概念也被称为开发人员工效学。

编程的概念

一个团队快速发布支持区块链的产品的能力在很大程度上取决于项目的技术可访问性状态。首先要检查的是一般的编程概念：只有能够合理快速地理解它们，开发人员才能掌握它们并开始快速构建。理想情况下，编程范式植根于预先存在的技术，以简化开发人员的上手流程。

一个好的方法是分析区块链的主要客户端的操作。区块链客户端是对协议中特定语言的实施方案，或者简单地说，是节点运营商为了掌控区块链而运行的实际程序。一些区块链可能有更多的实施方案，通常这也代表更高程度的可访问性；然而，更重要的其实是客户端最常用语言。首先要确保这是一种广为人知的、可被使用和维护的语言，例如C++、Golang、Rust或Python。这将保证这些客户端被持续开发和维护的可能性。

下一个重要的考量是智能合约的编程语言。Solana 等一些区块链使用现有的语言比如Rust 和 C++，而以太坊（Solidity）或 Flow（Cadence）等其他网络已经创建了自己的语言。当然，使用有开发者的已建立的语言可以使开发人员更容易上手了，然而，对于新手来说，这可能要以学习一门通用编程语言的所有细节为代价，学习像 C++ 这样低等级的语言来说尤其耗时。因此，学习一种在设计时就考虑到是为了智能合约编程做准备的的轻量级新语言可能更容易。

对于新的编程语言，要分析该语言是否存在众所周知的、已建立的编程概念和范式。例如，Solidity 深受 JavaScript 和 Java 的启发，而 Cadence 则借鉴了 Swift 和 Rust 的许多概念。

此外，请考虑语言为其开发人员提供了多少抽象概念。就像底层协议一样，在不牺牲安全性或可定制性的前提下，语言对于开发者来说应该尽可能的简洁。例如，Cadence 使用新的资源数据模型自动对数字价值的处理施加规则，而 Solidity需要手动实施这些低级检查。

最后，要确保所用编程语言的权威性，需要参考相关教育材料或文档并提供实施参考。它们也要易于访问的。

工具

一套好的工具对于开发人员来说至关重要，能方便他们快速、安全和轻松地构建应用程序。如果存在专用工具未涵盖的常见问题，则表明技术可访问性水平较差，因为开发人员必须自己处理这些问题了。

软件开发工具包 (SDKs) 可以说是这些工具中最重要的。SDKs为协议的底层进程提供了一个抽象特定语言的层，它们简化了如身份验证、查询、改变状态、监听发生的事件等这些交互操作。如果所有流行编程语言都有SDKs，那这说明给定项目的技术可访问性很高。

除了SDKs之外，还有许多工具可以极大地简化开发人员入门流程和日常开发。我们要检查文本编辑器 (IDE)、测试框架和其他用于自动化、建设和调试工具的扩展是否存在，这些工具使在给定区块链上开发应用程序更简单、更快、更易于访问。

技术分析的关键问题

项目的编程概念是否容易学习？它们是否允许快速、安全和高效的开发？是否有足够的教育材料和参考代码？是否也涵盖了诸如最佳实践和模式之类的高级概念？开发人员工具是否可用于解决最常见的问题？这些工具，以及主项目的源代码，都是开源的吗？

除了上述考虑因素之外，还有其他一些考虑因素，例如普通用户对给定区块链项目的一般概念的理解程度。如果用户无需先学习大量新知识即可快速进入空间，则可访问性会得到提升。在这方面，面向终端用户的、避免使用技术术语和行话的可访问语言的存在是非常有益的，但很难在广泛的生态系统中进行分析。

无论如何，区块链可访问性不是可以在以后添加的好东西，而是需要植根于项目的DNA中。特别是对于技术可访问性，必须在一开始勾勒协议的内部工作原理时进行考虑。

没有可访问性——不仅仅是可扩展性——区块链就不会被大规模采用。

---

*Originally published on [轮回](https://paragraph.com/@steelbane/tcxpxtpEgUaUHCYSFQAt)*
