Skip to content

Latest commit

 

History

History
96 lines (62 loc) · 2.62 KB

README.md

File metadata and controls

96 lines (62 loc) · 2.62 KB

koa

Build Status License Language Coverage Status

The project is inspired by the simplicity and the ivy-bitcoin.

The koa project is to create a high-level language that has more expressions than the bitcoin script and is simpler and easy to analyze than soldity(ethereum).

A more detailed explanation is given below.

Also, koa project is published in Mobisys 2019! You can see the paper and poster below.

Title: "Demo: Light-Weight Programming Language for Blockchain"

Architecture

koa architecture

  • Lexer
  • Parser
  • Compiler
  • VM

Language Specification

Primitive Type

  • Integer

    It is expressed in int. Integer size is 64 bytes.

  • String

    It is expressed in string.

  • Boolean

    It is expressed in true or false.

Operators

  • Arithmetic

    We support +, -, *, /, % only for integer.

  • Comparison

    We support ==, !=, >, <, >=, <= for comparsion.

  • Logical

    We support &&, || for logical operation.

  • Prefix

    We support !, - for prefix operator.

Condition

It is expressed in if(){} or if(){}else{}.

Etc

  • return
  • \n : All statements should end in \n.
  • Assign : It is expressed in =.

Example Code

contract {
 func Sig(sig string){
   string pubkey = "fvfidBGruUYC+mTw7CusaCOQbBuZBiYduFgH8hRW97KLmHn0xzB1FV++KI7syo8qXGo8Un24WP40IT78XjKO"
   
   if checkSig(pubkey, sig){
     return true
   }
   return false
 }
}

Contribution

Contribution Guide CONTRIBUTION

License

Project source code files are made available under the Apache License, Version 2.0 (Apache-2.0), located in the LICENSE.

CLA Hub

To get started, sign the Contributor License Agreement.