近日,ICRC-1 代币标准提案通过,本文即是对其可替代代币和账本的介绍,以及铸币、子账户、批准和转账费用等特性。
原文:Fungible Tokens 101(The Internet Computer Review)
作者:Roman Kashitsyn
编译:ICPL
原用标题(译后):从 ICRC-1 开始:介绍可替代代币
简介
我目前正致力于将 ICRC-1 可替代代币标准带入互联网计算机(关于 ICRC-1 标准的动议提案的投票)。工作组中最激烈的两个讨论集中在子账户的使用和智能合约的核心支付流(特别是 ERC-20 代币标准普及的 approve / transferFrom 流 )。乍一看,这些问题似乎无关紧要,但仔细审视,其中有令人惊讶的联系,需要进一步的分析和探索。
本文是对可替代代币和账本的简要介绍。我们将阐述账本的概念和设计实际的记账系统时的设计选择,为以后的文章中更深度的技术探讨奠定基础。
可替代代币
“黄金在任何地方都是黄金,可替代的,中立的。但是,当铸币者在一张金盘上印上某些浮夸的文字和国王的画像时,它就有了附加价值——铸币税。它之所以有这种价值,只是因为人们相信它有——它是一种共同的幻想。”
——尼尔·斯蒂芬森《困惑》
可替代代币的概念是古老并熟悉的,尽管我们很少在日常生活中使用这个源自拉丁语的术语。可替代代币是指可以进行交易的可互换物品,例如同等价值的硬币或相同形式、重量和纯度的金币。
你小时候买冰淇淋时,你用一种可替代代币(法定货币)来换取另一种代币(冰淇淋)。商店的营业员不在乎你的硬币是从哪里来的,也许你的阿姨给了你一些钱来招待你,或者你从午餐钱里省下一些。你并不关心你会得到哪种类型的冰淇淋。
资产账本
数字世界中最突出的可替代代币的例子是数字资产, 例如 比特币、以太币 和 ICP 实用代币等。资产账本是这些系统之下的核心概念。账本是系统执行交易的记录;他们跟踪账户之间的资金流动。您使用比特币进行的每一次购买都会成为打包成区块链中的一个块的比特币账本中的一个记录。
生活中大家常常用一个简单的账本来记录小费金额。我将使用这个例子来解释账本的概念及其变体。
比如 Geneviève 在一家小型会计师事务所工作。一天,她和两个同事 Allen 和 Meriam 走进了一家小餐馆。他们吃了一顿美餐并决定给 20 美元的小费。不幸的是,Allen 和 Meriam 没有 6.66 美元来平均分担这些钱。于是他们拿出一本笔记本,在封面上写上 “账本”,然后把第一页分成三栏。Allen 和 Meriam 在账本上转移了 Geneviève 假想的钱。
现在,Allen 和 Meriam 的 “账户” 上有 6.66 美元,Geneviève 有 13.32 美元。第二天,他们去咖啡店,给了 15 美元的小费。这次 Allen 为所有人买单,Geneviève 和 Meriam 为账本添加了新的条目。
现在,Allen 的账户上有 3.34 美元,Geneviève 有 8.32 美元,Meriam 有 -11.66 美元(要计算一个人的余额,从上到下查看日志中的所有记录。如果此人出现在 “From” 栏,则从其余额中减去该金额;如果此人出现在 “To” 一栏,将金额加到他们的余额中)。这个账本有一个有趣的属性:所有余额的总和总是零,因为我们开始时没有资金,而且每个记录只移动资金。
这个简单的方案描述了一个功能全面、实用的账本,有助于均分小费的花费。账本上余额最低的人外出时支付整个公司的费用。
这个小费账本不同寻常,因为它像信用卡一样允许负余额。当所有参与者相互了解和信任时,这种设置就能发挥作用。而比特币等数字账本就像储蓄卡:在转账之前,你的账户上必须有足够多的代币。但是第一批代币是如何进入系统的呢?
铸造和燃烧
所有账本都有办法凭空制造,或称铸造代币。比特币网络铸造代币,作为对帮助账本增长的参与者的奖励。IC 网络会铸造 ICP 代币,以奖励网络治理的参与者和节点提供商。
另一个流行的方案是包装代币(wrapped tokens),账本铸造代币作为其他资产的代理分身。让我们扩展一下这个小费账本的例子,使其能适用于包装好的美元。
想象一下,现在 Geneviève 不相信和她一起出去玩的人,但她想继续享受虚拟货币带来的便利。每当有人在账本上转让虚拟代币时,她都希望确保自己可以拿到这些美元。
解决这个问题的一个方法是在办公室里放一个存钱罐。任何往存钱罐放入 1 美元的人都会在账本上得到 1 美元。将物理钱币转换为虚拟代币的交易是一个铸造交易。
有一天 Geneviève,Allen 和 Meriam 各自往存钱罐里放了 10 美元,并在账本上铸造了包装好的钱。
然后他们一起去了一家咖啡店,Geneviève 给了 6 美元的小费。Allen 和 Meriam 把他们的份额在账本上转给了 Geneviève。
与原来方案的主要区别是,现在 Geneviève 可以退出这个小组,并在任何时候拿回她的钱。她所需要做的就是在一个受信任的人的监督下打开存钱罐,拿到她的 14 美元,并把她的代币转给 void(有时被称为铸造账户)在账本上记录一个燃烧交易。账本上所有余额的总和总是等于存钱罐里的钱。
包装代币并不是最近的发明:在 1873 年,美元是 1.50463 克黄金的包装代币。
子账户
Geneviève 和她的同事有一个传统:有人过生日时,其他同事会筹集资金买一份小礼物。下个星期 Allen 就 33 岁了,所以部门里的人让 Geneviève 给他买些好东西。这一次,他们决定使用上一节讨论的存钱罐账本来转移目前的资金。但是有个小问题:如果每个人都直接将礼金转给 Geneviève,她将如何从礼金中分离出她的钱?
我们聪明的办公室同事决定在账本中添加一个新功能,以解决资金分离问题。每个人都可以在账本上持有多个不相关的账户,并从其中任何一个账户转移资金。子帐户将是一个标签,用于划分属于同一个人的独立帐户。
Geneviève 让同事们在当天结束前将资金转移到她的 NYYRA OVEGUQNL 子账户。(Geneviève 应用了高级密码学来隐藏子帐户的目的,不让艾伦知道。) 她烧掉了 NYYRA OVEGUQNL 子账户上的代币,并在离开办公室之前从存钱罐里取出了 42 美元。
总的来说,子账户是一个很有用的功能,允许你不把所有的代币放在一个篮子里。你的银行可能会为你开多个账户,比如工资账户和储蓄账户。
批准
一天 Geneviève 的侄子 Alex 来参观她的工作。Geneviève 有一个重要的客户电话,不能带 Alex 出去吃午饭。她的同事们很高兴和 Alex 一起出去,但是有个小问题:Alex 没有钱。
幸运的是,Geneviève 在账本上积累了相当多的余额,所以其他人可以为 Alex 付款,并将她账本上的钱拿回来作为交换。剩下要做的就是在账本上把这一安排正式化。
Geneviève 可以在 Alex 出去之前转给他一些预算,他回来后可以转给她剩下的,这就解决了问题。但是 Alex 在此期间不能使用这些被锁定的资金,因为从技术上讲,这些资金属于 Geneviève。
以太坊社区推广的另一种方法是引入批准(approvals)的概念。账本上可以有另外一个表,上面有两个人之间的消费限额。
有了这个记录,Alex 可以代表 Geneviève 转账,金额不超过限额
Alex 在一家咖啡店花了 16 美元。Allen 为 Alex 付钱,Alex 把 Geneviève 的一些代币转给 Allen 作为回报。这一操作对账本进行了两次更新。第一个更新是日志中的新交易。注意,我们需要在表中增加一列 “On Behalf Of”,以表明 Alex 发起了交易,但 Geneviève 才是有效的付款人。
第二个更新是将批准表中的限额减去为 Alex 花费的金额。
费用
Peppy 是一个可爱的五岁小女孩,她来到办公室来看她的妈妈 Meriam 的一天是如何度过的。她最喜欢的游戏是在大人们发明的特别规则中寻找漏洞。因此,当她看到母亲是如何使用账本的时候。
“妈妈,我能给你多少钱?” Peppy 问道。
“不会比你现有的钱多。” Meriam 回答。
“我还什么都钱没有呢。我可以给你 0 元吗?”
“嗯……好吧,我想没有规定禁止这样做。”
Peppy 抓起一支笔,开始在每一行里填上粗体字母。
“好了,Peppy,停。有一条新规则:你不能转账 0 元,只能是一个正数。”
Peppy 停下来想了想,她打开她的虎纹小背包,取了一枚前几天在街上捡到的五分钱。她把五分钱放进存钱罐里,然后记录了一次铸币。然后开始给自己转账。
“好吧,Peppy,有个新规定:你不能转账给你自己!”
Peppy 皱起了眉头,但十秒钟后,她又开始乱涂乱画,她转出了一笔特别小的钱。
“这并不好笑。从现在开始,每一次记录都要收取发送者的一分钱。”
现在 Peppy 就没办法了,只能选择放弃。
可见,费用是账本设计中的一个重要工具。比特币网络收取费用来保护系统免受垃圾交易的影响,并激励节点将交易纳入区块。交易发送方愿意支付的费用越高,节点处理交易的可能性就越大。ICP 账本也将收取费用作为一种防止垃圾交易的机制。
总结
我们已经看到,可替代代币是我们日常生活的重要组成部分。我们了解到,账本是一种强大的记账机制,我们可以通过采用各种特性来适配手头的任务:铸币、子账户、批准和转帐费用。在接下来的文章中,我们将讨论允许客户端用代币交换服务的协议,即支付流。
免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。本文内容仅用于信息分享,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。