Financial Proposal: EVMcrispr, mutating DAOs' DNA 🧬

1/3 Approved cc @Ricktik6 pending NFTX review


2/3 :slight_smile:
Also pending NFTX

cc @Ricktik6

1 Like

Love these deliverables. ABI/Etherscan API stuff is super cool, as well as all the other features and interpreter improvements.

Great stuff, Sem. All looks really solid to me.

NFTX review :white_check_mark:


3/3 cc @Ricktik6

1 Like

This is what shipping code looks like… outstanding work. Also your work has been helping some exciting new developers take Aragon to the credit world Introduction to Chelo - Chelo User Guide has been able to leverage your tooling. thanks again


This month we are merging our work based on the programming language theory for EVMcrispr into the main branch. This version presents cas11, a formalized and fully-fledged version of the current command language that, along with its interpreter, comes with new features such as new recursive structures, closures, better error handling, modules, etc. How should we code-name it?

  • “linguistic broadness” - in this release, we extend the language to a higher level of composability, using commands from one module within the commands of another.
  • “branchy syntax” - to interpret the language correctly, we combine the symbols and put them in syntactic trees so we can process them in the correct order.
  • “eternal linguist” - we formalized a language to interact with a variety of decentralized computer networks that are meant to last due to their resilience.

0 voters


branchy syntax…amazing…

eternal linguist is super alliterative, but branchy syntax to the max

1 Like

Branchy Syntax = legit!

1 Like

Hi everyone!

elessar here!

Sorry for the late release this month. It has been a hectic month and a lot of work has been done, but hopefully, the new features compensate for the delayed report.

August 2022 EOM Report - v.0.7.0 “Branchy Syntax”

@daniel-ospina @lee0007 @fartunov

This version comprises a complete refactoring and restructuring of the library.

Embrace modularity . The evmcl command language (which is now called cas11 :nerd_face:) has been converted into a formal fully-fledged DSL (Domain-specific Language) comprise of composable and independent parser combinators that receive the raw cas11 script and produce the nodes (building blocks) of something called AST (Abstract Syntax Tree) which will be later on processed by an interpreter (the evmcrispr).

ASTs are pretty useful structures that facilitate the manipulation and processing of source code in a more consistent, non-ambiguous, and convenient manner.

