> For the complete documentation index, see [llms.txt](https://docs.frequencychain.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.frequencychain.org/16.-best-practices-security-and-production-readiness/16.1-smart-contract-security.md).

# 16.1 Smart Contract Security

Smart contracts form the core logic of decentralized applications, and once deployed, they are immutable. This makes it critical to ensure correctness and security before deployment.

Developers must ensure that contracts are designed to prevent unauthorized access and unintended state changes. Functions that modify critical state should include explicit validation checks to restrict execution to authorized entities. This is typically implemented using access control patterns where specific wallet addresses or roles are granted permissions.

All external inputs must be treated as untrusted. Contracts should validate input parameters rigorously to prevent invalid state transitions. This includes checking value ranges, ensuring correct data formats, and handling edge cases explicitly.

Special attention must be given to functions that handle value transfer. Improper implementation can expose contracts to vulnerabilities such as reentrancy. Developers should follow established patterns such as updating state before transferring funds and using appropriate safeguards when interacting with external contracts.

Before deployment, contracts should be thoroughly tested using both unit tests and integration tests. In addition, formal audits and peer reviews are strongly recommended for any contract handling significant value.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.frequencychain.org/16.-best-practices-security-and-production-readiness/16.1-smart-contract-security.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
