Unfortunately, I'm much too far removed to influence anything. The Federal Reserve System is massive and distributed into many large silos (Reserve Banks & The Board of Governor's) that prevent power from being too centralized in a single bank, but also make it difficult to work with anyone that's not in your bank. Interestingly, this is by design! Anyways, this work is primarily driven by the Board of Governor's and I'm at FRBNY, so I'll probably be getting most of my information from press releases like this one.
Internally all our logic runs on json. It works because at the end of the day, payments only need a few fields to work: Source, Destination, Amount.
>.<
I hope you aren't using floats for cents!
Edit: looks like there is no float in xml.
While alternative parsers exists (javascript has LosslessJSON for example), they're a pain to use.
Using strings for floats only has a tiny overhead, but it allows users to use standard JSON parsers and it signals a good practice.
If you use JSON numbers to serialize money, you create a situation where the path with the least friction is the incorrect one.
FWIW in Python that's as uncomplicated as
json.loads('1.1', parse_float=decimal.Decimal)
though of course it helps tremendously that `decimal` is part of the stdlib.To support these goals, the service will use the widely accepted ISO 20022 standard and adopt other industry best practices, that would remove barriers to interoperability, in order to avoid unnecessary and burdensome incompatibilities, to the extent the existing private-sector service also uses publicly available, widely accepted standards.
Without proof (or at least some great reasoning), I think downvotes of "predictions" are correct.
On the contrary the argument was to build a locally minimal, but sufficient, protocol that doesn’t try to compete with other locally suitable protocols.
I’d pick protobuf. Or json with schema if json is preferred.
Schema works on machines, good documentation is work for humans.
Interledger Architecture:
https://interledger.org/rfcs/0001-interledger-architecture/#... :
> For purposes of Interledger, we call all settlement systems ledgers. These can include banks, blockchains, peer-to-peer payment schemes, automated clearing house (ACH), mobile money institutions, central-bank operated real-time gross settlement (RTGS) systems, and even more.
[...]
> Interledger provides for secure payments across multiple assets on different ledgers. The architecture consists of a conceptual model for interledger payments, a mechanism for securing payments, and a suite of protocols that implement this design.
> The Interledger Protocol (ILP) is the core of the Interledger protocol suite. Colloquially, the whole Interledger stack is sometimes referred to as "ILP". Technically, however, the Interledger Protocol is only one layer in the stack.
> Interledger is not a blockchain, a token, nor a central service. Interledger is a standard way of bridging financial systems. The Interledger architecture is heavily inspired by the Internet architecture described in RFC 1122, RFC 1123 and RFC 1009.
[...]
> You can envision the Interledger as a graph where the points are individual nodes and the edges are accounts between two parties. Parties with only one account can send or receive through the party on the other side of that account. Parties with two or more accounts are connectors, who can facilitate payments to or from anyone they're connected to.
> Connectors [AKA routers] provide a service of forwarding packets and relaying money, and they take on some risk when they do so. In exchange, connectors can charge fees and derive a profit from these services. In the open network of the Interledger, connectors are expected to compete among one another to offer the best balance of speed, reliability, coverage, and cost.
ILP > Peering, Clearing and Settling: https://interledger.org/rfcs/0032-peering-clearing-settlemen...
ILP > Simple Payment Setup Protocol (SPSP): https://interledger.org/rfcs/0009-simple-payment-setup-proto...
> This document describes the Simple Payment Setup Protocol (SPSP), a basic protocol for exchanging payment information between payee and payer to facilitate payment over Interledger. SPSP uses the STREAM transport protocol for condition generation and data encoding.
> (Introduction > Motivation) STREAM does not specify how payment details, such as the ILP address or shared secret, should be exchanged between the counterparties. SPSP is a minimal protocol that uses HTTPS for communicating these details.
[...]
GET /.well-known/pay HTTP/1.1
Host: example.com
Accept: application/spsp4+json, application/spsp+json