{"id":13560866,"url":"https://github.com/LNP-BP/client_side_validation","last_synced_at":"2025-04-03T16:31:17.777Z","repository":{"id":37963644,"uuid":"364612676","full_name":"LNP-BP/client_side_validation","owner":"LNP-BP","description":"Standard implementation of client-side-validation APIs","archived":false,"fork":false,"pushed_at":"2024-05-23T08:43:44.000Z","size":1925,"stargazers_count":20,"open_issues_count":10,"forks_count":19,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-05-23T09:29:08.831Z","etag":null,"topics":["bitcoin","client-side-validation","distributed-computing","distributed-systems","lnp-bp","single-use-seals"],"latest_commit_sha":null,"homepage":"https://docs.rs/client_side_validation","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/LNP-BP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["lnp-bp","dr-orlovsky"]}},"created_at":"2021-05-05T14:54:27.000Z","updated_at":"2024-05-23T09:29:11.045Z","dependencies_parsed_at":"2023-02-19T04:01:31.525Z","dependency_job_id":"7f39b1e6-88b8-4152-acb6-9990d7a4fa56","html_url":"https://github.com/LNP-BP/client_side_validation","commit_stats":{"total_commits":889,"total_committers":15,"mean_commits":"59.266666666666666","dds":0.3194600674915635,"last_synced_commit":"8d420cc3209776f78c2c4ec9f9fca7c574c0f9b6"},"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LNP-BP%2Fclient_side_validation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LNP-BP%2Fclient_side_validation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LNP-BP%2Fclient_side_validation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LNP-BP%2Fclient_side_validation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LNP-BP","download_url":"https://codeload.github.com/LNP-BP/client_side_validation/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247036989,"owners_count":20873071,"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":["bitcoin","client-side-validation","distributed-computing","distributed-systems","lnp-bp","single-use-seals"],"created_at":"2024-08-01T13:00:50.252Z","updated_at":"2025-04-03T16:31:17.771Z","avatar_url":"https://github.com/LNP-BP.png","language":"Rust","funding_links":["https://github.com/sponsors/lnp-bp","https://github.com/sponsors/dr-orlovsky"],"categories":["Libraries and CLIs"],"sub_categories":["Main RGB Standards"],"readme":"# Foundation Libraries for Client-side-validation\n\n![Build](https://github.com/LNP-BP/client_side_validation/workflows/Build/badge.svg)\n![Tests](https://github.com/LNP-BP/client_side_validation/workflows/Tests/badge.svg)\n![Lints](https://github.com/LNP-BP/client_side_validation/workflows/Lints/badge.svg)\n[![codecov](https://codecov.io/gh/LNP-BP/client_side_validation/branch/master/graph/badge.svg)](https://codecov.io/gh/LNP-BP/client_side_validation)\n\n[![crates.io](https://img.shields.io/crates/v/client_side_validation)](https://crates.io/crates/client_side_validation)\n[![Docs](https://docs.rs/client_side_validation/badge.svg)](https://docs.rs/client_side_validation)\n[![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/)\n[![Apache-2 licensed](https://img.shields.io/crates/l/client_side_validation)](./LICENSE)\n\nThis is an implementation defining standard of client-side-validation\nrepresenting a set of its Foundation libraries. The standards covered by the\nlibraries include [LNPBP-4], [LNPBP-7], [LNPBP-8], [LNPBP-9], and [LNPBP-81]\n(see [Components](#components) section below for more details).\n\nClient-side-validation is a paradigm for distributed computing, based on top of\nproof-of-publication/commitment medium layer, which may be a bitcoin blockchain\nor other type of distributed consensus system.\n\nThe development of the library is supported by [LNP/BP Standards Association][lnpbp-web]\nand is performed on its [GitHub page][lnpbp-github].\n\nThe original idea of client-side-validation was proposed by Peter Todd with its\npossible applications designed by Giacomo Zucco. It was shaped into the protocol\ndesign by Dr Maxim Orlovsky with a big input from the community.\n\nMinimum supported rust version for the library (MSRV) is 1.66 and 2021 rust\nedition.\n\n## Documentation\n\nDetailed developer \u0026 API documentation for all libraries can be accessed at:\n\n- \u003chttps://docs.rs/client_side_validation/\u003e\n- \u003chttps://docs.rs/single_use_seals/\u003e\n- \u003chttps://docs.rs/commit_verify/\u003e\n\nTo learn about the technologies enabled by the library please check\n[slides from our tech presentations][presentations] and\n[LNP/BP tech talks videos][lnpbp-youtube].\n\n## Components\n\nThis library consists of the following main three components, which define\nindependent parts constituting together client-side-validation API and its core\nfunctionality. These are:\n\n- [Commit-verify](commit_verify/README.md) client-side-validation-specific APIs:\n    * consensus commitments (part of [LNPBP-8] standard)\n    * multi-commitments ([LNPBP-4] standard)\n    * merklization for client-side-validation ([LNPBP-81] standard)\n- [Single-use-seals](single_use_seals/README.md) API ([LNPBP-8] standard)\n- Client-side-validation API from the library root, linking those components\n  together according to [LNPBP-9] standard.\n\n## Usage\n\nThe repository contains rust libraries for client-side validation.\n\n### Use library in other projects\n\nTo use libraries, you just need latest version of libraries, published to\n[crates.io](https://crates.io) into `[dependencies]` section of your project\n`Cargo.toml`. Here is the full list of available libraries from this repository:\n\n```toml\nclient_side_validation = \"1\" # \"Umbrella\" library including all of the tree libraries below\ncommit_verify = \"1\" # Consensus and multi-message commitments\nsingle_use_seals = \"1\" # Generic (non-bitcoin-specific) API\n```\n\n\"Umbrella\" `client_side_validation` library is configured with default set of\nfeatures enabling all of its functionality (and including all of other libraries\nfrom this repository, listed above). If you need to restrict this set, either\nuse specific libraries - or configure main library with a set of features in\nthe following way:\n\n```toml\n[dependencies.client_side_validation]\nversion = \"1\"\ndefault-features = false\nfeatures = [] # Your set of features goes here\n```\n\nThe library has four feature flags, all of which are not used by default:\n\n- `rand`, providing support for generating random 32-byte sequences of `Slice32`\n  type, used in many LNP/BP applications (for instance as hash-lock preimages or\n  during LNPBP-4 multi-commitments);\n- `serde`, providing support for data structure serialization with serde across\n  all library.\n\nFor specific features which may be enabled for the libraries, please check\nlibrary-specific guidelines, located in `README.md` files in each of library\nsubdirectories.\n\n### Libraries based on client-side-validation\n\nMost of the developers will be probably interested in a more high-level\nlibraries based on client-side-validation, applying it to a specific commitment\nmediums (bitcoin transaction graph from blockchain or state channels, or more\nexotic systems like confidential bitcoin transactions used by elements \u0026 liquid,\nor mimblewimble-based systems). Here is (potentially incomplete) list of such\nlibraries:\n\n- Bitcoin: [BP Core Lib](https://github.com/LNP-BP/bp-core), which contains\n  bitcoin UTXO single-use-seal implementations for pay-to-contract and\n  sign-to-contract types of seals, as well as a library for deterministic\n  bitcoin commitments. This library is maintained by LNP/BP Association.\n- [Pandora sealchain](https://github.com/pandora-network/sealchain-rs), an\n  experimental blockchain of [Pandora Network](https://pandora.network),\n  playing with client-side-validation using modified bitcoin consensus rules,\n  extended with eltoo- and covenants-related functionality and with removed\n  native blockchain-level coin.\n\n## Contributing\n\nContribution guidelines can be found in [CONTRIBUTING](CONTRIBUTING.md)\n\n## Licensing\n\nThe libraries are distributed on the terms of Apache 2.0 opensource license.\nSee [LICENCE](LICENSE) file for the license details.\n\n\n[lnpbp-web]: https://lnp-bp.org\n\n[lnpbp-github]: https://github.com/LNP-BP\n\n[lnpbp-youtube]: https://www.youtube.com/@LNPBP\n\n[presentations]: https://github.com/LNP-BP/FAQ/blob/master/Presentation%20slides/\n\n[LNPBP-4]: https://github.com/LNP-BP/LNPBPs/blob/master/lnpbp-0004.md\n\n[LNPBP-7]: https://github.com/LNP-BP/LNPBPs/blob/master/lnpbp-0007.md\n\n[LNPBP-8]: https://github.com/LNP-BP/LNPBPs/blob/master/lnpbp-0008.md\n\n[LNPBP-9]: https://github.com/LNP-BP/LNPBPs/blob/master/lnpbp-0009.md\n\n[LNPBP-42]: https://github.com/LNP-BP/LNPBPs/blob/master/lnpbp-0042.md\n\n[LNPBP-81]: https://github.com/LNP-BP/LNPBPs/blob/master/lnpbp-0081.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLNP-BP%2Fclient_side_validation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLNP-BP%2Fclient_side_validation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLNP-BP%2Fclient_side_validation/lists"}