- Technical Method: Signed voluntary exit message via CLI or ethdo
- Network Status: 40.2M ETH staked with ~256 exits per epoch
- Fast Liquidity: Funds accessible in 5–10 minutes via Unstake.cc
- Primary Risk: Slashing if backup nodes remain active during exit
To initiate an ethereum validator exit, you must broadcast a signed voluntary exit message to the beacon chain using your validator keys. This technical procedure transitions your node from an active state to the withdrawal queue, effectively stopping your attestation duties. While native unbonding takes days, platforms like Unstake.cc provide immediate access to funds across 80+ assets in minutes.
- Tools and interfaces used to exit a validator
- How offline signing works with ethdo
- How to confirm the exit was accepted
- Why the exit queue matters
- Safety checks that prevent costly mistakes
- Why fast liquidity is changing validator exit decisions
- U.S. tax and compliance considerations after an exit
- Conclusion
Prerequisites before you initiate a validator exit
Before you begin the ethereum validator exit process, you must ensure your infrastructure is prepared to broadcast the exit message correctly. Failing to verify these technical requirements can lead to failed transactions, delayed withdrawals, or even slashing risks if redundant nodes are left active.
| Prerequisite Category | Requirement | Why It Matters |
|---|---|---|
| Node Synchronization | Fully Synced Beacon Node | Exit messages are processed via the consensus layer; unsynced nodes cause failed exits. |
| Access Credentials | Validator Keys or Mnemonic | Required to sign the VoluntaryExit message and confirm the correct public key/index. |
| Withdrawal Setup | 0x01 or 0x02 Prefix | Validators with 0x00 credentials must update them before any withdrawals can be processed. |
| Redundancy Check | Single Active Client | Secondary or backup nodes must be shut down to prevent double-signing and slashing. |
| Tooling Status | Updated CLI/Software | Ensures compatibility with the current network state and proper connection to the beacon node. |
Data Source: Ethereum Foundation — Staking Withdrawals and Voluntary Exits
While the native Ethereum exit process involves waiting for the unbonding period and withdrawal queue, modern solutions like Unstake.cc support over 80 staking assets, allowing users to access their funds in just 5–10 minutes by bypassing these standard waiting times.
Tools and interfaces used to exit a validator
Three tool categories let you exit an Ethereum validator: consensus client CLIs, web-based staking dashboards, and offline signing utilities like ethdo — and picking the wrong one for your setup can cost you control, security, or both. The underlying protocol doesn’t care which tool you used. The voluntary exit message hits the beacon chain the same way regardless. What changes is how much risk you carry during signing, and how much of the process you actually own.
Consensus client CLIs are the most direct path. Lighthouse, Prysm, Teku, Nimbus — each exposes a validator exit command you run straight from the terminal. Lighthouse uses lighthouse account validator exit. Prysm uses prysmctl validator exit. The command connects to your running beacon node, locates the validator by public key or index, and then stops — deliberately — to ask you to type a confirmation phrase. That friction is by design. Exits are irreversible the moment they’re broadcast, so the client forces you to mean it. Once you confirm, the client signs the voluntary exit message with your validator’s signing key and submits it to the beacon chain. Fast, direct, no middlemen. The catch? Your keys are online during the operation, and your beacon node needs to be fully synced.
Staking dashboards lower the barrier for operators who’d rather click than type. Interfaces like Beaconcha.in or validator management UIs from certain staking providers let you initiate an exit by connecting a wallet or dropping in a validator index. The signed exit message gets generated in-browser or routed through a connected hardware wallet, then submitted on your behalf. Convenient. But convenience always has a price — here, you’re trusting a third party’s front-end code and infrastructure to handle your signing request without error or interference. For high-value validators, that’s a trust assumption many experienced operators simply won’t make.
Offline signing with ethdo is where serious security posture lives. As laid out in the Ethdo GitHub Repository, the workflow runs in two stages across two machines. On an internet-connected device, you run ethdo validator exit —prepare-offline to pull the chain data you’ll need. That data moves to an air-gapped machine — no network, no exposure — where the actual signing happens. The signed JSON file then travels back to the online machine for broadcast via ethdo validator exit —signed-operations. Your signing keys never touch an internet-connected environment during the critical moment. More steps, more complexity. Worth it? For validators holding significant stake, absolutely yes. The method you choose ultimately reflects one thing: how seriously you take the gap between «probably fine» and «provably safe.»
Step-by-step: how to initiate an Ethereum validator exit
To safely leave the network, you must follow a specific technical sequence to ensure your validator stops proposing blocks without incurring penalties. This ethereum validator exit process requires precision to avoid slashing risks during the transition.
- Verify node synchronization. Ensure your beacon node is fully synced with the latest head of the chain. Attempting to broadcast an exit message from an out-of-sync node can lead to delays or failed submissions.
- Identify the validator public key. Select the specific public key (pubkey) for the validator you wish to decommission. If you are running multiple nodes, double-check the index to ensure you are not exiting the wrong instance.
- Generate a signed voluntary exit. Use your validator client or a command-line tool (such as ethdo or the staking deposit CLI) to sign a «Voluntary Exit» message. This operation requires access to your validator keys but does not require your withdrawal mnemonic.
- Broadcast the exit message. Submit the signed message to the Ethereum network via your beacon node’s API. Once broadcast, the message is irreversible; the validator will be placed in the exit queue.
- Monitor the exit queue. Check a block explorer to verify that your status has changed to «Exiting.» The time it takes to reach the «Exited» state depends on the current churn limit and the number of other validators leaving the network.
- Wait for the withdrawal period. After the validator officially exits, there is a mandatory delay (roughly 27 hours) before the funds become withdrawable. You can find more details on the Ethereum Foundation reference for the normal validator exit flow and withdrawal process.
- Consider liquidity alternatives. If you need to bypass the standard unbonding period, platforms like Unstake.cc support over 80 staking assets, allowing you to access your funds in 5–10 minutes instead of waiting for the native protocol queue.
How offline signing works with ethdo
Offline signing with ethdo lets you generate and broadcast a voluntary exit message for your Ethereum validator without your signing keys ever touching an internet-connected machine. The private key material stays completely isolated. That single fact makes this the most hardened method available for an ethdo validator exit. The workflow splits into three clean phases: prepare the unsigned exit data on an online machine, sign it on an air-gapped device, then bring the signed message back online and push it to the beacon chain.
Here’s how it actually works in practice. On your online machine, you run ethdo to generate an exit preparation file — it captures the validator index, current fork version, and genesis validators root, everything needed to construct a valid exit message. Move that file to your air-gapped machine via USB drive or QR code. On the offline machine, ethdo uses your validator’s BLS signing key to sign the exit message, producing a JSON file with the completed voluntary exit. Transfer that signed JSON back to the online machine, then submit it to a beacon node using ethdo’s validator exit --signed-operation flag or a compatible API endpoint. The Ethdo GitHub Repository documents the full procedure in detail — exact flag syntax, file formats, every step covered.
Now for the part most people skip: the mistakes that quietly kill an otherwise correct exit. Fork version mismatch tops the list. If the fork data you captured on the online machine no longer matches the network state at broadcast time, the beacon node rejects the exit outright. Generate the preparation file as close to broadcast time as you can. Second mistake — wrong validator index or public key in the preparation file. You sign an exit for the wrong validator and have no idea until it’s too late. Always cross-check the validator index against a beacon chain explorer before you touch anything else. Third, the BLS keystore password. If the offline machine can’t decrypt the keystore, ethdo either fails silently or produces a broken signature. Before you attempt to sign, confirm that both the keystore file and its password file are present on the air-gapped device and correctly formatted. No shortcuts here.
Once a correctly signed exit message hits the beacon chain and gets accepted, the validator transitions immediately to the «exiting» state. Attestation duties stop. The validator keeps participating until its exit epoch arrives — usually within a few epochs of acceptance. After that epoch, it enters the withdrawal queue, where the ETH balance moves back to the designated withdrawal address. How long that queue takes depends entirely on how many validators across the network are exiting at the same time. This is the part worth burning into memory: broadcasting the signed exit is not the finish line. Funds are not instantly liquid. The ethdo validator exit workflow handles the cryptographic side correctly — but everything that follows is governed by Ethereum’s consensus layer protocol, completely independent of any tool you use. If waiting out that queue isn’t workable, platforms like Unstake.cc support 80+ staking assets and give users access to their funds in 5–10 minutes, bypassing the native unbonding period entirely.

