{"id":13410073,"url":"https://github.com/ruleslabs/kass","last_synced_at":"2026-01-16T10:33:57.058Z","repository":{"id":149914636,"uuid":"598048153","full_name":"ruleslabs/kass","owner":"ruleslabs","description":"🪗 L1 \u003c-\u003e L2 Starknet ERC721 / ERC1155 Bridge","archived":false,"fork":false,"pushed_at":"2023-08-13T09:19:05.000Z","size":360,"stargazers_count":17,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-07-31T20:40:24.340Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Solidity","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/ruleslabs.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}},"created_at":"2023-02-06T09:35:10.000Z","updated_at":"2024-01-19T15:53:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"94bd9e2f-d40d-48db-8072-963d596d1521","html_url":"https://github.com/ruleslabs/kass","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruleslabs%2Fkass","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruleslabs%2Fkass/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruleslabs%2Fkass/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruleslabs%2Fkass/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruleslabs","download_url":"https://codeload.github.com/ruleslabs/kass/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243600652,"owners_count":20317311,"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":[],"created_at":"2024-07-30T20:01:04.799Z","updated_at":"2026-01-16T10:33:52.029Z","avatar_url":"https://github.com/ruleslabs.png","language":"Solidity","funding_links":[],"categories":["Projects"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003e🪗 Kass - Starknet NFT bridge\u003c/h1\u003e\n\u003c/div\u003e\n\nThis repo contains the reference implementation of the Kass protocol.\n\n---\n\nKass is a bridge between Ethereum and Starknet allowing the transfer of ERC721 and ERC1155 tokens. Kass is compatible with both L1 and L2 native tokens.\n\n## 🎡 Architecure overview\n\nKass protocol is composed of 2 smart contracts on Ethereum and Starknet, offering approximately the same interface.\n\n```mermaid\n%%{\n  init: {\n    'theme': 'base',\n    'themeVariables': {\n      'mainBkg': '#0D1114',\n      'primaryTextColor': '#f7f7f7',\n      'primaryBorderColor': '#7C03AE',\n      'secondaryColor': '#7C03AE',\n      'tertiaryColor': '#fff',\n      'noteTextColor': '#f7f7f7',\n      'noteBkgColor': '#191B1D',\n      'noteBorderColor': '#909193'\n    }\n  }\n}%%\nclassDiagram\n  class L1Kass[\"L1 Kass\"] {\n    createL1Wrapper()\n    requestL2Wrapper()\n\n    claimL1Ownership()\n    requestL2Ownership()\n\n    deposit()\n    requestDepositCancel()\n    cancelDeposit()\n\n    withdraw()\n  }\n\n  class L2Kass[\"L2 Kass\"] {\n    createL2Wrapper()\n    requestL1Wrapper()\n\n    claimL2Ownership()\n    requestL1Ownership()\n\n    deposit()\n\n    withdraw()\n  }\n```\n\n### Wrapper Creation\n\nIn order to successfuly bridge assets through chains, Kass needs to deploy an equivalent token contract (either ERC721 or ERC1155) on the target chain. This process is called the wrapper creation.\n\n#### L2 Wrapper creation\n\n```mermaid\n%%{\n  init: {\n    'theme': 'base',\n    'themeVariables': {\n      'mainBkg': '#0D1114',\n      'primaryTextColor': '#f7f7f7',\n      'primaryBorderColor': '#7C03AE',\n      'secondaryColor': '#7C03AE',\n      'tertiaryColor': '#fff',\n      'noteTextColor': '#f7f7f7',\n      'noteBkgColor': '#191B1D',\n      'noteBorderColor': '#909193',\n      'sequenceNumberColor': '#0D1114'\n    }\n  }\n}%%\nsequenceDiagram\n  box rgb(25, 27, 29) Ethereum / L1\n    participant L1 User\n    participant L1 Kass\n    participant Starknet Core\n  end\n\n  box rgb(25, 27, 29) Starknet / L2\n    participant L2 Kass\n  end\n\n  autonumber\n  L1 User -\u003e\u003e L1 Kass: requestL2Wrapper()\n  L1 Kass -\u003e\u003e Starknet Core: send message\n  Starknet Core -\u003e\u003e L2 Kass: createL2Wrapper()\n  Note over L2 Kass: Deploy wrapper\n```\n\n\u003e *Creation of a wrapper on Starknet, in order to deposit L1 native tokens to Starknet.*\n\n### L1 Wrapper creation\n\n```mermaid\n%%{\n  init: {\n    'theme': 'base',\n    'themeVariables': {\n      'mainBkg': '#0D1114',\n      'primaryTextColor': '#f7f7f7',\n      'primaryBorderColor': '#7C03AE',\n      'secondaryColor': '#7C03AE',\n      'tertiaryColor': '#fff',\n      'noteTextColor': '#f7f7f7',\n      'noteBkgColor': '#191B1D',\n      'noteBorderColor': '#909193',\n      'sequenceNumberColor': '#0D1114'\n    }\n  }\n}%%\nsequenceDiagram\n  box rgb(25, 27, 29) Ethereum / L1\n    participant L1 User\n    participant L1 Kass\n    participant Starknet Core\n  end\n\n  box rgb(25, 27, 29) Starknet / L2\n    participant L2 Kass\n    participant L2 User\n  end\n\n  autonumber\n  L2 User -\u003e\u003e L2 Kass: requestL1Wrapper()\n  L2 Kass -\u003e\u003e Starknet Core: send message\n  L1 User -\u003e\u003e L1 Kass: createL1Wrapper()\n  L1 Kass -\u003e\u003e Starknet Core: consume message\n  Note over L1 Kass: Deploy wrapper\n```\n\n\u003e *Creation of a wrapper on Ethereum, in order to deposit L2 native tokens to Starknet.*\n\n## ⚠️ Disclaimer\n\nThis repo contains highly experimental code. Use at your own risk.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruleslabs%2Fkass","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fruleslabs%2Fkass","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruleslabs%2Fkass/lists"}