{"id":22861688,"url":"https://github.com/tetcoin/smoltet","last_synced_at":"2025-03-31T08:43:34.886Z","repository":{"id":38328298,"uuid":"334333270","full_name":"tetcoin/smoltet","owner":"tetcoin","description":"Lightweight Tetcore and Tetcoin client.","archived":false,"fork":false,"pushed_at":"2023-01-16T23:01:53.000Z","size":15901,"stargazers_count":0,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T03:40:51.002Z","etag":null,"topics":["client","tetcoin"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tetcoin.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}},"created_at":"2021-01-30T05:11:17.000Z","updated_at":"2021-02-20T04:34:42.000Z","dependencies_parsed_at":"2023-02-04T22:32:20.239Z","dependency_job_id":null,"html_url":"https://github.com/tetcoin/smoltet","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/tetcoin%2Fsmoltet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tetcoin%2Fsmoltet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tetcoin%2Fsmoltet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tetcoin%2Fsmoltet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tetcoin","download_url":"https://codeload.github.com/tetcoin/smoltet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246443494,"owners_count":20778247,"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":["client","tetcoin"],"created_at":"2024-12-13T10:10:06.190Z","updated_at":"2025-03-31T08:43:34.868Z","avatar_url":"https://github.com/tetcoin.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"Lightweight Tetcore and Tetcoin client.\n\n# Introduction\n\n`smoltet` is a prototype of an alternative client of [Tetcore](https://github.com/tetcoin/tetcore)-based chains, including [Polkadot](https://github.com/paritytech/polkadot/).\n\nIn order to simplify the code, two main design decisions have been made compared to Substrate:\n\n- No native runtime. The execution time of the `wasmtime` library is satisfying enough that having a native runtime isn't critical anymore.\n\n- No pluggable architecture. `smoldot` supports a certain hardcoded list of consensus algorithms, at the moment Babe, Aura, and GrandPa. Support for other algorithms can only be added by modifying the code of smoldot, and it is not possible to plug a custom algorithm from outside.\n\n## How to test\n\nThere exists two clients: the full client and the wasm light node.\n\n### Full client\n\nThe full client is a binary similar to the official Polkadot client, and can be tested with `cargo run`.\n\n\u003e Note: The `Cargo.toml` contains a section `[profile.dev] opt-level = 2`, and as such `cargo run` alone should give performances close to the ones in release mode.\n\n### Wasm light node\n\nThe wasm light node can be tested with `cd bin/wasm-node/javascript` and `npm start`. This will start a WebSocket server capable of answering JSON-RPC requests. You can then navigate to \u003chttps://polkadot.js.org/apps/?rpc=ws%3A%2F%2F127.0.0.1%3A9944\u003e in order to interact with the Westend chain.\n\n\u003e Note: The `npm start` command starts a small JavaScript shim, on top of the wasm light node, that hardcodes the chain to Westend and starts the WebSocket server. The wasm light node itself can connect to a variety of different chains (not only Westend) and doesn't start any server.\n\n# Objectives\n\nThere exists multiple objectives behind this repository:\n\n- Write a client implementation that is as comprehensive as possible, to make it easier to understand the various components of a Substrate/Polkadot client. A large emphasis is put on documentation, and the documentation of the `main` branch is automatically deployed [here](https://paritytech.github.io/smoldot/smoldot/index.html).\n- Implement a client that is lighter than Substrate, in terms of memory consumption, number of threads, and code size, in order to compile it to WebAssembly and distribute it in webpages.\n- Experiment with a new code architecture, to maybe upstream some components to Substrate and Polkadot.\n\n# Status\n\nAs a quick overview, at the time of writing of this README, the following is supported:\n\n- Verifying Babe and Aura blocks.\n- \"Executing\" blocks, by calling `Core_execute_block`.\n- Verifying GrandPa justifications.\n- \"Optimistic syncing\", in other words syncing by assuming that there isn't any fork.\n- Verifying storage trie proofs.\n- The WebSocket JSON-RPC server is in progress, but its design is still changing.\n- An informant.\n- A telemetry client (mostly copy-pasted from Substrate and substrate-telemetry).\n- An unfinished new networking stack.\n\nThe following isn't done yet:\n\n- Authoring blocks isn't supported.\n- There is no transaction pool.\n- Anything related to GrandPa networking messages. Finality can only be determined by asking a full node for a justification.\n- No actual database for the full client.\n- The changes trie isn't implemented (it is not enabled on Westend, Kusama and Polkadot at the moment).\n- A Prometheus server. While not difficult to implement, it seems a bit overkill to have one at the moment.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftetcoin%2Fsmoltet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftetcoin%2Fsmoltet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftetcoin%2Fsmoltet/lists"}