<干货>代币工程学系列,Part-2:方法论、模式和工具


#1

1. 简介

在我之前的文章中,我描述了为什么在建立代币生态系统的时候,需要设置合理的激励制度。现在,我想问:我们该 如何 为这些代币生态系统设计激励制度呢?而且实际上因为激励制度其实是整个代币生态系统的核心,那么这个问题实际上是在问: 我们该如何设计代币生态系统呢 ?我们又该如何 分析验证 这些代币生态系统呢?

此文是在 代币工程 方面的第一次尝试:其中包括理论,实践以及分析,设计和验证代币生态系统的工具。

本文的第一部分将代币设计和其他领域结合,并解释为什么称之为“工程”。文章其余部分将尝试通过三种主要的方式,利用现有的领域来更给予清晰地解释:

  • 我们可以将 优化设计作为代币设计 的框架,然后使用优化设计方法论。
  • 通过 软件工程模式 ,我们可以找到代币设计的新兴模式。
  • 电路设计使用的 模拟和 CAD 工具 ,可以帮助工程师分析,设计以及验证非常复杂的芯片。在代币生态系统设计方面,我们也可以寻找类似的工具。

2. 工程,博弈论和其他

这部分将代币设计和其他领域互相联系起来。

2.1 塔科马海峡吊桥

在我学习工程学的第一个星期,看起来很严肃教授给我们看了这个:

油管链接:https://www.youtube.com/watch?v=j-zczJXSxnw&feature=youtu.be

这座桥是怎么垮的?毕竟设计人员肯定有预测风力。但是,他们不能预测到在某种特点的风力模式下,会导致桥的 共振 。当给予一个共振系统同步施加一定的力,这个共振系统的振幅就会随着时间逐渐增大。根据下图说明,绿色 = 无共振,红色 = 共振 = 灾难。

1

-图片来源:此处-

这个视频是要告诉我们 责任感 的重要性。桥梁的设计人员应该能够完整地预测到风险,同时应用恰当的理论,实践方法以及工具。在我的学习生涯中,其他教授也好几次展示了这个视频。对于观看这个视频的意义最终会体现在毕业接受铁指环(工程师之戒)的时候。所有加拿大工程师都有这个工程师之戒。传说,这些指环都是用一座坍塌的桥上的金属制成的。

2.2 博弈论和机制设计

从经济学的角度, 博弈论 分析 激励措施的科学方式。在经济学中,有一个对应的设计(合成)激励系统的方式,叫做 机制设计 。实际上,理论上来说,机制设计才是 真正的 设计代币生态系统的方法。这个领域的研究人员这些年来提出了很多著名理论,差不多是诺贝尔级别。非常相关的是经济博弈论

不过,现在还没有很好的方法将这些理论和 实践 相结合。毕竟,学术经济学家(或者说任何人)能有几个有机会来参与部署一个经济系统?这也正是我们在设计代币生态系统中遇到的问题。和代币生态系统设计最接近的可能就是电子游戏经济设计和公共政策设计

但是,如果你在一些实践性约束的情况下,深入研究机制设计,你会发现优化设计才是最终的方案!从事优化设计的人员在实施更优化系统方面,有着非常丰富的实践经验。我也属于其中:我第一和第二个创业项目(ADASolido)就是这么做的,主要面向工业级别的芯片设计。

2.3 其他相关领域

很多其他的领域同样也和代币设计相关;至少那些领域的专家都能发现他们很多的技能可以和代币设计很相关。这些包括从电气工程到复杂系统设计,从经济学到人工智能。下面我列举了一些,当然他们当中很多人都具有很好的控制论基础。

2.4 工程和代币设计

我们该怎么定义设计代币生态系统这个领域呢?我列举了一些选项。

前四个名称是和 经济学 相关的。这应该没有问题。这对分析价格变动,估值等等是有意义的。

我学习的是电气工程。设计电路图的电气工程师们有理论知识,实践经验,并且打造可以运作的系统,例如你正在看的屏幕,启动它的芯片以及你头上的灯。

