Financial Proposal: EVMcrispr, mutating DAOs' DNA 🧬

What proposal are you building?

EVMcrispr is a powerful tool that combines a command-line interface with a Javascript library to interact with Aragon DAOs. With it, you can bundle many DAO operations into just one script, generating a singular transaction/vote.

Why did you decide to build it?

There are more than 2,000 AragonOS DAOs on Mainnet, with over $500 million of total value locked, with major governing protocols such as Curve, Badger, or NFTX. On top of that, there is an emerging ecosystem of DAOs that are being deployed in other networks such as Gnosis Chain, where Gardens is taking the AragonOS framework to the next level.

All those DAOs need DAO tooling for their continuous operation, and many of them have already made use of EVMcrispr at least once:

Funding the improvement and documentation of EVMcrispr, Aragon is supporting their legacy DAOs while it can create new products such as Zaragoza. It also contributes to the development of EVM script tooling, a very promising technology that is finally accessible to Aragon thanks to the development of EVMcrispr and the EVMCL Command Language.

Technical Details of the Project

EVMcripsr is a library that can be used to wrap many actions in one vote of an AragonOS DAO, lowering gas costs and dramatically improving the DAO management experience. Between the available actions, you can find installing new Aragon apps, granting or revoking permissions, calling app functions such as minting tokens, withdrawing funds, etc. It works with both AragonOS v4 and v5, supporting complex app forwarding paths. The repo can be found at:

This tool also pours a generous helping of syntax sugar over many aspects of creating Aragon DAO actions, including:

  • Exposed custom commands to interact with the Kernel, ACL, and Agent (those are install, upgrade grant, revoke, and act).
  • Access to DAO apps by their AragonPM names, instead of their addresses.
  • Easy aliasing of DAO AragonID names.
  • Exponential number notation, making token decimals and percentage calculations effortless.
  • Notation for time periods such as minutes, hours, days, weeks, and years with automatic calculation into seconds.

We plan to introduce the following new features:

  • Variables. We will be able to store data to be used later in the script.
  • Helper functions. We will be able to use the following helpers within the scripts:
    • @calc(expression) - Calculates the result of a mathematical expression. Example: @now+5m will return the time 5 minutes from now.
    • @fetch(url,jsonpath) - Fetchs the content from an URL and parses it as JSON or returns it as a string. The content can be filtered using JSONPath.
    • @get(entity, call) - Calls the contract view function.
    • @id(content) - Hashes the content.
    • @ipfs(content) - Pins the content on IPFS and returns the hash.
    • @now - Returns current date.
    • @params(entity) - Same as @params.oracle(entity) for now.
      • @params.oracle(entity) - Returns a Params object that can be composed with other params or passed directly as a permission param.
    • @sender - Returns the address of the signer.
    • @token(symbol) - Returns the address of the specified token.
      • @token.balance(symbol,holder) - Returns the balance of a token holder for a specific token.
  • Autocompletion and better highlighting. EVMcrispr terminal has the capability to become a very powerful tool for creating EVM scripts.
  • EVMcrispr simulator. We will be able to simulate the scripts before executing them.

A documentation portal will also be constructed using the Docusaurus framework. This will be the hub of knowledge for how to use EVMcrispr with most Aragon apps in existence. This documentation portal will break down how to transcribe functions within Aragon apps into executable EVM scripts within EVMcrispr. We will also include a greater overview of the app, syntax-sugar info, and how to generate scripts for custom Aragon apps.

Previous work in the same field as EVMcrispr:

These are the most advanced tools we’re aware of that allow users to merge multiple actions into a single proposal:

  • Aragon Client built-in console. It is the most similar work to EVMcripsr, although it is quite limited to creating multi-action votes and does not have helpers to parse parameters, making it difficult to do complex operations.
  • 1hive node installer. Installer written in javascript and executed from the console. It has been used to install Aragon applications with complex configurations and offers some parsing helpers, but the experience of installing a new app or doing any other operation is still bad.
  • 1hive app installer. It is an end-user tool with a UI interface that works pretty well but can only install pre-configured applications, which are still difficult to configure.
  • 1hive transactions app. Can create votes with multiple actions for minting, burning, or transferring tokens. It works well for these specific purposes, but it is not a general tool that can create any kind of vote.

