Giter VIP home page Giter VIP logo

Comments (5)

jakmeier avatar jakmeier commented on August 30, 2024

High-level definition of Social DB workload

Initialization of SocialDB is quite straight forward:

  1. Deploy WASM (Available on github: https://github.com/NearSocial/social-db/tree/aa7fafaac92a7dd267993d6c210246420a561370/res)
  2. Call new()
  3. Call set_status(status = "Live")

Then to register a user, we don't have to do anything. But for every call we do later, we must ensure there is enough storage. To facilitate, user initialization can be as easy as:

  1. Call storage_deposit(account_id = "user.near")

For actual workload, I am thinking of three different interactions to starts:

  • Follow someone else
  • Post a message
  • Like a post from someone else

All of these interactions are just calls to set. The only non-trivial part is constructing the argument just right.
This can also be easily extended to all kinds of interactions that change social DB, such as widget updates, profile changes, etc. It's all just set calls.

The argument construction requires nested JSON serialization as shown below. Luckily, it can be done in just a few lines of Python code.

// Example JSON for "jakmeier.near" following "pugachag.near"
{
  "data": {
    "jakmeier.near": {
      "graph": {
        "follow": {
          "pugachag.near": ""
        }
      },
      "index": {
        "graph": "{\"key\":\"follow\",\"value\":{\"type\":\"follow\",\"accountId\":\"pugachag.near\"}}",
        "notify": "{\"key\":\"pugachag.near\",\"value\":{\"type\":\"follow\"}}"
      }
    }
  }
}

See the full call in the explorer: https://explorer.near.org/transactions/J2erddvLFo8L4Qn9Rb4HV8tHA3iJtNcgW6iSDBRwCcBh

from nearcore.

jakmeier avatar jakmeier commented on August 30, 2024

So far I code the initialization and the follow transactions. It's available in this commit: dbef2f0

from nearcore.

jakmeier avatar jakmeier commented on August 30, 2024

We merged #9133 with initialization, "Follow someone else" and "Post a message".

from nearcore.

jakmeier avatar jakmeier commented on August 30, 2024

One inconvenience so far is that the smart contract validation might not be enough for us to be sure that meaningful work is being done. A set call may be successful without actually having the desired effect.

Ideally we would attach a frontend to benchmarking and look at users and posts from there, even if just to confirm that it does what it should. But I will keep this as a nice-to-have addition for now.

from nearcore.

jakmeier avatar jakmeier commented on August 30, 2024

I'm going to close this as there is currently no plan to add likes or a frontend. The current socialDB load is good enough for, as it can be used to test how many users we can support in a given setup.

from nearcore.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.