> For the complete documentation index, see [llms.txt](https://docs.geode.fi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.geode.fi/ethereum-guides/staking-pool-handbook/securing-your-withdrawal-contract.md).

# Securing Your Withdrawal Contract

#### Learn More About the Withdrawal Contracts:

{% content-ref url="/pages/fajxkHebpiVLDHZHMN44" %}
[Withdrawal Contracts](/key-concepts/withdrawal-contracts.md)
{% endcontent-ref %}

As a pool owner, it is your responsibility to keep your Withdrawal Contract up to date, or your pool will immediately go under <mark style="color:red;">**Recovery Mode**</mark>.

### Checking for Upgrades

```javascript
// compare these 2 version IDs:

const lastVersion = await Portal.getWithdrawalContractVersion();
const currentVersion = await WithdrawalContract.getContractVersion();

const needs_upgrade = lastVersion != currentVersion ;
```

### Fetching an Upgrade Proposal

Anyone can fetch an upgrade proposal and force your Staking Pool into Recovery Mode.

However, only the Controller can approve this upgrade proposal to effectively change the code:

```javascript
await WithdrawalContract.fetchUpgradeProposal();
```

### Upgrade

```javascript
await WithdrawalContract.upgradeTo(newImplementation);
```

{% hint style="success" %} <mark style="color:green;">It is always best practice to be in touch with us, in order to be notified for potential upgrades:</mark>\
[*<mark style="color:blue;">**Join Geode's Discord**</mark>*](https://discord.com/invite/RC8fTTuJtm)
{% endhint %}