Limitations or risks of this proposal.

Unfortunately, it is difficult to adapt EVMcrispr to work with the Aragon Govern framework, as it uses a different programming interface for the ACL and a different subgraph. We plan to make EVMcrispr more flexible in the future, being compatible with more frameworks, but we can not commit to integrating it at this stage of development.

On the other hand, EVMcrispr will be a relevant piece of software in the migration from AragonOS DAOs to Zaragoza DAOs, as it can potentially pack up all the assets of a DAO and send them elsewhere.

Roadmap and Deliverables

We are planning to release one version per month. This is our roadmap:

  • v0.4.x (May 2022):
    • Introduce environment variables.
    • Introduce @sender, @token and @token.balance helpers.
  • v0.5.x (June 2022):
    • Restructure EVMcrispr library API.
    • Introduce @params.oracle, @id, and @now helpers.
  • v0.6.x (July 2022):
    • Retrieve external contracts ABI from external sources (i. e. etherscan).
    • Introduce @ipfs, @calc, and @get helpers.
  • v0.7.x (August 2022):
    • Allow multi-transaction sending scripts, so we can create many votes in many different DAOs in just one script.
    • Allow automatic chain switching.
  • v0.8.x (September 2022):
    • Improve code highlighting and auto-completion in the EVMcrispr terminal. We are using the same editor as VS Code, which is highly configurable and will allow scripts to be written easier and faster.
  • v0.9.x (October 2022):
    • Simulate the EVM scripts and notify the user if it will succeed before sending it.
    • Introduce the log command that provides more information about the simulated changes (token balances, app parameters…) during and after the execution of the script.

Team Information

Names and/or usernames, preferred contact method, and/or relevant social links for team members (Twitter, Github, Aragon Forum, etc.):

Skills and previous experience in related or similar work:

Sem and Elessar are two software engineers that have been working with the Aragon codebase for more than two years.

  • One of Sem & Elessar’s first contributions to the Aragon DAO ecosystem was developing the Committees App, the first app that created new instances of other apps (installing a Token Manager and a Voting app for each DAO Committee). The app was funded by the Aragon Community Funding DAO (CFDAO).
  • Sem led the migration of the CFDAO afterward to upgrade the proxies and convert the SAI into DAI using the agent. Looking back then, managing EVM scripts was already a thing.
  • Sem and Elessar also coded the Transactions App, a tool that allows to mint tokens for multiple accounts in the Token Manager or sends funds to multiple accounts in the Finance app.
  • Both have been active contributors of 1Hive and TECommons developing multiple Aragon Apps such as Conviction Voting, the Hatch app, the Augmented Bonding Curve app, and more recently the Superfluid app.

Mitch is a technical documentation writer that has been involved in many web3 projects including DAppNode, PrimeDAO, and DeFi Safety, and is part of the Giveth team and a TECommons community steward as well. This is some of the documentation work he has done:

Funding Information

We are requesting 70,002 USDC and $30,000 worth of ANT to complete the current roadmap of EVMcrispr.

We are requesting them in six payments of 11,667 USDC and $5,000 worth of ANT each, one per month after the release of each version.

The funds should be sent to 0x8790B75CF2bd36A2502a3e48A24338D8288f2F15.

  • 60,000 USDC will be used to release six minor versions of EVMcrispr, allocating 10,000 USDC to each one.
  • 10,000 USDC will be used to fund the creation of a documentation site with a cookbook, compiling many examples of usage for EVMcrispr.
  • $30,000 worth of ANT will be used to fund retroactively the three first versions of EVMcrispr.

On top of that, and as a requirement of the Executive Committee, an independent review will be performed after each deliverable. NFTX could fill this role receiving a direct payment from the Executive Committee of 6,000 USDC to the address 0x40d73df4f99bae688ce3c23a01022224fe16c7b2 (their Aragon DAO Agent) before the work starts.

Addendum

This is an example of how writing EVM scripts will look like using EVMcrispr in just a few months:

use eth 1hive # Use 1hive.aragonid.eth DAO on mainnet

