base on Monorepo for Omni node, contracts and other related tools <h1 align="center">Omni Monorepo</h1> <p align="center"><a href="https://docs.omni.network/"><img src="https://img.shields.io/badge/Docs-docs.omni.network-176CFF.svg"></a> <a href="https://github.com/omni-network/omni/releases/"><img src="https://img.shields.io/github/release/omni-network/omni.svg?color=176CFF"></a> <a href="https://goreportcard.com/report/github.com/omni-network/omni"><img src="https://goreportcard.com/badge/github.com/omni-network/omni"></a> <a href="https://github.com/omni-network/omni/actions?query=workflow%3Aci-main"><img src="https://img.shields.io/github/actions/workflow/status/omni-network/omni/ci-main.yaml?label=Tests&logoColor=white" alt="Tests"></a> <a href="https://x.com/OmniFDN"><img src="https://img.shields.io/twitter/follow/OmniFDN.svg?label=Follow"></a></p> <div align="center"><img src="https://docs.omni.network/img/omni-banner.png" alt="Logo"></div> ## About Omni This monorepo contains all source code for the Omni protocol. Omni's goal is to make it easy for smart contract developers to source liquidity and users from anywhere. The protocol consists of various components including an EVM and cross-chain messaging. The [Omni Docs](https://docs.omni.network/) are the best place to get started learning about Omni. Our [DeepWiki page](https://deepwiki.com/omni-network/omni) is a great place to learn about the structure of this monorepo and Omni's architecture. ## Quickstart Ensure [go](https://go.dev/doc/install), [goreleaser](https://goreleaser.com/install/) and [docker](https://docs.docker.com/engine/install/) are installed. ```bash # Build local docker containers make build-docker # Run the end-to-end tests on a local devnet MANIFEST=devnet1 make e2e-run # Start a local devnet make devnet-deploy # Stop the local devnet make devnet-clean ``` _If any of above commands fail, see the [troubleshooting section](./e2e/README.md#troubleshooting)._ ## Directory Structure <pre> ├── <a href="./cli/">cli</a>: Omni command line interface. ├── <a href="./contracts/">contracts</a>: Solidity contracts and related software. ├── <a href="./docs/">docs</a>: Resources and website for https://docs.omni.network. ├── <a href="./e2e/">e2e</a>: Deployments, testing, and live network management. ├── <a href="./halo/">halo</a>: Omni consensus client. ├── <a href="./lib/">lib</a>: Core libraries used across the Omni stack. ├── <a href="./monitor/">monitor</a>: Monitoring service for the network. ├── <a href="./octane/">octane</a>: Cosmos SDK module for the EVM. ├── <a href="./relayer/">relayer</a>: Relayer service for cross-chain messages and transactions. ├── <a href="./scripts/">scripts</a>: Utility scripts for development and operational tasks. ├── <a href="./sdk/">sdk</a>: SDK for building applications with Omni. ├── <a href="./solver/">solver</a>: Reference implementation for SolverNet. </pre> ## Contributing We are open to contributions, but don't currently have a formal process for contributors. If you are interested, browse through [open issues](https://github.com/omni-network/omni/issues) or reach out to chat with the team. Follow these steps to set up a functional development environment: 1. Install Docker Desktop. 2. Setup commit signing: 2a. [Create a PGP key pair](https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key) 2b. [Add the public key to Github](https://docs.github.com/en/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account). 2c. [Enabled commit signing](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) 2d. [Troubleshoot any issues](https://gist.github.com/paolocarrasco/18ca8fe6e63490ae1be23e84a7039374) 3. Run `make setup` to initialize your dev environment. See `Makefile` for details. ## Security Omni has a bug bounty program via Immunefi. You can find more information [here](https://immunefi.com/bug-bounty/omni-network/information/). ", Assign "at most 3 tags" to the expected json: {"id":"9379","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"