Basis Passport: jūsu bāze ir jūsu.
Katrs kripto nodokļu rīks ieslēdz jūsu vēsturi sevī. Mēs savējo publicējam. Basis Passport ir parakstīts, versionēts, pārnesams fails ar jūsu pilno, pierādījumiem sasaistīto bāzes stāvokli — atvērtās partijas, atsavināšanas ar pilnu partiju izcelsmi, ienākumu notikumi, atvērtie lēmumi. Eksportējiet to no jebkuras saglabātas ClearBasis skenēšanas, bez maksas, vienmēr — pat ja nekad nesamaksājat mums ne centa. Importējiet jebkur; šī lapa ir visa specifikācija, un ieviest to drīkst ikviens (ieskaitot mūsu konkurentus).
Formāts
Viens JSON dokuments. Visi daudzumi un USD summas ir decimālas virknes (nekad float — nauda float formātā ir veids, kā bāze mirst). Laika zīmogi ir ISO-8601 ar nobīdēm.
{
"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…"}
}
Integritātes zīmogs
integrity.digest ir SHA-256 pār kanonisko JSON no visiem laukiem, izņemot pašu integrity — atslēgas sakārtotas, atdalītāji (",", ":"), bez atstarpēm, UTF-8. Tas ir viltojumu zīmogs, ne noslēpums: ikviens var pārbaudīt, ka pase ceļā nav pārveidota — ClearBasis konts nav vajadzīgs.
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, kam ir nozīme
conservative_default: true atzīmē partiju vai sadalījumu, kura bāze tika iestatīta uz 0 $, jo trūka ierakstu — godīgais minimums, nekad minējums. Importētājiem šis karogs jāsaglabā: tas pasaka nākamajam rīkam (un nākamajam grāmatvedim), kuri skaitļi ir pierādāmi un kuri — vietturi, kas gaida pierādījumus. evidence ieraksti norāda uz avota rindām/dokumentiem, no kuriem katrs skaitlis nācis; importētājs, kas tos atmet, izmet tieši to daļu, kas pārdzīvo auditu. decisions_open uzskaita neatrisinātos klasifikācijas jautājumus — pasei ir atļauts nest godīgu nenoteiktību.
Versionēšana & licence
Semantiskā versionēšana; papildinoši lauki paaugstina mazo versiju, lauzošas izmaiņas — lielo. Šo specifikācijas tekstu un formātu var ieviest brīvi, bez licences, maksas vai atļaujas — atsauce tiek novērtēta, bet nav obligāta. Labojumi un priekšlikumi: hello@clearbasis.tax.
Kanoniskais JSON — precīzi
«Atslēgas sakārtotas, bez atstarpēm» nav pietiekami, lai zīmogu ieviestu no jauna, un mēs to noskaidrojām godīgā ceļā — uzrakstot otru ieviesumu, zemāk esošo pārbaudītāju, JavaScript valodā. Četri noteikumi, un trešais ir tas, kas sāp.
- Atslēgas sakārtotas augoši pēc Unicode koda punkta.
- Komats starp elementiem un kols starp atslēgu un vērtību, nekur nav atstarpju.
- Katra rakstzīme ārpus 0x20–0x7E tiek aizstāta ar \uXXXX secību, ieskaitot 0x7F, bet astrālās rakstzīmes — ar UTF-16 surogātpāri. Python tās aizstāj pēc noklusējuma, un sākotnējais noteikums tika uzrakstīts ap šo noklusējumu, to nepasakot; savukārt JSON.stringify un dabiskais kodētājs Go, Rust un Java valodā izvada tīru UTF-8. Tāpēc pase ar failu nosaukumā esošu diakritisko zīmi vai krāpniecisku marķiera simbolu visās valodās, izņemot Python, deva citu jaucējkodu, un otrs rīks pilnīgi labu pasi būtu uzrādījis kā pārveidotu. Mēs dokumentējam noteikumu, nevis pārejam uz tīru UTF-8, jo pāreja salauztu zīmogu katrai jau izsniegtai pasei.
- Iegūtā ASCII virkne tiek jaukta kā UTF-8.
Pārbaudiet pasi tagad
Ielīmējiet pasi vai izvēlieties failu. Viss notiek šajā lapā: pase netiek augšupielādēta, un tas darbojas arī ar izslēgtu tīklu. Tas vienlaikus ir otrs iepriekš aprakstīto noteikumu ieviesums, kas ir vienīgais īstais pierādījums, ka tie ir pilnīgi.
Vairāk bezmaksas rīku: IRS vēstuļu dekodētājs · Kas par jums ziņo · Biržu kapsēta · Darījumu skaidrotājs · pati bezmaksas skenēšana