Basis Passport: teie baas kuulub teile.
Iga krüptomaksu tööriist lukustab teie ajaloo enda külge. Meie avaldame oma vormingu. Basis Passport on allkirjastatud, versioonitud, kaasaskantav fail, mis sisaldab teie täielikku tõenditega seotud baasiseisu — avatud partiid, võõrandamised täieliku partiipäritoluga, tulusündmused, lahtised otsused. Eksportige see igast salvestatud ClearBasise skannist, tasuta, igaveseks — isegi kui te ei maksa meile kunagi sentigi. Importige see kuhu tahes; see leht on kogu spetsifikatsioon ja igaüks (ka meie konkurendid) võib selle ellu viia.
Vorming
Üks JSON-dokument. Kõik kogused ja USD-summad on kümnendstringid (mitte kunagi ujukomaarvud — raha ujukomas on viis, kuidas baas sureb). Ajatemplid on ISO-8601 koos ajavööndinihkega.
{
"format": "basis-passport",
"version": "1.0",
"generator": {"name": "...", "engine_version": "...", "ruleset_version": "..."},
"generated_at": "2026-08-22T18:00:00+00:00",
"open_lots": [
{"wallet": "coinbase", "asset": "ETH", "qty": "1.5",
"unit_basis_usd": "1505.00", "acquired_ts": "2023-01-10T12:00:00+00:00",
"origin_tx": "file.csv:2", "conservative_default": false,
"evidence": [{"source": "coinbase_csv", "ref": "row:2"}]}
],
"disposals": [
{"tx_id": "file.csv:9", "ts": "...", "wallet": "coinbase", "asset": "ETH",
"qty": "1", "proceeds_usd": "1990.00", "kind": "sale",
"allocations": [
{"lot_id": "L0001", "qty": "1", "unit_basis_usd": "1505.00",
"acquired_ts": "...", "conservative_default": false}],
"evidence": [{"source": "coinbase_csv", "ref": "row:9"}]}
],
"income": [
{"tx_id": "...", "ts": "...", "wallet": "...", "asset": "ATOM",
"qty": "5", "fmv_usd": "50.00", "kind": "staking"}
],
"decisions_open": ["D00007"],
"integrity": {"algo": "sha256", "digest": "…64 hex chars…"}
}
Tervikluspitser
integrity.digest on SHA-256 kanoonilise JSON-i üle igast väljast, välja arvatud integrity ise — võtmed sorditud, eraldajad (",", ":"), ilma tühikuteta, UTF-8. See on võltsimisvastane pitser, mitte saladus: igaüks saab kontrollida, et passi pole teel muudetud — ClearBasise kontot pole vaja.
canonical = json.dumps({k: v for k, v in passport.items()
if k != "integrity"},
sort_keys=True, separators=(",", ":"))
assert sha256(canonical.encode()).hexdigest() == passport["integrity"]["digest"]
Semantika, mis loeb
conservative_default: true märgib partiid või jaotust, mille soetusmaksumus seati 0 $ peale, sest kirjed puudusid — aus alammäär, mitte kunagi oletus. Importijad peavad lipu säilitama: see ütleb järgmisele tööriistale (ja järgmisele raamatupidajale), millised arvud on tõendatavad ja millised on kohatäited, mis ootavad tõendeid. evidence kirjed osutavad lähteridadele ja -dokumentidele, kust iga arv pärineb; importija, kes need minetab, viskab ära täpselt selle osa, mis auditi üle elab. decisions_open loetleb lahendamata liigitusküsimused — passil on lubatud kanda ausat ebakindlust.
Versioonimine & litsents
Semantiline versioonimine: lisanduvad väljad tõstavad alamversiooni, murrangulised muudatused põhiversiooni. See spetsifikatsioonitekst ja vorming on vabad ellu viia ilma litsentsi, tasu või loata — viide on teretulnud, mitte nõutud. Parandused ja ettepanekud: hello@clearbasis.tax.
Kanooniline JSON, täpselt
«Sorteeritud võtmed, tühikuid pole» ei ole piisav, et pitserit uuesti üles ehitada, ja me saime sellest teada ausal teel — kirjutades teise teostuse, allpool oleva kontrollija, JavaScriptis. Neli reeglit, ja kolmas on see, mis hammustab.
- Võtmed sorteeritud kasvavalt Unicode'i koodipunkti järgi.
- Koma elementide vahel ja koolon võtme ja väärtuse vahel, tühikuid ei ole kusagil.
- Iga märk väljaspool vahemikku 0x20–0x7E asendatakse jadaga \uXXXX, kaasa arvatud 0x7F, ja astraalmärgid UTF-16 asenduspaariga. Python asendab need vaikimisi ja algne reegel kirjutati selle vaikeväärtuse ümber seda ütlemata; JSON.stringify ning Go, Rusti ja Java loomulik kodeerija väljastavad hoopis toorest UTF-8. Seetõttu andis täpitähega failinime või petuloa sümboliga pass igas keeles peale Pythoni erineva räsi ja teine tööriist oleks täiesti korras passi teatanud muudetuna. Me dokumenteerime reegli, mitte ei lähe üle toorele UTF-8-le, sest üleminek lõhuks pitseri igal juba väljastatud passil.
- Saadud ASCII-string räsitakse UTF-8-na.
Kontrolli üht kohe
Kleebi pass või vali fail. Kõik toimub sellel lehel: passi kuhugi ei laadita ja see töötab ka väljalülitatud võrguga. Ühtlasi on see ülalkirjeldatud reeglite teine teostus, mis on ainus tõeline tõend nende täielikkusest.
Rohkem tasuta tööriistu: IRS kirjade dekooder · Kes teist teatab · Börside surnuaed · Tehingute selgitaja · tasuta skann ise