{"id":13525778,"url":"https://github.com/rocklabs-io/omnic","last_synced_at":"2025-04-01T05:32:25.229Z","repository":{"id":63452999,"uuid":"520454747","full_name":"rocklabs-io/omnic","owner":"rocklabs-io","description":"Omnic protocol repo","archived":false,"fork":false,"pushed_at":"2023-05-26T09:01:39.000Z","size":5994,"stargazers_count":25,"open_issues_count":1,"forks_count":7,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-08-02T06:17:58.440Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","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/rocklabs-io.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}},"created_at":"2022-08-02T10:38:10.000Z","updated_at":"2024-04-13T12:00:32.000Z","dependencies_parsed_at":"2024-01-13T22:53:24.173Z","dependency_job_id":"371f76ae-08bd-4491-af30-e797196787a1","html_url":"https://github.com/rocklabs-io/omnic","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/rocklabs-io%2Fomnic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rocklabs-io%2Fomnic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rocklabs-io%2Fomnic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rocklabs-io%2Fomnic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rocklabs-io","download_url":"https://codeload.github.com/rocklabs-io/omnic/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222703721,"owners_count":17025838,"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-08-01T06:01:22.002Z","updated_at":"2024-11-02T10:31:07.449Z","avatar_url":"https://github.com/rocklabs-io.png","language":"Rust","funding_links":[],"categories":["Chain Fusion"],"sub_categories":["Ethereum"],"readme":"# Omnic Crosschain Messaging Protocol\n\nOmnic is a crosschain messaging protocol, powered by the Internet Computer's threshold ECDSA and outbound http call features, we can build programmability into the message passing process.\n\nCurrently support EVM compatible chains.\n\n## 1. Architecture\n\n![](./pics/arch.jpg)\n\nCore components:\n\n* Gateway contracts living on EVM chains:\n  *  receive crosschain message requests from application contracts on local chain, messages are organized into a merkle tree; \n  * receive crosschain messages from external chains and notify recipient contracts on the local chain.\n* Omnic proxy canister living on the IC:\n  * verify messages from offchain relayer(using the merkle roots fetched by gateway canisters), forward crosschain messages:\n    * if message destination is IC, proxy canister notify the recipient canister on IC\n    * if message destination is another chain, proxy canister create and sign a tx to the Omnic gateway contract on the destination chain, gateway contract will then notify the recipient contract\n* Omnic gateway canisters living on the IC:\n  * each chain has a dedicated gateway canister, controlled by the Omnic proxy canister\n  * responsible for periodically fetching message merkle roots from external chains, for later message verification use\n\n* Omnic offchain relayer:\n  * fetch crosschain messages from supported chains; fetch known merkle roots from Omnic proxy canister\n  * generate a merkle proof for each message then send the proof along with the message to the proxy canister\n  * Why offchain: Proof generation can be computational intense \u0026 fetch messages via http calls in canister is expensive. If cost is low, relayer can also be a canister onchain.\n* Applications\n  * Application canisters living on IC\n  * Application contracts living on external EVM chains\n\n\n\n## 2. TODOs\n\n* Fix todos in code\n* Add more chains\n* Add examples\n* ...\n\n\n\n## 3. Deployment\n\nOmnic test version is live on IC and 2 evm testnets:\n\nOmnic proxy canister on IC mainnet: y3lks-laaaa-aaaam-aat7q-cai\n\nOmnic gateway contract on EVM chains:\n\n* Goerli: 0xc7D718dC3C9248c91813A98dCbFEC6CF57619520\n* Mumbai: 0x2F711bEbA7a30242f4ba24544eA3869815c41413\n\n\n\n## 4. Code \n\n1. [core](./core): Omnic message passing protocol core implementation\n2. [examples](./examples): Example apps built on Omnic messaging protocol\n3. [omnic-bridge](https://github.com/rocklabs-io/omnic-bridge): A demo bridge app based on the Omnic messaging protocol\n4. [omnic-relayer](https://github.com/rocklabs-io/omnic-relayer): Omnic offchain relayer implementation\n\n\n\n**Note: This project is unaudited and still in very early experimental stage!**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocklabs-io%2Fomnic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frocklabs-io%2Fomnic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocklabs-io%2Fomnic/lists"}