# The Sophia smart contract language

This is the __sophia__ compiler which compiles contracts written in __sophia__ to [FATE](https://git.qpq.swiss/QPQ-AG/protocol/src/branch/master/contracts/fate.md) instructions.

The compiler is currently being used three places
 - [The command line compiler](https://git.qpq.swiss/QPQ-AG/sophia_cli)
 - [Desktop wallet](https://git.qpq.swiss/QPQ-AG/GajuDesk)
 - In the [Gajumaru core node](https://git.qpq.swiss/QPQ-AG/gajumaru) tests

## Documentation

* [Introduction](docs/index.md)
* [Syntax](docs/sophia_syntax.md)
* [Features](docs/sophia_features.md)
* [Standard library](docs/sophia_stdlib.md)
* [Contract examples](docs/sophia_examples.md)
* [Contributing](CONTRIBUTING.md)

Additionally you can check out the [contracts section](https://git.qpq.swiss/QPQ-AG/protocol/src/branch/master/contracts) of the Gajumaru blockchain specification.

## Versioning

Versioning should follow the [semantic versioning](https://semver.org/spec/v2.0.0) guidelines. Id est, given a version number MAJOR.MINOR.PATCH, increment the:

- MAJOR version when you make incompatible API changes
- MINOR version when you add functionality in a backwards compatible manner
- PATCH version when you make backwards compatible bug fixes


## Interface Modules

The basic modules for interfacing the compiler:

* [so_compiler: the Sophia compiler](docs/so_compiler.md)
* [so_aci: the ACI interface](docs/so_aci.md)
