Tezos+Plebeia context subsystem benchmark

Introduction As Tezos core developers, we DaiLambda and Tarides are working together to improve the perfomance of Tezos context: the version controlled store of Tezos block chain states. DaiLambda has Plebeia, an append-only style data storage system based on Merkle Patricia binary tree. It is similar to Irmin by Tarides used for the Tezos context but incompatible. DaiLambda and Tarides have worked together to improve the performance of Tezos context subsystem, sometimes using what we have learned from Plebeia. [続きを読む]

Proposal of Micheline encoding optimization

Summary The encoding of Micheline has several points to be improved. We propose to extend it to reduce the encoding size. Our quick survey shows that the possible size reduction is -22%. The size reduction directly affects the storage burn fee. It should also improve the context disk access and reduces the storage access gas costs. The new enconding is not yet implemented. The extension may have runtime overhead of the serialization but we expect it minimum. [続きを読む]

Gradual migration to remove garbage files from Tezos context

Abstract We are developing a technique of gradual migration to perform huge context modification at a protocol upgrade in multiple blocks to reduce the migration downtime ultimately to an unnoticeable level. As the first example of this gradual migration, we plan to remove garbage files spendable left in 283K contract directories in Tezos mainnet. They should have been removed at the Babylone upgrade but some were left untouched until today. [続きを読む]

First release of Optz Michelson optimizer

We have released Optz, an optimizer of Michelson programs, the base language for Tezos smart contract. It takes a Michelson code as input and then returns a smaller and more efficient equivalent code. Optimization of Michelson opcode sequences The optimization consists of 2 parts: rule-based transformation and optimal stack manipulation search by A* algorithm. Rule based code transformation Dozens of rewriting rules replace opcodes with better ones, such as: PAIR; CDR => DROP DIP n { a }; DIP n { b } => DIP n { a; b } SWAP; op => op # when op is a commutative binary operator NOT; IF { a } { b } => IF { b } { a } Search for the optimal stack manipulation sequences A* algorithm finds the most optimal sequence of stack manipulation opcodes such as DROP, SWAP, DIG, DUG, DIP, DUP, and the push only opcodes like PUSH and EMPTY_SET. [続きを読む]

Optz: Michelson optimizer

Optz is an optimizer of Michelson programs, the base language for Tezos smart contract. It takes a Michelson code as input and then returns a smaller and more efficient equivalent code. Optimization of Michelson opcode sequences The optimization consists of 2 parts: rule-based transformation and optimal stack manipulation search by A* algorithm. Rule based code transformation Dozens of rewriting rules replace opcodes with better ones, such as: PAIR; CDR => DROP DIP n { a }; DIP n { b } => DIP n { a; b } SWAP; op => op // when op is a commutative binary operator NOT; IF { a } { b } => IF { b } { a } Search for the optimal stack manipulation sequences After the rule-based transformation, A* algorithm finds the most optimal sequence of stack manipulation opcodes such as DROP, SWAP, DIG, DUG, DIP, DUP, CAR, CDR, PAIR, UNPAIR, and the push only opcodes like PUSH and EMPTY_SET. [続きを読む]