钱是怎么挪过去的 书架

第 11 章 / 共 16 章

第十一章 · 一笔跨境 wire 的全程慢放

前面十章,我们把零件一个一个拆开看过了:账户就是银行欠你的钱、复式记账、央行账户、清算和结算的区别、代理行、Nostro/Vostro(同一个账户的两个视角)、还有 SWIFT——它只发消息,不搬钱。

现在到了把所有零件装进一台机器、按下启动键、看它整条链路怎么跑的时候。这一章我们只做一件事:拿一个具体的例子,用慢动作,一跳一跳地走完一笔跨境汇款。走完你会亲眼看到一个也许有点反直觉的事实——那 1000 美元从头到尾没有飞越太平洋,它只是在一串账户上被加加减减,同时另一条轨道上飞着一串 SWIFT 消息。

说人话:钱没「过去」,是「账本上改数字 + 发通知」这两件事配合着,把「谁欠谁」这件事重新排列了一遍。

先摆好人物和道具

小王在中国工商银行(ICBC)有个美元账户,他想给美国的老张汇 1000 美元。老张的钱要落到美国的一家小银行,我们叫它 Bank A

问题来了:工行和 Bank A 之间没有直接的代理关系——它们俩谁也没在对方那儿开过账户,彼此不认识。(回忆第八章:两家银行要直接互转,得先互相开户建立代理关系。)所以这笔钱得找「中间人」接力。

接力链是这样搭的:

于是链路是:工行 → 花旗 → JPM → Bank A。四家银行,三跳。

这就是工程师最熟的东西:一个请求要经过好几层中间件才到后端。每一跳都是一个中间件,每一跳都要鉴权、记账、还可能把你拦下来检查。

两条轨道:一定要分清

整章的主线就一句话,请把它钉在脑子里:

资金流(钱):各家银行在自己账本上改 Nostro/Vostro 数字。
消息流(指令):SWIFT 上飞来飞去的 MT103 之类的消息,本质是「请你替我改账」的通知。

这两条轨道是平行跑的。消息先到,不代表钱到;钱到,也得靠账本上真的改了数字、并且两边对上了账。消息 ≠ 资金——这是第十章反复强调的,现在你要看它在真实链路里怎么体现。

慢动作开始

第 0 跳:小王掏钱

小王在工行 App 点了「汇出 1000 美元」。工行做的第一件事,是在自己的账本上:

此刻钱还在工行手里,一步都没出去。工行现在欠自己一个内部任务:把这 1000 美元想办法送到 Bank A。

第 1 跳:工行 → 花旗

工行的美元都「停」在花旗的那个账户里。从工行的视角,这是它的 Nostro 账户(我在别人家的钱);从花旗的视角,同一个账户是 Vostro 账户(别人存在我这儿的钱)。同一个账户,两个视角,第九章讲过。

现在发生两件事,同时发生:

  1. 消息流:工行给花旗发一条 MT103(就是那张标准格式的「客户汇款指令」电报)。内容大意是:「请从我在你这儿的账户里划 1000 美元出去,最终收款人是 Bank A 的老张,下一手请走 JPM。」
  2. 资金流:花旗收到指令、做完检查后,在自己账本上把工行的 Vostro 账户减 1000

注意看:钱没有从中国「发」到美国。工行的美元本来就在花旗。这一跳只是花旗在自己账本上把工行那笔余额调小了 1000,然后花旗接手了「把这 1000 送到 JPM」这个任务。

工行说:「我在你花旗存的钱,帮我付出去 1000。」花旗说:「收到,你账上少 1000,剩下的我来接力。」

第 2 跳:花旗 → JPM

花旗和 JPM 是同级大行,彼此有账户。这一跳的钱怎么挪,取决于它俩之间怎么结算——通常是通过美国的银行间清算系统(比如 Fedwire 或 CHIPS)在央行账户/清算账户层面轧一笔。你不用记系统名字,只记住结论:

钱还是没「飞」。它只是又在一对账本上改了一次数字。每多一跳,就多一对账本要改、多一次要对账。

第 3 跳:JPM → Bank A

Bank A 在 JPM 开了账户。从 Bank A 看是 Nostro,从 JPM 看是 Vostro——又是同一个账户的两个视角。

最后一步:Bank A → 老张

Bank A 看到自己在 JPM 的账户多了 1000,于是在自己的账本上,给老张的账户加上钱(记住第一章:老张账户上的数字,就是 Bank A 欠老张的钱)。到这儿,老张终于「收到钱」了。

回头看整条链,你会发现一个漂亮的事实:

1000 美元从来没有作为一坨东西移动过。发生的全部事情,是四家银行在各自账本上做了一连串「这边减、那边加」的动作,串起来的净效果是:小王少了 1000,老张多了 1000,中间每家银行的债权债务重新排了一遍队。消息负责传达「该怎么改」,账本负责「真的改」。

为什么要 1 到 3 天?

你可能会想:不就是几家银行改几个数字吗,计算机一秒钟的事,凭什么要一两天?原因是这条链上每一跳都有自己的「慢」:

不是某一步特别慢,是每一步都慢一点点,四家银行串起来就攒成了一两天。就像一个请求穿过四层中间件,每层都排队、每层都要审一遍,端到端的延迟就上去了。

为什么手续费被一层层扣?

老张有时会发现:小王明明汇了 1000,自己到账却只有 970 几。钱去哪了?被链上各家收「过路费」了。

发起行(工行)收一道手续费;中间每一家代理行(花旗、JPM)也都要收自己的一份——处理、发报、记账,都是它们的成本,它们要收电报费/中间行费用。谁来付这些中间行的费,有三种约定,写在汇款指令里:

关键点:中间行不是活雷锋,每接力一手都要收钱,而且 BEN/SHA 下它们是直接从你汇的钱里抠。跳数越多,被抠的层数越多。

为什么常常查不到钱到哪了?

小王第二天想查:我的钱现在在哪一跳?往往查不到。因为:

工程师一秒就懂:这就是没有 trace id 的分布式系统。请求穿过四个服务,每个服务各记各的日志,格式还不一样,出了问题你根本没法把一整条链路串起来看。

后来 SWIFT 搞了个改进叫 SWIFT gpi(Global Payments Innovation),核心就是给每笔汇款配一个贯穿全程的追踪号(相当于终于给这条链加上了 trace id),让各跳的状态能被查到、到账更快也更透明。点到为止,你知道有这么个东西补了这个洞就行。

收个尾

把这一章连起来看:一笔跨境 wire,就是沿着代理行链一跳一跳地在各家账本上改 Nostro/Vostro 数字(资金流),同时用 SWIFT 消息一路传达「该怎么改」(消息流)。钱从没飞过大洋,飞的只是指令;到账靠的是每一跳账本上真真切切地加减和对账。慢,是因为多跳、跨时区、要过 cut-off、要合规筛查、结算不实时;贵,是因为每一跳都收过路费;不透明,是因为早年没有端到端的追踪号。

但你也得公平地看它另一面:这套管道是一百多年一点点攒出来的,它能用、可信、几乎连通全世界每一家银行。慢、贵、不透明是它的毛病,可信、通用、经得起考验是它的本事。正因为它这么难被取代,第十六章那些想颠覆它的新方案——稳定币、央行数字货币——才既让人兴奋,又推进得那么艰难。

不过在去看未来之前,我们还得先回答一个更吓人的问题:这条链在一跳跳改账、还没全部对完账的中间那一刻,万一有一家银行突然倒了,会怎样?下一章,我们讲一桩真事——赫斯塔特。

钱是怎么挪过去的 · 王建硕
面向对世界有好奇心的人 · 费曼式写法 · 由多个 AI 代理撰写与互相审校