工程学 需要 严谨的分析设计系统验证 ;使用工具将理论和实践相结合。工程也是一门关于 责任感 的学科:通过观看塔科马海峡吊桥事件,佩戴工程师之戒,使你意识到道德性和专业性在你建造的机器中都非常重要。

我发现在90年代软件工程专业兴起。这是说得通的,因为软件专业鼓励严谨和责任感。

我希望代币生态系统设计成为一个工程学专业,和电气工程,软件工程,土木工程,航空航天工程等等一样。这表明代币生态系统设计也会成为严谨分析、设计和验证的领域。代币生态系统设计也会有工具能够让理论和实践结合,同时也会被责任感所引导,这应该称作 代币工程学

[注释:“代币”和“激励”比起来,“代币”这个词和它的经济学名词“代币经济学”比起来,更加简短和容易。]

下图展示了这些领域是如何相互联系的,最终达到实践代币工程学的目的。

3. 优化设计作为代币设计的方法

代币设计和优化设计类似:站在一定的高度,你可以通过区块奖励功能,也就是目标函数编译你想要的代码,然后你就可以让它自由运行。像往常一样,Simon de la Rouviere 第一个发现这个

现在变得更加特殊了。代币设计 像是进化算法(EAs),其中很多的代理同时“搜索”,但是对每个代理的工作并没有自上而下的控制。代理的生或死取决于他们区块的奖励和适用性。下面的表格总结了它们之间的关系。

有了这些相似性, 在做代币设计的时候,我们可以最好地使用优化设计/进化算法中的实践经验 。这是个非常好的消息,因为很多人在设计进化算法和优化系统的时候,使用的是 Jedis(译者注:一种 Redis 的 Java 客户端。作者在这里的意思是很多人只关心怎么写码怎么实现,而看不到整个系统的全貌)。

让我们按照表格逐行解释。

3.1 目标

代币生态系统和进化算法都有各自的 目标 ,通过 目标函数 (最大化或者最小化某件事)和 限制函数 (必须满足某件事)的形式来实现。我们可以想象,这些甚至都可以是随机的。

代币生态系统也许可以给区块奖励来触发目标函数“最大化哈希力”,不过进化算法的目标函数则可能是在深度网络训练时“最小化错误”。限制函数可以分别是“所持有的代币股份 ≥ 准入门槛”或者“深度网络层级 = 100”。

变量包括单目标优化算法(1 个目标函数,0 个限制函数),约束满足算法(0 个目标函数,≥1 个限制函数),还有多目标限制优化算法(≥2 个目标函数,≥1 个限制函数)。

3.2 测试系统

为了 测试 是否成功达到目标(目标函数以及限制函数),一个代币生态系统依赖于 证明 ,然而优化程序则是要测试 适用性 ,例如 模拟器

举例来说,一个比特币节点通过验证用户提供的可以解决该加密难题的数字来证明该用户正在进行哈希计算。

一个优化程序会通过运行电路微分方程的 SPICE 模拟,来进行测试电路的好坏;通过测试模拟结果是否真的能解决基尔霍夫电流电压定律(Kirchoff’s Current and Voltage Laws),我们可以验证模拟结果的正确性。

3.3 系统代理

在两种系统下, 代理 都在围绕“业务”运行。

在代币生态系统, 网络中的代币持有者 例如 矿工 (或者说 用户 )想尽办法来获得区块奖励。他们竞争着去获得更多奖励。例如,在比特币中,一些代理会设计,制造和运行 ASIC 芯片来获得更高的哈希力。其他代理会综合他们现有的算力。整个系统不会特别定义生态系统中的所有代币持有者。例如,比特币网络不会为银行,……或公司分配特定的角色,基本上都是矿工。

