草庐IT

[科普文] Web3 中的资产负债表

myan 2024-02-27 原文

在一个新领域中学习,一个非常大的难点是需要找到一套高效的思考框架和交流语言。Web3 涉及到很多通证经济和金融相关的议题,在相关讨论中,资产负债表(balance sheet)是非常有用的工具,不仅可以帮你厘清思路,看清楚事情的本质,还能提高交流效率,甚至可以帮助你发现新的创新机会。我本人就从中获益匪浅。不过在实践中,我感到了解这个工具并且能够主动使用它分析问题的同业人士并不多,颇感惋惜,因此撰文予以介绍和提倡。此外,在本公众号后续的 Web3、通证经济和货币经济讨论文章中,也需要经常使用这个工具,所以本文也算是一篇参考文档,以后可以经常引用。


 资产负债表的基础知识


资产负债表是企业财会的基本工具,也是“三大报表” 或者“四大报表”之中最基础的那个。在传统商业中,初级管理者一般更关心利润表,而银行家、投资人和老练的高管则更关心资产负债表。而讨论货币经济的时候,读懂央行以及商业银行的资产负债表是一个基本功和起点。事实上,Web3 学习者将逐渐发现,讨论 Web3 时使用的资产负债表,与企业资产负债表差别比较大,而与宏观经济会计(macroeconomic accouting)中的资产负债表更加相似。而 DeFi 研究中使用的资产负债表,则与银行资产负债表颇为相通。因此,我认为解读和使用资产负债表应该成为 Web3 从业者的一项基本功。

早在 2017 年学习货币经济学的时候,我就意识到这个工具对于讨论通证经济非常有用。但因为我本人并非经济财会专业出身,从未系统深入学习过财会知识,因此只是把最基本资产负债表当成分析通证经济的一个工具。实际上,传统财会知识当中还有很多有价值的内容,包括一些估计、假设和调整的技巧,是值得被借鉴到通证经济中的。但我对于这些知识的了解是非常肤浅的,还需要根据实际需求不断补课。这里只是在我的理解范围内介绍一些最基本的知识点,目的是为了给后面的讨论打一个基础。

资产负债表反映的是在某一个特定时间,企业资产、负债和权益状态。它长成这个样子:

图 1. 传统企业的资产负债表示意图


观察这张图,我们可以得到有关资产负债表的几个要点:

资产负债表分为左右两个部分,左边是资产,右边是负债和权益,中间用一道竖线分隔开,因此也称为“T 型表”;

存在恒等式:资产 = 负债 + 权益。也就是说,资产负债表左右侧累加起来数值应该完全相等,是平衡的。这是资产负债表最重要的特点,也是为什么在英文里它被称为 balance sheet 的原因;

正常情况下,一个企业的权益应该为正值,如果权益为负值,也就是说,资产 < 负债,企业资不抵债,那么就陷入了偿付性危机(solvency crisis);

资产端大致可分为高流动性资产(现金和现金等价物)与低流动性资产(短期债权和长期资产),一般从上到下排列;

负债也分为短期债务和长期债务,也是从上到下排列。企业要格外关心短期债务,确保在资产端由足够的现金及现金等价物备付债务,否则将陷入流动性危机(liquidity crisis);

权益是企业的真正的财富净值(net worth),毫无疑问,根据第 2 点,权益 = 资产 - 负债。

其实资产负债表的基础知识就这么一点点,普通人几分钟就能学会。但在传统财务中,还要花很多时间来学习一些复杂概念,特别是如何将复杂的实际业务装进会计规则当中,比如说在资产端的无形资产(商誉、知识产权等)如何分类、估值和处理,以及分辨“所有者权益”与“权益”的概念差异等等。这些内容对于 Web3 数字资产的研究,短期内没有多大价值。相反,真正应该花功夫探讨的是如何将不同种类的数字资产表达在资产负债表中。

