九分钟看懂 MatchBook:文字稿
MatchBook 视频的旁白文字。章节与视频一致。
8 分 53 秒 · 中文旁白观看视频
MatchBook 运行在 Solana devnet 上,使用测试代币。MBK/tUSD 是一个价格由机器人设定的虚构市场,不是真实市场。该程序尚未经过审计。
0:00引言
订单簿在 Solana 上住在哪里,订单怎么到达它,每一笔交易又是谁来付钱?看看这个页面。这是一个订单簿:谁想买、谁想卖、按什么价格,都列在这张清单上。它一刻不停地在动,但没有人在点鼠标:这是八个机器人。其中五个扮演做市商,另外三个模拟客户,也就是按自己的需要买卖的个人和企业。这是一个示范市场,MBK 对 tUSD,是 QuantStratum 在Solana 上搭建的,用来展示它能做出什么。你也可以进来交易。你会看到订单簿住在哪里, 订单怎么到达它,每个人的钱放在哪里,以及谁收的是什么钱。
MatchBook 是开源的,刚刚发布了一点零版。不过要注意:它还没有经过审计,所以如果用真钱,只投入你亏得起的部分。
0:58订单簿住在哪里
先说它住在哪里。MatchBook 是一个智能合约,在 Solana上叫作程序:它是住在链上的代码,自己不保存数据,因为数据都放在账户里。每个市场就是一个数据账户,所有东西都在里面:买单、卖单,还有每个交易者在市场里的位置,它把这个位置叫作席位,也就是 seat。你在页面上看到的订单簿,实实在在就是这个账户里的内容。账户满了,就会变大。现在,演示市场占用九千二百字节。
1:30一张订单怎么走
那么,一张订单是怎么到达 MatchBook 的?你在页面上点买入,你的钱包就会签署一笔交易,内容比如是:以一百的价格买一个 MBK。页面把它发给一个 RPC 节点,也就是 MatchBook 的页面、API和机器人跟 Solana 通信时用的服务器。节点再把它交给正在写当前区块的验证者,也就是处理网络交易的计算机之一。这个验证者在市场账户上运行 MatchBook 的代码。如果没有人按这个价格卖,你的订单就留在订单簿里等着。
如果有人卖,交易当场完成,双方的余额在同一笔交易里一起改变。在 Solana的一些订单簿里,卖家要晚一点才收到钱,要等有人运行一个单独的步骤,叫作 crank;在 MatchBook 里,没有这个步骤。如果中间出了任何问题,市场就保持原样。
2:21每一笔余额放在哪里
那每个人的钱放在哪里?我们一样一样来看。你的 SOL 在你自己的账户里,就是你地址对应的那个。其他代币,比如 MBK 或tUSD,放在单独的账户里,每种代币一个,都和你的地址绑定。市场有两个保险库,每种代币一个,钥匙在智能合约自己手里,不在任何人手里。你存入时,代币就转进这两个保险库,市场会把它记在你的席位上:多少是可用的,多少锁在订单里。你取出时,代币回到你的账户;而且只有席位的主人才能取出。下一张订单,它的金额就从可用变成锁定;撤掉订单,又变回可用。
你也可以不开席位,直接用兑换来交易,也就是swap:代币直接从你的代币账户转出、转入。
3:11机器人怎样交易
那机器人呢?它们是运行在链外服务器上的程序,每个都有自己的钱包:它的私钥存放在那台服务器上的一个文件里。五个做市商使用的是 market-maker-rs里的模型,这是一个开源库:Avellaneda-Stoikov、GLFT、自适应价差,还有网格。它们的余额不在服务器上,而在 Solana 上:付手续费用的 SOL在它们的钱包里,代币在它们市场里的席位上。站在对面的是另外三个,模拟客户:按自己的需要买卖的个人和企业,有的一次性按市价成交,有的跟着趋势走,有的按自己的价格挂单。
前两个把代币放在自己的代币账户里,用兑换来交易;第三个和做市商一样,有一个席位。每隔几秒,做市商就会在链上读取自己的席位,那就是它的库存:手里有多少 MBK 和 tUSD。据此,它算出买卖两边各一串阶梯式的订单,挂出去,一次性全部更新。它一开始有四百个 MBK;如果攒得更多,就压低价格来卖,超过上限,就停止买入。这笔启动资金来自一个管理员钱包,每隔九十秒,一个司库程序就会给余额不足的机器人补充。在正式环境中,每个做市商会投入自己的资金,还可以用一把受限的密钥来交易:它能交易,但永远不能取款。
4:38你的钱包
那你怎么加入?在浏览器里装一个 Solana 钱包,比如 Phantom 或Solflare,把它切换到 devnet,然后连接。页面上的水龙头会给你二十五个 MBK、两千五百个tUSD;如果你缺的话,还会给一点付手续费用的 SOL。你可以用兑换立即买入或卖出,也可以用限价单定自己的价格;第一次的时候,同一笔交易会帮你开好席位,并存入你的代币。之后你可以撤单,或者把所有东西都取回到钱包。每一步都要你签名,你的私钥永远不会离开你的钱包。
如果写代码,还有更多功能,比如止损单,或者会自动重新挂出的订单。
5:17为什么要花 SOL
那为什么这些都要花 SOL?因为在 MatchBook里,你做的每件事都是一笔由你的钱包签名的交易:存入、下单、撤单、兑换或者取出。每笔交易都要付钱给运行 MatchBook 代码的验证者:每个签名五千个lamport,也就是百万分之五个 SOL。一半被销毁,另一半归验证者;MatchBook 一分都不拿。你的订单还会占用市场账户里的一个格子。如果没有空格子,账户就会变大,让它变大的人要为这块空间留一笔押金,也就是 Solana所说的租金,英文叫 rent:每个格子不到万分之五个 SOL。
第一次的时候,你还需要 MBK 和 tUSD的账户,每个都有自己的押金,在演示里由水龙头来付;所以它会给你一点 SOL。网络繁忙时,你可以加一笔优先费,按计算量收费,而 MatchBook在这方面花得很少:每张订单大约一千三百个单位,而其他订单簿要用一千九百到一万八千个。对运营 MatchBook 的人来说,成本是部署智能合约,大约一个半SOL,市场的押金,还有机器人的交易,因为它们每隔几秒就要更新订单:每天半个到一个 SOL。
另外还有市场自己的手续费,不是用 SOL 付,而是用tUSD:吃掉流动性的一方付百分之零点一;其中五分之一给做市商,其余归市场的所有者。
6:47让它运行需要什么
那要让它一直运行,需要什么?链上只需要两样东西:智能合约和市场账户。链外是几个容器,里面有页面、一个 API 和机器人,它们通过一个 RPC节点读写市场;有八个机器人的话,devnet 的公共 RPC 就不够用了,最好用一个付费的。API 监视市场账户,把它转发给每个浏览器,还会保存成交记录,用来画图表。页面只是展示订单簿:真正的订单簿在链上。
7:18它适合谁
那么,谁需要它?想拥有自己市场的交易所或交易应用,或者想为自己的代币建一个订单簿的项目。聚合器,它在各个市场之间寻找最优价格,在这里可以算得分毫不差,因为开发工具包运行的是和链上相同的引擎。做市公司,对它们来说,更新订单很便宜。或者钱包,它可以给用户提供兑换。围绕它,还可以搭建交易界面、自动运行的策略、不需要服务器盯着的止损,或者分析看板。如果你想做类似的东西,QuantStratum 可以帮你,因为你看到的一切都是我们在 MatchBook之上搭建的:市场、五个做市商和它们的模型、模拟客户、司库程序、API、实时页面,还有它的部署。
总结一下: MatchBook 的订单簿是一个Solana 账户,撮合则是一个智能合约。每个操作都是一笔交易,你用 SOL 付给验证者;如果占用了新空间,还要加一笔押金。你的订单签好名后传到验证者那里,在同一笔交易里完成结算。你的代币在你的账户里,或者如果你存入了,就在市场的保险库里,记在你的席位上;机器人的代币也一样。打开 matchbook 点 quantstratum 点com,在 devnet 上连接你的钱包,试一试。
如果你想要一个属于自己的,我们了解每一个部件,从市场账户到最后一个机器人。来 quantstratum 点 com 跟我们聊聊你的项目。