Note: This RFP is open to you. You are asked to submit proposals if you are competent in this area and the money will go to you if your application is successful upon completion of the work proposed. Please send all proposals to: rfp2016 <at> decred.org Closing Date All proposals must be submitted by 06:00 PM UTC May 22nd, 2016. Description There exists no easy way to generate transaction scripts, such as smart contracts. To facilitate more extensive use of the scripting system, a higher level language is required. Requirements Experience with Bitcoin and Decred's native scripting language Prior work in compilers, development of higher level languages, and compiler optimization Scope A new higher lever language needs to be developed for Decred's transaction scripting system. This should enable the end user to create simple functions using passed stack items as arguments. It should allow them to declare and alter local variables, make use of all available generic operators, and incorporate new speciality operators such as OP_CHECKSIG. It should be well documented and extensible to new OP codes that Decred may add in the future. The language should support the ability to call simple user designed functions within the main statement, and compile these into a larger, comprehensive byte code script. An example of an attempt at such a language can be viewed in this repository, for Bitcoin script: https://github.com/curiosity-driven/bitcoin-contracts-compiler The language should have the ability to optimize the bytecode of these scripts using the abundant stack manipulation OP codes found in Decred's transaction scripting language. Typing should be strong, with the ability to cast between types and compilation failing if types are inconsistent. Because of the simplicity of the scripting language, compilation to an intermediate representation (IR) is probably not necessary because it will end up so close to compiled byte code itself. Estimated Work 8 weeks FTE or greater (1 FTE = 40 hrs/week). Proposal Proposals should include: Outline and specifications of the syntax and lexer/parser for the language References to prior work on compilers and language design Estimated completion time Milestones Partial payments shall be made at the following milestones: Specifications of all logical statements, operators, and other symbols for the language Implementation of the higher level language with a large suite of examples and tests demonstrating functionality and robustness Further optimization of the byte code for efficiency, then enhancements and modifications of the language based on feedback from developers Modification of these proposed milestones is acceptable, and must be accompanied by sound reasoning in a proposal. Under no circumstances shall payments be made in advance of work being completed.