3 个版本

0.1.2 2023 年 3 月 2 日
0.1.1 2023 年 3 月 2 日
0.1.0 2023 年 3 月 2 日

#29 in #relation


用于 sgraph-usersig

Apache-2.0

175KB
223

包含 (ELF 库, 1.5MB) tests/fixtures/ac.so, (ELF 库, 40KB) tests/fixtures/noop.so

sgraph

Rust Test

欢迎来到 sgraph 单一代码库

什么是 sgraph?

一个无需许可的社会图谱,使任何关系或事件都能成为网络上的共享记录。

Sgraph 允许

  1. 发布 - 允许用户连接他们的社交图谱,这样他们可以专注于体验,而不是为了你的应用获取受众
  2. 发现 - 解锁新的推荐算法,并基于您选择的提供者发现洞察
  3. 构建 - 使用针对 TypeScript 和 Rust 开发者友好的 SDK,几分钟内开始构建

sgraph 的设计原则

虽然存在各种不同的图技术和协议,但没有一种技术可以将它们组合成一个单一的通用公共注册表,它是

  1. 无需许可 – 任何人都可以开始创建图数据或从他们选择的提供者中读取它。Sgraph 提供者不需要用户同意即可代表他们写入。
  2. 自定义类型 – 任何人都可以创建自己的关系和事件(关注、订阅、标记、新内容对象、通知等)的类型和子类型
  3. 空间高效 – sgraph 使用 Merkle 树压缩来优化空间使用。它允许每个树存储高达十亿条记录而无需付费。
  4. 针对高性能优化 – 索引器在 sgraph 上同步链上数据并构建本地副本,允许高效地查询图数据。library/tree/master/account-compression)
  5. 为构建者而构建 – 从第一天起就是开发者友好和开源的。

它如何工作

graph diagram

想象一下,Alice 在平台 X 上关注了 BobBob 在平台 Y 上标记了 Charlie。而不是在本地存储这些关系,sgraph 允许将这些关系上链,因此 平台 X平台 Y 和任何其他应用程序和用户都可以从中受益。

实现

sgraph 在 Solana 区块链上运行。核心合约管理对图的所有写入。

为了在尽可能少占用空间的同时,使写入几乎免费,sgraph使用了一种名为SPL账户压缩的技术。与实际数据(关系)不同,只在链上存储哈希值。自然地,为了读取数据,必须在链下某个地方进行索引。为此,必须运行indexer - 这是一个专门的二进制文件,用于维护所有关系的本地副本。

我们的目标是使indexer易于部署和维护,以便其好处(如令人难以置信的读取性能)超过设置它的初始投资。还将提供indexer的托管版本。

解释不同sgraph实体的图表(点击查看)

项目结构

|-- 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 crates badge docs graph8zS8zjLVJHdiSvP7S9PP7hNJpnHdbnJLR81FMg N/A
usersig crates badge docs 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