# TE 系列 2 ：代币工程实践——方法论、模式和工具


By [TEDAO](https://paragraph.com/@tedao) · 2022-11-07

---

1.前言
----

[在上一篇的文章中](https://blog.oceanprotocol.com/can-blockchains-go-rogue-5134300ce790)，我们了解了为什么在构建代币化生态系统时需要制定正确的激励机制。这里，我提出一个问题 — — 如何为代币化生态系统制定激励机制？实际上，基于激励机制是代币化生态系统的核心这一认识，我们应该将这个问题转化为 — — _如何设计代币化生态系统？以及如何对代币化生态系统进行分析和验证？_

这篇文章是我们迈向**代币工程**实践的第一步，内容涉及分析、设计和验证代币化生态系统的理论、实践和工具。 文章的第一部分，我们将代币设计与其他领域联系起来，并解释我们为什么要说它是一门“工程学”。然后其余部分，我们试图利用现有领域的研究成果，一步一步走向我们的目标：

*   我们可以将代币设计像优化设计一样表述出来，然后将优化设计的一套方法运用到代币设计。
    
*   我们也可以将代币设计过程中出现的新模式记录下来形成文档，就像软件工程模式一样，多次使用某一解决方案，而不必重复开发。
    
*   电路设计领域有仿真、验证和设计空间探索 (CAD 工具集) 工具，可以帮助工程师分析、设计和验证极其复杂的芯片设计。所以我们可以预见，代币化生态系统今后也会有类似工具。
    

2.工程学、博弈论和其他领域
--------------

本节将介绍代币设计与其他领域的相关性。

### 2.1 塔科马海峡吊桥

工程课程的第一周，教授神情严肃，让我们观看了这个视频：

[![]({{DOMAIN}}/editor/youtube/play.png)](https://www.youtube.com/watch?v=j-zczJXSxnw)

塔科马海峡吊桥是如何倒塌的？毕竟，设计师在设计时肯定考虑了抗风问题。但是，他们没有考虑到的是，特定的风况下会发生桥梁共振现象。当对共振系统施加周期性作用力时，随着时间的推移，共振产生的振动幅度会逐渐扩大。如下图所示，其中绿色 = 非共振，红色 = 共振 = 灾难。

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

这个视频想要告诉我们的是，设计需要责任感。如果进行详尽调研，并且运用相应理论、实践和工具，桥梁的设计者原本可以避免这场灾难的发生。在我多年的学习生涯中，也曾多次在其他教授的课堂上观看这个视频。视频让我学到了很多，我也顺利完成了学业，在仪式上获得了[工程师之戒](https://en.wikipedia.org/wiki/Iron_Ring)。在加拿大，所有毕业的工程师都有工程师之戒，象征着工程师们对公众的义务和道德。据说，戒指是用倒塌桥梁的金属铸造而成。

### 2.2 博弈论与机制设计

[博弈论](https://en.wikipedia.org/wiki/Game_theory)是一个从经济角度分析激励机制的科学领域。经济学上关于设计（综合）激励系统，有一个分支，称为[机制设计](https://en.wikipedia.org/wiki/Mechanism_design)。实际上，从理论上讲，机制设计正是设计代币化生态系统领域的内容。多年来，这个领域的研究人员提出了许多伟大的理论，几乎达到了诺贝尔奖的水平。与此密切相关的是经济[博弈论](https://theory.stanford.edu/~tim/f13/f13.html)。

然而，通常来说，并没有很好的方法可以将理论与实践相结合。毕竟，学术经济学家（实际上或者说任何人）多久才能有一次部署经济的机会呢？这正是我们在设计代币化生态系统时面临的确切问题。最具相关性的可能就是视频游戏经济和[公共政策设计](https://medium.com/@elad.verbin/i-feel-the-right-kind-of-engineering-expertise-that-youre-looking-for-is-actually-public-policy-78fb28a698bb)。

不过事实证明，如果带着[一些实际约束条件](https://medium.com/blockchannel/a-crash-course-in-mechanism-design-for-cryptoeconomic-applications-a9f06ab6a976)聚焦于机制设计，最终得到的是优化设计！多年来，从事优化设计的人在部署优化系统方面拥有大量实践经验。包括我自己也是这样：我的第一个和第二个初创公司（[ADA](https://www.crunchbase.com/organization/analog-design-automation)、[Solido](http://www.solidodesign.com/)）做的都是这方面的东西，提供的是工业级电路设计。

### 2.3 其他相关领域

许多其他领域也与代币设计有一定的相关性。至少可以说，这些领域的专家会发现他们的技能可以很好地转化运用到代币设计上。这些领域包括电气工程、复杂系统、经济学、人工智能等众多学科。下图中我列出了一些相关领域。同时我们可以发现其中很多领域与[控制论](https://en.wikipedia.org/wiki/Cybernetics)都有着较深的渊源。

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

### 2.4 工程学与代币设计

代币化生态系统设计，我们应该如何称呼这个领域？下图中我列出了一些与代币相关的名称。

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

前四项比较偏重经济学。但是没关系；从分析价格走势、评估价值等活动上来说，这也是可以讲得通的。

我个人是学电气工程出身的。电气工程师们（EEs）是做电路设计的，我们有理论、有实践，要做的是构建能够正常运作的系统，比如你正在阅读的屏幕、为屏幕供电的芯片，又比如你头顶上的灯。

工程学是一门系统学科，需要进行严谨分析、设计和验证，需要借助理论与实践相结合的工具进行研究。工程学也是一门社会学科，需要高度社会责任感，需要对自己制造出来的机器负有责任，既要符合伦理道德，又要具备专业素养，就像塔科马海峡吊桥倒塌事件和工程师之戒所呈现的那样。

我见证了 90 年代软件工程学科的兴起；它的兴起是必然的，因为它鼓励的是严谨性和责任感。

我非常期望看到代币生态系统设计也能发展为一门工程学科，成为一门与电气工程、软件工程、土木工程、航空航天工程等学科并列的工程学科。这也就是说代币生态系统设计也会成为一个严谨分析、设计和验证的领域。它将拥有自己的工具，将理论与实践很好地结合起来。它将以社会责任感为指导原则。我们可以称之为代币工程。

\[注：至于为什么选择使用“代币 token”一词，而不是“incentive”，是因为“token”更为简洁，更易于和“代币经济，Tokenomics”对应起来。\]

下图显示了这些字段之间的关系。目标是代币工程设计实践。

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

3.代币设计与优化设计
-----------

代币设计就像优化设计：从较高的层面来看，你使用区块奖励函数（即目标函数）对意图进行编码，然后就可以让它运行起来。像往常一样，[Simon de la Rouviere](https://medium.com/@simondlr) 在[他的文章](https://hackernoon.com/history-is-rhyming-fitness-functions-comparing-blockchain-tokens-to-the-web-3c117239f4c)中，History Is Rhyming: Fitness Functions & Comparing Blockchain Tokens To The Web，最早提出这一观点。

除了优化设计，还有一个比较对象可以让我们更具体地理解代币设计，就是进化算法（Evolutionary Algorithm）。代币设计可以说更像进化算法的设计，因为两者都是一次使用多个 Agent（主体）进行“搜索”，并且都不对 Agent 的行为进行自上而下的控制。Agent 的留存也取决于他们的区块奖励或适应度。下面这张图表对两者之间的关系进行了概述与总结。

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

有了这些相似之处，我们就可以将优化设计或者进化算法设计中的最佳实践运用到代币设计。这对于我们来说是一个好消息，因为在设计进化算法和优化系统这两个领域里，很多人都是大师级的专家，有着丰富的理论和实践经验。

接下来让我们详细解释表格中的每一行内容。

### 3.1 目标

代币化生态系统和进化算法都有要实现的目标，目标是以目标函数（最大化或最小化的事物）和约束条件（必须满足的条件）的形式表示出来。更复杂一点情况，甚至可以设置随机目标。

代币化生态系统的区块奖励函数（目标函数）可能是“最大化哈希率”，而进化算法的目标函数可能是在进行深度网络训练时“最大限度地减少误差”。约束条件可能分别是“只有质押量≥阈值时才能参与”和“深度网络层数 = 100”。

衍生版本包括单目标优化（1 个目标函数，0 个约束条件）、约束补偿（0 个目标函数，≥1 个约束条件）和多目标约束优化（≥2 个目标函数，≥1 个约束条件）。

### 3.2 衡量和验证

代币化生态系统使用证明来验证或衡量目标（目标函数和约束条件）是否成功，而优化则使用模拟器评估适应度来衡量目标的成功。

例如，比特币节点通过验证参与者猜测的随机数是否解决了加密难题，来证明参与者是否完成了工作量。

优化器可以通过运行电路微分方程的 SPICE 仿真模型，来测试电路的好坏。仿真结果的好坏可以看它们是否通过基尔霍夫电流和电压定律的测试。

### 3.3 系统主体

在这两个系统中，Agent（主体）都是围绕“做事”运行的。

在代币化的生态系统中，为了获取区块奖励，网络利益相关者（例如矿工，或者更广泛的参与者）会不惜一切代价，争先恐后做能做的事情。例如，在比特币中，一些 Agent 可能会设计、构建和运行 ASIC（专用集成电路）芯片以获得更高的算力（哈希率）。其他一些 Agent 也可能会汇集他们现有的计算资源。系统不需要对生态系统中的所有利益相关者进行显式建模。例如，比特币没有对银行、国家或公司设置特定角色；所有的参与者都是矿工。

而在进化算法中，种群（Population）是由一个个个体组成的集合。如果个体表现“好”，种群就有较好的适应度。个体适应度高，被选择留下来的可能性也更高，然后对其进行交叉（例如插值）、变异（例如随机扰动参数）等基本运算过程，就可以产生下一代个体，组成更优的种群。

### 3.4 系统时钟

每个系统都有一个时钟。系统时钟表示的是一个时间维度，用于记录事件进程和收敛发生的先后顺序。

批次：通常，Agent 是分批次或分周期进行处理的。代币化生态系统会定期生成新区块并给予区块奖励。新区块指向旧区块；系统中的新工作将添加到新区块中；等等这些。这个区块链表包含着一个 Lamport 逻辑时钟。在进化算法中，一个批次就是一代，一代中的个体一次全部更新。每个代际循环可能包括：评估个体，选择最优个体，让他们产生新的个体，以此重复。

连续：在某些系统中，Agent 是连续处理的，而不是批量处理。这些系统通常需要更多的工作进行概念化，但可能会为某些问题带来更优的性能。例如，在代币化生态系统中，Stellar 交易只需要仲裁片区（Quorum slice）参与者进行验证，或者像 Iota 中那样将另一个节点添加到有向无环图（DAG）中。而在进化算法领域，我们可以选择一种稳态进化算法，每次迭代过程只替换一个个体。

### 3.5 激励与抑制

系统本身无法控制 Agent 的行为方式（或者至少，它不应该需要控制它们）。因此，最高层级的行为必须是 Agent 自下而上行为涌现的结果。这对于代币化的生态系统是必要的；否则他们就是中心化的！但这对进化算法来说不是绝对必要的，尽管许多进化算法为了保持简单性、优雅性或满足其他设计目标而采用了这种方法。

这意味着系统只能奖励或者惩罚行为，也就是胡萝卜加大棒，又或者称为激励和抑制。在设计系统时，我们设计了对什么行为给予奖励或惩罚，以及如何给予奖励或处罚。

在代币化的生态系统中，奖励表现为区块奖励，处罚则表现为削减权益。前者通常是目标函数；后者则是一些（但不是全部）约束条件。

在进化算法中，奖励和惩罚都归结为哪些个体被选为下一代个体的父母。例如：随机挑选两个个体，选择其中最好的个体（遗传到下一代种群中），重复多次，直到满员（锦标赛选择法，即每次随机选取几个个体之中适应度最高的一个个体遗传到下一代种群中，重复多次。）；个体被选中的概率与其适应度大小成正比（轮盘赌选择法，又称比例选择方法，即利用各个个体适应度所占比例的大小决定其子孙保留的可能性。）。最重要的是，进化算法不需要引导个体，例如无梯度优化算法。这就是为什么代币化生态系统最像进化算法，而不是基于梯度的优化器，自上而下地发出指令（使用梯度来挑选新个体）。

4.从优化方法论到代币方法论
--------------

### 4.1 介绍

本节是对代币工程的一些初步说明，我们应该将代币设计视为一个值得发展的工程学科。开始我会先介绍一下优化设计的结构化方法，然后再说明一下如何将类似的方法应用于激励设计。再接下来，我会继续介绍电路设计中常用的重要工具：模拟器、验证工具和设计空间探索工具；以及这些工具是如何应用于电路设计的。最后，我会着手列举一些设计模式。

### 4.2 优化方法论

这些领域只是部分地相互交叉。但是算法从业者所做的事情却都非常相近。他们希望发布能够正常运作的优化器系统。通常他们遵循以下步骤。尽管专业人士会系统地遵循这个步骤，但是也有一些从业者不受限于这个步骤：

（1）问题表述：假设算法“正常运作”，重点是进行问题表述，这一过程将涉及到目标函数和约束条件（目标）、设计空间（优化器可以探索到的地方，这实际上也是约束条件）。

（2）尝试现有的求解器：然后根据这些目标，运行算法，并让算法进行“求解”。优化算法的代码通常简称为“求解器”。如果无法求解，算法从业者将通过尝试不同的问题表述，又或者尝试不同的求解器和求解器参数，对其进行迭代。

（3）设计新的求解器：如果之前的求解步骤无法正常运作，甚至在多次尝试不同的问题表述之后也是一样，算法从业者也会考虑推出自己的求解器，即设计一种新的优化算法。

下面我们对每个步骤进行更具体的探讨。

**步骤 1. 问题表述**

几乎查看所有与优化相关的论文，你都会看到论文中描述的目标函数和约束条件。以我自己的论文为例，[这篇论文中的等式 (1)](http://trent.st/content/2011-TEVC-mojito-ea.pdf) （在第 5 节中）表述的是一个带约束的多目标优化问题，在语法定义的搜索空间内进行搜索，下面是一段内容：

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

我们来看另一个例子。[这篇论文](http://trent.st/content/2009-TCAD-sangria.pdf)中的等式 (1) 和 (2) （在第 2 节中）提出的是一个随机单目标（“收益最大化”）优化搜索问题，在多维连续变量空间中进行搜索。

对问题中的目标函数、约束条件和设计空间进行表述并不是一件容易的事情。事实上，即使过了这么多年，问题表述仍然是一门创造性的学问。（这也意味着它很有趣！）问题表述有很多方法与技巧；并且不是所有人都具备同样的天赋。幸运的是，你可以通过练习将问题表述得更好。我在进化算法（EA）和电路计算机辅助设计 (CAD) 领域都有看到一些朋友，他们在问题表述这门学问上真的表现出极高的水平。自己最了解自己的水平：）

*   例如，一个问题可能很容易就解决了，而另一个可能是 NP 难题，可能不存在什么有效算法，你无法保证任何事情。这是凸优化领域人们使用的奥秘之一：他们处理的问题通常都被视为 NP-hard 难题，然后应用技术将这些问题转换为凸问题（例如，放置得当的对数运算符）。然后，可以使用[几何规划](https://en.wikipedia.org/wiki/Geometric_programming)等凸求解器在多项式时间内求解这些凸问题。我在这方面也取得一些成绩；对于前面提到的片段代码所总结的问题，我在树归纳问题（模拟电路综合）中添加了语法约束，结果看到运行时间提高了 1000 倍，优化器也得到了更好的结果。
    
*   或者，如果你使用的是进化算法 (EA)，你希望对适应度设计映射功能，设计上的一点细微变化都会给行为和最终的适应度带来细微差异。（这些我称之为[光滑算子](http://trent.st/content/2006-DATE-caffeine_double.pdf)；）
    

**步骤 2. 尝试现有的求解器**

理想情况下，你对问题进行了问题表述，让自己可以应用现有的求解器或算法。然后，你只需运行它，观察它的运行情况。

如果算法有效：这代表你已经完成求解，现在完全可以停下来！

但是它可能至少在两个方面无法正确求解。第一个情况是，如果求解器收敛缓慢或无法收敛，那么你可以尝试不同的问题表述、求解器和求解器参数。

第二个情况是，如果求解器具有很好的收敛性能，可能你会发现这个设计没那么可靠，可能得到的只是局部最优解。为了解决这个问题，你可以修改问题：添加新的约束条件或提高模型/模拟器的准确性。如果你已经添加了约束条件，进行了多次迭代之后还是有新的问题出现(有点类似 [AI 打地鼠](https://blog.oceanprotocol.com/can-blockchains-go-rogue-5134300ce790)，打完一个又冒出一个)，那么你可能需要重新考虑一下自己对问题的求解是不是过于宽泛了。

**步骤 3. 新的求解器？如果需要，设计一个新的优化算法**

有时你会遇到一种情况，对于某个问题，现有的求解器表现都不是很好。可能是你需要更好的扩展性，也可能是你需要处理的约束条件难以建模，又或者可能是一些其他东西。这时就需要你去研究算法设计了。当你进行研究时，你通常会利用已有的基础模块，然后添加上自己的想法。设计新算法可能会花费大量时间，但如果做得好，就可能为你解决所提出的问题带来数量级的提升，例如 [FFX](http://trent.st/content/2011-GPTP-FFX-paper.pdf)（Fast Function Extraction，快函数提取）。

（而且，我之前有说过，它很有趣！）

### 4.3 代币方法论

区块奖励是网络目标函数的体现，也就是你要实现最小化或最大化的东西。从这点我们可以推断，代币设计就好比优化算法的设计。所以：

我们可以像探索优化设计一样，对代币设计进行探索。

我们可以参照优化设计遵循的步骤，并将其转化为设计代币化的生态系统应遵循的步骤。

（1）问题表述：写出代币化生态系统的目标函数和约束条件。这意味着我们需要问这些问题：谁是系统的潜在利益相关者，他们每个人想要什么？系统的攻击向量是什么？然后将这些转化为可以衡量的目标函数和约束条件。

（2）尝试现有模式：确认是否有现有的求解器，即确认是否有代币化网络设计模式可以解决你的问题。例如，如果你正在寻找一个“好”行为者/资产/等的列表，[代币管理注册表(TCR)](https://medium.com/@ilovebagels/token-curated-registries-1-0-61a232f8dac7)

可以帮助你解决这个问题嘛？稍后对此我会进行详细介绍。如果这无法解决问题，请尝试不同的问题表述、不同的求解器或求解器参数。例如，现有求解器会收敛到不适宜的行为，因此你需要添加一个约束条件来防止这种行为。

（3）设计新模式？如有需要，可以推出自己的求解器，即设计你自己的代币化网络。当然，在这样做时，尽可能使用现有的基础模块进行搭建，比如从 TCR 到仲裁，都可以使用。

5\. 代币设计模式
----------

每个成熟的工程领域都有其构建模块的语料库。关于[建筑](https://www.amazon.com/gp/product/0195019199/ref=as_li_tl?ie=UTF8&tag=trentmc002-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=0195019199&linkId=68344ee16e0b020559bc999e505fc290)、[软件](https://www.amazon.com/gp/product/0201633612/ref=as_li_tl?ie=UTF8&tag=trentmc002-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=0201633612&linkId=b401ac44f5daee31b358f3851a936a99)、[模拟电路](https://www.amazon.com/gp/product/0387257462/ref=as_li_tl?ie=UTF8&tag=trentmc002-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=0387257462&linkId=8b2721edc8452e43f9488a1dd794861a)和[优化器](https://www.amazon.com/gp/product/3540224947/ref=as_li_tl?ie=UTF8&tag=trentmc002-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=3540224947&linkId=3317b45dfbf66ebe93c7d412dd8fb562)的设计模式，市面上都有相应的著作出版。但是，还没有人写过关于代币设计模式的著作。

尽管如此，代币设计模式的构建模块已经开始涌现。有些构建模块的热度迅速飙升（例如 [TCR](https://twitter.com/mattgcondon/status/965013273337892864)）。下面我们来探讨下这些基础模块。有时它们会组成核心代币机制；有时他们会被拆分使用以解决特定问题。这里只是抛砖引玉给出一个简单的列表，实际上还有许多其他的构建模块。

*   策展 : 二分法：代币管理注册表（[Token Curated Registry](https://medium.com/@ilovebagels/token-curated-registries-1-0-61a232f8dac7)，TCR），例如维护一个参与者列表，列表只包含行为表现较好的参与者。TCR 的一个子块对于减少参与者引导过程中的摩擦具有一定的风险；离散价值：[Stake Machines](https://medium.com/@DimitriDeJonghe/curated-governance-with-stake-machines-8ae290a709b4) ，例如用于鼓励参与者；持续价值：策展市场(Curated Market, CM)，资产受欢迎程度，由其联合曲线和设计指导原则确定；分级制：每个标签都有一个 TCR；工作量：[策展证明市场](https://github.com/oceanprotocol/whitepaper/raw/master/whitepaper.pdf)(Curated Proofs Market，CPM)；NFT 的策展：[Re-Fungible Token](https://medium.com/@billyrennekamp/re-fungible-token-rft-297003592769)。
    
*   身份：初级认证，公钥、去中心化身份 ( DID )；中级认证，TCR；高级认证，例如 [uPort](https://www.uport.me/) 、 [Civic](https://www.civic.com/) 、 [Sovrin](https://sovrin.org/) 、 [Authenteq](https://authenteq.com/) 、 [Taqanu](https://www.taqanu.com/) 、 [Estonia E-Residency](https://e-resident.gov.ee/) ；身份管理解决方案，例如 [Spherity](http://spherity.com/)。
    
*   声誉：声誉系统融合了策展和身份。
    
*   治理/软件升级：这可以是 [ZeppelinOS](https://zeppelinos.org/) 、 [Aragon](https://aragon.one/) 、 [Colony](https://colony.io/) 等的组合。也许最终可以自动化？
    
*   第三方仲裁：例如 [Mattereum](https://mattereum.com/)。
    
*   人工“工作量”证明或计算机“工作量”证明：用于数据、算力等。这是对目标函数的评估。它可以是 [Steemit](https://steemit.com/steemit/@alwillis/steemit-s-breakthrough-subjective-proof-of-work) 或 [Augur](http://www.augur.net/) 中的人工工作量，也可以是大多数其他系统中的机器工作量。机器工作量可能是解决一个（可以说）不太有用的难题，比如比特币，或者更“有用”的工作量，比如 [FileCoin 的时空证明](https://filecoin.io/filecoin.pdf)。下图是关于有用的工作量（“服务完整性”）的一个细分列项，按照数据和计算[两个角度](https://oceanprotocol.com/#papers)进行划分。
    

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

其他对构建模块进行分组的方法有：

*   如何分配代币。这包括根据可控的[供应计划释放的代币数量](https://en.bitcoin.it/wiki/Controlled_supply)；100% 预挖矿；[销毁和铸造](https://medium.com/@kylesamani/new-models-for-utility-tokens-d26c12ec00c5)；[ICO 漏洞赏金计划](https://medium.com/@jjmstark/bounty-icos-61232e73370b) ；以及其他模块。
    
*   以太坊代币标准，如 [ERC20 同质化代币](https://github.com/ethereum/eips/issues/20)和 [ERC721 非同质化代币](https://github.com/ethereum/eips/issues/721)。Billy Rennekamp 整理的[代币相关的词汇](https://medium.com/@billyrennekamp/token-lexicon-b4ed9a4ce363)，Token Lexicon，也许可以帮助到你。
    
*   代币如何估值。代币作为一种交易手段、价值存储和记账单位，可参见 [Chris Burniske](https://www.amazon.com/gp/product/1260026671/ref=as_li_tl?ie=UTF8&tag=trentmc002-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1260026671&linkId=2ff67ea09ebe44d39c1581941638ad23) 的著作，_Cryptoassets: The Innovative Investor’s Guide to Bitcoin and Beyond_。
    
*   如何对网络使用者分组。比如守护者（信任节点，如 PoS 系统中的矿工）、套利者或资源交易者，可参见 [Ryan Zurrer](https://medium.com/@rzurrer/keepers-workers-that-maintain-blockchain-networks-a40182615b66) 的文章，_Keepers — Workers that Maintain Blockchain Networks_。
    
*   如何管理算力堆栈。如何处理、如何存储等。这方面可以参考几篇文章，分别是 [Fred Ehrsam](https://medium.com/@FEhrsam/the-dapp-developer-stack-the-blockchain-industry-barometer-8d55ec1c7d4)，The dApp Developer Stack: The Blockchain Industry Barometer；[Stephan Tual](https://blog.stephantual.com/web-3-0-revisited-part-one-across-chains-and-across-protocols-4282b01054c5)，Web 3.0 Revisited — Part One: “Across Chains and Across Protocols”，以及[我的](https://blog.bigchaindb.com/blockchain-infrastructure-landscape-a-first-principles-framing-92cc5549bafe)一篇文章，Blockchain Infrastructure Landscape: A First Principles Framing。
    
*   L1 、L2 、LN 基础设施。核心链是 L1。更高层网络是为了帮助扩展主链，不必每笔交易都和主链交互同步。可参见 [Josh Stark 的文章](https://medium.com/l4-media/making-sense-of-ethereums-layer-2-scaling-solutions-state-channels-plasma-and-truebit-22cb40dcc2f4)，Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit。
    
*   [“加密经济基元”](https://medium.com/@jacobscott/the-emergence-of-cryptoeconomic-primitives-14ef3300cc10)。基元是代币设计模式或构建模块的另一种说法。（Jacob Horne的文章，The Emergence of Cryptoeconomic Primitives， 发布晚于本文。）
    

此处列举出的模式只是抛砖引玉；我十分期待看到这个领域有更多的发展。

6\. 所需工具：仿真、验证和设计空间探索工具
-----------------------

### 6.1 需要什么工具

为构建“正常运作”的系统，专业工程师通常使用软件工具来实现目的。软件工程师经常使用的是免费或相对便宜的集成设计环境 (IDE)。

但是你可能会遇到更复杂的情况。电路设计中，重要的工具是用于仿真、验证和设计空间探索的工具。随着时间的推移，工具栈会变得非常复杂。但有了这些工具，一个只有 10 名工程师的团队就可以在短短几个月内设计出一个 10 亿晶体管芯片。一个优秀的工程师可能正在运行价值百万美元的工具（100 万美元是每年工具的使用许可费！）。

> “原力与你同在” — — [任天堂 1980 年代的营销口号](https://www.youtube.com/watch?v=C6KOlC393lo)

这个新领域需要一些有力工具。我们需要：

（1）模拟代币化生态系统的工具。模拟工具可以测量给定设计的性能指标。首先介绍的是基于 Agent 的建模，来自复杂性科学和[通用人工智能](https://opencog.org/)领域。其次是网络模拟器，已被用于共识算法设计。最后是微分方程（DE）建模，然后利用 DE 求解器，如 [SPICE](https://en.wikipedia.org/wiki/SPICE)，进行求解。

（2）验证代币化生态系统的工具。验证工具可以验证设计是否有效（根据其性能指标），尽管存在不可控的变量会影响到其性能指标。不可控变量如下 (a) 一个范围，对于这个范围内的任一变量值，设计都有良好的表现，或 (b)一个概率分布，对于 >x% 的场景，设计都有良好的表现。这些分别是“最坏情况性能”和“n-sigma 性能”。“n-sigma”是一个表示故障率（失效率）的单位，就像用百分比来表示有效概率和故障概率一样；设计的目标通常是 2-sigma（5% 的失效率）、3-sigma（0.3% 的失效率）或 6-sigma（大约十亿分之一的失效率）

（3）设计空间探索的工具。这些工具有助于设计人员探索设计空间，即深入了解当可控变量发生变化时最坏情况性能或 n-sigma 性能会发生什么。 6.2.1 仿真工具，以电路设计仿真工具为例 下图展示了电路模拟器环境的一个示例。左上角的窗口显示的是输入设计的原理图编辑器。对于模拟电路，我们需要选择电阻器、电容器、晶体管；选择如何连接它们；以及确定它们的尺寸是多少。输入的数据随机自动转换为一组微分方程，然后使用模拟器进行求解。其他三个窗口显示各种模拟的结果。顺时针方向来看，从右上角开始，三个窗口分别是偏置分析 (直流分析) 、基于时间的分析（瞬态分析）和频率分析（交流分析）的结果。

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

### 6.2.2 验证工具，以电路设计验证工具为例

这一节和下一节的示例都是来自 CAD 工具，我曾参与这个工具的开发，索尼、高通的工程师们目前也都在使用这个工具。

图中的工具可以验证芯片在一系列最坏的“PVT”条件下不会失效：极端的电源电压、温度、负载等。因此，P、V 和 T 是不可控变量。

这个特定的工具使用全局优化器来发现最坏的情况（worst case），该优化器循环操作电路模拟器，试图优化故障。

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

### 6.2.3 设计空间探索的工具，以电路设计工具为例

下图展示的是一个探索设计空间的工具。它报告了变量对各种输出的相应影响（左），以及设计变量如何映射到输出（右）。工程师拖动橙色十字准线可以更改设计。

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

现在这些工具都是现代芯片设计领域广泛使用的工具，当然芯片设计还有一些其他工具。上世纪七十年代，开始使用模拟器，八十年代 CAD 工具上线；没有人会再用更早时期的工具了吧。这些工具对现代芯片的设计来说至关重要。现代流程工业生产中，一个设计投入生产的成本通常超过 5000 万美元；在投入 5000 万美元之前，如果不对设计进行验证和优化，使其达到一个可能的最佳水平，可以说是比较愚蠢的行为。

然而，在代币设计的领域内，我们正在构建和部署的生态系统，有望成为一个数十亿美元的生态系统，但是在这个领域内几乎没有任何可以使用的工具。可以说目前代币设计的发展，甚至还不能同 1970 年的电路设计发展水平相比，毕竟那时电路设计领域都有模拟器可供使用，我们却什么都没有。非常期待有一天我们可以把代币工程发展到同样的水平。

### 6.3 工具的限制性

我承认在复杂的芯片和经济体之间有一个非常关键的区别：人在循环中的作用。芯片是封闭系统。而人在经济体中，会增加建模的困难。但是，我相信我们能够改善目前“一无所有”的现状，因为我们每天构建的系统，人类都参与其中。对此我还有几点补充想法。

一种方案是不要尝试对[黑天鹅](https://www.amazon.com/gp/product/081297381X/ref=as_li_tl?ie=UTF8&tag=trentmc002-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=081297381X&linkId=37fd31844ed3bb762816fd63517bc987)事件进行建模，而只是将潜在的负面影响最小化（如果发生的话）。

或者，我们可以让人作为“模拟器”的一部分参与其中，激励人去思考攻击的方式及其解决办法。现有的做法就是这样：设计代币的人让他们的朋友设想新的攻击面，然后他们更新约束条件列表，并相应地更改设计。我发现这样的话我已经讲了几十遍了：）

模拟永远不可能做到绝对完美。因此，我们应该确保系统本身是可进化的，可以朝着社区的目标发展。对此，治理、质押等等都是可以使用的工具。治理可能像硬分叉一样简单，例如更改目标函数或添加约束条件。质押有助于将代币持有者社区的零和博弈转向正和博弈，走向共赢。

### 6.4 外在动机与内在动机

> “外在动机是来自外在力量的激励；行为的产生是基于对外部奖励的期望，\[说服\]某些人做他们自己不会做的事情…… 内在的通常是指先天的或内部的；因此，内在动机是源于自身内部的激励或驱动力……
> 
> 内在动机通常与内在奖励相关，因为完成任务的自然回报是一种强大的驱动力，将个人激励放在首位”。[\[链接\]](http://webshare.northseattle.edu/fam180/topics/praise-rewards/problems.htm)

本文主要关注的是外在动机：明确我们要优化什么，然后直接进行优化。不过，外在动机也可能会有问题。在教育中，外在奖励会降低孩子学习的内在动力，阻碍孩子的自主和独立思考。幸运的是，有一些[教学方式](http://webshare.northseattle.edu/fam180/topics/praise-rewards/problems.htm)可以激励孩子的内在动机。

对于代币化的生态系统，我们必须同样谨慎。外在动机适用于“最大限度地提高安全性”或“最大限度地共享数据”这样的目标。但用在某些地方可能就很危险。假设你正在构建一个去中心化的声誉系统。直接将声誉代币化可能会激励参与者操纵声誉，以获取钱财，从而导致各种不良行为。当然这种情况也可以给予控制，比如直接拒绝使用 [Whuffie](https://en.wikipedia.org/wiki/Whuffie)（物非，一种信誉货币，在科幻著作物非取代了真正的货币）？

让系统支持内在动机而不是外在动机，还有一种可能的方案。课堂上使用的[策略如](http://webshare.northseattle.edu/fam180/topics/praise-rewards/problems.htm)：提供选择、最小化压力、允许替代解决方案、鼓励原创，进而促进学习的成功。其中一些可以转化用于代币设计。通过经济利益关系，例如使用 TCR，简单地过滤掉不良行为者就是一个例子。或者，我们可以使用 Stake machines 来推动成功。

7\. 结语
------

本文介绍了如何利用现有领域来帮助设计代币化生态系统：优化设计方法论转化运用到代币设计；代币设计模式；以及受电路设计工具启发，代币设计有望开发的工具。总体目标是代币工程的实践。我们一定会实现这一目标！

[下一篇文章](https://blog.oceanprotocol.com/token-engineering-case-studies-b44267e68f4)中将探讨两个案例研究：比特币的分析和海洋协议的设计，并基于案例探讨如何运用这些方法。

原文：[Trent McConaghy, _Towards a Practice of Token Engineering_](https://blog.oceanprotocol.com/towards-a-practice-of-token-engineering-b02feeeff7ca)

---

*Originally published on [TEDAO](https://paragraph.com/@tedao/te-2)*
