正文
-
客户使用 Anchor 提供的客户端或者网页发出一笔付款;
-
Anchor 的内部服务通过桥接服务(Bridge)发出一笔付款;
-
桥接服务决定是否需要进行合规检查并将交易的相关信息发给合规服务(Compliance);
-
合规服务通过查找联合地址决定收款的账户 ID;
-
合规服务调用 Anchor 的接口获取客户的相关信息并发送给接受付款组织的合规服务;
-
如果通过了相关组织的合规验证,那么桥接服务就会创建并签发一笔交易,发送到 Stellar 网络中;
-
当交易被网络确认时,桥接服务收到消息最终更新客户的账户余额;
当其他人向我们发送一笔转账时,整个数据流相比付款时就有一些不同了:
-
发送者通过查找 Stellar 账户 ID 根据客户的联合地址发送一笔付款;
-
发送者将付款信息与付款方的账户信息发送给收款方的合规服务;
-
合规服务联系三个不同的服务:
-
一个用于判断发送者是否允许的支付客户的制裁回调(Sanction Callback);
-
如果发送者想要得到客户的的信息,我们需要由回调来决定是否提供当前的客户信息;
-
如果决定了提供客户信息,通过回调的方式进行提供;
-
发送方将交易发送到 Stellar 网络中;
-
桥接服务监控 Stellar 网络中的这笔交易并确认是否是 3.1 中已经同意的付款;
-
桥接服务通知我们的服务当前交易已经确定,我们可以更新客户的账户余额;
从 Stellar 网络为我们提供的收付款功能的执行流程来看,很多架构的设计都是为了资产的发行方能够更好地控制自己发行的资产,使得整个转账和付款流程更加合规,这一点对于大型的金融机构十分重要,作者觉得这也是 Stellar 网络的亮点之一。
概念
在这一节中,我们将介绍 Stellar 中的一些概念和数据结构,除了常见区块链项目中的交易、账户以及资产等概念;因为出发点的不同,Stellar 引入了类似信任线、通货膨胀等金融系统中的概念,我们将在这一节中介绍这些有趣的术语。
账户
账户是 Stellar 中的核心数据结构,它是被存储在账本中的公钥标记的,账户中其他的数据结构都是属于某一个账户的,我们最熟悉的交易 Transaction 也是由账户创建的,每一笔交易都需要由当前账户的私钥签名才能生效。
AccountEntry 在 Stellar 中其实就是一个 C 语言的结构体,其中包含了与当前账户相关的很多字段: