# Contract Accounts

Some Beanstalk holders were contract accounts rather than externally owned accounts (EOAs). Because contract accounts do not automatically exist at the same address across different chains, assets belonging to eligible contract accounts are held in the Contract Payback Distributor on Base until they are claimed.

The Contract Payback Distributor holds all three asset types on behalf of eligible contract accounts: Beanstalk Silo Tokens, Beanstalk Fertilizer, and Beanstalk Pods. Only accounts that were initialized in the Contract Payback Distributor during deployment are eligible to claim.

### Claiming Methods

There are three ways for a contract account to claim its assets:

#### Direct Claim

If the contract account exists at the same address on Base, it can call the Contract Payback Distributor directly to claim all assets to a specified receiver address.

#### Cross-Chain Message

Contract accounts on Ethereum L1 can send a cross-chain message via the L1 Contract Messenger to designate a receiver address on Base. The L1 Contract Messenger verifies that the caller is authorized and forwards the designation to the Contract Payback Distributor on Base via the [Base Superchain bridge](https://docs.base.org/base-chain/network-information/bridges#superbridge). Once the receiver is set, the designated address can call the Contract Payback Distributor to claim the original account's assets.

Safe multisig wallets with version 1.3.0 or later support cross-chain replay and are compatible with this method. Farmers with earlier Safe versions should explore the Direct Claim method by redeploying their Safe at the same address on Base.

#### EIP-7702 Delegation

Accounts that support [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) code delegation can use it to make their EOA behave as a contract account, allowing them to call the Contract Payback Distributor's Direct Claim function. No special EIP-7702 handling is required in the contract; the delegation simply allows the account to execute the claim transaction.

### What Gets Transferred

When a contract account claims its assets, the Contract Payback Distributor transfers:

* **Beanstalk Silo Tokens** (ERC-20) to the receiver's wallet or [Farm Balance](https://docs.pinto.money/resources/glossary#farm-assets);
* **Beanstalk Fertilizer** (ERC-1155) to the receiver's wallet; and
* **Beanstalk Pods** in the repayment Field to the receiver's account.

Each account can only claim once. After claiming, the account is marked as completed and cannot claim again.

### Contracts

| Contract                            | Type           | Address                                                                                                               |
| ----------------------------------- | -------------- | --------------------------------------------------------------------------------------------------------------------- |
| Contract Payback Distributor (Base) | Proxy          | [0xbA941Af3292c49b585f4EC5C8164c1dfc893EEdC](https://basescan.org/address/0xbA941Af3292c49b585f4EC5C8164c1dfc893EEdC) |
| Contract Payback Distributor (Base) | Implementation | [0xED3Ead9D8b6E57f666E60ccf833f3ed1Be2Dd4c0](https://basescan.org/address/0xED3Ead9D8b6E57f666E60ccf833f3ed1Be2Dd4c0) |
| L1 Contract Messenger (Ethereum)    | —              | [0xD2abd9a7E7F10e3bF4376fb03A07fca729A55b6f](https://etherscan.io/address/0xD2abd9a7E7F10e3bF4376fb03A07fca729A55b6f) |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.pinto.money/appendix/beanstalk-obligations/contract-accounts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
