Near Social (trước đây được gọi là Social08) là một giao thức dữ liệu xã hội được xây dựng trên NEAR Protocol.
Vui lòng tham gia nhóm Telegram @NearSocial để thảo luận.
Xem bài thuyết trình về Near Social tại NEARCON22
Khám phá Near Social: near.social
Link dự án
Github: https://github.com/NearSocial
Twitter: @NearSocial_
Telegram: @NearSocial
SocialDB Contract:
- Source code: https://github.com/NearSocial/social- db
- Mainnet: social.near
- Testnet: v1.social08.testnet
Standards: https://github.com/NearSocial/standards
Near Social Explorer:
- Nguồn: https://github.com/NearSocial/viewer
- Mainnet: https://near.social/
- Testnet: https://test.near.social/
Nếu bạn đang tìm kiếm một mạng xã hội dựa trên Mastodon (Một dịch vụ mạng xã hội mã nguồn mở) cho người dùng .near, hãy xem bài viết về mastodon.near.social
SocialDB
SocialDB là một hợp đồng thông minh để lưu trữ dữ liệu mạng xã hội trên NEAR.
- Mã nguồn: https://github.com/NearSocial/social-db
- API: https://github.com/NearSocial/social-db#api
- ID tài khoản Testnet: v1.social08.testnet
- ID tài khoản Mainnet: social.near
Get API
Lấy danh sách các key và trả về một đối tượng joined JSON với dữ liệu phù hợp.
keys
– một array của các key pattern cần trả về.
Đọc một profile của tài khoản self.social.near
Để đọc đệ quy tất cả các trường của một đường dẫn đã cho, hãy thêm hậu tố **.
Trả về đối tượng aggregated JSON
Đọc tên của tất cả tài khoản cùng với các profile
Lưu ý rằng truy vấn này sẽ lặp trên tất cả các tài khoản và sẽ không phù hợp với chế độ available view call gas trong tương lai.
Keys API
Lấy danh sách các key và trả về một đối tượng joined JSON với các key khớp với truy vấn.
keys
– một array của các key pattern cần trả về.
Trả về đối tượng aggregated JSON.
Lấy danh sách các widget của các tài khoản root.near
Lấy danh sách các tài khoản có các widget
Lưu ý rằng truy vấn này lặp trên tất cả các tài khoản và sẽ không phù hợp với chế độ available view call gas trong tương lai.
Các chuẩn
Dữ liệu trong SocialDB được tổ chức như một cây JSON đơn giản. Quy tắc ràng buộc duy nhất chính là các key trong root phải là các ID tài khoản lưu trữ dữ liệu. Điều này được thực hiện có chủ đích, chính nhờ nó mà contract SocialDB không cần ràng buộc bất kỳ cấu trúc hoặc schema nào. Nếu không, ta phải thay đổi contract mỗi khi đổi schema. Việc kiểm soát các schema của contract có thể dẫn đến việc tập trung hóa và nhiều hạn chế kèm theo. Thay vào đó, các tiêu chuẩn của Near Social nằm ngoài contract của SocialDB.
Hiện tại, Github là nơi bạn tìm hiểu về các chuẩn của dự án, nhưng link này cũng có thể thay đổi trong tương lai.
Mô tả Schema
- in đậm có nghĩa là key bắt buộc.
- in nghiêng có nghĩa là key tùy chọn.
- [account_id] có nghĩa là dynamic key là một ID tài khoản. Ví dụ: alex.near như là một key. Nó thường được sử dụng để đề cập đến tài khoản đó.
Root schema
Mỗi tài khoản phải tuân theo Root schema
Các widget
Các widget là các thành phần có thể sử dụng lại, có thể kết hợp cho Near Social.
Bạn có thể xem và tạo các widget tại near.social.
Ví dụ: một data explorer widget cho phép bạn khám phá dữ liệu thô từ SocialDB.
Mã nguồn mở cùng version control
Mã nguồn của mọi widget được lưu trữ công khai trong SocialDB. Chủ sở hữu widget có khả năng nâng cấp widget bằng cách cập nhật mã nguồn. Nhưng vì SocialDB được lưu trữ trên blockchain, nên tất cả các phiên bản trước của widget cũng vẫn tồn tại. Điều này cho phép thực hiện version control tự động cho các widget
Forking
Nếu bạn đã quen thuộc với GitHub, bạn biết rằng bạn có thể fork bất kỳ repo công cộng nào để tạo phiên bản của mình. Tương tự, bạn có thể fork bất kỳ widget nào ngay từ near.social UI.
Việc fork sẽ tạo một bản sao của mã nguồn widget, nhưng là bên trong tài khoản của bạn. Nó cho phép mọi người sửa đổi các widget hiện có. Sau khi bạn lưu widget mới, nó sẽ có thể được sử dụng ngay lập tức. Và dĩ nhiên mọi người cũng sẽ có thể xem hay fork phiên bản widget của bạn.
Phần lớn người dùng có nhu cầu dùng UI để tạo ra một pull request, để cho phép mọi người có thể merge các thay đổi từ những fork khác. Tuy nhiên hiện tại thì việc này vẫn còn phải được thực hiện thủ công.
Ngôn ngữ lập trình
Các widget được triển khai trong một phiên bản giới hạn của JSX (JavaScript với ReactJS).
Code được thực thi trong máy ảo trong môi trường sandbox. Điều này đảm bảo các widget không thể truy cập local storage hoặc cookie của trình duyệt.