Costing, Sizing, new graph-based IR, optimized graph evaluation
Major update with the following new features
- Generation of graph-based IR from SigmaDsl specification (by Scala compiler plugin) (#336)
- New script costing procedure using graph-based IR
- Translation of ErgoTree to graph based IR for costing and optimized execution
- New direct interpretation of graph IR without rewriting reductions (used both for execution of generated cost function and for computing Sigma protocol trees).
- ErgoTree now supports sharing of sub-trees (to reduce serialized size)
- Common Sub-expression Elimination optimization for compiled ErgoTrees
- Lazy && and || logical operations
- Lazy if branches
- first-class lambdas, including nested lambdas
- ZKProof {...} blocks to explicitly specify propositions with Zero Knowledge proving and verification (#236)
- Extended ErgoTree serialization format to include header byte with version and other flags. (#284)
- Constant segregation for optimized script execution(#264)
- Changed HEIGHT type from Long to Int (#335)
- Renamed
Array
toColl
type at script level (#299)