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 })