邹传伟:关于数字货币可编程性的思考
一、问题的提出
2021年7月,中国人民银行在《中国数字人民币的研发进展白皮书》中指出,数字人民币通过加载不影响货币功能的智能合约实现可编程性,使数字人民币在确保安全与合规的前提下,可根据交易双方商定的条件、规则进行自动支付交易,促进业务模式创新。在一些城市的数字人民币试点中,数字人民币红包有一定使用有效期,过期无效。这就是数字人民币可编程性的一个具体体现。
随着央行数字货币的研究、试验在全球铺开,货币可编程性开始受到中央银行界的关注。根据数字人民币白皮书的表述,货币可编程性的含义是“可根据交易双方商定的条件、规则进行自动支付交易”。2021年6月,美联储纽约分行Alexander Lee发表《什么是可编程货币?》[1],提出了可编程货币的“一致性保证”机制(Coherence Guarantee),含义是:不管可编程货币依托什么技术,都应该具备的一组不可分割的功能模块。
货币的可编程性是新技术条件下货币经济学中的一个新课题,需要讨论的问题包括:
第一,货币可编程性依托什么技术?特别是,是不是一定需要能加载智能合约的数字货币?
第二,货币可编程性能实现什么功能?
第三,货币可编程性应该遵循什么原则才能不影响货币基本功能(即计价单位、交易媒介和价值储藏)?
二、货币可编程性的技术条件
货币可编程性有两种实现方式。第一种是数字货币加载智能合约。数字货币与智能合约之间有密不可分的关系:数字货币发行和流转方面的规则由智能合约定义,智能合约操作的对象是数字货币,智能合约执行结果是数字货币的发行和流转。因此,这种方式可以称为内生的可编程性。数字货币的可编程性在实现方式上,也取决于数字货币采取类似比特币的UTXO模式(以货币为中心构建),还是类似以太坊的余额模式(以用户为中心构建),而后者离不开虚拟机的使用。
第二种则是通过API技术操作中央银行账户、商业银行账户和非银行支付机构账户。中央银行账户、商业银行账户和非银行支付机构账户一般采取关系数据库架构,不是从天然就具备可编程性,但通过以API为代表的技术实现可编程性。因此,这种方式可以称为外生的可编程性。
因此,“传统账户体系+API”和“数字货币+智能合约”都能实现货币可编程性,核心区别是前者是外生的可编程性,后者是内生的可编程性。关系型数据库能用于一般目的,不一定局限于金融账户体系,而数字货币系统为特定目的而设计、构建,比如要确保数字货币具有可控匿名、不可伪造和不可双花等特征。实际上,内生的可编程性正是数字货币的核心特征之一。图1显示了这种区别,改自美联储纽约分行的Alexander Lee。
图1:货币可编程性的两种实现方式
此外,在“数字货币+智能合约”中,可编程性可以由用户来设置,去中心化程度更好,能赋予用户更大的自主权利;而在“传统账户体系+API”中,可编程性的设置需要账户管理机构的审核,中心化色彩非常明显,不一定能“无缝”适应用户的需求。如果考虑数字货币账本的开放性和跨境特性,“数字货币+智能合约”有助于将货币的可编程性应用拓展到非人格化支付和跨境支付等场景。
三、货币可编程性的功能
通过“传统账户体系+API”方式实现可编程性,在日常生活中已有很多应用,比如定期转账和还款等。英国诺森比亚大学Elsden等(2019)以英国线上银行Monzo为例分析了这类应用[2](图2)。他们认为货币可编程性有两个组成部分——触发(Trigger)和行动(Action),并从货币和信息两个维度进行详细划分。
图2:Monzo的可编程应用
Elsden等(2019)认为,触发包括:1.另类输入,比如文字和语音指令;2.周期性时点,比如每周、每月;3.特定事件;4.测量和分类结果。行动包括:1.移动资金,比如存款、取款和分配资金;2.通知或提供信息;3.记录;4.体验。这些触发和行动既可以针对Monzo,也可以针对Monzo以外的应用和程序,从而形成不同搭配,但“触发-行动”的各种组合都可以概括为“If…Then…”条件逻辑。
Monzo的可编程应用主要实现的功能包括:
1.自动储蓄;2.管理支出;3.账户管理;4.构建创新型金融应用,特别是与社会交往和个人行为有关的。
与“传统账户体系+API方式”相比,通过“数字货币+智能合约”实现可编程性还处于发展早期阶段,但应用逻辑清晰,大规模应用后的价值非常明显。这类应用首先需要建立数字货币钱包与其他应用和程序之间的信息交流和互操作性。比如,通过扫二维码来发起数字货币支付,通过API读取现实世界信息并触发数字货币支付,以及其他应用和程序从数字货币钱包读取信息,等等。但不管智能合约采取何种实现方式,也都可以概括为“If…Then…”条件逻辑。
四、货币可编程性与货币基本功能
货币有三个基本功能——价值尺度、交易媒介和价值储藏。这三个基本功能之间存在复杂关系,至今也没有定论。传统货币理论强调交易媒介功能在货币演进中的基础性作用:原始货币起源于物物交换媒介,以解决物物交换中的“需求的双重巧合”问题,然后沿着交易成本最小化的方向,先演变为金属铸币,再演变为金、银本位纸币,直到今天以信用货币为主的形态。与传统货币理论相对的另一派观点认为,货币从一开始就与信用不可分割。货币最初并非充当一般等价物,而是某种类型的借据,承担价值尺度和债务清偿手段等功能,而交易媒介仅是其初始功能的延伸。本文主要采取传统货币理论的立场。
货币可编程性为用户带来更多、更精细的控制权利,更能适应用户在特定场景下的需求。用户可以根据自己的需要,利用可编程性,对所持货币的流通特点进行重新设置(Configuration)。只要这些设置体现的是用户对自己财产的处置权,而非被外部强加,货币可编程性就不会损害货币的交易媒介功能。货币可编程性让货币的交易媒介功能有新的、丰富的表现形式,特别是可以在支付链路中嵌入其他功能[3]。比如,微信红包代表的社交功能。因此,货币可编程性不改变甚至可以加强货币的交易媒介功能,货币的价值储藏功能也不会受到货币可编程性的显著影响。最后,货币可编程性只会改变部分货币的流通特点,而不会影响价值尺度这一货币整体层面的功能。
货币可编程性不影响货币的基本功能的另一个条件是可编程性的执行者保持利益中立地位,按事先确定的规则不偏不倚地处理可编程性有关的支付条件和规则,而非试图改变用户之间的利益关系,甚至追求自己的私利。比如,只要用户同意或有充分授权,商业银行和非银行支付机构就不应屏蔽对自己不利的可编程性条款;稳定币账本的验证节点按算法规则运行共识算法,而不会出现类似以太坊的MEV(最大可提取价值)市场。
五、小结
通过以上分析,本文得到了关于货币可编程性的以下结论。
第一,货币可编程性的核心是支付条件、规则的可自动化处理,不存在可编程货币和可编程支付的分别。
第二,“传统账户体系+API”和“数字货币+智能合约”都能实现货币可编程性,核心区别是前者是外生的可编程性,后者是内生的可编程性。“数字货币+智能合约”的去中心化程度更好,能赋予用户更大的自主权利。“数字货币+智能合约”还有助于将货币的可编程性应用拓展到非人格化支付和跨境支付等场景。
第三,不管是“传统账户体系+API”,还是“数字货币+智能合约”,货币的可编程性都可以概括为“If…Then…”条件逻辑,主要实现的功能包括:1.自动储蓄;2.管理支出;3.账户管理;4.构建创新型金融应用。货币可编程性使得可以在支付链路中嵌入其他功能。
第四,货币的可编程性不改变货币的基本功能(特别是交易媒介功能)要满足两个条件:1.可编程性设置体现的是用户对自己财产的处置权,而非被外部强加;2.可编程性的执行者保持利益中立地位,按事先确定的规则不偏不倚地处理可编程性有关的支付条件和规则,而非试图改变用户之间的利益关系,甚至追求自己的私利。
[1]https://www.federalreserve.gov/econres/notes/feds-notes/what-is-programmable-money-20210623.htm
[2] Elsden, Chris, Tom Feltwell, Shaun Lawson, and John Vines, 2019, "Recipes for Programmable Money", CHI 2019 Paper.
[3]在支付链路中嵌入其他功能,有可能造成市场公平竞争和用户隐私保护等方面的问题。2021年9月18日,中国人民银行易纲行长在中德“金融科技与全球支付领域全景—探索新疆域”视频会议开幕致辞中表示,支付要回归本源,断开支付工具和其他金融产品的不当连接。
Scan QR code with WeChat