在一个进化算法中,在 群体 中你会有 个体 。如果你是“好的”,他们就会有更高的适用性。例如,个体可能是一个神经网络中有 10,000 权重的向量。个体的“行为”会通过类似 crossover(例如,插值)或者 mutation(例如,随机扰动参数)之类的操作函数在他们需要存活的时候发生,并且有组成他们的参数。

3.4 系统时钟

每个系统都有一个 时钟 ,通过运行的 进程 和发生的 收敛 来表明一个 时间维度

分批 。通常来说,代理都是分批或者分次处理。一个代币生态系统周期性地产生新的时钟并且给于区块奖励。 新的区块 指向旧的区块;并且新的区块也会加到旧的区块上;以此类推。这个区块相连接的链条形成了 Lamport 逻辑时钟。在进化算法中,每一批都是全部群体同时进行更新。每一代循环包括:评估个体,选择最优,让他们产生后代,重复进行。

连续性 。在有些系统中,代理会比按批次处理更加具有 连续性 。这些系统通常会花费稍微更多的工作来概念化,但是对有些问题会有更好的特性。例如在代币系统中,Stellar 转账只需要代表参与验证就可以,或者其他的节点加到 DAG(有向无环图)上,就好像IOTA。在进化算法中,存在稳态演化,个体每次都会被替换。

3.5 激励和遏制

系统本身不能控制代理的行为。(或者至少, 不需要 去控制他们。)例如, 代理的顶层行为一定是底层行为新的特性 。这对代币生态系统也很必要;不然他们就会中心化!但是,这对进化算法来说不是绝对必要的;尽管如此,有很广泛的进化算法为了简明、整洁或者满足其他设计目标而使用这个方法。

这意味着系统只可以奖励或者惩罚某个行为,又名 胡萝卜大棒 ,也就是激励和遏制。在设计系统的时候,我们会设计给什么样的奖励或者惩罚,以及如何给予。

在代币生态系统中,奖励会从区块奖励中获得,惩罚会通过削减持有的代币。前者是个目标函数;后者是个部分限制函数(不是全部)。

在进化算法中,奖励和惩罚都会给于选择成为下一代区块的母区块。例如:随机选择两名个体并且选择最好的,一直重复直到完成(竞赛选择法);并且选上的概率和适用性成比例(轮盘赌选择法)。关键地是,进化算法不需要通过例如提供导数的方法来引导个体。这就是为什么说代币生态系统是最像进化算法,而不是基于梯度的优化算法,给予自上而下的导数(使用梯度来选择新的个体)。

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

4.1 简介

这部分是一些在把代币设计当成能够发展成的工程专业时,需要注意的问题。

首先,我会描述一个优化设计的结构性方法。然后我再说类似的方法如何应用在激励设计中。

接下来,我会说在电路设计过程中使用的主要工具:仿真软件和CAD;以及它们是怎么用在电路设计之中的。

最后,我会举例几种设计方案。

4.2 优化方法

虽然这些社区没有与彼此全面地讨论此事,但是算法编写人员都是在做类似的事情。他们想要 能够运行的 更优化的系统,主要有以下步骤。虽然专业人士都是很系统地在做,不过有些人也只是很简要地去做。

  1. 提出问题 :假设算法“正好可以工作”并且他们专注于将这个问题从 目标和限制函数 ,还有设计空间的方面来定义。
  2. 尝试现有的优化代码 :然后根据这些目标来运行算法,让他去“解决”问题。对于优化算法的代码,我们简称为 “solvers”。如果无效,代码编写者会尝试不同的问题来进行迭代。或者其他的优化代码以及代码参数。
  3. 新的优化代码? 如果甚至在尝试了好各种公式后,之前的方法还是不能凑效。然后代码编写者就需要考虑建立自己的解决方案,例如设计新的优化代码。

我们再来仔细看看各个步骤。

步骤1. 提出优化问题

如果查询几乎所有和优化相关的论文,你会发现里面都写了目标和限制函数。以我自己的工作为例,这篇论文 中(在第5部分)的公式(1),是由语法定义的搜索空间中多目标约束优化的表示。这里有一个例子:

