3 个版本
0.1.2 | 2023 年 3 月 2 日 |
---|---|
0.1.1 | 2023 年 3 月 2 日 |
0.1.0 | 2023 年 3 月 2 日 |
#29 in #relation
175KB
223 行
包含 (ELF 库, 1.5MB) tests/fixtures/ac.so, (ELF 库, 40KB) tests/fixtures/noop.so
sgraph
欢迎来到 sgraph 单一代码库
什么是 sgraph?
一个无需许可的社会图谱,使任何关系或事件都能成为网络上的共享记录。
Sgraph 允许
- 发布 - 允许用户连接他们的社交图谱,这样他们可以专注于体验,而不是为了你的应用获取受众
- 发现 - 解锁新的推荐算法,并基于您选择的提供者发现洞察
- 构建 - 使用针对 TypeScript 和 Rust 开发者友好的 SDK,几分钟内开始构建
sgraph 的设计原则
虽然存在各种不同的图技术和协议,但没有一种技术可以将它们组合成一个单一的通用公共注册表,它是
- 无需许可 – 任何人都可以开始创建图数据或从他们选择的提供者中读取它。Sgraph 提供者不需要用户同意即可代表他们写入。
- 自定义类型 – 任何人都可以创建自己的关系和事件(关注、订阅、标记、新内容对象、通知等)的类型和子类型
- 空间高效 – sgraph 使用 Merkle 树压缩来优化空间使用。它允许每个树存储高达十亿条记录而无需付费。
- 针对高性能优化 – 索引器在 sgraph 上同步链上数据并构建本地副本,允许高效地查询图数据。library/tree/master/account-compression)
- 为构建者而构建 – 从第一天起就是开发者友好和开源的。
它如何工作
想象一下,Alice 在平台 X 上关注了 Bob 和 Bob 在平台 Y 上标记了 Charlie。而不是在本地存储这些关系,sgraph 允许将这些关系上链,因此 平台 X、平台 Y 和任何其他应用程序和用户都可以从中受益。
实现
sgraph 在 Solana 区块链上运行。核心合约管理对图的所有写入。
为了在尽可能少占用空间的同时,使写入几乎免费,sgraph使用了一种名为SPL账户压缩的技术。与实际数据(关系)不同,只在链上存储哈希值。自然地,为了读取数据,必须在链下某个地方进行索引。为此,必须运行indexer
- 这是一个专门的二进制文件,用于维护所有关系的本地副本。
我们的目标是使indexer
易于部署和维护,以便其好处(如令人难以置信的读取性能)超过设置它的初始投资。还将提供indexer
的托管版本。
项目结构
|-- programs
| |-- graph => Core contract
| `-- usersig => Manual signature provider (checkout out it's README.md)
| `-- cli => Utilities to create relations using usersig
|-- sdk
| `-- js => Typescript SDK
| `-- _examples => Examples of interaction with the graph
|-- indexer => Worker that caches relations locally
开发环境快速入门
# start localnet
solana-test-validator
# deploy contracts on localnet
# install anchor at https://www.anchor-lang.com/docs/installation
anchor build && anchor deploy
npx ts-node ~/sgraph/sdk/js/cli/initTree.ts <tree-keypair> <authority-keypair>
# run examples
set -x ANCHOR_WALLET "~/.config/solana/id.json" # set to path to your wallet
npx ts-node sdk/js/_examples/full.ts
程序详情
地址
箱子/文档 | 主网/开发网/测试网 | 提供者地址 | |
---|---|---|---|
graph | graph8zS8zjLVJHdiSvP7S9PP7hNJpnHdbnJLR81FMg | N/A | |
usersig | s1gsZrDJAXNYSCRhQZk5X3mYyBjAmaVBTYnNhCzj8t2 | 8MgDy6gEztWYsS2PKhBkYPCVDb6VQJ4XkTChtwayXvyB |
公共索引器实例
env | url |
---|---|
mainnet | https://api.sgraph.io |
devnet | https://dev.api.sgraph.io |
本地运行indexer
本地运行推荐用于生产使用
阅读如何在./indexer/README.md中运行您的实例
未来工作
即将推出:事件
- 事件是一次性广播有关用户活动的消息
- 事件将不会被存储在Merkle树中,而是每次交易中仅发出一次,以便索引器捕获
- 事件将由提供者发送,因此您可以选择从谁那里消费事件
待办事项
- 集成测试
- 更多SDK辅助工具
- 更多提供者!
问题、建议、反馈
打开问题、开始讨论或不要犹豫,在hello at sgraph.io
联系我们。
与安全相关的问题应仅报告给上述电子邮件。
许可证
Apache 2.0。请参阅LICENSE
依赖关系
~21–30MB
~519K SLoC