数字资产主要出现在左端。由于其形态丰富,并且不断出现新的品类,很难完全列举。本着自上向下,流动性越来越低的原则,我们可以把当前主要的数字资产这样安排:

图 2. 数字资产的排列方式


图 2 可能是某一个以纯数字化 DAO 组织的资产负债表的样貌。我们后续的探讨可以以此为一个出发点。

此外,还有一些拓展性的工具非常重要。

 增量平衡表

实践中常用的一个拓展工具是增量平衡表,它描述一笔交易对于资产负债表的影响。在增量平衡表中,我们只列出当前这笔交易影响到的那些项,而不影响的那些项则不列出。这种方式不但突出了问题,而且简化了图表绘制,随手就可以使用,更加便于交流。

举一个例子,一个用户把自己价值 1 万美元的 BTC 出售,兑换为 1 万美元 USDC。这个交易只影响该用户 BTC 和 USDC 的数量,不影响 其他资产和负债项,因此表达为增量平衡表,其他项目不列出,只需要把 BTC 和 USDC 的增减表达出来即可:

图 3. 出售 BTC 交易的增量平衡表


再举一个例子,假设在一个 ETH 价值 2,000 美元的时候,一个用户借入 4 万 USDC 和等值的 20 个 ETH 用于做市,增量平衡表显示如下:

图 4. 接入资金用于做市


假设过了一段时间,他做市获得收入 1,000 USDC 和 0.5 个 ETH,但同时累计的未支付利息达到 700 USDC 和 0.3 个 ETH,与此同时 ETH 价格上涨至 $2,500,则增量平衡表显示如下:


图 5. 做市产生利润


通过以上几个例子可以看出,由于平衡表始终是平衡的,因此一笔交易所产生的影响,也是平衡的,一个交易在资产负债表里引发的数量变化也必须是左右平衡,要么是资产或负债端的增减抵消,要么是两侧同时增加或减少。

在实践当中,增量平衡表远比完整的资产负债表常用得多。

 联合增量平衡表

交易是发生在多个主体之间的,在很多情况下,我们还要关心交易对其他相关主体资产负债表的影响。这个时候,我们将相关的两个甚至更多的主体的增量平衡表放在一起,可以对交易的性质和影响有着更加清晰的认识。

例如,在图 3 的例子中,如果我们把交易对手方(例如交易所)的增量平衡表与该用户并列,则可以得到以下的联合增量平衡表:

图 6. 比特币交易的联合增量平衡表

实践当中经常将相对应的变动项连线,表明“它们是同一笔钱”。比如上面的例子可以连线如下:

图 7. 添加了连线的联合增量平衡表

很多时候,我们并不关心资产的数量,而是定性地研究交易涉及到各主体资产负债关系变化,这种时候,可以忽略数字。例如,假设张三将若干 ETH 抵押到 Compound 里那里,借出 USDC,然后从李四那里购买了一个 NFT。假设我们不关心此次交易的具体金额,只是定性分析,那么联合增量平衡表如下:

图 8. 抵押借贷购买 NFT 的联合增量平衡表

上面这个表展现了联合增量平衡表在描述交易方面的能力,将资金的出出、资产的去处描述得非常清楚。如果添加连线,能够看得更加清楚。

图 9. 添加部分连线的联合增量平衡表

在联合表里,每一项增量,都要有对应的项。例如,某一方的某项资产增加了,那么必然对应着另一方资产项的减少,或者负债项的增加。这是使用联合表的基本原则。

以上就是资产负债表的基本内容。当然这里只是举了一些最简单的例子。实际上,活用资产负债表可以描述很多复杂的场景,也帮助我们解决很多复杂的问题。

 基于资产负债表研究问题的优势

很多人会质疑,一买一卖,或者抵押借贷,这些都是很简单的问题,何必要使用资产负债表来研究呢?有什么好处呢?

根据我长期的学习使用经历,好处至少有三个。

