Skip to main content
Version: v1.10

Machine

Numscript is a Domain-Specific Language (DSL) designed to help you model complex financial transactions. It follows three design principles:

  • Readability: The intent of a Numscript program should always be clear and easy to understand. Numscript programs should be readable by both developers and non-technical financial users, providing a shared, executable definition of money movements.
  • Correctness: Monetary computations in Numscript should always yield correct results, avoiding common currency rounding errors and accidental money creation or destruction. Execution is atomic, ensuring that either all modeled transactions are committed or none.
  • Finiteness: Numscript programs should always terminate in a predictable and consistent way. This ensures that the behavior of Numscript programs can be reliably predicted and controlled.

These principles are the guiding light behind Numscript, and they are reflected in the design of the language itself. By using Numscript, you can model complex financial transactions in a way that is clear, accurate, and predictable.

Here is a simple transaction example. We use multiple send, which will result in a single transaction with multiple postings:

send [USD/2 599] (
source = @world
destination = @payments:001
)
send [USD/2 599] (
source = @payments:001
destination = @rides:0234
)
send [USD/2 599] (
source = @rides:0234
destination = {
85% to @drivers:042
remaining to {
10% to @charity
remaining to @platform:fees
}
}
)