项目需求#
Permuto Capital 把一股股票变成两张凭证:承载增值收益的资产凭证,以及收取股息的股息凭证。每张凭证都可以单独交易,既可以在常规市场上,也可以在 Chia 的区块链上。Permuto 是 Chia 与一家投资公司的合资企业。
它想吸引的投资者,起初是基金和机构,并没有任何加密货币经验。他们需要一种方式,不必先弄懂钱包是什么,就能购买、持有和赎回凭证。每一对凭证都来自 Permuto 管理员设立的一个信托,在平台上购买的凭证会转入投资者自己在 Chia 上的保险库。
这个项目经由 Chia 来到我们手中,Saif Pasha 端到端地负责了它,从最初的构想一直到完整的工程实现。一切从品牌开始。应 Permuto 的要求,他设计了标志:两个半六边形像回形针一样扣在一起,并获得了 Permuto 首席执行官的认可。随后,我们的团队先构建了落地页,然后是平台本身。
最先做出的决定#
在动工之前,Saif 先做出了那些一旦推翻、代价最高的技术决定:技术栈和数据库,以及产品如何跟踪 Chia 的区块链。三个应用合并为两个:一个 Next.js 应用同时服务投资者和 Permuto 的管理员,背后是一个基于 PostgreSQL 的 NestJS API。业务上的决定由 Chia 和 Permuto 做出,包括仅支持通行密钥登录、由谁来验证投资者,我们的团队负责把这些落实到产品中。最初的决定都站住了,所以 Permuto 的第一批流程落在了稳固的基础上。
Permuto 会把每个流程以一张粗略的泳道图交给 Saif,比如机构投资者的开户流程。他先重新梳理,然后与我们的团队一起设计、构建并进行压力测试,找出其中的边界情况,并为每一种情况编写逻辑。
难点:一个与链同步前进的应用#
一张购买订单会产生两张凭证。投资者可能是个人,也可能是机构;凭证可能由经纪商持有,也可能由链持有;股息需要预扣税款;赎回则意味着把两张凭证都退回并销毁。每一个涉及链的步骤,都要等待链给出答复。应用必须跟踪每张订单的状态,并在投资者毫无察觉的情况下重试任何失败的步骤。
Permuto 的流程在开发过程中不断变化。作为平台基础的 Chia 的 Cloud Wallet 也在变化,新的端点、新的签名应用和新的保险库类型陆续到来。对于每一项功能,我们都会找到构建那一部分的 Chia 工程师,弄清楚它原本应当如何运作。
平台通过 GraphQL 与 Cloud Wallet 通信,我们的团队没有采用轮询,而是订阅了它的事件。服务器监听交易结算、手机与保险库完成关联、签名完成这几类事件,并把每一个事件直接推送到相关用户的浏览器。订单由此向前推进;投资者的手机一旦关联成功,也会看到一个绿色对勾。
投资者和管理员能得到什么#
投资者用通行密钥注册,也就不存在会被忘记的密码。

他们先选择账户类型:为自己投资,或为机构投资。接下来是身份核验和需要签署的文件。创建保险库时,他们用 Chia 的签名应用扫描一个二维码,并在过程中抄下助记词。

一张 250 股的订单会交付 250 张资产凭证和 250 张股息凭证。早期投资者凭推广码可以在发行开放之前下单,获得一个排队编号,并赢得一枚 NFT。

Permuto 的管理员在队列中批准或拒绝购买订单、预发行订单和赎回,队列会显示每一项是在等待签名、等待链上确认,还是已经结算。他们设立每一个信托及其保险库,这个保险库只有在达到设定人数的管理员批准后才会执行操作。他们铸造并发送凭证,根据上传的文件发放股息,并管理电汇信息、邀请和文件,这一切都不需要来找我们。

成果#
上线之前,一家独立的安全公司审查了这个应用。它已在 Chia 主网上线,投资者通过通行密钥注册、确认身份,并用手机创建保险库。Permuto 的首次发行采用邀请制,通过该平台完成。
Permuto 后来推出的产品都并入了同一个账户,而没有成为新的应用,因此公司始终保有一个以自有品牌运营的平台。投资者只需登录一次,就能在自己的各个产品之间切换,每个产品都有各自的订单和邀请。
每一条关键的用户旅程,在任何改动发布之前都会在 Playwright 中进行端到端测试;新增的页面如果既没有测试、也没有跳过测试的理由,构建就会失败。自上线以来,它一直由我们维护。