第一,帮助我们加深对金融交易和金融事件的理解。资产负债表提供了一个深度洞察金融行为的放大镜。同样一件事情,如果你只是粗略的理解为交易买卖,可能只能形成非常肤浅的看法。但是如果你把相应的资产负债表画出来,就能够看到事情的本质。

举一个例子,前不久 MakerDAO 社区投票支持用 DAI 购买美国国债。这件事情如果只是理解为稳定币的一个新用途,那就把事情矮化了。我们将购债行为放在 MakerDAO 资产负债表里一看,就会得出令人震撼的结论。

假设此时此刻,Maker 的用户抵押超额的资产(如 ETH)之后,通过借贷的方式产生了 $10,000 美元等值的 DAI,则以下是 MakerDAO 在购债之前的资产负债表。

图 10. 假定的 Maker 资产负债表

读者可能会奇怪,抵押进 Maker 的 ETH 为什么不出现在 Maker 的资产负债表中呢?因为抵押并不是一种所有权转移,而是为贷款增信的合同行为。抵押之后,ETH 的所有权并没有转移给 Maker,不能算成 Maker 的资产。Maker 创造 $10,000 DAI 的依据是贷款,而不是抵押进去的 ETH。

那么,如果此时 Maker 购买了 $5,000 的美国国债,这是一种什么行为呢?在这里,Maker 作为算法央行,无论它购买国债所需要的 5,000 DAI 是从财库(treasury)里取出,还是增发的,在 Maker 资产负债表中的反映都是一致的:

图 11. Maker 购买美国国债的增量平衡表

那么这样一张简单的增量表反映了什么呢?熟悉央行资产负债表的人一眼就能看出,这实际上表明,Maker 在基于美国国债来进行美元稳定币创造。也就是说,Maker 在分享过去只有美联储垄断的“基于美国国债创造货币”的权利。这当然是意义深远的行动。

可见使用资产负债表工具,可以帮助我们获得更有深度的看法。

第二,便于思考和交流。在这方面,资产负债表就想我们小时候学习的竖式运算一样,可以帮助我们将思考变得更加有条理,更加标准化,也便于彼此之间交流观点。

第三,帮助发现创新机会和梳理业务战略。资产负债表所提供的资产洞察,有时可以帮我们发现市场的空白点和潜在机会。Solv 就是这样一个例子。Solv 作为支持用户自定义多维资产的平台,远期目标清晰,但业务切入点的选择十分不易。我们在进行战略思考的时候,制作了下面这样一张全行业资产负债表,看到了低流动性资产(SAFT、锁仓 tokens、真实世界资产等)的空白机会,因此决定从这个领域切入,取得了良好的效果。

图 12. 启发 Solv 业务战略决策的资产负债表

总之,根据我的实践经验,资产负债表是学习研究 Web3 数字资产的一个好工具,因此乐于向大家推荐。我以后的文章也会主动使用这个工具来说明问题。



科普文系列往期文章

[科普文]搞 Web3 要学习哪些基础知识?

有关[科普文] Web3 中的资产负债表的更多相关文章

  1. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  2. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  3. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  4. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  5. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  6. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  7. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  8. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  9. ruby - rspec 需要 .rspec 文件中的 spec_helper - 2

    我注意到像bundler这样的项目在每个specfile中执行requirespec_helper我还注意到rspec使用选项--require,它允许您在引导rspec时要求一个文件。您还可以将其添加到.rspec文件中,因此只要您运行不带参数的rspec就会添加它。使用上述方法有什么缺点可以解释为什么像bundler这样的项目选择在每个规范文件中都需要spec_helper吗? 最佳答案 我不在Bundler上工作,所以我不能直接谈论他们的做法。并非所有项目都checkin.rspec文件。原因是这个文件,通常按照当前的惯例,只

  10. ruby-on-rails - active_admin 目录中的常量警告重新声明 - 2

    我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA

随机推荐