{"id":13504185,"url":"https://github.com/cloudhead/nakamoto","last_synced_at":"2025-04-08T12:09:05.388Z","repository":{"id":39629973,"uuid":"266320069","full_name":"cloudhead/nakamoto","owner":"cloudhead","description":"Privacy-preserving Bitcoin light-client implementation in Rust","archived":false,"fork":false,"pushed_at":"2024-03-01T12:56:47.000Z","size":2062,"stargazers_count":378,"open_issues_count":30,"forks_count":61,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-04-01T11:02:00.711Z","etag":null,"topics":["bitcoin","blockchain","client","light-client"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudhead.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"cloudhead","custom":["https://cloudhead.io/donate"]}},"created_at":"2020-05-23T11:13:38.000Z","updated_at":"2025-03-30T00:46:52.000Z","dependencies_parsed_at":"2023-02-08T06:46:12.568Z","dependency_job_id":"9bd3ca89-53e1-4f99-a81e-a548dfc37981","html_url":"https://github.com/cloudhead/nakamoto","commit_stats":{"total_commits":1018,"total_committers":14,"mean_commits":72.71428571428571,"dds":0.03045186640471509,"last_synced_commit":"76ab7a3b6207373399cd15a90037294bb08beeb5"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudhead%2Fnakamoto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudhead%2Fnakamoto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudhead%2Fnakamoto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudhead%2Fnakamoto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudhead","download_url":"https://codeload.github.com/cloudhead/nakamoto/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247838444,"owners_count":21004580,"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","blockchain","client","light-client"],"created_at":"2024-07-31T23:00:59.358Z","updated_at":"2025-04-08T12:09:05.363Z","avatar_url":"https://github.com/cloudhead.png","language":"Rust","funding_links":["https://github.com/sponsors/cloudhead","https://cloudhead.io/donate"],"categories":["Awesome Rust Bitcoin"],"sub_categories":["Current Projects"],"readme":"nakamoto\n========\n\nNakamoto is a privacy-preserving Bitcoin light-client implementation in Rust,\nwith a focus on low resource utilization, modularity and security.\n\nThe vision for the project is to build a set of libraries targeting light\nclient functionality, that are easy to embed in any program and on any\nplatform, be it mobile or desktop. The project's small cpu, memory and code\nfootprint is made possible by its efficient runtime and minimal set of\ndependencies. The implementation language, Rust, opens up the possibility for\nprograms written in other languages (eg. Swift, Python, Java), to bind directly\nto it via a foreign function interface (FFI).\n\n---\n\n    [dependencies]\n    nakamoto = \"0.4.0\"\n\n## Design\n\nNakamoto is split into several crates, each handling a different aspect of the\nlight-client protocol. Although these crates are designed to be used in tandem,\nswapping implementations is trivial, due to the explicit boundaries between\nthem, and the use of traits. From a high-level, we have:\n\n* `nakamoto-client`: the core light-client library\n* `nakamoto-p2p`: the protocol state-machine implementation\n* `nakamoto-chain`: the block store and fork selection logic\n* `nakamoto-net`: networking primitives used by the reactor implementations\n* `nakamoto-net-poll`: the default *poll*-based networking backend\n* `nakamoto-common`: common functionality used by all crates\n* `nakamoto-node`: a standalone light-client daemon\n* `nakamoto-wallet`: a very basic watch-only wallet built on the above crates\n\nFor an overview of the above, see the [architecture diagram](docs/architecture.svg)\nin the `docs` folder.\n\n## Status\n\nWhile the project is still in its infancy, the base functionality has been\nimplemented. Nakamoto is able to discover peers, download and verify the\nlongest chain and handle forks, while implementing the full header verification\nprotocol.\n\nClient side block filtering (BIP 157/158) is implemented and working. See\n`nakamoto-wallet` for an example of how to use it.\n\nPeer-to-peer layer encryption (BIP 324), available in Bitcoin Core since v26.0,\nwill also be implemented in Nakamoto soon.\n\nFinally, a C FFI will be implemented, to make it easy to embed the client\nin mobile applications.\n\nThough wallet functionality will slowly be added, it isn't the primary focus\nof this project, which sits one level below wallets.\n\n## Projects goals\n\n* __High assurance__: the library should be thoroughly tested using modern\n  techniques such as *property* and *model-based testing* as well as *discrete\n  event simulation* and *fuzzing*. These approaches benefit from a clean\n  separation between I/O and protocol logic and have been shown to catch more\n  bugs than unit testing.\n\n* __Security__: as a library that may find its way into wallet implementations,\n  a primary goal is security and auditability. For this reason, we try to\n  minimize the total dependency footprint, keep the code easy to read and\n  forbid any unsafe code.\n\n* __Efficiency__: blockchain synchronization should be done as efficiently as\n  possible, with low memory, disk and bandwidth overhead. We target\n  resource-constrained environments, such as mobile.\n\n* __Privacy__: when possible, privacy-preserving techniques should be employed.\n  *Client Side Block Filtering* (BIP 157/158) should be used over bloom\n  filters (BIP 37) to ensure user privacy and provide censorship resistance.\n\n## Running the tests\n\n    cargo test --all\n\n## Running the daemon\n\n    cargo run --release -p nakamoto-node -- --testnet\n\n## Contributing\n\nIf you'd like to contribute to the development of Nakamoto, please get in touch!\nOtherwise, do read the contribution [guidelines](CONTRIBUTING.md).\n\n## Donations\n\nTo help fund the project and ensure its ongoing development and maintenance, your\nsupport in Bitcoin is appreciated at the following address:\n\n    bc1qa47tl4vmz8j82wdsdkmxex30r23c9ljs84fxah\n\n## Motivation\n\nLooking at ecosystems that aren't light-client friendly—Ethereum for example—we\nsee that the vast majority of users are forced into trusting third parties when\ntransacting on the network.  This is completely counter to the idea and *raison\nd'être* of blockchains, and poses a giant security and privacy risk.\nUnfortunately, this is due to the lackluster support for light-clients, both at\nthe protocol level, and in terms of the available implementations. Light-clients\nare necessary for the average user to be able to securely interface with a\nnetwork like Ethereum or Bitcoin.\n\nFor this purpose, Nakamoto was conceived as a client that can efficiently run\non any mobile device, with the highest standards of privacy and security\nachievable given the constraints.\n\n## License\n\nLicensed under the MIT license.\n\u0026copy; 2020 Alexis Sellier (\u003chttps://cloudhead.io\u003e)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudhead%2Fnakamoto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudhead%2Fnakamoto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudhead%2Fnakamoto/lists"}