再举一个例子。这篇论文 中(第2部分)公式(1)和(2)在 n 维连续值变量空间,提出一个随机单目标(“最大化产量”)优化搜索问题。

用目标函数,限制函数和设计空间来制定问题不是很容易。实际上,经过这么多年,它也是充满创意的艺术。(就是说这很有意思!)有很多方式可以拟定问题;并且都不是同样的。幸运地是,通过练习你会变得越来越好。我在进化算法社区和电路计算机辅助设计社区都看到有人很精通制定问题的艺术。你肯定知道他们是谁 :wink:

  • 例如,其中一个问题描述可能很容易就解决了,但是其他的就可能会是 NP-Hard 问题,而且你不能保证所有事情都顺利。不过在凸优化领域,大家使用的最重要的诀窍之一:他们将这个问题默认为 NP-hard 问题,然后用技术将那些问题转化成凸问题(例如,正确放置的登入操作器)。然后,这些凸问题能够使用类似几何规划这样的凸求解程序在多项式时间内解决。我这样做也成功了;对于以上截图中的问题,我将语法限制添加到了一个树感应问题上(模拟电路综合),并且在运行时间上有 1000 倍的提高,同时也在优化程序中得到了更好的解决方案。
  • 或者,如果你在使用进化算法,想对设计点进行映射→ 例如设计中的很小改变,会导致行为发生改变,并且最终符合。(我称这些是光滑算子

步骤2. 尝试现有的求解程序

最完美的情况是你可以构想出这个问题,并且你可以使用现有的求解程序或者算法。然后,你可以直接运行,并且看会发生什么。

如果可以运行:你已经完成了,并且现在就可以结束工作!

不过有至少两种情况是无法运行的。首先,如果求解函数无法完全收敛,那么你可以尝试不同的构建方式,求解函数以及函数参数。

其次,求解函数可以“很好地”收敛,但是这个解答不可靠。为了解决它,你可以对问题进行修正:添加新的约束函数或者增加模型/模拟器的精确性。如果你发现增加约束函数(“打地鼠式人工智能”)(编者注:即本系列的上一篇文章) 会导致你进入单调乏味的迭代,那么你也许就要重新想别的办法解决这个问题。

步骤3. 新的求解函数?如有需要,设计新的优化算法。

有时候为了解决问题,现在没有合适的求解函数。也许你需要更广的思路,或者你需要处理一些对于模型来算很困难的限制函数,又或者其他一些事情。这时候你就需要对算法设计进行研究。当你在做这些的时候,你通过会利用现有的模块,然后添加你自己的想法。设计新的算法会花费大量的时间,但是如果你能做好,或许就能以数量级的提高来解决问题,例如FFX.

(并且,我之前是不是说过,这很有趣的?)

4.3 代币方法论

区块奖励是网络中 目标函数 功能的显示,即你想要最大化或者最小化的东西。从这可以推论出,代币设计就和优化算法设计类似。

因此:

我们可以通过优化设计得到代币设计的方法。

我们可以根据优化设计的步骤,然后将他们应用到设计代币生态系统中。

  1. 构想问题 。写下你需要的代币生态系统中的目标和限制。这意味着:谁会是潜在的代币持有者,并且其中的每个人都想要什么?什么是攻击向量?然后将它们转换为你可以测量的目标和限制。
  2. 尝试现有的方案 。确认是否有现有的求解函数,也就说能够解决你问题的代币网络设计方案。例如,如果你在寻找一些“好的”演员/资产/等等,代币组织注册表 可以解决吗?稍后我会详细解释这个问题。如果这样无效,就要尝试构想不同的问题,不同的求解函数或者求解函数的参数。例如,最后收敛到你不想要的行为,所有你要添加约束来防止这种行为发生。
  3. 新的模式? 如果有需要,做出自己的求解函数,也就是说设计你自己的代币网络。当然你在做这个的时候, 在 TCR 到仲裁允许范围之间,有可能地话使用现有的模块。

5. 代币设计模式:一个起点

每个成熟的工程领域都有自己建立模块的语料库。在设计建筑, 软件, 模拟电路,当然还有优化算法方案的时候,我们都有相应的书籍。但是,还没有人写了关于代币设计方案的书籍。

但是,构建模块已经开始兴起。有些的受欢迎程度迅速爆发(比如,TCRs)。下面的段落会描述这些模块。有时候他们会组成核心的代币机制;有时候他们可以解决特定的问题。这个列表只是个开始。

  • 管理
  • 身份信息
  • 信誉。信誉系统是管理和身份信息的交集。
  • 监管/软件升级 。这可以是ZeppelinOS, Aragon, Colony等项目的合集。也许最后是自动化?
  • 第三方监管 。比如Mattereum
  • 人类证明或者计算“工作” 。对于数据,计算和其他东西,这是对目标函数功能的评估。可以是人类工作,例如 Steemit 或者 Augur,或者在其他大多数系统中的机器工作。机器工作或许能够解决类似在比特币中没多大用处(有争议地)的难题,或是更有用的工作,例如在FileCoin中的空间-时间证明。下面附有一份根据数据和计算(见此链接)分类的有用工作(“服务完善性”)列表。

其他框架或者分类构建区块的方式包括

  • 代币是如何分配的 。这包含根据为运转使用可控的供应计划释放代币;100%预挖矿;燃烧和铸造众筹赏金活动;以及其他。
  • 以太坊代币标准 ,例如 ERC20 同质代币ERC721非同质代币。Billy Rennekamp’s 的代币专业词汇有助于理解其含义。
  • 代币存在什么价值 。正如 Chris Burniske 所说,作为交易工具,价值存储和记账单位。
  • 管理人员怎么分类 。根据 Ryan Zurrer,分为把关人员,仲裁人员和资源交易。
  • 如何组织计算堆栈。 过程,存储等等。根据 Fred EhrsamStephan Tual 和我自己,有不同的标准。
  • 第 1 层,第 2 层和第 N 层架构 。核心链是第 1 层。更高的层级是为了帮助扩容,同时也不会在每比交易中,影响到主链。 见此链接(译者注:中译本见文末《弄清第二层解决方案》)。
  • Jacob Horne 的《加密经济学范畴的诞生》,是代币设计方案或者区块构建的另一个标签 [在这项工作初次出版后出版]。

枚举算法只是开始;我期待能看到它继续成长。

6. 我们需要的工具:模拟软件,CAD工具

6.1 我们需要什么?

专业的工程师会使用 软件工具 制造“正好可以工作”的东西。软件工程师经常使用集成设计环境,这是免费或者说相对便宜的。

但是有可能会更加复杂。在电路设计中,关键工具是模拟软件或者CAD工具。工具栈随着时间会变得非常复杂。但是有了这些工具,能够让10人团队的工程师在几个月内设计十亿晶体管芯片。一个好的工程师可能可以运行价值100万美金的工具(这是年度许可证费用!)

“现在你在使用力量” —— 任天堂19世纪80年代广告标语

让我们为这个新的领域发掘些有力量的工具。我们需要:

  1. 使用的代币生态系统 模拟 软件。起点是基于代理的模型,这是来自于复杂科学人工智能。其他的是网络模拟器,已经在共识算法设计上使用。
  2. 我们需要 CAD 工具 来使用模拟器,并对设计进一步的认证,了解参数和结构是如何对应的,同时发现设计空间。

6.2 电路图设计中的模拟器和 CAD 工具

下面的图展示了电路图模拟器的环境。左上角是输入设计的原理图编辑器。模拟电路图,需要选择电阻,电容和晶体管等等;以及他们是怎么连接的;他们的大小是多少。输入就会自动转换为微分方程,之后会由模拟器求解。另外三个窗口显示了不同模拟器的结果。从右上方顺时针来看分别是偏差分析(dc), 基于时间分析(瞬态),以及频率分析(ac)。

-Image: Wikimedia Commons-

后面两张图来自 CAD 工具,我用来帮助我进行开发。下图是一个工具,用来验证芯片不会在一系列的最差情况的 “PVT” 情况下:电源电压极值,温度,压力等等,也不会失效。在底层,会有通用的优化器,可以优化之后的失效情况。

下面的图展示了发现设计空间的工具。它在各类输出(左边)中表现出变量的相关影响,以及如何设计变量图到输出(右边)。工程师可以通过拖动橙色的十字线来改变设计。

这些和其他工具现在广泛应用于设计现代芯片。模拟软件在 19世纪70年代 成为主流,CAD 工具则在 19世纪80年代;但是没人往后看。这些工具对于现代芯片设计至关重要。在现代化流程中,需要花费超过 5000万美元才能制造出一项设计。在花费这 5000万美元之前,如果不去验证和优化那项设计,则是显得非常愚蠢的。

在代币设计的世界中,我们正在建造并且实施我们希望的十亿美元级别的生态系统,但是却很少有任何工具。现在甚至不是在 19世纪70年代。我很期待,有一天我们可以达到代币工程学的级别。

6.3 工具的限制

我发现复杂芯片和经济之间一个最重要的区别:人在这个环节中所处的位置。芯片是闭环系统。人类使得经济模式更加混乱。但是,我也希望我们可以改善“没有人参与”的状态,因为我们所打造的系统都会包括人类。以下是一些补充意见。

一个选项是不要尝试黑天鹅模型,但是如果发生就最小化潜在的负面影响。

或者,我们让流程中的人类作为“模拟器”的一部分,他们被激励进行攻击。这就形成了现在有的实践模式:设计代币的人让他们的朋友帮忙进行新的攻击,然后他们更新限制函数表,之后再重新设计。我已经遇到过几十个这样的情况。

模拟毕竟不会完美。所以,我们应该保证系统本身相对于社区意向来说是可进化的。为了达到这些,所需要的工具是管制,股权和更多其他的。管制或许可以和硬分叉一样容易,例如改变目标函数或者增加限制条件。股权可以改变社区代币持有者从零和转变为正和。

6.4 外在与内在动机

外在动机 是从外部力量获得鼓励;行为是基于外部的激励来说服某人做出他们自己不会做的事情。

内在动机意味着天生的或者内在的;因为 内在动机 是从某人内部得到激发或者推动。内在动机经常会和内在报酬联系在一起,因为某项任务的自然奖励是鼓励某人的首要激励因素。[链接]

此文更专注于外部动机:搞清楚你想要优化的东西,然后直接进行优化。但是,外部激励也有一些问题。在教育上,外部奖励减少了孩子想要学习的内部激励,并且妨碍了自主决定和独立思考的能力。幸运地是,有可以鼓励内部激励的教育模式。[链接].

对于代币生态系统,我们必须要同样谨慎。外部激励为了达到某些目标,例如“最大化安全”或者“最大化数据的分享”有作用。但是在某些情况下也是很危险的。比如你正在打造去中心化的名誉系统。直接将名誉进行代币化会激励人们将他们的名誉进行变现,导致各种各样不好的行为。这也可以是控制,就类似……,直接对Whuffie说不。

对于这个系统,一个可能的答案就是支持内部激励而不是外部激励。在教室中,这意味着使用 战术:提供选择,最小化压力,允许多个答案,鼓励原创以及促进成功。有些策略也可以应用到代币设计上。其中一个例子就是经济利益简单地筛出恶意行为者,例如通过 TCR。或者,我们可以通过股权机制来宣传成功。

7.结论

此文讲述了我们如何使用现有的领域来帮助设计代币生态系统:代币设计和优化设计的关系;代币设计方案;以及通过电路设计得出的代币设计工具。最终的目标就是 代币工程学 的实践。我们已经完成了!

来源:ETHFANS