Ownership

Only owners can execute administrative functions including setSchema, setRules, addIndex, removeIndex, addCron, removeCron, setAlgorithms, evolve, setCanEvolve, addOwner, and removeOwner.

Set Initial Owners

To initially set owners with deployment, add owner field to the initial state. owner can be a single address or an array of addresses.

let initialState = {
  "canEvolve": true,
  "evolve": null,
  "secure": true,
  "version": "0.7.0",
  "data": {},
  "nonces": {},
  "ids": {},
  "indexes": {},
  "auth":{
    "algorithms": ["secp256k1", "secp256k1-2", "ed25519", "rsa256", "poseidon"],
    "name": "weavedb",
    "version": "1",
    "links": {}
  },
  "crons": {
    "lastExecuted": 0,
    "crons":{}
  },
  "contracts":{}
}
 
// single owner
initialState.owner = walletAddress
 
// or multiple owners
initialState.owner = [walletAddress1, walletAddress2]

With yarn deploy command, you can specify a wallet name with --wallet argument.

For example, save your wallet JSON file at scripts/.wallets/wallet-my_wallet.json first.

yarn deploy --wallet my_wallet

The wallet file location defaults to scripts/.wallets/wallet-mainnet.json if unspecified.

yarn deploy # same as "yarn deploy --wallet mainnet"

Get Owner

await db.getOwner()

Add Owner

Owners can be added one at a time.

await db.addOwner(new_owner_address, { ar: current_owner_arweave_wallet })

Remove Owner

Owners can be removed one at a time. If you remove the last owner, the database won't be configurable anymore, getting into permanent decentralization mode.

await db.removeOwner(owner_address, { ar: current_owner_arweave_wallet })