同质化代币 101
介绍
我目前参与为互联网计算机提供 ICRC-1 同质化令牌标准的工作(目前针对 ICRC-1 标准的提案进行投票),工作组中最激烈的两个讨论集中在使用子账户和智能合约的核心支付流程(特别是 ERC-20 代币标准普及的 approval / transferFrom 流程)。
乍看之下,这些问题似乎无关,但在更仔细的审查下,令人惊讶的联系暴露出来,乞求分析和探索。
本文是对同质化代币和分类账的简要介绍,我们将在设计一个实用的会计系统时构建分类账的概念和设计选择,为未来文章中出现的更微妙的技术主题奠定基础。
同质化代币
“黄金无处不在,同质化且无关紧要。但是,当一个金盘被一个铸币师印上某些浮夸的词和国王的照片时,它就具有了附加价值 —— 铸币税,它的价值在于人们相信它确实如此 —— 它是一种共同的幻想。” —— Neal Stephenson,The Confusion
同质化令牌的概念是古老的,我们非常熟悉,尽管我们很少在日常生活中使用这个源自拉丁语的术语,同质化代币是您可以交易的可互换物品,例如等值硬币或形状、重量和纯度相同的金币。
当您小时候购买冰淇淋时,您将一种同质化代币(法定货币)换成另一种(冰淇淋),商店的售货员并不关心你的硬币是从哪里来的。也许你的阿姨给了你一些买零食,或者你从午餐钱中节省了一些,你并不关心你会得到哪种类型的冰淇淋(我最喜欢的是 plombières)。
资产分类账
数字世界中同质化代币最突出的例子是数字资产,例如比特币、以太币和 ICP 实用代币。资产分类账是这些系统的核心概念,分类账是系统执行的交易的日记账,他们跟踪账户之间的资金流动。你使用比特币进行的每一次购买都会成为比特币分类账中的记录,打包到区块链中的一个区块中。
我来自 Yandex 的书呆子前同事曾经使用一个简单的分类账来跟踪小费,我将使用并改进他们的方案来演示分类账的概念及其变体。
Geneviève 在一家小型会计师事务所工作,一天,她和她的两个同事 Allen 和 Meriam 走进一家小餐馆,他们吃了一顿美餐,并决定给 20 美元小费。不幸的是,Allen 和 Meriam 没有 6.66 美元来平分负担。
所以他们拿了一个笔记本,在封面上写下 “Ledger”,然后把第一页分成三栏,然后 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 实用代币以奖励网络治理和节点提供者的参与者。
另一种流行的方案是包装版本的代币,其中分类账铸造代币作为其他资产的代理,让我们扩展小费分类账示例,使其对包装的美元进行操作。
现在想象一下,Geneviève 不信任与她一起出去玩的人,但她想继续享受虚拟货币带来的便利,每当有人在一张纸上转移她的虚拟代币时,她都想确保她可以收回她的钱。
解决这个问题的一种方法是在办公室设立一个存钱罐,任何将 1 美元存入银行的人都会在账本上获得 1 美元,将实物票据转换为虚拟代币的交易是铸造交易。
有一天,Geneviève、Allen 和 Meriam 每人投入 10 美元到小猪里,并将他们包装好的钱铸造在账本上。
然后他们都去了一家咖啡店,Geneviève 给他们小费 6 美元,Allen 和 Meriam 将他们的股份转移到账本上的 Geneviève。
与原始计划的主要区别在于,现在 Geneviève 可以随时退出该组织并拿回她的钱。
她所需要的只是在受信任方的监督下打开小猪,得到她的 14 美元,并通过将她的代币发送到虚空(有时称为铸造账户)在分类账上记录一次销毁交易,总账上所有余额的总和总是等于存钱罐里的钱。
包装代币不是最近的发明:美元是 1873 年 1.50463 克黄金的包装代币。
子账户
Geneviève 和她的同事有一个传统:当某人过生日时,其他同事会筹集资金购买小礼物。下周 Allen 33 岁了,所以部门要求 Geneviève 给他买点好东西。
这次他们决定使用上一节中讨论的存钱罐账本来转移资金,不过有个小问题:如果大家直接把礼金转给 Geneviève,那她怎么把自己的钱和礼金分开呢?
我们聪明的办公室人员决定在分类账中添加一个新功能来解决资金分离问题,每个人都可以在分类账上持有多个不相交的账户,并从这些账户中转移资金,子账户将是划分属于同一个人的独立账户的标签。
Geneviève 要求同事将资金转入她的 NYYRA OVEGUQNL 子账户,直到一天结束(Geneviève 应用了先进的密码学来向 Allen 隐藏子账户的用途)。她烧掉了她 NYYRA OVEGUQNL 子账户上的代币,并在离开办公室之前从存钱罐中提取了 42.00 美元。
Geneviève 前往书店并购买了 Eliyahu M. Goldratt 的最新版本,多么棒的生日礼物啊!
总体而言,子账户是一项有用的功能,可让您不必将所有代币放在一个篮子中,您的银行可能为您开设了多个账户,例如工资账户和储蓄账户。
批准
一天,Geneviève 的侄子 Alex 来上班探望她,Geneviève 与一位客户要打一个重要电话,无法带 Alex 出去吃午饭,她的同事很乐意和 Alex 一起出去,但有一个小问题:Alex 没有钱。
幸运的是,Geneviève 在账本上积累了相当多的余额,因此有人可以为 Alex 付款并取回她的账本钱作为交换,剩下的就是在分类账上正式确定这种安排。
Geneviève 可以在 Alex 出去之前将一些预算转给 Alex,他可以在他回来时将剩余的转给她。这解决了问题,但 Geneviève 在此期间不能自己使用锁定的资金,因为从技术上讲,它们属于 Alex。
以太坊社区推广的另一种方法是引入批准的概念,分类账可以有另一个表,其中包含两个人之间的支出津贴。
有了这个记录,Alex 可以代表 Geneviève 转账,最高限额为津贴。
Alex 与 Geneviève 的同事们玩得很开心,在一家咖啡店花了 16.00 美元。Allen 为 Alex 支付了账单,Alex 将 Geneviève 的一些代币转给 Allen 作为回报。
这种安排导致分类账的两次更新,第一个更新是日志中的新事务,请注意,我们需要在表中添加一个新列“代表”,以表明 Alex 发起了交易,但 Geneviève 是有效付款人。
第二次更新将批准表中的津贴减少了 Alex 花费的金额。
费用
Peppy 是一个可爱的 5 岁女孩,她来到办公空间看看她的母亲 Meriam 是如何度过她的日子的。Peppy 喜欢数字,会写她的名字,而且对于她的年龄来说异常理性。
她最喜欢的游戏是在成年人整天发明的临时规则中寻找漏洞,当她看到她母亲如何使用分类账笔记本时,她的眼中闪过一丝恶魔般的火光。
“妈妈,我可以寄给你多少钱?” Peppy 问。
“不超过你账户上的钱。” Meriam 回答道。
“我还没有任何东西,我可以什么都不寄吗?”
“啊……嗯,我想没有任何规则禁止这样做。”
Peppy 抓起一支笔,开始用块状字母填充线条。
“好吧,Peppy,停下,有一条新规则:你不能转移任何东西,只能是一个正数。”
Peppy 停了下来,她的额头上出现了几道皱纹,然后她的唇角勾起一抹笑意。她打开她的虎纹小背包,取出几天前在街上捡到的一枚镍币,她把五分钱放进存钱罐里,记下了一个铸造,然而,她并没有就此止步。
“好吧,Peppy,一条新规则:你不能转移到自己身上,没有理由这样做!”
Peppy 皱着眉头,努力想出一个反击,十秒钟后,她又开始乱涂乱画了,她太专注了,以至于她的舌尖从嘴里伸出来。
“这不好笑,Peppy,从现在开始,每条记录都将花费发件人一分钱。”
Peppy 抿了抿嘴唇,又在笔记本上写了四份记录,然后拜访了 Geneviève 夫人,她的上层抽屉里放着一块巧克力棒。
费用是分类账设计中必不可少的工具,比特币网络使用费用来保护系统免受垃圾邮件交易的影响,并激励节点将交易包含在区块中。交易发送者愿意支付的费用越高,节点处理交易的可能性就越大,ICP 分类账还使用费用作为防止垃圾邮件的机制。
总结
我们已经看到同质化代币是我们日常生活的重要组成部分,我们了解到,账本是一种强大的会计机制,我们可以通过采用各种功能来适应手头的任务:铸造、子账户、批准和转账费用。
在接下来的文章中,我们将讨论允许客户端交换代币以获取服务的协议,称为支付流。
在 internetcomputer.org 上开始构建,并在 forum.dfinity.org 加入开发者社区。
作者:Roman Kashitsyn
翻译:Catherine
- 往 期 推 荐 -
Yumi NFT Art Festival - DFINITY 上的首个 NFT 艺术节
长按关注 DFINITY 微信公众号
随时答疑解惑
*添加小助手微信 comiocn 进交流社群