CLIVEBREMNER
local
RECEIVED
TREASURY

appendix

TS/M
SUPPORTING MATERIAL, NOT PART OF THE RECORD
TS/M/1

A. on basis points

UNITS

A basis point is one hundredth of one percent. It exists because people who talk about rates all day need a unit small enough that they never have to say a decimal out loud, and because a whole number is harder to mistype than a fraction.

The program stores every rate as an integer number of basis points. There is no floating point anywhere in it. A floating point number is an approximation that looks like a fact, and an approximation that is multiplied by an amount and then written into an account becomes a discrepancy that nobody can trace later.

When you read a rate on the rate sheet, you are reading the integer that is in the config account, with a decimal point put in for your convenience.1 If the two ever disagree, the integer is the rate and the display is a bug on this site.

TS/M/2

B. on program derived addresses

ADDRESSING

Every account the program owns sits at an address derived from fixed seeds and the program's own identifier. Nothing is placed at an address someone chose. A program derived address has no private key, which means no one can sign for it, which means the program is the only thing that can change what is inside it.2

The practical effect is that the desk cannot hide an account. Given the seeds, which are published on the instruments page, anyone can derive the same address the program derives and read what is there. If a position exists, it is at the address its seeds say it is at, and if it is not there, it does not exist.

This is the part of the design I would keep if I had to give up all the rest of it. It means checking my work does not require my cooperation.

TS/M/3

C. on finality

WHEN A THING HAS HAPPENED

A transaction is confirmed when enough of the cluster has voted on the block that contains it. It is finalized when the cluster will not reorganise that block away.3 The gap between the two is short and almost always uneventful, and almost always is not a standard this desk is willing to report against.

So the pages here read at the finalized commitment and nothing else.3 A settlement that is confirmed and not yet finalized is not on the settlements page. It is not being hidden. It has not finished happening.

The cost of this is that the site is sometimes a little behind a block explorer. That is a cost I am content to pay, because the alternative is publishing a line and then removing it, and a record that removes lines is not a record.

TS/M/4

D. on the operator key

WHAT ONE KEY CAN DO

The operator key is one key.4 It is the key this desk signs with. It can run the batch, it can set rates within the bounds the program enforces, it can hold a position, and it can write a batch memo. That is the whole list, and the list is enforced by the program rather than by my restraint.

It cannot move collateral. It cannot open a position on someone's behalf. It cannot close a position that has not met its window. It cannot reverse a settlement, because no key can, because no such instrument exists.

People sometimes read the existence of an operator key as a weakness.4 It is a named responsibility. The alternative is not an absence of power, it is an anonymous one, and I would rather the record said which desk did a thing and who sits at it.

TS/M/5

E. on why there are no forms on this site

READ ONLY BY DESIGN

A form is a promise. It says that if you type something into it and press the control next to it, this desk will do something with what you typed. I am not in a position to make that promise to the public, so I have not built the thing that implies it.

Everything the system does is done by signing a transaction against the program. That happens with a wallet, against the interface published on the instruments page, and it happens whether or not this site exists. Putting a button here would not add a capability. It would only add a place for someone to be confused about who is responsible for the outcome.

So this is a document. It is printed once when you open it, it does not change while you look at it, and there is nothing on it to press. If you want it to say something newer, reload it.

TS/M/6

F. on reading a program derived address

PROCEDURE

Take the seeds from the seeds table. Concatenate them as bytes in the order given. Append a bump byte starting at two hundred fifty-five and descending. Hash with the program id under the chain's standard derivation. The first result that is not a valid curve point is the address, and the bump that produced it is the bump stored in the account. Any library for this chain does this in one call. The point is not that you will do it by hand. The point is that you could.

TS/M/7

G. on why this site has no server

DESIGN

Everything this site shows comes from the chain or from its own source. There is no database that could drift from the chain, no cache that could go stale, no account that could be compromised. If this site is wrong, either the source is wrong, which is public, or the RPC is wrong, which is checkable against another RPC. There is nothing else to be wrong.

TS/M/8

H. on the word desk

LANGUAGE

A desk, in a bank, is a function with a person attached. The treasury desk is the function that keeps the book. It happens, at present, to be one person, but the word is chosen so that when it is two, or none, the record does not need rewriting.

TS/M/9

I. on what happens when I am replaced

CONTINUITY

The operator key is rotated by a memo signed with both the old and new keys.4 The site name changes. The memos stay. The book stays. The batch runs the next day at the same hour. Nothing on the chain knows or cares who holds the key, and that is the whole reason the system is on the chain.

  1. 1. The rate sheet is the set of rate parameters held in the config account and printed, unaltered, on the rate sheet page.
  2. 2. A program derived address is an account address computed from fixed seeds, so anyone can derive it and check the desk's work.
  3. 3. Finality is the point at which the cluster will not reorganise a transaction away, and this desk reports nothing before it.
  4. 4. The operator key is the single key this desk signs with, and what it may do is fixed by the program, not by the desk.
END OF APPENDIX