SCaml

It's not a scam.

Repository Learn More

Smart Contract Abstract Machine Language


SCaml is a language for Tezos blockchain smart contracts.


Being a strict subset of OCaml, a programming language wildly used in computer science and financial industry including Tezos protocol, SCaml is a simple, small, but fully working compiler for Tezos smart contracts.


No, it's not a scam. Because Scams never name themselves scam.

For Tezos

SCaml compiles your codes to Michelson, smart contract VM for Tezos, a very secure blockchain and smart contract framework.

Strictly OCaml

SCaml is a strict subset of OCaml programming language. Learn SCaml through existing OCaml tutorials and references.

Open Source

A derivative work of an LGPL software cannot be proprietary! We welcome your contributions on GitLab (no, not GitHub).

SCaml version 1.1 "Salting" released!

SCaml, 1.1 “Salting” on 2020-03-04 was released on the very day of Tezos 006 Carthage protocol upgrade.

Salting supports all the Michelson features of Tezos Carthage and fixed bugs of Pyramid. Its static typing now checks various typing requirements (such as comparables, packables, storables) of Michelson: SCaml programs violate these requirements are now rejected by SCaml compiler without asking Tezos node to type-check the output Michelson code.

Other highlights of Salting:

  • SCaml Error code. SCaml specific errors are now reported with their error numbers, which makes these errors more easily understood.
  • Added uncurried version of `fold` and `map` primitives.
  • Emits Michelson with field and constructor annotations.
  • Added many SCaml code examples, including multisig, voting, and a very simple NFT.
  • Implemented `--scaml-convert` and `--scaml-revert` compiler modes, which translate SCaml values to Michelson and vice versa.

SCaml version 1.0 "Pyramid" released!

We have made the first release of SCaml, 1.0 “Pyramid” on 2020-01-01.

It covers all the opcodes of Michelson in Tezos protocol version 005 “Babylon”. It now also supports the fully compatible pattern matching with OCaml and user defined types (variants and records) which was not available in the previous pre-release in 2019-11.

Implemented everything initially planned, this is a big mile stone.