diff --git a/The-Sophia-Language.md b/The-Sophia-Language.md new file mode 100644 index 0000000..a36f999 --- /dev/null +++ b/The-Sophia-Language.md @@ -0,0 +1,19 @@ +# The Sophia Language + +Sophia is the smart contract language. It was first implemented on Aeternity, and then used as the basis for smart contracts on the Gajumaru. As we have noted that the EVM and Solidity language were created by people with little experience of virtual machines and language design, it seems fitting to list the main contributors to the Sophia language: + +- Ulf Norell, PhD, Chalmers University and Quviq AB, known for the creation of the Agda programming language +- Erik Stenman, PhD, Happi Hacking AB, distinguished member of the High-Performance Erlang Group at Uppsala University, where he wrote the first native code compiler for Erlang. Project manager for the 1.0 release of the Scala programming language. Later Chief Scientist and CTO at Swedish factoring giant Klarna. Author of The BEAM Book - the closest thing to an authoritative documentation of the Erlang VM internals +- Thomas Arts, CTO and co-founder of Quviq AB, Professor of Software Engineering, Chalmers +- Hans Svensson, PhD, Quviq AB, specialist in software verification using testing, model checking and theorem proving + +Supporting contributions from: + +- Robert Virding, co-inventor of the Erlang programming language +- John Hughes, Professor of Computer Science, Chalmers, co-founder, Quviq AB, editor on the original Haskell Committee, co-inventor of the QuickCheck property-based testing tool + +At first, the Aeternity team ported the EVM virtual machine to Erlang, into the AEVM, which became the first smart contract VM for Sophia. The Sophia language development was informed by the many known flaws in Solidity/EVM as well as by the massive collective language and VM design experience on the team. Quviq, a pioneer in property-based testing of software, used QuickCheck to validate many aspects not only of the Aeternity chain, but also specifically of Sophia, the compiler, and the VMs. To our knowledge Aeternity and Cardano are the only two major blockchains that have been tested using Property-Based Testing. + +After having run Sophia on top of AEVM for a while, Erik Stenman drafted a new VM architecture, which later came to be released as FATE (Fast Aeternity Transaction Engine). The key insight was that performance of a smart contract VM is decided to a great extent by the cost of setting up and managing blockchain context, as well as interacting with the chain. The instruction set of the FATE VM is very high-level and optimised for the Aeternity architecture using a family of high-level transaction types. The virtual machine is "functional", in the sense that “updates” of data structures, such as tuples, lists or maps do not change the old values of the structure. Instead, a new version is created, unless specific operations to write to the contract store are used. FATE also draws heavily on the functional nature and automatic memory management of the Erlang Runtime System, greatly simplifying its design and making its correctness easier to verify. The very high-level language of FATE also results in a much smaller footprint of smart contracts on-chain. + +Our experience from Aeternity is that the high sophistication of Sophia aside, users find the language easy to learn and a pleasure to program in. \ No newline at end of file