Skip to content

weavedb/jots

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Jots Protocol

Jots is a fully decentralized social protocol powered by WeaveDB on AO.

Setting Up Localnet

1. AO Localnet

git clone -b hotfix https://github.com/weavedb/ao-localnet.git

Make sure you have NodeJS v22 installed and generate Arweave wallets.

cd ao-localnet/wallets && ./generateAll.sh

Execute the following docker command to run SCAR (Arweave Explorer) too.

cd ../ && sudo docker compose --profile explorer up

Now you should have the following nodes running on your local computer.

In another terminal, go to the seed directory, and download a WASM binary.

cd ao-localnet/seed && ./download-aos-module.sh

Grant tokens to the generated wallets.

./seed-for-aos.sh

At this point, you could run aos, but it's not necessary unless interacting with WeaveDB from AOS.

cd ../aos && yarn && ./aos

2. WeaveDB / CosmWasm AO Units

Clone the weavedb/cosmwasm-ao repo, and install dependencies.

git clone https://github.com/weavedb/cosmwasm-ao.git
cd cosmwasm-ao && yarn

Create a cwao.config.js file,

module.exports = {
  ao:{
    mu: "http://localhost:1992",
    su: "http://localhost:1993",
    cu: "http://localhost:1994",
    cus: { "http://localhost:1993": "http://localhost:1994" },
    arweave: { host: "localhost", port: 4000, protocol: "http" },
    graphql: "http://localhost:4000/graphql",
	type: "weavedb"
  }
}

and cwao.config.cosmwasm.js file.

module.exports = {
  ao:{
    mu: "http://localhost:1892",
    su: "http://localhost:1893",
    cu: "http://localhost:1894",
    cus: { "http://localhost:1893": "http://localhost:1894" },
    arweave: { host: "localhost", port: 4000, protocol: "http" },
    graphql: "http://localhost:4000/graphql",
	type: "cosmwasm"
  }
}

Generate wallets.

yarn keygen admin -t ar && yarn addFund admin
yarn keygen scheduler -t ar && yarn addFund scheduler
yarn keygen scheduler_cwao -t ar && yarn addFund scheduler_cwao
yarn keygen bundler -t ar && yarn addFund bundler
yarn keygen rdk_admin

Start WeaveDB AO units.

yarn start admin

In another terminal, start CosmWasm AO units.

cd cosmwasm-ao && yarn start admin --config cwao.config.cosmwasm.js

In another terminal, add the WeaveDB module to AO.

yarn addModule admin

Add the CWAO20 module to AO.

yarn addModule admin --type cwao20 --config cwao.config.cosmwasm.js

Set up the schedulers.

yarn setScheduler scheduler --url "http://localhost:1993"
yarn setScheduler scheduler_cwao --url "http://localhost:1893"

Take notes of the MODULE_ID and the SCHEDULER_ID returned from these commands.

Deploy CWAO20 token.

yarn deployCWAO20 admin --config cwao.config.cosmwasm.js \
--module MODULE_ID --scheduler SCHEDULER_ID --mint 10000

3. WeaveDB Rollup Node

Clone the weavedb/rdk repo, and install dependencies.

git clone https://github.com/weavedb/rdk.git && cd rdk

Run Envoy to establish GRPC communications between the web browser and the local node.

yarn envoy

In another terminal prepare to run the WeaveDB node.

cd node/node-server && yarn

Create a weavedb.config.js file.

Copy the privateKey of rdk_admin at cosmwasm-ao/.weavedb/accounts/evm/rdk_admin.json from the previous step to the admin field.

Copy the entire JSON object of bundler at cosmwasm-ao/.weavedb/accounts/ar/bundler.json from the previous step to the bundler field.

module.exports = {
  dbname: "weavedb",
  admin: "0x...",
  bundler: { kty: "RSA", ... },
  rollups: {},
  ao:{
    mu: "http://localhost:1992",
    su: "http://localhost:1993",
    cu: "http://localhost:1994",
    arweave: { host: "localhost", port: 4000, protocol: "http" },
    graphql: "http://localhost:4000/graphql",
  }
}

Start the node.

node index.js

In another terminal, start the WeaveDB Explorer.

cd rdk/explorer && yarn && yarn dev --port 3001

Now the explorer is running at localhost:3001/node/localhost.

4. Setting up WeaveDB Instance

Clone the weavedb/jots repo, and install dependencies.

git clone https://github.com/weavedb/jots.git
cd jots/db && yarn

Create a weavedb.config.js file. Again, copy the privateKey from rdk_admin

module.exports = {
  db: {
    app: "http://localhost:3000",
    name: "Jots",
    rollup: true,
    plugins: { notifications: {} },
    tick: 1000 * 60 * 5,
  },
  accounts: {
    evm: {
      admin: {
        privateKey:
          "0x...",
      },
    },
    ar: {},
  },
  defaultNetwork: "localhost",
  networks: {
    localhost: { url: "localhost:8080", admin: "admin" },
  },
}

Generate necessary EVM wallets.

yarn keygen owner_l1
yarn keygen owner_l2
yarn keygen relayer

Instantiate a WeaveDB instance for Jots.
owner_l1 is for L1 admin queries, and owner_l2 is for L2 admin queries. We need 2 owners to avoid nonce collisions between L1 and L2.

yarn deploy jots \
--module MODULE_ID --scheduler SCHEDULER_ID --owner_l1 owner_l1 --owner_l2 owner_l2

Set up the Jots DB instance.

yarn setup jots --owner_l2 owner_l2 --relayer relayer
yarn setup jots --owner_l2 owner_l2 --relayer relayer --plugin notifications

Initialize Jots with the genesis user.
The genesis user will have 100 invites, that can be sent via the frontend dapp.

yarn initialize jots --owner_l2 owner_l2 --user USER_EVM_ADDRESS

5. Start Frontend Jots Dapp

Install dependencies.

cd jots/app && yarn

Create a .env.local file.

NEXT_PUBLIC_EXPLORER="http://localhost:3001/node/localhost/db/jots"
NEXT_PUBLIC_RPC="http://localhost:8080"
NEXT_PUBLIC_MODE="open"
RPC="localhost:8080"
NEXT_PUBLIC_TXID=""
GCS_BUCKET="xyz.appspot.com"
GCS_PROJECT_ID="xyz"
GCS_EMAIL="firebase-adminsdk-ad5id@xyz.iam.gserviceaccount.com"
GCS_PRIVATE_KEY=""
RELAYER_PRIVATE_KEY="xyz"

Run the app.

yarn dev

Now Jots is running at localhost3000.

6. Deploy zkJSON Solidity Contract on Ethereum Testnet

coming soon...

About

Social Protocol powered by WeaveDB

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published