Every currency its own balance, one rate for everyone.
Balanced wallets come in more than one currency: EURB, USDB and GBPB. Each currency keeps its own ledger that always sums to zero, and the ledgers are never mixed. When someone pays in one currency and the receiver lives in another, one public, signed exchange rate decides how much arrives, and an exchange wallet that lives in every currency ledger carries the difference. Every ledger still ends at exactly zero, and nobody can win anything from the rate itself.
01
The starting point
One balanced ledger per currency
Every circle has a home currency. Its members keep their balance and their wave in that currency, and their community keeps its account in it too. Every currency has its own ledger, and every ledger obeys the same rule: the sum of all accounts in it is zero. A euro balance is never added to a dollar balance; a payment between currencies always becomes two bookings, one in each ledger.
EURBbalanced euro
All EURB accounts together sum to zero. One EURB stands for the work worth one euro.
USDBbalanced dollar
All USDB accounts together sum to zero. Its own waves, its own communities, its own limits.
GBPBbalanced pound
All GBPB accounts together sum to zero. Same rules, its own ledger.
Why separate: if currencies were mixed in one ledger, every move of the exchange rate would silently change somebody’s balance. Kept apart, a balance in EURB stays exactly what it is, whatever happens to the dollar.
02
The exchange rate
One signed rate, the same for every circle
Rates do not come from any single circle, node or member. They come from one public event: the Lana System Parameters (KIND 38888), signed by one known Lana authority key and published on the official Lana relays. It carries the value of LANA in each currency. Every circle reads the same event, so every circle computes the same rate between any two currencies.
KIND 38888 · signed by the Lana authority · on the official relays
fx EUR = e fx USD = u fx GBP = g
rate EUR → USD = u ÷ e · rate USD → GBP = g ÷ u · rate GBP → EUR = e ÷ g
1
Only one signer counts
An event with these rates counts only when the signature belongs to the Lana authority key. A rate from anyone else, or from a node, is ignored.
2
The newest event wins
Each node reads the newest event from the official relays and refreshes it every few minutes. When the authority publishes new rates, all circles move to them together.
3
Every rate comes from the same three numbers
Because every rate is the ratio of two values from one event, going EUR → USD → GBP → EUR brings you back to where you started. There is no loop around the currencies that makes money.
4
The rate is written into the payment
Each payment between currencies names the exact rate event it used. Anyone can fetch that event later and check every amount to the cent.
03
The building block
An exchange wallet in every currency
The exchange wallet is a technical account that belongs to no one. It exists once in every currency ledger. When money crosses from euros to dollars, the EURB exchange wallet receives the euros and the USDB exchange wallet pays out the dollars. Inside each ledger this is an ordinary booking, so each ledger still sums to zero.
In the EURB ledger
Ana→Exchange EURB
Ana pays 100 EURB. EURB: Ana −100, exchange +100.
The rate
100 EURB×1.10
Read from the signed rate event the payment names: 100 × 1.10 = 110.00 USDB.
In the USDB ledger
Exchange USDB→Bojan
Bojan receives 110 USDB. His wave grows by 110 and his community gets the matching 110.
EURB ledgerAna −100 + exchange +100 = 0
USDB ledgerexchange −110 + community B +110 = 0
What the exchange wallet holds: after this payment it is +100 in EURB and −110 in USDB. At today’s rate those two are worth exactly the same, so the exchange as a whole stands at zero. It is a position between currencies, not anyone’s money.
04
A payment crosses
The payer sees the amount before signing
A payment between currencies is one note, signed in the payer’s browser with their own key, just like a payment between circles. The difference is that the note fixes both amounts and the rate they came from, so nothing can change after the payer has said yes.
1
Ana gets a quote
She wants to pay Bojan, whose circle runs in USDB. The app reads the current signed rate and shows her: you pay 100.00 EURB, Bojan receives 110.00 USDB, rate 1.10.
2
Ana signs the note
The note names Bojan, both amounts, both currencies, the id of the rate event and her previous note, so it cannot be copied, replayed or re-priced.
3
Her circle’s node checks
Is the rate event signed by the Lana authority and still the newest one? Do the two amounts match that rate? Does Ana’s wave cover 100 EURB? Is the exchange open in this direction (section 06)? If yes, it countersigns and reserves the amount.
4
Bojan’s circle confirms
It checks the same rate event and the same arithmetic, then countersigns. Only a note with both countersignatures counts.
5
Both ledgers book it
EURB books Ana → exchange; USDB books exchange → Bojan. Each ledger still sums to zero.
6
A new rate means a new quote
If the authority publishes a new rate before both nodes have signed, the note is refused, the reservation is released and Ana sees a fresh quote. Nobody is ever booked at a rate they did not see.
Rounding: amounts are kept in whole cents. The receiver gets the converted amount rounded down to the cent; the fraction of a cent is never paid out. So exchanging back and forth can only lose a fraction of a cent, never create one.
05
Worked example
Two currencies, two payments, two zeros
Ana and Cene live in a EURB circle (A); Bojan and Dora in a USDB circle (B). The rate for the example is 1 EUR = 1.10 USD. Member cells show balance · wave growth. Read each currency across: it sums to zero.
Step
Ana EURB
Cene EURB
Community A EURB
Exchange EURB
Sum EURB
Exchange USDB
Bojan USDB
Dora USDB
Community B USDB
Sum USDB
0 · Before
0
0
0
0
0
0
0
0
0
0
1 · Ana pays Bojan 100 EURB
−100
0
0
+100
0
−110
0 · +110
0
+110
0
2 · Dora pays Cene 55 USDB
−100
0 · +50
+50
+50
0
−55
0 · +110
−55
+110
0
Step 1 · euros to dollars
Ana goes 100 into her trough in EURB. Bojan receives 110 USDB at the rate 1.10. The exchange now holds +100 EURB and −110 USDB.
Step 2 · dollars to euros
Dora pays 55 USDB for Cene’s work. At the same rate that is 50.00 EURB, so Cene’s wave grows by 50 and his community gets the matching 50. Flows in opposite directions cancel each other in the exchange.
The exchange after both
+50 EURB and −55 USDB. At 1.10 these are worth the same, so the exchange as a whole is at zero. Each currency ledger is at zero on its own.
06
When the rate moves
Balances stay, only the open position changes value
Suppose the authority publishes a new rate of 1.20 after the example. Nobody’s balance changes: Ana is still at −100 EURB, Dora still at −55 USDB, every wave and every community account stays exactly where it was. The only thing that changes is how much the exchange’s open position is worth.
0
balances changed by the new rate. Every member and every community keeps exactly what it had, in its own currency.
+50 / −55
the exchange still holds +50 EURB and −55 USDB. At 1.20 the euros are worth 60 USD, so the open position is now worth +5 USD.
0 = 0
each ledger still sums to zero. A rate is a way to compare two ledgers, never a booking inside one.
1
Flows in both directions close the position
Every payment from dollars to euros cancels part of what earlier went from euros to dollars. Where trade goes both ways, the exchange stays close to zero by itself.
2
Each direction has a limit
Each currency ledger sets how deep its exchange wallet may go into the trough. When the USDB exchange wallet reaches its limit, payments from euros into dollars wait, while payments from dollars into euros keep flowing and open the door again. This is the same idea as the limit for buying outside a circle.
3
No real currency is traded
The exchange never buys or sells real euros, dollars or pounds at a bank. Real money that people pay in stays where it was paid in, with BEF; nothing is paid out to members in any currency.
Why nobody wins from the rate: the payer always pays the amount they saw, the receiver always gets the amount the payer saw, and both are fixed by one public rate event. A rate move between two payments changes only the open position of the exchange, which belongs to no one and cannot be paid out.
07
Why it cannot be gamed
One public rate, checked by both sides
A payment between currencies passes the same locks as any payment between circles (a signed note, two countersignatures, the circle light), plus checks on the rate itself. Anyone can recompute every amount from the note and the rate event it names.
What someone would try
What stops it
Use a made-up rate
Only an event signed by the Lana authority key counts. A node or a member cannot sign a rate that other circles accept.
Use an old, better rate
Both nodes accept only the newest rate event. A note naming an older one is refused, and the payer gets a new quote.
Change the amount after signing
Both amounts and the rate event are inside the payer’s signature. Any change breaks the signature.
Go round EUR → USD → GBP → EUR to make money
All rates come from the same three numbers in one event, so a round trip ends where it started, minus the fractions of a cent that are never paid out.
Pull one currency empty through the exchange
Each direction has a limit. When it is reached, that direction waits until trade comes back the other way.
Print in one currency and spend in another
The circle limits, signs and light from between circles apply to every payment out of a circle, in any currency.
Take real euros, dollars or pounds out
Members are never paid out real money. Money paid in stays with BEF, so the exchange holds nothing that could be taken.
A node books a different amount
Every note is signed by the payer and names the rate event; anyone can recompute the amounts and see the mismatch.
08
Together with circles
Another circle, another currency: every ledger at zero
When Ana’s circle runs in EURB and Bojan’s circle in a different country runs in USDB, the payment passes through both mechanisms: Ana’s circle’s world wallet, the exchange, and Bojan’s circle’s world wallet. Each step is an ordinary booking inside one ledger.
EURB · circle A and world
Ana→World wallet A
Ana pays 100 EURB. Circle A and the EURB world each book their side.
The exchange
Exchange EURB→Exchange USDB
100 EURB in, 110.00 USDB out, at the signed rate the note names.
USDB · world and circle B
World wallet B→Bojan
Bojan receives 110 USDB. His wave and his community grow by 110.
Circle Asums to 0 in EURB
EURB and USDB worldseach sum to 0
Circle Bsums to 0 in USDB
The rule that holds everywhere: money never moves between ledgers, only bookings within them. Circles connect through world wallets, currencies connect through the exchange, and one signed rate makes the two sides agree.