{"id":25455418,"url":"https://github.com/mugen-builders/learn-rollmelette","last_synced_at":"2025-07-18T11:38:16.228Z","repository":{"id":250528597,"uuid":"834679486","full_name":"Mugen-Builders/learn-rollmelette","owner":"Mugen-Builders","description":"An example in Golang using Cartesi CLI, Nonodo, and Rollmelette as framework","archived":false,"fork":false,"pushed_at":"2024-10-25T01:24:36.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-16T16:49:55.369Z","etag":null,"topics":["cartesi","golang","rollmelette"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mugen-Builders.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-07-28T03:01:53.000Z","updated_at":"2024-10-25T04:18:13.000Z","dependencies_parsed_at":"2025-05-16T16:34:06.826Z","dependency_job_id":"2c60855d-1c08-4c2b-82ca-103c1e22d33e","html_url":"https://github.com/Mugen-Builders/learn-rollmelette","commit_stats":null,"previous_names":["mugen-builders/learn-rollmelette"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/Mugen-Builders/learn-rollmelette","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mugen-Builders%2Flearn-rollmelette","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mugen-Builders%2Flearn-rollmelette/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mugen-Builders%2Flearn-rollmelette/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mugen-Builders%2Flearn-rollmelette/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mugen-Builders","download_url":"https://codeload.github.com/Mugen-Builders/learn-rollmelette/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mugen-Builders%2Flearn-rollmelette/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265753012,"owners_count":23823072,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cartesi","golang","rollmelette"],"created_at":"2025-02-18T00:57:33.610Z","updated_at":"2025-07-18T11:38:16.207Z","avatar_url":"https://github.com/Mugen-Builders.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/Mugen-Builders/.github/assets/153661799/7ed08d4c-89f4-4bde-a635-0b332affbd5d\" width=\"150\" height=\"150\"\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n    \u003ci\u003eAn example in Golang using Cartesi CLI, Nonodo, and Rollmelette\u003c/i\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n\u003cb\u003eThis example aims to demonstrate the lifecycle of a Cartesi DApp through unit tests using Rollmelette as a framework. In addition it serves as a template for integration with Avail.\u003c/b\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n    \n  \u003ca href=\"https://docs.cartesi.io/cartesi-rollups/\"\u003e![Static Badge](https://img.shields.io/badge/cartesi-1.3.0-5bd1d7)\u003c/a\u003e\n  \u003ca href=\"https://docs.cartesi.io/cartesi-rollups/1.3/quickstart/\"\u003e![Static Badge](https://img.shields.io/badge/cartesi--cli-0.15.0-5bd1d7)\u003c/a\u003e\n  \u003ca href=\"https://pkg.go.dev/github.com/calindra/nonodo\"\u003e![Static Badge](https://img.shields.io/badge/nonodo-1.1.1-blue)\u003c/a\u003e\n  \u003ca href=\"https://pkg.go.dev/github.com/gligneul/rollmelette\"\u003e![Static Badge](https://img.shields.io/badge/rollmelette-0.1.1-yellow)\u003c/a\u003e\n  \u003ca href=\"https://book.getfoundry.sh/getting-started/installation\"\u003e![Static Badge](https://img.shields.io/badge/foundry-0.2.0-red)\u003c/a\u003e\n\u003c/div\u003e\n\n## User Stories:\n\nHere is a list of user stories that the application covers:\n\n| #   | User Story Description                                                                                     |\n| --- | ---------------------------------------------------------------------------------------------------------- |\n| 1   | As a user, I want to send Ether tokens to my wallet on Layer 2.                                           |\n| 2   | As a user, I want to send ERC20 tokens to my wallet on Layer 2.                                           |\n| 3   | As a user, I want to transfer Ether tokens between wallets on Layer 2.                                    |\n| 4   | As a user, I want to transfer ERC20 tokens between wallets on Layer 2.                                    |\n| 5   | As a user, I want to withdraw my deposit in ERC20.                                                        |\n| 6   | As a user, I want to withdraw my deposit in Ether.                                                        |\n| 7   | As a user, I want to request the balance of Ether in my wallet on Layer 2.                                |\n| 8   | As a user, I want to request the balance of ERC20 tokens in my wallet on Layer 2.                         |\n| 9   | As a user, I want to verify if the Ether deposit was received correctly on Layer 2.                       |\n| 10  | As a user, I want to verify if the ERC20 token deposit was received correctly on Layer 2.                 |\n| 11  | As a user, I want to receive a confirmation of Ether transfer between wallets on Layer 2.                 |\n| 12  | As a user, I want to receive a confirmation of ERC20 token transfer between wallets on Layer 2.           |\n\n## Setup:\n\n#### The system setup is divided into three parts:\n1º - Install all dependencies:\n   + Cartesi CLI:\n   ```bash\n   $ npm i -g @cartesi/cli\n   ```\n   + Foundry:\n   Follow the instruction [here](https://book.getfoundry.sh/getting-started/installation)\n\n2º - Clone this repo using the code below:\n```bash\ngit clone https://github.com/Mugen-Builders/learn-rollmelette.git\n```\n\n## Running the tests:\nThe command below will run all unit tests present in the repository.\n\n```bash\nmake test\n```\n\n\u003e [!NOTE]\n\u003e All user stories covered here can also be fulfilled using the CLI. For more information, please refer to the [documentation](https://docs.cartesi.io/cartesi-rollups/1.3/).\n\n## Avail Integration + Cartesi bare metal:\nThis section will help you set up a Cartesi dApp with Avail on your local machine. You'll be able to send transactions either directly through Cartesi Rollups Smart Contracts on L1 or via Avail DA using EIP-712 signed messages. You'll also learn how to check the dApp's state and outputs using Cartesi Rollups Framework APIs.\n\n### Requirements:\nAs a reference for setting up your machine, [follow these steps](https://github.com/Mugen-Builders/cartesi-avail-tutorial?tab=readme-ov-file#prerequisites)\n\n### Running your node locally ( A mocked implementation ):\n\n- Start brunodo using the command with the flag with the flag that enables integration with Avail:\n\n```bash\n$ brunodo\n```\n\n- Build your machine:\n```bash\n$ cartesi build\n```\n\n- Run the Cartesi Machine Locally on bare metal using the command:\n\n```bash\n$ cartesi-machine --network \\\n --flash-drive=label:root,filename:.cartesi/image.ext2 \\\n --env=ROLLUP_HTTP_SERVER_URL=http://10.0.2.2:5004 -- /var/opt/cartesi-app/app\n```\n\n### Running your node locally with a testnet:\n\n- Start brunodo using the command with the flag with the flag that enables integration with Avail:\n\n```bash\n$ brunodo --avail-enabled -d --contracts-input-box-block 6850934 --rpc-url https://sepolia.drpc.org\n```\n\n- Build your machine:\n```bash\n$ cartesi build\n```\n\n- Run the Cartesi Machine Locally on bare metal using the command:\n\n```bash\n$ cartesi-machine --network \\\n --flash-drive=label:root,filename:.cartesi/image.ext2 \\\n --env=ROLLUP_HTTP_SERVER_URL=http://10.0.2.2:5004 -- /var/opt/cartesi-app/app\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmugen-builders%2Flearn-rollmelette","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmugen-builders%2Flearn-rollmelette","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmugen-builders%2Flearn-rollmelette/lists"}