# Contracts

A `contract` is a fundamental data structure for representing application logic and application state.

Ola introduces a new programming language called Ola instructions that enables developers to write private web applications. Ola instructions is a statically-typed programming language for writing privacy-preserving, secure programs on Ola. By leveraging zero-knowledge proofs, Ola instructions offers computational integrity for real-world applications.

In Ola, a "smart contract" is defined as a collection of public and private functions written in Ola-Lang program. These functions operate on both public and private state stored within the contract. Since OlaVM is a ZK-STARK based zkVM, it is not needed each function as a verification key, one contract is just as a public input for the zkVM.

Ola-Lang is a programming language crafted for the conversion of high-level programs into ZK circuits. Built on the Rust language, its aim is to provide a familiar and idiomatic way for Ethereum developers to create private smart contracts. Ola-Lang is continuously evolving, with ongoing development efforts that include the addition of contracts, functions, and storage variables.

The ultimate objective is to offer a developer-friendly language that can be easily used by those without cryptographic expertise, enabling them to create programmable private smart contracts.