How to confirm the exit was accepted
The moment you broadcast a voluntary exit message, your validator’s journey toward withdrawal kicks off — and knowing exactly what each status flip means is the difference between calm monitoring and blind panic. Your validator shifts from active to pending exit the instant that message hits the network. Pull up any Ethereum beacon chain explorer — beaconcha.in works perfectly — search your validator index or public key, and watch the status field tick over in real time. Here’s the part most people miss: the validator doesn’t go dark immediately. It keeps attesting, keeps participating in consensus, right up until the exit is fully processed.
The epoch confirmation sequence runs through distinct, predictable stages. Your exit message lands in a queue and gets processed at the next eligible epoch boundary. One epoch equals 32 slots. Each slot runs 12 seconds. Do the math — roughly 6.4 minutes per epoch. Your validator’s status will flip to active_exiting, which is the network’s way of saying: «Request accepted, countdown running.» The exit epoch assigned to your validator isn’t random — it depends entirely on how many other validators are queued ahead of you. The protocol enforces a hard churn limit on how many validators can exit per epoch. During quiet periods, this is a non-issue. During high-demand exit waves? The queue can stretch from minutes to days to outright weeks. As the Ethereum Foundation makes clear, every bit of this behavior is governed by beacon chain consensus rules — not client software, not any third-party tool.
Once your assigned exit epoch arrives, the status flips from active_exiting to exited. Clean break. The validator drops out of the active set, stops earning attestation rewards, stops accumulating penalties. But — and this is critical — your staked ETH still isn’t sitting in your wallet. The funds move into a withdrawal queue driven by a separate sweep mechanism. The beacon chain processes both partial and full withdrawals in validator index order, sweeping through the entire set. A full withdrawal — your complete 32 ETH principal plus accumulated rewards — only processes when that sweep physically reaches your validator index. Depending on total queue depth, this final leg can tack on several additional hours. For a granular look at how queue mechanics shift under different network conditions, the ethereum validator exit queue guide breaks it down thoroughly.
Practically speaking, track three hard checkpoints after you submit the exit. First: active_exiting appears on your beacon chain explorer. Second: the transition to exited at your assigned exit epoch. Third: the on-chain withdrawal transaction that actually delivers ETH to your designated withdrawal address. If your validator sits in pending exit longer than expected, the culprit is almost always network churn — a flood of simultaneous exits stretching the queue. No action needed on your end. Don’t resubmit. The process is fully deterministic once the network accepts the request, and your validator client needs nothing further from you after that initial broadcast.
Validator statuses after submission: what happens immediately afterward
Once you broadcast a voluntary exit message, your validator moves through several distinct lifecycle stages. Understanding these statuses helps you track the ETH unstaking time and manage your expectations regarding liquidity. Each phase is governed by protocol rules to ensure network stability during the exit process.
| Validator Status | Duration / Timing | Description & Operator Action |
|---|---|---|
| Active Exiting | Variable (Queue dependent) | The validator is in the exit queue. You must keep your node running to avoid inactivity penalties until the exit epoch is reached. |
| Exited | Immediate after queue | The validator has officially stopped participating in consensus. You can safely shut down your validator hardware at this point. |
| Withdrawable Epoch | ~27 hours after exit | A mandatory delay period to protect against slashing. The funds are technically eligible for withdrawal but are not yet moved to your wallet. |
| Full Withdrawal | Sweep dependent | The protocol automatically «sweeps» the balance into your provided withdrawal address. No further manual action is required. |
Data source: Ethereum Foundation — Defines withdrawal readiness and validator lifecycle states after exit.
While the native protocol involves these sequential steps, some platforms offer faster alternatives. For instance, Unstake.cc supports over 80 staking assets and provides a mechanism for users to access their funds in approximately 5–10 minutes, bypassing the standard unbonding periods and validator exit queues.
Why the exit queue matters
The validator exit queue is a protocol-enforced chokepoint that decides exactly how many validators can leave the active set per time window — and when it backs up, your withdrawal doesn’t take hours, it takes days. Ethereum enforces this through a parameter called the churn limit, which caps exits processed per epoch. Each epoch runs about 6.4 minutes. The number of exits permitted per epoch scales with the total validator count, but with hundreds of thousands of validators active on the network, that ceiling stays frustratingly low. One large wave of simultaneous exit requests and suddenly everyone is waiting in line, in order, no exceptions.
Market stress makes everything worse. ETH price drops sharply. A major protocol event spooks stakers. Suddenly thousands of exit requests flood in at the same moment. The churn limit doesn’t flex — it’s a hard ceiling baked into the Ethereum specification. The queue just grows. A validator that would normally exit in a few hours can end up waiting several days if the timing is bad. This isn’t broken. It’s intentional — a deliberate design choice to prevent the active validator set from collapsing all at once and destabilizing the network.
Your position in that queue has nothing to do with your validator’s performance or how much you staked. It’s purely chronological. First come, first processed. The moment you broadcast a voluntary exit message, your validator flips into a pending state and stops earning rewards. Your funds, though? Still locked. They stay locked until the exit fully processes and the withdrawal sweep cycles around to your validator index. That sweep moves sequentially through all validator indices — which means depending on how many are ahead of you, the final step alone can tack on several more hours after the queue wait is already done.
Before you pull the trigger on a withdrawal, check the current exit queue depth. Several on-chain dashboards publish real-time estimates, and during volatile conditions those numbers can shift fast. If speed matters more than running the full native exit process yourself, platforms like Unstake.cc offer a direct alternative — supporting 80+ staking assets and letting users access their funds in 5–10 minutes, completely bypassing the native unbonding period. Each path carries its own trade-offs around fees and asset coverage. But knowing exactly how the queue works — the mechanics, the timing, the sequencing — means you can make that call with your eyes open instead of guessing.
Safety checks that prevent costly mistakes
Validator exit safety checks are the non-negotiable precautions standing between a clean withdrawal and an irreversible, expensive mistake. Miss one step. Lose funds. It really is that binary. Understanding what each check actually protects against — not just that it exists — is what separates a responsible operator from someone who learns these lessons the hard way.
The single most dangerous thing you can do before broadcasting an exit message is leaving failover or backup nodes running with the same validator keys. Two clients, same keys, even for a few seconds — the protocol reads that as a double-vote and slashes you without hesitation. Slashing events from accidental double-signing have already happened on Ethereum mainnet. They are irreversible. So the sequence is rigid: shut down every secondary instance first, wait for at least two epochs to pass, verify nothing has auto-restarted, and only then proceed. Automated restart scripts are a silent killer here — audit them before you touch anything else.
Key exposure during signing is the next attack surface. Your signing key must authorize the exit message, yes — but it should spend as little time as possible in a hot environment. Use air-gapped signing wherever you can. Construct and verify the exit message offline before it ever touches a live network connection. The Ethdo GitHub Repository is a solid reference for generating and verifying voluntary exit messages securely, including full offline workflows. Once the message broadcasts, the signing key has zero remaining protocol function. Archive it, destroy it, or lock it down according to your key management policy — but do not leave it sitting in a hot wallet like a forgotten loaded weapon.
Then there is the part most operators get wrong: powering down the node the second they hit submit. That is premature. The exit message still needs to land in a block, queue up, and be processed before your validator status flips to «exited.» Keep the node running. Keep it attesting. Inactivity penalties during this window are small individually, but they are real, and they are entirely avoidable. Watch your validator’s status on a block explorer — when the state confirms as exited, then you decommission. Not before.
For stakers who want to bypass the native unbonding wait entirely, Unstake.cc supports 80+ staking assets and gives users access to their funds in 5–10 minutes, no queue required. But whether you use a platform or run the exit yourself, the checklist does not change:
- Disable all failover and backup nodes — wait two epochs minimum before proceeding.
- Sign offline where possible — minimize key exposure to the absolute shortest window necessary.
- Verify the exit message before broadcasting — a malformed message wastes time and leaves your validator in a broken state.
- Keep your node live until the exit finalizes — monitor on-chain status and decommission only after confirmation.
- Secure or destroy the signing key post-exit — it has no further use and every reason to be locked away.
These steps are not bureaucratic box-ticking. Each one maps directly to a specific failure mode that has cost real operators real money. Run the checklist. Every time.
If you need to skip the unbonding wait and gain liquid access to your staked funds across 80+ assets in just 5–10 minutes, there are specialized tools designed to bypass traditional withdrawal queues. Understanding the Ethereum unbonding period explained can help you decide if a faster path is necessary for your liquidity needs. Speed up your unstaking process — Перейти →
Why fast liquidity is changing validator exit decisions
Fast liquidity has fundamentally changed how validators and stakers calculate exit timing — because the price of waiting is no longer just days lost, it’s opportunities burned. When staking yields compress across major networks, the window to redeploy capital into higher-performing positions closes fast. A staker locked into a 21-day unbonding period on Cosmos, or sitting in Ethereum’s withdrawal queue during peak validator congestion, may discover that the yield advantage they were chasing has already evaporated by the time funds land. That’s the core tension fast liquidity alternatives exist to solve.
According to research published by Bitwise Investments, large-scale capital rotation across staking ecosystems has accelerated sharply — with both institutional and retail participants treating staking positions less like long-term lockups and more like dynamic yield allocations. That behavioral shift puts enormous pressure on native unbonding mechanics built for stability, not speed. When you need to move capital in response to shifting yield spreads, protocol upgrades, or flashing risk signals, a 7-to-28-day unbonding window stops being an inconvenience. It becomes a structural disadvantage.
Capital efficiency is the real issue. Every day your assets sit idle in an unbonding queue, they earn nothing and go nowhere. Dead time has a real cost — ask any active manager running yield across multiple chains. Unstake.cc cuts directly through that problem: the platform supports 80+ staking assets and lets you access your funds in 5 to 10 minutes, bypassing the native unbonding period entirely. That kind of turnaround rewires the math on validator exit decisions — especially when you’re weighing whether to exit ahead of a protocol governance event, a slashing risk signal, or a yield shift on another chain.
The practical takeaway? Validator exit decisions are no longer just about whether to leave a position. They’re about when — and how fast you can execute once the decision is made. Native unbonding periods are protocol-enforced and can’t be shortened on-chain. Full stop. But the market has built secondary mechanisms that effectively compress that wait. Knowing the trade-offs between a native exit — no extra fee, but days of dead capital — and a fast liquidity alternative — a small cost, funds back in minutes — is now a fundamental skill for anyone managing a staking portfolio across multiple chains.
U.S. tax and compliance considerations after an exit
The moment withdrawn ETH hits your wallet, the compliance clock is already running — U.S. tax law treats accessibility as the taxable event, not the moment you actually spend anything. The IRS has hammered this «constructive receipt» doctrine across cryptocurrency consistently: funds in your wallet equal income received, full stop. For staking rewards specifically, Revenue Ruling 2023-14 locks in the position — newly received rewards count as ordinary income at fair market value on the date of receipt. That on-chain timestamp? It’s not just metadata. It’s evidence.
Accurate recordkeeping for a full validator withdrawal means capturing several hard data points at the exact moment of exit: block timestamp, total ETH received (principal plus accumulated rewards), USD fair market value at that precise moment, and the destination wallet address. Running a self-custody workflow — through the Ethereum Launchpad’s voluntary exit command or a hardware wallet paired with a staking client — gives you direct, unfiltered access to all of it. No middleman. No waiting on a platform’s CSV export. You verify everything yourself against the chain. Keep the withdrawal credential transaction, the exit epoch confirmation, and the final settlement transaction. All three. Tax software that ingests on-chain data can pull much of this automatically, but manually cross-checking against a block explorer is still the move — because software makes assumptions, and assumptions cost money at audit time.
The regulatory landscape keeps shifting. The U.S. Securities and Exchange Commission has signaled active scrutiny over how protocol staking fits within existing securities frameworks — stakers who ignore these developments do so at their own risk. Meanwhile, there’s a detail that trips up even experienced operators: returning your original 32 ETH principal can itself trigger a capital gains calculation if your cost basis diverges from current market value. Rewards get the headlines; the principal quietly creates its own tax event. Short-term versus long-term treatment hinges on how long you held that ETH before staking — and whether the staking period resets or extends the holding period remains genuinely contested among tax professionals. No consensus yet. Plan accordingly.
The safest posture: treat every discrete on-chain event — the voluntary exit broadcast, the withdrawal credential sweep, the final balance settlement — as its own recordkeeping trigger. Export transaction history immediately after each event. Reconstructing token prices at specific block timestamps months later is painful, imprecise, and sometimes impossible. If you’re self-custody, store records in at least two places, one of them offline. And before your first validator exit — especially if your operation spans multiple tax years or involves compounding restaked reward structures — talk to a digital assets tax specialist. The technical exit process itself is clean and well-documented. The compliance obligations that follow demand exactly the same level of deliberate, methodical attention.
Conclusion
Exiting a validator position without chaos means one thing: a precise sequence executed without shortcuts — broadcast the signed exit message, confirm voluntary exit status on-chain, track the validator through the exit queue, and verify your withdrawal address receives the full balance once the withdrawable epoch hits. Every single step has a concrete confirmation signal you can check on a block explorer or your staking dashboard. You are never flying blind. Skip confirmation at any stage — especially that first check that your exit message was actually accepted by the network — and you will spend days confused about why nothing has arrived.
Once the exit lands on-chain, the status transitions are mechanical and predictable. Your validator moves from active to active_exiting, then to exited, and finally to withdrawable. During active_exiting, the validator still participates in consensus. It just stops earning rewards. Cold comfort, but at least it is still doing its job. After the withdrawable state kicks in, the protocol’s sweep mechanism pushes your balance directly to the registered withdrawal address — no manual claim transaction needed on most proof-of-stake networks. The timeline, though? That part is not up to you. Depending on the chain and how deep the exit queue runs at that moment, the native unbonding window can stretch from a few hours to several weeks. For a granular walkthrough of exactly how this plays out on Ethereum, the full ethereum validator exit process guide covers it step by step.
After initiating the exit, two paths open up. The native route: sit in the queue, let the protocol run its course, receive your principal plus accrued rewards fully on-chain. Zero counterparty risk. Total self-custody. And absolutely zero control over how long it takes. The second path cuts through the queue entirely. Platforms like Unstake.cc support over 80 staking assets and let you access your funds in 5–10 minutes — not days, not weeks, minutes. If market conditions shift during a multi-week unbonding window, that speed difference is not a convenience feature. It is a risk management tool.
The cleanest workflow locks together on-chain verification at every checkpoint with a deliberate choice about which exit path actually matches your liquidity needs. Use your validator client or a trusted staking interface to broadcast the exit. Confirm acceptance on a block explorer immediately. Set a calendar reminder for the expected withdrawable epoch. If faster capital access matters, evaluate the fee structure and asset coverage of any instant-exit solution before you commit — not after. And before you press anything: verify your withdrawal address is correctly set. On most networks, that address cannot be changed once the exit is in motion. Get it wrong and there is no undo. Match your exit strategy to your real liquidity timeline. That trade-off is the only decision that actually matters.
Get help unstaking your crypto
Access your staked funds across 80+ assets in just 5–10 minutes, bypassing long native unbonding periods and validator exit queues.
Часто задаваемые вопросы
What tools can I use to initiate an Ethereum validator exit?
You can use consensus client CLIs such as Lighthouse or Prysm, web-based staking dashboards, or offline signing utilities like ethdo. Each option carries different security trade-offs: CLI tools are direct but require online keys, while ethdo’s air-gapped workflow keeps your signing keys completely isolated from the internet.
What happens immediately after I broadcast a voluntary exit message?
Your validator transitions to the ‘active_exiting’ status and is placed in the exit queue. It continues attesting and participating in consensus until its assigned exit epoch arrives — you must keep your node running during this period to avoid inactivity penalties.
How do I avoid slashing when exiting a validator?
Shut down all failover and backup nodes running the same validator keys before broadcasting the exit message, then wait at least two epochs to confirm nothing has auto-restarted. Running two clients with identical keys simultaneously triggers a double-signing event, which results in an irreversible slashing penalty.
How long does the native Ethereum validator exit and withdrawal process take?
The total time depends on the current exit queue depth and the beacon chain’s sweep mechanism. After the exit epoch is reached, there is a mandatory delay of roughly 27 hours before funds become withdrawable, followed by a sequential sweep to your withdrawal address that can add several more hours. If faster access is needed, platforms like Unstake.cc support 80+ staking assets and allow users to access their funds in 5–10 minutes.
What are the U.S. tax obligations triggered by a validator exit?
Under IRS Revenue Ruling 2023-14, staking rewards are treated as ordinary income at fair market value the moment they become accessible. The completion of the exit sequence is a taxable event, and operators must record the exact block timestamp, total ETH received, and USD value at that moment. Returning the 32 ETH principal may also trigger a separate capital gains calculation depending on your cost basis.