> For the complete documentation index, see [llms.txt](https://docs.bookmemebsc.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bookmemebsc.com/smart-contract-security.md).

# 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.
