# Smart Contract Security

Security of user funds is of upmost importance, and it is equally important that all details related to security can be independently verified on-chain.

Smart Contracts and security details can be found in the table below

<table><thead><tr><th width="377">Smart Contract</th><th>Purpose</th><th>Security Details</th></tr></thead><tbody><tr><td>0xC9Ad421f96579AcE066eC188a7Bba472fB83017F</td><td>BOOK Smart Contract</td><td>Non-upgradeable, standard ERC20</td></tr><tr><td>0x3f669d02B58C2E35E273c7A5e2b8eE83a6b682f7</td><td>Track BOOK Burns</td><td>Upgradeable, does not handle funds</td></tr><tr><td>0x24ad3a59aF9a201621a8df15eC84153bEFd4068c</td><td>FarmClonable - A base contract that is cloned for each weekly farm</td><td>Non-upgradeable. This contract supplies logic to all clones</td></tr><tr><td>0xbB0E532DDd62B98236a6fC7f37f6735031c55610</td><td>FarmFactory - Creates and tracks FarmClones. Holds BOOK rewards</td><td>Upgradeable. Holds BOOK for future farms, has no access to user deposits</td></tr></tbody></table>

### Security Approach

When designing the BOOK project smart contract infrastructure, it was critical to keep certain contracts able to be improved in the future, but at the same time have users deposit funds to trusted, non-upgradeable contracts.

This was achieved by having certain contracts be upgradeable, contracts which do not have access to user funds.

User funds which have been deposited to farms, are all stored in weekly cloned farm contracts.  These contracts are not upgradeable, and are verfified to be able to see security directly on chain.

### Farm Contract Addresses

To find the farm contract addresses, you will need to query the "FarmFactory" contract.  The easiest way to do this is via the "chapterToFarm" view.  You input the chapter (week) that you want to get the farm address for, and it will return it to you.


---

# 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.bookmemebsc.com/smart-contract-security.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.
