{"id":13767387,"url":"https://github.com/dharma-eng/Tiramisu","last_synced_at":"2025-05-10T22:31:49.952Z","repository":{"id":40285459,"uuid":"267095405","full_name":"dharma-eng/Tiramisu","owner":"dharma-eng","description":"Tiramisu is a \"Layer Two\" system for scalable token transfers that prioritizes simplicity.","archived":false,"fork":false,"pushed_at":"2023-02-03T07:49:02.000Z","size":1780,"stargazers_count":74,"open_issues_count":20,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-17T02:34:38.717Z","etag":null,"topics":["blockchain","erc20","ethereum","layer2","rollup","scalability","solidity","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dharma-eng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-05-26T16:30:59.000Z","updated_at":"2024-04-20T22:49:53.000Z","dependencies_parsed_at":"2023-01-28T01:46:12.414Z","dependency_job_id":"1761afd5-d5fa-4e82-a9f6-7082786ddc62","html_url":"https://github.com/dharma-eng/Tiramisu","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dharma-eng%2FTiramisu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dharma-eng%2FTiramisu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dharma-eng%2FTiramisu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dharma-eng%2FTiramisu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dharma-eng","download_url":"https://codeload.github.com/dharma-eng/Tiramisu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253492529,"owners_count":21916959,"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":["blockchain","erc20","ethereum","layer2","rollup","scalability","solidity","typescript"],"created_at":"2024-08-03T16:01:08.174Z","updated_at":"2025-05-10T22:31:47.465Z","avatar_url":"https://github.com/dharma-eng.png","language":"TypeScript","funding_links":[],"categories":["Scaling","Data Structures"],"sub_categories":["Derivatives of DAI","Projects"],"readme":"![Tiramisu](img/tiramisu-banner.png)\n\n# Tiramisu\n\u003e Tiramisu is a \"Layer Two\" system for scalable token transfers that prioritizes simplicity.\n\n[![License](https://img.shields.io/github/license/dharma-eng/Tiramisu.svg)](https://github.com/dharma-eng/Tiramisu/blob/master/LICENSE.md) [![CI](https://github.com/dharma-eng/Tiramisu/workflows/Node.js%20CI/badge.svg)](https://github.com/dharma-eng/Tiramisu/actions?query=workflow%3A%22Tiramisu%22) [![Coverage](https://img.shields.io/coveralls/github/dharma-eng/Tiramisu)](https://coveralls.io/github/dharma-eng/Tiramisu) [![Community](https://img.shields.io/badge/community-Discord-blueviolet)](https://discordapp.com/invite/qvKTDgR)\n\n## Summary\n**Tiramisu** is a framework for performing ERC20 token transfers at a fraction of the cost of a standard transfer.\n\nIt accomplishes this by aggregating transactions and committing them into blocks. However, it does not perform any on-chain computation for the transactions themselves. Instead, it simply includes a merkle root of the new account state along with the transaction data for each block. If some part of a block is invalid, anyone can submit a proof to that effect within a challenge period. Should they do so, they earn a reward and trigger a roll-back of the state.\n\nTiramisu is a member of the group of **\"fraud proof rollup\"** _(or \"optimistic rollup\")_ Layer Two technologies. That being said, Tiramisu **prioritizes simplicity** over raw scalability or generalizability — it designates a single block producer, and the only permitted operations are deposits, transfers, withdrawals, and authorization of additional signing keys.\n\nThese operations are broken down into two high-level categories:\n\n- **Hard transactions**, including deposits and direct withdrawals or signing key additions, can only be initiated from a corresponding account on mainnet. These are placed in a queue as soon as the Tiramisu contract is called, and must be processed by the block producer in the order they are received.\n- **Soft transactions**, including transfers and standard withdrawals or signing key modifications, require a signature from a designated signer, and the block producer can choose whether or not to include a given soft transaction in a block.\n\nSee the [specification](docs/Specification.md) for a more detailed overview of the design decisions behind Tiramisu.\n\n⚠️ **Warning**: these contracts and libraries **have not been audited** and are **not yet production-ready!** ⚠️\n\n## Table of Contents\n- [Install](#install)\n- [Usage](#usage)\n- [Additional Information](#additional-information)\n\n## Install\nTo install locally, you'll need [Node.js](https://nodejs.org/) 10 through 12 and [Yarn](https://yarnpkg.com/) _(or [npm](https://www.npmjs.com/))_. Then, perform the following:\n\n```sh\n$ git clone https://github.com/dharma-eng/Tiramisu.git\n$ cd Tiramisu\n$ yarn install\n```\n\nOnce you've successfully pulled down the code and installed all dependencies, you'll need to compile both the application code (using TypeScript) as well as the contracts (using Truffle):\n\n```sh\n$ yarn build:ts   # compiles app/ and places output in dist/\n$ yarn build:sol  # compiles contracts/ and places output in build/\n```\n\n## Usage\nTo run all the typescript tests in `test/tests/`:\n\n```sh\n$ yarn test:app\n```\n\nYou can also run tests directly if you prefer for the blockchain class, the state wrapper class, or the state machine class that executes transactions:\n\n```sh\n$ yarn test:blockchain\n$ yarn test:state\n$ yarn test:transactions\n```\n\nTo generate application test coverage using nyc:\n\n```sh\n$ yarn test:coverage:app\n```\n\nTo generate contract test coverage using Truffle with the solidity-coverage plugin:\n\n```sh\n$ yarn test:coverage:sol\n```\n\nTo run contract linters:\n\n```sh\n$ yarn lint\n```\n\n## Additional Information\nThis repository is maintained by [@0age](https://github.com/0age), [@d1ll0n](https://github.com/d1ll0n), and [@anna-carrol](https://github.com/anna-carroll).\n\nHave any questions or feedback? Join the conversation in the [Dharma_HQ Discord server](https://discordapp.com/invite/qvKTDgR).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdharma-eng%2FTiramisu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdharma-eng%2FTiramisu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdharma-eng%2FTiramisu/lists"}