{"id":19358538,"url":"https://github.com/paritytech/trappist","last_synced_at":"2025-04-23T11:32:02.799Z","repository":{"id":37057354,"uuid":"384453175","full_name":"paritytech/trappist","owner":"paritytech","description":null,"archived":false,"fork":false,"pushed_at":"2023-12-19T11:52:58.000Z","size":3656,"stargazers_count":74,"open_issues_count":28,"forks_count":13,"subscribers_count":5,"default_branch":"main","last_synced_at":"2023-12-19T15:54:43.053Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paritytech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2021-07-09T13:57:05.000Z","updated_at":"2024-02-15T13:40:22.679Z","dependencies_parsed_at":"2023-09-27T23:13:23.286Z","dependency_job_id":"60aa25e4-069b-4d9c-938c-54901c76e370","html_url":"https://github.com/paritytech/trappist","commit_stats":null,"previous_names":[],"tags_count":19,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Ftrappist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Ftrappist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Ftrappist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paritytech%2Ftrappist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paritytech","download_url":"https://codeload.github.com/paritytech/trappist/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223922083,"owners_count":17225636,"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-11-10T07:12:12.718Z","updated_at":"2024-11-10T07:12:13.364Z","avatar_url":"https://github.com/paritytech.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Trappist\n\n[![Check Set-Up \u0026 Build](https://github.com/paritytech/trappist/actions/workflows/check.yml/badge.svg)](https://github.com/paritytech/trappist/actions/workflows/check.yml)\n[![XCM Simulator](https://github.com/paritytech/trappist/actions/workflows/simulate.yml/badge.svg)](https://github.com/paritytech/trappist/actions/workflows/simulate.yml)\n\n**Trappist** is a web3 developer playground for experimenting with [cross-chain applications and services](https://polkadot.network/cross-chain-communication/) built on the technologies spearheaded by the [Polkadot Network](https://polkadot.network/), namely:\n* [Substrate](https://substrate.io/), a Blockchain framework that enables developers to quickly and easily build future proof blockchains optimized for any use case.\n* [Cumulus](https://github.com/paritytech/polkadot-sdk/tree/master/cumulus), a set of tools for writing Substrate-based Polkadot parachains.\n* [XCM](https://polkadot.network/cross-chain-communication/), a common language for secure messaging across Polkadot  parachains, and with external networks via bridges.\n* [Rococo](https://polkadot.network/blog/statemint-becomes-first-common-good-parachain-on-polkadot/), Polkadot’s Parachain Testnet.\n* [Statemint](https://polkadot.network/blog/statemint-becomes-first-common-good-parachain-on-polkadot/), Polkadot's common good parachain which provides functionality for deploying and transferring assets — both Fungible and Non-Fungible Tokens (NFTs).\n* [Contracts Pallet](https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/contracts), enable WebAssembly smart-contracts executions.\n* [ink!](https://paritytech.github.io/ink/), an eDSL to write smart contracts in Rust for blockchains built on the Substrate framework.\n\nAltogether those technologies enable an array of exciting cross-chain applications \u0026 services:\n\n![XCM use cases](/docs/media/xcm-use-cases.png)\n\n\nThis repository contains the source code of **Trappist**, a feature-rich parachain for exploring and learning about cross-chain applications and services, along with a script to run a complete local multi-chain environment that includes:\n* Rococo relay-chain\n* Statemine common good asset parachain\n* Trappist feature-rich parachain\n* An additional parachain capable to execute ink! smart contracts.\n\nAll these pre-configured to allow cross-chain communication via XCM messages on HRMP channels.\n\n![Trappist topology](/docs/media/trappist-topology.png)\n\n### Why \"Trappist\" ?\n\nThe term **Trappist** refers to a [style of beers](https://en.wikipedia.org/wiki/Trappist_beer) brewed in Abbeys by Trappist monks, and is generally associated with authenticity, craftsmanship, integrity and tradition. Aside from any religious consideration, we like to think we put as much care in crafting Blockchain software as monks brewing high-quality beer 🍺.\n\nAs Trappist breweries are not intended to be profit-making ventures, this project is non-commercial, open-source software focused solely on experimentation and knowledge sharing with people interested in learning about decentralized technologies.\n\n## Getting Started\n\nFollow the steps below to get started.\n\n### Build Trappist collator\n\n#### Using Nix\n\nInstall [nix](https://nixos.org/) and optionally [direnv](https://github.com/direnv/direnv) and\n[lorri](https://github.com/target/lorri) for a fully plug and play experience for setting up the\ndevelopment environment. To get all the correct dependencies activate direnv `direnv allow` and\nlorri `lorri shell`.\n\n#### Rust Setup\n\nFirst, complete the [basic Rust setup instructions](./docs/rust-setup.md).\n\n\n#### Build\n\nUse the following command to build the Trappist collator binary:\n\n```bash\ncargo build --release\n```\n\n### XCM Playground via Zombienet\n\nCreate a `bin` directory into the root of this repository and place the following binaries inside of it:\n- `polkadot` (which you can download from [the releases](https://github.com/paritytech/polkadot-sdk/releases))\n- `polkadot-parachain` (which you will build from [cumulus](https://github.com/paritytech/polkadot-sdk))\n\nDownload the [latest release of zombienet](https://github.com/paritytech/zombienet/releases/) into the root of this repository and make it executable:\n```bash\n$ chmod +x zombienet-linux # OR\n$ chmod +x zombienet-macos\n```\n\nThen, start the **Trappist** playground with:\n```bash\n./zombienet-linux -p native spawn ./zombienet/trappist_rococo.toml\n```\nYou can also run:\n```bash\n# To start Trappist and Stout together\n./zombienet-linux -p native spawn ./zombienet/full_network.toml\n# To only run stout\n./zombienet-linux -p native spawn ./zombienet/stout_rococo.toml\n```\n### Integration Tests\n[parachains-integration-tests](https://github.com/paritytech/parachains-integration-tests) is a tool meant for XCM message execution in a locally spawned network. Tests are written as YAML files and converted into [Mocha](https://mochajs.org/) tests with [Chai](https://www.chaijs.com/) assertions.\n\nThe [integration-tests](./integration-tests) directory has tests on Trappist use cases and instructions on how to run them.\n\n### XCM Simulator\nThe [XCM simulator](./xcm-simulator) can be used to further explore XCM message execution across the various runtimes used by Trappist.\nEach Trappist use case is written as a Rust unit test, allowing interactive debugging/exploration of message flows and instruction execution.\nEach `execute_with` closure scope within a test can be considered as a block on the corresponding chain, with messages being dispatched to the destination chains via a mock message queue as the closure goes out of scope.\nAll XCM-specific traces from the interactions are also collected in a single place for easier inspection.\n\nYou can run all tests with:\n```\ncd xcm-simulator \u0026\u0026 cargo test --release tests::; cd ..\n```\n\n## License\nTrappist is licensed under [Apache 2](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparitytech%2Ftrappist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparitytech%2Ftrappist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparitytech%2Ftrappist/lists"}