Basis Passport: jūsų savikaina — jūsų.
Kiekvienas kripto mokesčių įrankis užrakina jūsų istoriją viduje. Mes savąją skelbiame. Basis Passport — pasirašytas, versijuojamas, perkeliamas failas su visa jūsų su įrodymais susieta savikainos būsena: atviros partijos, perleidimai su pilna partijų kilme, pajamų įvykiai, atviri sprendimai. Eksportuokite jį iš bet kurio išsaugoto ClearBasis skenavimo, nemokamai, visam laikui — net jei niekada nesumokėsite mums nė cento. Importuokite bet kur; šis puslapis yra visa specifikacija, ir bet kas (įskaitant mūsų konkurentus) gali ją įgyvendinti.
Formatas
Vienas JSON dokumentas. Visi kiekiai ir USD sumos yra dešimtainės eilutės (niekada ne float — pinigai float formatu yra būdas, kuriuo miršta savikaina). Laiko žymos — ISO-8601 su poslinkiais.
{
"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…"}
}
Vientisumo antspaudas
integrity.digest yra SHA-256 nuo kanoninio JSON, apimančio kiekvieną lauką, išskyrus patį integrity — raktai surikiuoti, skirtukai (",", ":"), be tarpų, UTF-8. Tai apsaugos nuo klastojimo antspaudas, ne paslaptis: bet kas gali patikrinti, kad pasas nebuvo pakeistas kelyje — ClearBasis paskyros nereikia.
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, kuri svarbi
conservative_default: true žymi partiją ar paskirstymą, kurio savikaina nustatyta 0 $, nes trūko įrašų — sąžiningas minimumas, niekada ne spėjimas. Importuotojai privalo išsaugoti šią žymą: ji pasako kitam įrankiui (ir kitam buhalteriui), kurie skaičiai įrodomi, o kurie — vietos ženklai, laukiantys įrodymų. evidence įrašai rodo į šaltinio eilutes/dokumentus, iš kurių atėjo kiekvienas skaičius; importuotojas, kuris juos išmeta, atsisako būtent tos dalies, kuri išgyvena auditą. decisions_open išvardija neišspręstus klasifikavimo klausimus — pasui leidžiama nešti sąžiningą neapibrėžtumą.
Versijavimas ir licencija
Semantinis versijavimas; papildomi laukai kelia minorinę versiją, nesuderinami pakeitimai — mažorinę. Šį specifikacijos tekstą ir formatą galima įgyvendinti laisvai, be licencijos, mokesčio ar leidimo — už autorystės nuorodą dėkojame, bet jos nereikalaujame. Pataisymai ir pasiūlymai: hello@clearbasis.tax.
Kanoninis JSON — tiksliai
«Surūšiuoti raktai, jokių tarpų» nepakanka, kad antspaudą būtų galima įgyvendinti iš naujo, ir tai išsiaiškinome sąžiningu keliu — parašę antrą įgyvendinimą, žemiau esantį tikrintuvą, JavaScript kalba. Keturios taisyklės, ir trečioji yra ta, kuri kandžioja.
- Raktai surūšiuoti didėjimo tvarka pagal Unicode kodo tašką.
- Kablelis tarp elementų ir dvitaškis tarp rakto ir reikšmės, niekur jokių tarpų.
- Kiekvienas simbolis už 0x20–0x7E ribų keičiamas seka \uXXXX, įskaitant 0x7F, o astraliniai simboliai — UTF-16 pakaitine pora. Python juos keičia pagal numatytuosius nustatymus, o pradinė taisyklė buvo parašyta apie tą numatytąjį elgesį apie jį nepasakius; JSON.stringify ir natūralus koduotojas Go, Rust bei Java kalbose išveda gryną UTF-8. Todėl pasas su diakritiniu ženklu failo pavadinime arba su apgaulingo žetono simboliu visomis kalbomis, išskyrus Python, davė kitokią maišą, ir kitas įrankis visiškai tvarkingą pasą būtų nurodęs kaip pakeistą. Mes dokumentuojame taisyklę, o ne pereiname prie gryno UTF-8, nes perėjimas sugadintų antspaudą kiekviename jau išduotame pase.
- Gauta ASCII eilutė maišoma kaip UTF-8.
Patikrinkite pasą dabar
Įklijuokite pasą arba pasirinkite failą. Viskas vyksta šiame puslapyje: pasas niekur neįkeliamas, ir tai veikia išjungus tinklą. Kartu tai yra antras aukščiau aprašytų taisyklių įgyvendinimas — vienintelis tikras įrodymas, kad jos yra išsamios.
Daugiau nemokamų įrankių: IRS laiškų dekoderis · Kas apie jus praneša · Biržų kapinės · Sandorių aiškintuvas · pats nemokamas skenavimas