{"id":20388248,"url":"https://github.com/libp2p/go-smart-record","last_synced_at":"2025-07-13T16:40:27.190Z","repository":{"id":42466755,"uuid":"344558698","full_name":"libp2p/go-smart-record","owner":"libp2p","description":"ResNetLab Project: Smart Records","archived":false,"fork":false,"pushed_at":"2025-03-24T09:27:50.000Z","size":21728,"stargazers_count":7,"open_issues_count":5,"forks_count":3,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-03-26T05:23:24.672Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","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/libp2p.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-04T17:40:50.000Z","updated_at":"2024-01-23T17:16:54.000Z","dependencies_parsed_at":"2024-03-21T15:59:01.538Z","dependency_job_id":"8086a6e6-c303-4ed2-a1be-34ae6c9bb20b","html_url":"https://github.com/libp2p/go-smart-record","commit_stats":null,"previous_names":["libp2p/go-composable-record"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libp2p%2Fgo-smart-record","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libp2p%2Fgo-smart-record/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libp2p%2Fgo-smart-record/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libp2p%2Fgo-smart-record/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libp2p","download_url":"https://codeload.github.com/libp2p/go-smart-record/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248553659,"owners_count":21123493,"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-15T03:08:17.916Z","updated_at":"2025-04-12T10:36:11.555Z","avatar_url":"https://github.com/libp2p.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-smart-record\n\n[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](https://protocol.ai)\n[![](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](https://libp2p.io)\n[![](https://img.shields.io/badge/freenode-%23libp2p-yellow.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23yellow)\n\u003c!-- TODO: Uncomment when available\n[![GoDoc](https://godoc.org/github.com/libp2p/go-libp2p-xor?status.svg)](https://godoc.org/github.com/libp2p/go-smart-record)\n[![Build Status](https://travis-ci.org/libp2p/go-libp2p-xor.svg?branch=master)](https://travis-ci.org/libp2p/go-smart-record)\n--\u003e\n[![Discourse posts](https://img.shields.io/discourse/https/discuss.libp2p.io/posts.svg)](https://discuss.libp2p.io)\n\n\u003e Go implementation of smart records. Smart Records (SRs) provide\na *public blackboard for protocols*. \n\n## Summary\nWe currently don't have a standardized, shared, public medium decoupled from the transport protocol for the interaction of different protocols.\nWith Smart Records (SRs) we generalize DHT's key/value put/get as a separate protocol that can be leveraged by any other protocol\n(including DHT protocols) to store arbitrary data. \n\nSmart Records leverage the [go-routing-language](https://github.com/libp2p/go-routing-language) for their data model. \nSRs are a mixture between a CRDT and a smart contract. A record (for a key) is a replicated state machine holding generic data.\nIt supports reading, writing, merging and \"smart services\" (through smart tags included in the SR data model which adds additional\nlogic to records).\n\nSR model works as follows:\n- Each peer (identified by its public key) writes to a peer-specific documents (their own peer private space).\n- Peers can overwrite their own documents.\n- Every document node has a TTL specified (and eventually paid for) by the writing peer.\n- Users of SR can get the full record and process the information stored in the different user-spaces.\n\n## Contribute\n\nContributions welcome. Please check out [the issues](https://github.com/libp2p/go-libp2p-xor/issues).\n\nCheck out our [contributing document](https://github.com/libp2p/community/blob/master/CONTRIBUTE.md) for more information on how we work, and about contributing in general. Please be aware that all interactions related to libp2p are subject to the IPFS [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).\n\n## License\n\n[MIT](LICENSE) © Protocol Labs Inc.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibp2p%2Fgo-smart-record","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibp2p%2Fgo-smart-record","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibp2p%2Fgo-smart-record/lists"}