Files
zeekayandHanzo Dev ec66306aa3 the ledger's units are types now, and the product mounts in two places
Every money bug this session was int64 meeting int64. A debt in cents was
subtracted from a balance in an asset's own units and a +$340 vault
position rendered as -$5,600; a repayment sized in the collateral's
decimals reached a contract counting the synthetic's, off by 1e10. The
comments carried the unit — CollateralUsd int64 // USD cents — and
comments do not typecheck.

Cents and Minor are distinct types. The only crossing is usd(), which
needs a price, which is why it should be the only one. The compiler found
every place they met, including the control in the Earn guard, which
deliberately reproduces the old sum: it no longer compiles, so it now
casts by hand and says why. money[T] reads a whole amount off a record
and rounds, once, instead of at the thirty call sites that each had to
remember — one of which had not.

An existing database could not boot. Base refuses to update any collection
whose name equals its own id, because checkUniqueName looks up that id and
does not exclude the collection being saved. Every collection here is
NewBaseCollection(name, name), so each was creatable once and never
updatable, and a schema addition failed a running bank at startup. The
upgrade path saves without that validation; nothing there changes a name.
Reproduced on a database written by the older build and now booting clean
on this one.

The dash also ships as a library. lux.finance renders it whole; the Lux
Cloud console renders the same screens beside a validator's nodes and
keys. bankd validates a bearer at IAM's userinfo without checking
audience, so the console's Lux ID session already authorizes the bank —
no second sign-in, no exchange. The grid compiler runs at library build
time, so a host needs no plugin of its own.

Colour belonged to the brand tokens but the layout runtime painted body
from its own theme, unlayered, so everything that inherited landed on the
wrong brand — white text on the light brand's white page, across the
whole app.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-25 13:32:29 -07:00

47 lines
2.1 KiB
JSON

{
"chainId": 96369,
"markets": {
"BTC": {
"adapter": "0x4A679253410272dd5232B3Ff7cF5dbB88f295319",
"collateral": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788",
"feeVault": "0x6fd9a6940a9Dc7574C7377855991ddfFf7F27718",
"liquid": "0x2C477DFdB744E3BAf87bbdE078e21D382bc40700",
"position": "0xeB27B4cB7446CE8d77E2fD71d25a7356cF363361",
"synthetic": "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c",
"transmuter": "0xDC17C27Ae8bE831AF07CC38C02930007060020F4"
},
"ETH": {
"adapter": "0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44",
"collateral": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",
"feeVault": "0x46Ce97D6a4e26b143769c199e13E754B45b3e8E6",
"liquid": "0x46682cA783d96a4A65390211934D5714CDb788E4",
"position": "0x0A41804810f008e5EE565aa4B95a6a7c50a09082",
"synthetic": "0x68B1D87F95878fE05B998F19b66F4baba5De1aed",
"transmuter": "0x763e69d24a03c0c8B256e470D9fE9e0753504D07"
},
"LUX": {
"adapter": "0x59b670e9fA9D0A427751Af201D676719a970857b",
"collateral": "0x5FbDB2315678afecb367f032d93F642f64180aa3",
"feeVault": "0xe61FDeDBcb68e8966c869E51eAb9020cFAAdf066",
"liquid": "0x0665FbB86a3acECa91Df68388EC4BBE11556DDce",
"position": "0x9D63C831188174D95338A847BC027095A2442550",
"synthetic": "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE",
"transmuter": "0x56639dB16Ac50A89228026e42a316B30179A5376"
}
},
"maxLtvBps": 9000,
"tokens": {
"BTC": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788",
"ETH": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",
"LBTC": "0x3Aa5ebB10DC797CAC828524e59A333d0A371443c",
"LETH": "0x68B1D87F95878fE05B998F19b66F4baba5De1aed",
"LLUX": "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE",
"WLUX": "0x5FbDB2315678afecb367f032d93F642f64180aa3"
},
"sources": {
"tokens": "3038f7b0bf7d7170519329ccdd4b9b7b585e274e69a57c4e505865f283c9b157",
"protocol": "913cb4a01823218a20bfa8b1c2409808f84f98f4aa31dabfa87214f497470ab4",
"grants": "5ea124ac6829a1f6b519963120eaedf534b69c4debbf8e20b63f432be0f508aa"
}
}