{"chain_id":"cosmoshub","categories":[{"category":"transfer","taxable":true,"group":"transfers","description":"A bank send or receive between two addresses. A send is a disposal at fair market value unless you tag it as an internal transfer or a gift; a receive is an acquisition whose cost basis we cannot see."},{"category":"reward","taxable":true,"group":"staking","description":"Staking rewards actually withdrawn from the distribution module: an explicit claim, the auto-withdrawal that happens on delegate, undelegate and redelegate, or an LSM tokenize or redeem. Ordinary income at the USD price that day, split by validator."},{"category":"commission","taxable":true,"group":"staking","description":"Validator commission withdrawn by the operator. Ordinary income at the USD price that day."},{"category":"ibc_out","taxable":true,"group":"transfers","description":"Coins sent to another chain over IBC. Treated as a send unless the memo shows a Skip Go swap, in which case the row carries the swap intent so you can match the receipt on the destination chain."},{"category":"ibc_in","taxable":true,"group":"transfers","description":"Coins received from another chain over IBC, including the Hub hop of a Skip Go route."},{"category":"nft_sale","taxable":true,"group":"nfts","description":"An NFT sold through a marketplace, auction or offer. A disposal of the NFT for the seller and an acquisition for the buyer, priced in the coin that changed hands."},{"category":"nft_mint","taxable":true,"group":"nfts","description":"An NFT minted for a price. The mint cost is the NFT's cost basis."},{"category":"swap","taxable":true,"group":"defi","description":"One leg of a swap or vault movement: the coin given up is a disposal, the coin received is an acquisition. Vault deposits and withdrawals on Inflow are recorded as swaps between ATOM and vault shares."},{"category":"income","taxable":true,"group":"income","description":"Protocol income that is not a staking reward: Hydro tributes, DAO reward distributions, governance-score rewards, raffle and game prizes paid in coins. Ordinary income at the USD price that day; the source is named on the row."},{"category":"expense","taxable":true,"group":"income","description":"A payment to a protocol for a service with nothing coming back: a name registration, an upload fee, a game entry fee, a tribute paid into Hydro. A disposal of the coins paid."},{"category":"protocol_deposit","taxable":false,"group":"records","description":"Coins you still own moved into a contract: a Hydro lock, DAO staking, an auction bid held in escrow. Not a disposal. Kept out of tax-software imports so it is never read as a sale."},{"category":"protocol_withdrawal","taxable":false,"group":"records","description":"The same coins coming back out of a contract: an unlock, an unstake, a refunded bid. Not income."},{"category":"delegate","taxable":false,"group":"records","description":"Staking principal bonded to a validator. Not a disposal; the wallet still owns the ATOM."},{"category":"undelegate","taxable":false,"group":"records","description":"Staking principal entering the 21-day unbonding queue, with the completion time."},{"category":"redelegate","taxable":false,"group":"records","description":"Staking principal moved between validators."},{"category":"cancel_unbonding","taxable":false,"group":"records","description":"Unbonding principal re-bonded before the unbonding period finished."},{"category":"tokenize_shares","taxable":false,"group":"records","description":"A delegation converted into transferable liquid staking share tokens. The tokens represent the same stake."},{"category":"redeem_shares","taxable":false,"group":"records","description":"Liquid staking share tokens converted back into a native delegation."},{"category":"share_record","taxable":false,"group":"records","description":"Ownership of a tokenize-share record transferred to another address."},{"category":"gov_deposit","taxable":false,"group":"records","description":"A refundable governance proposal deposit. Not a disposal while the deposit can still be returned."},{"category":"nft_transfer","taxable":false,"group":"nfts","description":"An NFT moved without a payment: a gift, a listing moved into marketplace escrow, a raffle entry or prize, a bridge transfer over ICS721. Review and tag if it was actually a sale off chain."},{"category":"nft_burn","taxable":false,"group":"nfts","description":"An NFT destroyed by its owner."}],"chain":"cosmoshub-4","contracts":[{"address":"cosmos1clswlqlfm8gpn7n5wu0ypu0ugaj36urlhj7yz30hn7v7mkcm2tuqy9f8s5","protocol":"Skip Go","name":"Skip Go entry point","kind":"router","first_seen_height":29102288},{"address":"cosmos1lqu9662kd4my6dww4gzp3730vew0gkwe0nl9ztjh0n5da0a8zc4swsvd22","protocol":"Skip Go","name":"Skip Go IBC callback adapter","kind":"router","first_seen_height":29102288},{"address":"cosmos16nff0lmuegn2zr6ca3dp8jnqltpq2c9ayhmqn3avjq0wne95h2xqkhn9qe","protocol":"atom.names","name":"atom.names registry","kind":"names","first_seen_height":30288946},{"address":"cosmos12sseygvx4ykhp0df70ndg82l7p9a7ld7l0n0pptwj7c2h726cc9sahh4hz","protocol":"atom.names","name":"atom.names TLD manager","kind":"names","first_seen_height":30289440},{"address":"cosmos1m962xzr0teztzlp39y7leefhqadxwxv4vg4jyzq6jxh64e93v9hsmg62rc","protocol":"atom.names","name":"atom.names marketplace","kind":"marketplace","first_seen_height":30289504},{"address":"cosmos1tl0ptdmlz422z5pj20zujzyt3c96qp2g9vp83uj9pyj8q994tzhsl77adr","protocol":"Stargaze","name":"Stargaze marketplace","kind":"marketplace","first_seen_height":29099858},{"address":"cosmos1qppyer6cu36kd4dchxqmcfa9u4rk2zgpc9vpmpd7eplhn8ghhyzs8najdv","protocol":"Starburst","name":"Starburst raffle","kind":"raffle","first_seen_height":30379639},{"address":"cosmos1mjfkfegaywg6xsqr87uytsld9l7kaldj7sf7q593jdch8cascm6scnswx0","protocol":"Starburst","name":"Starburst multi-pool raffle","kind":"raffle","first_seen_height":30981928},{"address":"cosmos1r9695xq7y0fd2nk06rv6llykay7ny27jrpq4de2w6eqja5p2mlvqfv8aa9","protocol":"DAO DAO","name":"DAO rewards distributor","kind":"rewards","first_seen_height":30442266},{"address":"cosmos19fprlcmzt2axrukx3xacsdpykv40nrdsv9l7jgnfrpwukgteu3zq3t2q9f","protocol":"DAO DAO","name":"DAO rewards distributor","kind":"rewards","first_seen_height":30466450},{"address":"cosmos15nafa2hazwmjs8yz844h5ry5yrzvz6q96a0300ge26vm8hcsrd4s7zxhyj","protocol":"DAO DAO","name":"DAO token-staked voting module","kind":"dao_staking","first_seen_height":30442266},{"address":"cosmos1vuyxx6tl3j5wqkyhknvx6jzf8r53arhkpt565wqwsgdhz9dxx4sqyf4y9n","protocol":"Upload payment","name":"Upload payment","kind":"payment","first_seen_height":31398417},{"address":"cosmos1690hpscut3ltfkcm997fw2jws3tk0wkh7tnlntlavqkpg56hpdzsrjhy5r","protocol":"Inflow","name":"Inflow ATOM vault","kind":"vault","first_seen_height":31588586},{"address":"cosmos1d2hrvjvrvqvzdcffy2cy0p2gnytj48e2yg0lvnxk6knhmnt7cqvqetf09u","protocol":"Inflow","name":"Inflow vault","kind":"vault","first_seen_height":31737292},{"address":"cosmos12zktht39lk57zf8pqg287u6r8vu8zy6vkh7zfy0f5fn3zsddmx6sk9ru6y","protocol":"Inflow","name":"Inflow withdrawal router","kind":"vault","first_seen_height":31737292},{"address":"cosmos1jyx8zpvjxq2vdmquvrw6cwl2qp9slmnyy8dnpj3cgyvava2x7lmqhj3mmy","protocol":"Stargaze","name":"Stargaze reserve auction","kind":"auction","first_seen_height":31608661},{"address":"cosmos1nhu3aqrlf3adlffvx3z5pyxntgulgj9dhfskwlp8fksx5mf7v9qqfjpgpd","protocol":"Governance Score","name":"Governance score rewards","kind":"rewards","first_seen_height":31905560},{"address":"cosmos1tj45y3729uu07pv8hq50pfx9u790rh6e0qssucs3yusxaag32t8svhlxgw","protocol":"Hydro","name":"Hydro","kind":"hydro","first_seen_height":32538570},{"address":"cosmos15pnu29h8gqpsfwhv2l8t2uv3n4fc6cv5k00tq0uk6c78h5ysql4sja3f3d","protocol":"Hydro","name":"Hydro tribute","kind":"tribute","first_seen_height":32538598},{"address":"cosmos17ryrjncgq8rrmxy0x8wrq0pcessp28xna4pw5sv506mfg3fhwj4qn89chn","protocol":"Hydro","name":"Hydro tribute","kind":"tribute","first_seen_height":32538598},{"address":"cosmos16qh8ly7zkae754a84tkv2hauee3z3u4mpcpsw0lchps03a72wrkske49ns","protocol":"Inscriptions","name":"Inscriptions auction and offers","kind":"inscriptions","first_seen_height":29099858},{"address":"cosmos17kzlqt4e0ncuwvluzfpuxed7trqw8wzk42kwnh3r6fwdnlzx8p6q0w69js","protocol":"ICS721","name":"ICS721 NFT bridge","kind":"bridge","first_seen_height":29099858},{"address":"cosmos1hcewh45u5e66wkuzm90t832qyxurng8l8r5kwjmzs2zn7cfau7gq96kdta","protocol":"ICS721","name":"ICS721 outgoing proxy","kind":"bridge_helper","first_seen_height":29099858},{"address":"cosmos1t0regae0m9tfylw6rjpwrcuytgn7u7pu2mnc0xtqgmauzlw6t4yqw64uys","protocol":"Mad Gumball","name":"Mad Gumball machine","kind":"game","first_seen_height":29099858}],"export_formats":[{"format":"koinly","notes":"Label column carries staking, income, cost, gift, lost, airdrop.","scope":"taxable rows"},{"format":"cointracker","notes":"Fixed eight columns; Tag carries staked, payment, airdrop, gift, lost. No description field.","scope":"taxable rows"},{"format":"coinledger","notes":"Universal manual import; Type uses Deposit, Withdrawal, Staking, Income, Airdrop, Gift, Lost.","scope":"taxable rows"},{"format":"cryptotaxcalculator","notes":"Also accepted by Summ. Carries the reference price per unit.","scope":"taxable rows plus staking-deposit and staking-withdrawal records"},{"format":"cryptio","notes":"Enterprise sub-ledger custom CSV.","scope":"taxable rows"},{"format":"bitwave","notes":"Enterprise accounting import.","scope":"taxable rows"},{"format":"generic","notes":"Audit CSV: category, taxable flag, detail JSON, user tag, implied price flag, validator attribution, asset review decisions.","scope":"every row"}],"gaia_releases":[{"version":"v25.0.0","date":"2025-06-20","cosmos_sdk":"0.53.2","summary":"Cosmos SDK 0.53, wasmd 0.60.1. Liquid staking module (x/liquid) carries tokenize shares.","indexer_impact":"Liquid staking message types (/gaia.liquid.v1beta1.*) are parsed for rewards and share records.","reviewed":true},{"version":"v25.1.0","date":"2025-07-08","cosmos_sdk":"0.53.3","summary":"Dependency release.","indexer_impact":"None.","reviewed":true},{"version":"v25.2.0","date":"2025-11-06","cosmos_sdk":"0.53.3","summary":"Dependency release, wasmd 0.60.2.","indexer_impact":"None.","reviewed":true},{"version":"v25.3.0","date":"2025-12-19","cosmos_sdk":"0.53.4","summary":"Dependency release.","indexer_impact":"None.","reviewed":true},{"version":"v25.3.1","date":"2026-01-15","cosmos_sdk":"0.53.4","summary":"Binary-only security fix.","indexer_impact":"None.","reviewed":true},{"version":"v25.3.2","date":"2026-01-23","cosmos_sdk":"0.53.4","summary":"CometBFT 0.38.21.","indexer_impact":"None.","reviewed":true},{"version":"v26.0.0","date":"2026-02-09","cosmos_sdk":"0.53.4","summary":"Adds x/tokenfactory. Stake validation on wasm vote messages.","indexer_impact":"Token factory denoms (factory/<creator>/<subdenom>) appear as bank coins and are priced through the oracle when known; token factory message types are registered.","reviewed":true},{"version":"v27.0.0","date":"2026-02-20","cosmos_sdk":"0.53.4","summary":"Gas surcharge on multi-send, stake validation for ICA votes, no new consumer chains.","indexer_impact":"None. Multi-send rows unchanged.","reviewed":true},{"version":"v27.1.0","date":"2026-03-13","cosmos_sdk":"0.53.4","summary":"Go 1.25, wasmd 0.60.5.","indexer_impact":"None.","reviewed":true},{"version":"v27.2.0","date":"2026-04-06","cosmos_sdk":"0.53.4","summary":"Dependency release.","indexer_impact":"None.","reviewed":true},{"version":"v27.3.0","date":"2026-04-30","cosmos_sdk":"0.53.4","summary":"ibc-go 10.6, packet-forward-middleware 10.6, 08-wasm 10.5.","indexer_impact":"None. PFM forwards are tagged from the memo.","reviewed":true},{"version":"v27.4.0","date":"2026-05-21","cosmos_sdk":"0.53.4","summary":"Dependency release.","indexer_impact":"None.","reviewed":true},{"version":"v27.5.0","date":"2026-06-19","cosmos_sdk":"0.53.4","summary":"ibc-go 10.7.","indexer_impact":"None.","reviewed":true},{"version":"v27.6.0","date":"2026-07-17","cosmos_sdk":"0.53.4","summary":"Max wasm contract size 1.6 MiB; contracts can query validators and proposals.","indexer_impact":"None.","reviewed":true},{"version":"v28.0.0","date":"2026-08-07","cosmos_sdk":"0.53.4","summary":"Interchain Security provider module removed.","indexer_impact":"Provider (ICS) queries return stubs. No tax rows came from the provider module.","reviewed":true},{"version":"v28.1.1","date":"2026-09-30","cosmos_sdk":"0.53.4","summary":"CWA-2026-006 response: CosmWasm code upload and instantiation disabled.","indexer_impact":"None. Existing contracts kept executing; coverage of execute events is unchanged.","reviewed":true},{"version":"v28.2.1","date":"2026-10-01","cosmos_sdk":"0.53.4","upgrade_height":33073000,"summary":"Re-enables CosmWasm upload and instantiation (Prop 1055). Adds the v28.2.0 upgrade handler.","indexer_impact":"None.","reviewed":true},{"version":"v28.3.1","date":"2026-10-01","cosmos_sdk":"0.53.4","upgrade_height":33086741,"summary":"One-time bank balance migration on cosmoshub-4 at height 33,086,741 after the 24.8 hour halt.","indexer_impact":"The migration changed balances without transactions. Balance reconstruction treats the halt block as a boundary; no taxable rows are affected.","reviewed":true},{"version":"v29.0.0","date":"2026-10-09","cosmos_sdk":"0.53.8","summary":"Removes x/params and the legacy ParameterChangeProposal governance route; deletes the deprecated provider store; CometBFT 0.38.25.","indexer_impact":"None. The tax layer never read legacy governance parameters. Gov deposits and proposals are parsed from gov v1 and v1beta1 messages, both unchanged.","reviewed":true}],"message_types":["/cosmos.bank.v1beta1.MsgSend","/cosmos.bank.v1beta1.MsgMultiSend","/cosmos.staking.v1beta1.MsgDelegate","/cosmos.staking.v1beta1.MsgUndelegate","/cosmos.staking.v1beta1.MsgBeginRedelegate","/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation","/cosmos.gov.v1.MsgDeposit","/cosmos.gov.v1.MsgSubmitProposal","/cosmos.gov.v1beta1.MsgDeposit","/cosmos.gov.v1beta1.MsgSubmitProposal","/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward","/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission","/cosmos.authz.v1beta1.MsgExec","/ibc.applications.transfer.v1.MsgTransfer","/ibc.core.channel.v1.MsgRecvPacket","/cosmwasm.wasm.v1.MsgExecuteContract","/gaia.liquid.v1beta1.MsgWithdrawTokenizeShareRecordReward","/gaia.liquid.v1beta1.MsgWithdrawAllTokenizeShareRecordReward","/gaia.liquid.v1beta1.MsgTokenizeShares","/gaia.liquid.v1beta1.MsgRedeemTokensForShares","/gaia.liquid.v1beta1.MsgTransferTokenizeShareRecord","/ibc.core.channel.v2.MsgRecvPacket","/osmosis.tokenfactory.v1beta1.MsgMint","/osmosis.tokenfactory.v1beta1.MsgForceTransfer"],"methodology_date":"2026-10-14","methodology_version":"v8","native_asset":{"Denom":"uatom","Decimals":6,"Symbol":"ATOM"},"reports":[{"path":"/income","purpose":"Income report: staking rewards, commission, protocol income and tagged receipts, with validator jurisdiction subtotals."},{"path":"/8949","purpose":"IRS Form 8949 disposals, FIFO per asset, per wallet."},{"path":"/schedule-d","purpose":"Schedule D short and long term totals."},{"path":"/990t","purpose":"Form 990-T unrelated business taxable income estimate for retirement account wallets."},{"path":"/journal","purpose":"Double-entry general ledger journal in USD for a controller's books."},{"path":"/positions","purpose":"Open lots and unrealized gain or loss per asset as of a date."},{"path":"/validator-statement","purpose":"A validator operator's statement: commission earned, rewards paid to delegators, unique delegators, by month."},{"path":"/balance","purpose":"Reconstructed balances as of a date."},{"path":"/delegator-report","purpose":"Embeddable per-delegator summary for a validator's website."}],"tags":[{"label":"Internal transfer","tag":"internal_transfer","treatment":"Not a disposal or acquisition. Sent to tax software as a transfer so it matches the other wallet. Left out of Form 8949."},{"label":"Payment","tag":"payment","treatment":"Sent coins are a disposal at fair market value. Received coins are income at receipt and that value is their cost basis."},{"label":"Income","tag":"income","treatment":"Ordinary income at the USD value on receipt; that value is the cost basis."},{"label":"Gift","tag":"gift","treatment":"A gift sent is not a sale. A gift received carries the giver's basis, which we cannot see, so a later disposal shows basis unknown."},{"label":"Airdrop","tag":"airdrop","treatment":"Ordinary income at the USD value on receipt."},{"label":"Protocol deposit","tag":"protocol_deposit","treatment":"Still owned. Kept out of tax-software imports and Form 8949, shown in the Generic CSV and journal."},{"label":"Expense","tag":"expense","treatment":"A disposal at fair market value, labelled as a cost or expense for tax software."},{"label":"Spam","tag":"spam","treatment":"Excluded from tax-software imports and Form 8949. Kept in the Generic CSV for the audit trail."},{"label":"Lost or stolen","tag":"lost","treatment":"Labelled lost for tax software. Whether a loss is deductible depends on jurisdiction."}],"triggers":[{"trigger":"claim","categories":"reward, commission","description":"An explicit MsgWithdrawDelegatorReward or MsgWithdrawValidatorCommission."},{"trigger":"delegate","categories":"reward","description":"Reward auto-withdrawn when the delegator added stake to the same validator."},{"trigger":"undelegate","categories":"reward","description":"Reward auto-withdrawn when the delegator started unbonding."},{"trigger":"redelegate","categories":"reward","description":"Reward auto-withdrawn from both validators when stake moved between them."},{"trigger":"authz","categories":"reward","description":"Reward withdrawn by a grantee on the delegator's behalf, typically REStake auto-compounding."},{"trigger":"tokenize","categories":"reward","description":"Reward auto-withdrawn when a delegation was tokenized into liquid staking shares."},{"trigger":"redeem","categories":"reward","description":"Reward paid out when liquid staking shares were redeemed, including the tokenize-share-record reward."},{"trigger":"tribute","categories":"income","description":"A Hydro tribute claimed by a voter."},{"trigger":"tribute_paid","categories":"expense","description":"A tribute added to a Hydro proposal by its sponsor."},{"trigger":"dao_rewards","categories":"income","description":"A DAO DAO rewards distributor payout."},{"trigger":"governance_score","categories":"income","description":"A Governance Score reward claim."},{"trigger":"prize","categories":"income, nft_transfer","description":"A raffle, pack or game prize."},{"trigger":"name_registration","categories":"expense","description":"An atom.names registration or renewal fee."},{"trigger":"upload_fee","categories":"expense","description":"A payment to the Hub upload payment contract."},{"trigger":"game_fee","categories":"expense","description":"A Mad Gumball play fee."},{"trigger":"auction_bid","categories":"protocol_deposit","description":"A bid placed into a reserve auction's escrow."},{"trigger":"auction_refund","categories":"protocol_withdrawal","description":"An outbid bidder's escrow returned."},{"trigger":"hydro_lock","categories":"protocol_deposit","description":"ATOM or liquid staking tokens locked in Hydro."},{"trigger":"hydro_unlock","categories":"protocol_withdrawal","description":"A Hydro lock released."},{"trigger":"dao_stake","categories":"protocol_deposit","description":"Tokens staked in a DAO voting module."},{"trigger":"dao_unstake","categories":"protocol_withdrawal","description":"Tokens claimed back from a DAO voting module."},{"trigger":"vault_deposit","categories":"swap","description":"An Inflow vault deposit: ATOM out, vault shares in."},{"trigger":"vault_withdraw","categories":"swap","description":"An Inflow vault withdrawal: vault shares out, ATOM in."},{"trigger":"skip_swap","categories":"ibc_out","description":"An IBC transfer whose memo instructs a Skip Go swap on the destination chain. Detail carries the venue, destination asset, minimum amount and final receiver."},{"trigger":"skip_action","categories":"ibc_out","description":"An IBC transfer whose memo runs another Skip Go action on arrival."},{"trigger":"skip_forward","categories":"ibc_in, ibc_out","description":"A Skip Go route that passed through the Hub: the adapter received the coins and forwarded them on."},{"trigger":"ibc_hook","categories":"ibc_out","description":"An IBC transfer that calls a contract on arrival (ibc-hooks)."},{"trigger":"pfm_forward","categories":"ibc_out","description":"An IBC transfer forwarded onward by packet-forward middleware."},{"trigger":"ibc_callback","categories":"ibc_out","description":"An IBC transfer with a callback contract."},{"trigger":"ics721_out","categories":"nft_transfer","description":"An NFT sent to another chain over the ICS721 bridge."},{"trigger":"ics721_in","categories":"nft_transfer","description":"An NFT received from another chain over the ICS721 bridge."}],"upcoming_changes":["Cosmos SDK 0.54 or 0.55 is planned for the Hub within weeks of v29. The tax layer depends on event shapes (coin_spent, coin_received, transfer, withdraw_rewards, delegate, unbond, redelegate, wasm) that have been stable since SDK 0.47; the release watcher flags the first release on a new SDK line for review of event attribute names."]}