Create a domain-specific language that can be used to 1:1 serialize/deserialize into ISI, but allow more expressive syntax. This DSL needs to handle the following uses:
Creation of genesis blocks.
Input to iroha_client_cli.
proc macro for internal use (Optional)
Compiler for SDK usage (Optional)
Creation of non-performance critical smartcontracts
Creation of trigger filters
Querying
Motivation
Based on internal feedback it was found that most uses of WASM can be covered by the already existing ISI infrastructure. Given that the work needed to upgrade internal ISI is zero, while WASM, owing to its non-backwards-compatible nature requires an update, the DSL has the potential for major time savings.
The tools already present for Iroha thus obtain a double use and become useful outside the tutorial scope:
The iroha_client_cli is no longer tied to clap for producing meaningful transactions.
kagami can produce more than the most basic genesis block. In fact it can be used in conjunction with iroha_client_cli to design and submit arbitrarily complex ISI-based smartcontracts.
The DSL could include an option to compile to WASM.
The DSL could include an option to include inline Rust for WASM.
The DSL can significantly reduce the overhead of creating the correct instructions. Namely, one no longer requires to know the full event hierarchy to produce a suitable event filter.
The DSL removes the need to unit test the iroha_client library. Instead iroha_client_cli can be used.
The DSL is a rather large undertaking, but it has the potential of brining great benefits and widen the adoption of ISI-based smartcontracts.
Feature request
Create a domain-specific language that can be used to 1:1 serialize/deserialize into ISI, but allow more expressive syntax. This DSL needs to handle the following uses:
iroha_client_cli
.proc macro
for internal use (Optional)Motivation
Based on internal feedback it was found that most uses of WASM can be covered by the already existing ISI infrastructure. Given that the work needed to upgrade internal ISI is zero, while WASM, owing to its non-backwards-compatible nature requires an update, the DSL has the potential for major time savings.
The tools already present for Iroha thus obtain a double use and become useful outside the tutorial scope:
iroha_client_cli
is no longer tied toclap
for producing meaningful transactions.kagami
can produce more than the most basic genesis block. In fact it can be used in conjunction withiroha_client_cli
to design and submit arbitrarily complex ISI-based smartcontracts.iroha_client
library. Insteadiroha_client_cli
can be used.The DSL is a rather large undertaking, but it has the potential of brining great benefits and widen the adoption of ISI-based smartcontracts.
Who can help?
@appetrosyan