The different commands and helpers have been moved to separated encapsulated modules following the separation of concerns principle. In this way, new web3 protocols can be supported and integrated more easily.


  • New switch <network name or id> command that allows you to dynamically switch the chain.

  • New load <module> [as <alias>] command that allows you to import the modules containing a set of commands and helpers. At the moment, there are two modules:

    • std: the core module which is not required to import. It contains the following:
      • Commands: load, exec and set and switch.
      • Helpers: @date, @get, @id, @ipfs, @me, @token and @token.balance.
    • aragonos: Aragon module that contains the following:
      • Commands: act, connect, forward, grant, install, new-dao, new-token, revoke and upgrade
      • Helpers: @aragonEns.

    When loading a module, you have access to all its commands and helpers by prefixing the module name. For example, to use the aragonos module you’d do the following:

      load aragonos as ar
      ar:connect 1hive token-manager voting (
      	install agent:new
      	grant voting token-manager ISSUE_ROLE voting

    Note an alias (in this case ar ) has been set for the module.

  • New call operator <contractAddress>::<method>(<args>) to call read-only contract functions. Example:

     load aragonos as ar
     ar:connect myDAO (
     	set $var1 token-manager
     	exec token-manager::token() transfer(address,uint256) vault 2500e18
     	exec $var1::token() transfer(address,uint256) vault 2500e18
     	set $var2 @token(DAI)::decimals()

    It also supports chainable calls. Here’s an example:

      load aragonos as ar
      ar:connect myDAO (
      	set $var1 token-manager::token()::decimals()

    At the moment it only supports calls to functions that return primitive data types.

  • @calc() helper has been deprecated in favor of native arithmetic expression operations that support priority parenthesis. Example: set $var1 (@token.balance(DAI, @me) * (5 - myContract::aMethodReturningNumber())).

  • Complete support of nested expression structures (e.g. arrays, block command expressions, call expressions, helper expressions, etc).

  • Support of nested connect commands that allow you to define DAO-to-DAO operations scripts and have access to different organizations’ apps inside a scope.
    You can reference a different DAO’s app by their name, address or nesting index. The format would be as follow: _<dao>:<app-identifier>.

    load aragonos as ar
    ar:connect mainDAO (
        ar:connect subDAO tollgate token-manager voting (
       		 # It grants mainDAO's voting app permissions to create votes in
       		 # subDAO's voting app.
       	 grant _mainDAO:voting voting CREATE_VOTES_ROLE 
       		 # Here the nesting index "_1" is the same as "_myDAO".
       	 grant _1:voting token-manager MINT_ROLE
  • The forward <...path> ( <...commands> ) command is back. It allows you to customize the forward path by not having to define it in the connect command. This can be helpful when creating scripts that will be sent through a forwarding path composed of apps from different DAOs. Example:

    load aragonos as ar
    ar:connect mainDAO (
       ar:connect committeeDAO (
       	forward _mainDAO:token-manager token-manager (
  • Option arguments can now be used in-between commands. Example my-command --anOpt 1e18 anotherArg --anotherOpt 1e18 anotherArg.

  • Improved error handling logic that displays the location (line and column number) and type of the failed expression along with the error message.

  • Parser combinators implement error recovering logic which allows them to scan the whole script looking for the maximum number of syntax errors.

Funding Request

  • USDC (90%): $15,000
  • ANT (10%): $1,667

We request a relation of 90% USDC / 10% ANT instead of 70% USDC / 30% ANT because of the Financial Guild Proposal to reduce the spending in ANT.

Next steps

We will keep working on integrating the new library into the EVMcrispr terminal and improving the code highlighting and auto-completion of the editor (which will be easier to do now thanks to ASTs).

We’ll also keep polishing the library and fixing any possible edge case.


This brilliant project continues to have my 100% support for funding but ANT Holders are yet to commit to honouring legitimate funding allocations since S2 ESD funding was not approved. If you hold ANT I would highly recommend voting here Aragon Voice cc @sembrestels

1 Like

Thank you for yet another month of valuable contribution! Waiting for @gausman’s sign off before approving monthly payment

1 Like

Very interesting, can you explain how this supports integration more easily?

This looks like great work! Thank you for such a technical update!

The current modules are two, std and aragonos. Future modules could be giveth, superfluid, uniswap, safe

A good example of the current structure of a module is std.

  • It has a main class that defines the name and loads the module helpers and commands.
  • Every module helper is defined in a different file within the helpers directory.
  • Every module command is also defined within a file, within the commands directory.

This structure is still in alpha, and is subject to heavy changes during the subsequent versions. Once we have a stable way to define modules, we will publish them on npm and apm, so other developers will be able to load their modules and define their custom commands and helpers.

The next module to integrate will probably be giveth.


Great stuff y’all, as always :slight_smile:

All checks out from NFTX :white_check_mark:


1/3 cc: @Ricktik6

@daniel-ospina @fartunov Believe we do not need to continue the previous process of ESD approval as the funding for this project is now approved by Main DAO as per this vote cc @Ricktik6


Although no approval is required anymore, would still be great if you could share the September progress report @PJColombo @sembrestels

As we are currently in the last month of funding for this initiative, it would be great to receive a final overview report by the end of this month.

You could use this format for the last report (October report) Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.

1 Like

Hello everyone, the auto-completion feature (targeted for the end of September) took more time than we expected, and although huge progress has been made, we are going to delay its release to the end of October. We are also delaying the last release of this proposal (which includes simulations) to the end of November. This is why we are skipping September’s monthly payment, so we will get paid when we release what we promised. Thanks for your understanding; the next version will help a lot with the user experience of EVMcrispr. We will tell you more about it in the following days.


Hi everyone! elessar here again!

This last version has taken a bit more time than expected. We’ve been a little bit busy with ETHBogota, ETHLatam and Devcon this month. We’ve had the opportunity to see old faces and meet some wonderful new people during these events as well as participating in the ETHGlobal hackathon where we ended up finalists :trophy: :confetti_ball: (you can check out the project here, if you’re interested :eyes:).

Anyway, we hope you like what this new version brings.

October 2022 EOM Report - v.0.8.0 “Modular Consigliere”

v0.8.0, as its name may suggest, is a user-center version that seeks to improve the terminal UX by providing new auto-completion features which offers contextual code completion suggestions that take into account the previous commands that you’ve typed in as well as the current command’s parameters to help you fill the next word.


  • Commands and helpers suggestions based on the current imported modules.
  • Method signature suggestions given a specific contract address.
  • Specific identifiers suggestions based on the command and argument position being filled.
  • Dynamic suggestions list that changes based on the previous commands.
  • Code highlighting: commands, helpers, keywords and literals
  • UI enhancements: wallet connection and error handling display.


Next steps

We’ll be working on the final version that offers transaction simulation features to to test the user’s scripts.

We’ll also keep working on improving the auto-completion feature by fixing possible bugs and edge cases and adding support to a couple of missing commands.


We are about to release the last version funded by this financial proposal. We are very thankful for everything we could build, thanks to Aragon. In this final version, we are introducing the long-awaited simulations.

Simulations fork the blockchain from a certain point (present or past) and perform fictional operations to see if there are “no glitches in the Matrix” (no bugs in your script) before it is performed for real.

As usual, we request the community for the codename of this next version. These are the options:

  • Morphean simulation - You will be able to simulate transactions and see if the outcome is what you expect.
  • Intrepid daydreamer - You will be able to time-travel to the future or the past to explore the state of the blockchain.
  • Endless construct - Your simulation, your rules, so you will be able to impersonate other addresses (including contracts) to make them do what you wish.

0 voters

We target November 26th for releasing it. Stay tuned.