forward token-manager voting {
    # Claim ENS tokens
    set $amount 100e18
    set $delegator ZERO_ADDRESS
    set $proof @fetch(http://ens.domains/proofs.json,$.domains[:193].proof)
    set @token.$tokenlist https://tokens.uniswap.org
    forward agent {
      exec @token(ENS) claimTokens $amount $delegator $proof
    }

    # Transfer ERC-721 tokens (using Agent)
    set $ens-registry-token 0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85
    set $recipient @sender
    set $token-id 0
    forward agent {
      exec $ens-registry-token safeTransferFrom agent $recipient $token-id
    }

    # Transfer ERC-20 tokens (using Finance)
    set $reference Migrate 1hive funds
    exec finance newImmediatePayment @token(DAI) $recipient @token.balance(DAI,agent) $reference
    exec finance newImmediatePayment @token(ANTv1) $recipient @token.balance(ANTv1,agent) $reference
}

log The 1hive mainnet DAO will have `@token.balance(DAI,agent)` DAI and `@token.balance(ANTv1,agent)` ANT after the execution of the vote.

use gno:garden # Use garden.aragonid.eth DAO on gnosis chain

forward disputable-voting.open --$context @ipfs("Mint 1000 tokens and pair them with HNY") {
  exec token-manager mint agent 1000e18
  forward agent {
    set $honeyswap 0x1C232F01118CB8B424793ae03F870aa7D0ac7f77 # Honeyswap UniswapV2Router02
    set $daoToken @get(token-manager,token)
    exec $honeyswap addLiquidity {
      $daoToken,                              # TokenA
      @token(HNY),                            # TokenB
      @token.balance($daoToken,agent),        # amountADesired
      @token.balance(HNY,agent),              # amountBDesired
      0,                                      # amountAMin
      0,                                      # amountBMin
      agent,                                  # to
      @calc(@now+10m)                         # deadline
    }
  }
}

log The agent will have `@token.balance(HNY,agent)` HNY after the execution of the vote.
5 Likes

This is great. You have already established a useful product that Aragon Support has refered users to. I look forward to watching you all succeed further!

3 Likes

@fartunov @lee0007 @AlexClay @daniel-ospina

1 Like

EVMcrispr seems to be an AWESOME tool and I look forward to seeing it evolve.

A few questions about the proposal:

  • Can (should) EMVcrispr evolve to handle more things than Aragon DAOs?
  • with Aragon putting effort into developing a new product, would be nice to see in this proposal some efforts aiming at the adaptation of EVMcrispr to interact with it as well. I think that not supporting Govern is more than acceptable, but will be important to support “Zaragoza” (old codename for the new product)
  • I am not experienced enough to evaluate the funding amount so would like some analysis from the Exec sub-DAO on this.

Regards

2 Likes

Beyond excited to see this proposal!

  • EVM Chrisper is a great tool that is already creating a lot of value for the network
  • The Blossom team has shipped an awesome tool as part of the DAO Global Hackathon Aragon co-sponsored last year with Superfluid (Aragon)
  • The team seem to have engaged a lot of key stakeholders of the Aragon Network who are relying on the Client contracts

Excited to support the current proposal!

To @ramon’s point, there are other potential avenues for future collaborations. Those, in my view, are beyond the current scope, and would love to see some conversations being kicked off in that direction:

  • Does it make sense to support the new contract base (old name Zaragoza)?
  • Could the Blossom team take over the Client contracts should AA/AL teams decide to stop development there?
2 Likes

Hello @brent, @ramon, and @fartunov! Thanks for going through the proposal. I am happy to reply your questions:

Can (should) EMVcrispr evolve to handle more things than Aragon DAOs?

It should. Part of the refactoring that is planned in the v0.5.x and v0.7.x is done with the intention to generalize the EVMcrispr code so the core can be used to automate a lot of transactions (claiming farming rewards from many sources in different networks for example), whereas AragonOS specifics would be encapsulated in it’s own class. This will make the adoption of other technologies easier in the future.

would be nice to see in this proposal some efforts aiming at the adaptation of EVMcrispr to interact with [Aragon’s new product] as well

There are different reasons why the current proposal is focused on continuing the development of EVMcrispr for the first version of Aragon:

  • EVMcrispr is a response to a nowadays need for the AragonOS ecosystem. We first decided to code the library because TECommons needed to perform a very complicated vote in their DAO. After that other gardens in the 1hive ecosystem started to need similar votes, so we created the EVMcrispr terminal to make it easier to use. In a matter of months, some DAOs from the rest of the Aragon ecosystem with similar needs became interested as well, and this is how we could help Curve and NFTX to do complex operations within their DAOs. This is why we are focused on supporting AragonOS DAOs first, to solve our own needs and the rest of the Aragon ecosystem.
  • EVMcrispr is still in a very early stage. We are a small team with very few resources, so we could only focus on the features that were required by the DAOs we were working with. The fact is that EVMcrispr needs a restructuring of the code in order to be able to continue adding features and fixing some of it’s limitations, hence this proposal. The grant give us the possibility to dedicate resources to stabilize the code base and document it, so much more people will be able to understand it and we will have a solid basis in which we all be able to build upon.
  • We will love to play with Zaragoza when it is released, although we are not in the position to request funds to start working with it yet. We can offer our experience on what we know most, which is AragonOS, and we hope it is something needed enough to receive Aragon’s support for providing this service to the community. In the future we may adopt Zaragoza as well and once we get familiar with the technology we will be able to propose things that have sense with it. Until then we can not commit to things that we do not know if we could accomplish.

Does it make sense to support the new contract base (old name Zaragoza) [for future collaborations]?

I am not familiar enough with the Zaragoza codebase yet to be able to reply to this question properly, but what I can tell from what I have seen is that I think EVMcrispr could facilitate the creation of DAO actions and the management of the ACL.

Could the Blossom team take over the Client contracts [in the future] should AA/AL teams decide to stop development there?

I would prefer to talk about this in a future proposal, although I think there is a plausible possibility that 1Hive DAO (more specifically the Gardens team) would be interested in maintaining the legacy infrastructure and code of the Aragon Client if Aragon can still provide some sort of financial support. Again, it needs to be discussed in its own proposal in the case Aragon decides to discontinue the in-house development of the Client.

In the meantime, I will be happy to reply any other question.

3 Likes

@nivida @voronchuk @p4u can the tech committee please weigh in here specific to the value of proposed funding. Do you believe this is reasonable given the deliverables?

From what I read this presents as a fantastic, proven solution. Results speak for themself already and I am keen to support teams building the network however I do not have the expertise to assess the tech, deliverables or funding request and I seek your expert opinion please.

Tech committee sign-off will be a determining factor for my approval of ESD funding as too, the need to secure S1 funding (April 2022)

I agree @sembrestels that at this point a focus on solutions for exisiting Aragon DAO is the right focus in hopes that future opportunies to collaborate will arise following the release of the new code base

1 Like

I was writing those EVM scripts manually and it’s cumbersome, so Evmcrispr looks like a useful product for current DAOs. The budget looks reasonable, but as I got it a support for Aragon v2 is needed for the long-term viability of this development.

1 Like

i need this tool specifically to do my job in aragon dtech at a higher level - it’s going to simplify building and integrating new code, contracts mgmt, and day-to-day-daoing in a concise on-chain, open source process = yay

basically this is the tool that will help us turn newbs in to dev-ops. no more command line crap, no more “oh, you’re on windows = now do this instead” or “on mac please update these settings first…”

now it’s “go to this website, try this recipe, and let’s watch” = i believe this is going to lower the bar and usher in a wave of intro developers who would otherwise be lost in the basic complexities…

EVMcrispr is a foundational tool that may eventually be involved in every upgrade of Aragon presently, and also fits in to simplifying 3rd party integrations.

from a technical stanpoint it facilitates contract integration through a simplified web-browser-based interface in a clean, open-sourced, flexible product. it significantly lowers the bar for creating a mid-tier developer role (basically i see this as the tool I would end up using every day as a “mid tier DAO support developer”

from a day-to-day perspective it will improve engagement by consolidating actions in to single votes… voter engagement is such a difficult challenge and any product that can simultaneously consolidate and configure multiple processes is a big win. 100% in support and thank you to the team for submitting the proposal

5 Likes

Hi there!

Thanks for the amount of detail put into the proposal, it looks really promising and I would love to see the outcome of it.

Any tool that helps the currently convoluted UX related to DAO management tooling is a step in the right direction IMO. Lowering the bar for developers to interact with DAOs seems like a really good step towards improving that.

Would also love to see this functionality added to the new Aragon App, once that is possible.

Congrats on the amazing work,

Joan

1 Like

Could we please get some further clarity that the proposed work and refactoring of EVMcrispr would indeed enable it to be compatible with Aragon App contracts? GitHub - aragon/apps: Human-centered DAO infrastructure

It would be much easier for myself and other community members to fully support this proposal if there was at least some assurance of this compatibility. Appreciate that even if it’s not, this proposal is still valuable to the tech support guild and would help reduce some of their work load as well as other AC DAOs. But that said, it would also be a shame to not develop a refactored version in a manner that might be at odds with Aragon App.

Thank you.

1 Like

Thanks for your support @lee0007 @voronchuk @alibama @Joan_Arus and @joeycharlesworth.

In regards of future compatibility with Zaragoza:

  • Most of the developments we are proposing are agnostic to any underlying DAO architecture. Variables, helpers, and simulations could all be used if Zaragoza is supported in the future.
  • As we said earlier we think Zaragoza could benefit from EVMcrispr in the future at least in the areas of changing permissions and sending actions to execute on votes, although building this compatibility is not in the scope of this proposal because Zaragoza codebase is still changing, and we are not familiar with it.
  • On the other hand, something else that could help on the adoption of Zaragoza is that EVMcrispr can assist on the migration of the assets of old AragonOS DAOs, as we already have done with 1Hive on mainnet (migrating the different tokens and NFTs of the DAO to another address).

That being said, our predisposition is to keep track of the developments of Zaragoza and earn experience with it. It is just early for us an for EVMcripsr to commit on integrating it, we will be in a much better position in six months to talk about it properly.

We are very glad to see all the support this proposal is having and the value EVMcrispr is providing to the value. We are ready to start working on the next version that will introduce variables and helpers for the first time. We are eager to hear from the ESD if our proposal is accepted, or there is something else we can clarify before starting to work. We are at your disposition.

1 Like

To clarify: This proposal has my full support, which is not contingent on any commitments concerning Zaragoza - it is, as you have put it, an avenue for future potential exploration which lies beyond the scope of the current proposal.

Let’s hear from @lee0007 and @daniel-ospina but it is looking good :slight_smile:

2 Likes

I’ve been supporting this proposal for a while and I’m happy to finally see it come to light. It has my full support as it could both facilitate migration to Zaragoza should the new stack prove successful, and should the new stack prove unsuccessful, the proposal delivers significant value expanding the functionality of the most popular Aragon product to date.

1 Like

I’ve just noticed that the proposal doesn’t include yet a budget for a reviewer (not an auditor but at least an agent able to judge whether the code does what it says on the tin).
The executive sub-DAO doesn’t have the capacity to review such a proposal, so it would be advisable to include a budget for a reviewer to be suggested by anyone and approved by the ESD but under the responsibility of the proposers to source.

2 Likes

Love seeing this! A great way to keep maintaining the Aragon stack. Fully on board.

1 Like

ESD General Meeting Monday 4 April UTC 1900: This proposal has unanimous support from the ESD on the basis of

  1. including budget for independent review as per @daniel-ospina request above as we are not in the position to assess the deliverables ourselves. The tech commitee @nivida @p4u @voronchuk &/or dtech @brent @alibama may be able to provide this review but you are welcome to work with whom ever you wish to include in the proposal
  2. approval of ESD Discretionary funding for Season 1 1 April - 31 July
  3. approval of ESD Discretionary funding Season 2 for remaining months (2)
4 Likes

thanks for coding the good code = rock on

This is great @lee0007, should we slightly modify the proposal to include cost of the independent review? When should the review be done, should it be before the project starts, after the first deliverable, or something different?

We can start working, so we don’t miss the deadline of having the version 0.4.x with environment variables and function helpers by the end of the month. This gives more time for the independent review. The approval of ESD Discretionary funding vote should be ended in very few hours, so we will now soon.

A tool like this is really needed and EMVcrispr seems really useful :white_check_mark: