Cairo Contract Functions
Overview
Guide how to define contract entry points and control ABI exposure in Cairo.
Quick Use
- •Read
references/contract-functions.mdbefore answering. - •Use
#[starknet::interface]with#[abi(embed_v0)]for standard ABI definitions. - •Use
self: ContractStatefor view,ref self: ContractStatefor state-mutating entry points.
Response Checklist
- •Mark constructors with
#[constructor]and L1 handlers with#[l1_handler]. - •Use
#[external(v0)]for public entry points if using per-item ABI. - •Explain that view functions are not enforced by the protocol.
Example Requests
- •"How do I define a view function vs external function?"
- •"Where do I put a constructor in a Cairo contract?"
- •"How do I expose a function in the ABI?"