10/20/2017

卡尔达诺的交易手续费如何运用?

为什么我们需要交易手续费?

如同卡尔达诺般的加密货币需要交易手续费的原因主要有两项:

对于负责运行完整卡尔达诺节点的参与者所花费的时间、金钱和精力以顺利运行协议,为此应该给予补偿和奖励。与比特币相反,比特币在每个开采区域创建新货币,然而在卡尔达诺协议中,交易手续费用是协议参与者的唯一收入来源。

需要交易手续费用的第二个原因是防止分散式阻断服务攻击(DDoS attacks)。在分散式阻断服务攻击中,若攻击者试图通过虚拟交易来淹没网络,那么攻击者则需要支付足够金额的交易手续费以完成这些虚拟交易,如此一来,这种攻击方式对攻击者来说将变得非常昂贵。

如何运用交易手续费?

每当持有者想要转移一定数量的Ada时,系统都会为此交易计算出一个最低的费用金额。为了认证该转移为有效交易,那么这笔最低的交易手续费应该包含在内(依照发送者愿意,他也可以支付更高额的手续费)。所有的交易手续费用被汇集于一个虚拟池中,然后再分发给卡尔达诺协议的参与者。

如何计算出最低金额的交易手续费?

最低金额的交易手续费按照公式计算

a + b×大小 (a + b × size), 其中’a’和’b’是常数,’规模(size)’是以Bytes为单位的交易规模。例如,常数“a”和“b”具有这些值

a = 0.155381 ADA, b = 0.000043946 ADA/Byte. 这意味着每笔交易的所需成本至少为0.155381ADA,另外加上交易规模每Byte所消耗的成本为0.000043946Ada。例如,规模为200Byte的交易(相当典型的规模)成本计算:

0.155381 ADA + 0.000043946 ADA/Byte × 200 Byte = 0.1641702 ADA. 为什么选择这个特定的公式? - 设定参数’a’的原因是防止在上述提到的分散式阻断服务攻击:即使是一个规模非常小的虚拟交易,都应该对试图发动上千个攻击的攻击者收取足够额度的交易手续费,以达到反击效果。引入参数“b”的理由是反映实际运行交易所需要的成本:存储规模较大的交易比起存储规模较小的交易需要更多的电脑内存,因此规模较大的交易所支付的手续费用也应该比规模较小的交易来得多。

为了获取参数’a’和’b’的特定值,我们不得不回答下列这些问题:

电脑内存的一个Byte耗费多少? 每秒平均有多少笔的交易量? 平均一笔交易的规模有多大? 运行完整节点需要多少费用? 在卡尔达诺运行之前,我们不得不先以估算方式回答些问题以取得答案。至今,卡尔达诺已经正式启动运行,意味着我们将能够收集更多统计数据来找到更准确的答案。这也意味着“a”和“b”的数值在将来可能会进行调整,以便更贴切地反映实际运行交易所需要的成本。

我们甚至计划在最终提出一个以市场驱动的方式动态来调整这些常数的方案,以便不需要人为干预来对流量和运营成本的变化进行操控反应。如何实现这方案正是我们积极研究的一项重点。

费用如何分配?

给定“纪元”的所有交易手续费用都将汇集在一个虚拟池中,这个想法是将虚拟池中的货币重新分配给通过在纪元期间的权益证明算法和区块创建之间被选为“插槽领导者”的参与者。

现阶段的卡尔达诺,所有区块皆由IOHK和我们的合作伙伴运营的节点创建,交易手续费已被汇集(以防止分散式阻断服务攻击),但是这些以被汇集的金额将不会被重新分配,而是被烧毁。

一旦卡尔达诺迈进下一个完全分散的阶段,费用将按照上述方式重新分配。

下一步?

制定一个费用分配的坚强方案是非常具有挑战性的数学问题:我们如何奖励“良好”的行为,并且提高执行效率的同时惩罚“不良”行为和攻击?我们如何确保协议参与者获得公平的报酬,同时确保使用卡尔达诺赚钱的最佳方法是让系统尽可能的可靠和高效?诀窍是奖励保有“良好行为”的节点运营者,从而当系统以最佳性能运行时,获取最高的奖励。

这些是被称为游戏理论的数学学科研究的问题,我们很自豪拥有着名的游戏理论学者同时也是Gödel奖获得者的牛津大学教授Elias Koutsoupias与我们一起寻找解决这个问题的办法。

This blog article has been produced by IOHK and syndicated by Cardano Foundation for wider distribution.

LATEST FROM AUTHOR