[RFP #003] [BEGINNER] [SOLIDITY] Complex Vouchers


Cartesi DApps interact with external parties, including smart contracts and other DApps, through the use of vouchers. Vouchers are designed to be highly generic, enabling a wide range of potential interactions and use cases. This level of flexibility opens up the possibility of expanding the behavior of vouchers to support more complex interactions by targeting smart contracts that extend their functionalities.

This Request for Proposal (RFP) aims to encourage the development of a smart contract that can implement various advanced behaviors for vouchers, serving as a target for Cartesi DApps that require additional functionality. Interested parties are encouraged to suggest behaviors that would enhance the voucher system and contribute to the overall Cartesi ecosystem.

One can read more about how vouchers work here:
Some examples of advance behavior for vouchers are :

  • Ordered vouchers: voucher A can only be executed after voucher B was executed
  • Paid vouchers: vouchers that pay the user that executed them
  • Re-executable vouchers: vouchers that can be executed multiple times
  • Targeted vouchers: vouchers that can only be executed by a specific address (or list of addresses)
  • Expirable vouchers: vouchers that can only be executed until a certain timestamp
  • Future vouchers: that can only be executed after a certain timestamp
  • Atomic vouchers: a sequence of message calls executed in order

Scope of Work:

The selected team will be responsible for designing, developing, and implementing a Solidity library that extends the expressiveness of the voucher system. The Solidity library should support a range of advanced behaviors and use cases that go beyond the current capabilities of Cartesi DApps. The following objectives should be met:

  1. Analyze and identify potential behaviors that could enhance the voucher system and provide added value to Cartesi DApps.
  2. Design a Solidity library that can implement multiple advanced behaviors, ensuring compatibility with existing Cartesi infrastructure and interoperability with other DApps.
  3. Develop the library using Solidity, adhering to industry best practices and coding standards for security, transparency and gas consumption.
  4. Thoroughly test the Solidity library to ensure it is robust, secure, and reliable.
  5. Provide documentation and user guides for the Solidity library.


  1. A fully functional Solidity library that extends the expressiveness of the voucher system by implementing various advanced behaviors.
  2. Comprehensive documentation of the Solidity library, including design specifications, code comments, and instructions for usage.
  3. A detailed test report, including unit tests, integration tests, and end-to-end tests, to ensure the Solidity library is robust, secure, and reliable.
  4. A user guide that provides step-by-step instructions on how to use the Solidity library.
  5. Entire codebase on a permissive open-source license;

Tech Requirements:

  1. The library should be written in Solidity, adhering to industry best practices and coding standards.
  2. The Solidity library should have comprehensive test coverage.
  3. The Solidity library should be coded following the best “gas optimization” practices to ensure minimized gas costs

Submission Requirements:

Proposals will be evaluated based on the following criteria:

  1. Team expertise: The development team should have relevant experience in software development, blockchain technology, and smart contract development.
  2. Project plan and timeline: The proposal should include a detailed project plan with realistic milestones, timelines, and deliverables.
  3. Budget: The proposal should provide a transparent cost estimate and budget breakdown, including justification for each cost item.
  4. Suitability: Demonstrated understanding of the Cartesi ecosystem and compatibility with existing infrastructure.
1 Like