Evolve Contract
Database contracts are upgradable with evolve
function, if set so.
Get Evolve Stats
To get the stats related to evolve, use getEvolve
.
await db.getEvolve()
// { canEvolve, history, evolve, isEvolving }
Make DB Contract Upgradable
When deploying the WeaveDB contract, canEvolve
should be set true
, and evolve
should be set null
in the initial state.
{
"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":{}
}
Switch Upgradability
Upgradability can be switched by setCanEvolve
. Only contract owners can execute the function.
await db.setCanEvolve(false, { ar: arweave_wallet })
Upgrade / Evolve DB Contract
DB contracts can be upgraded to a new version with evolve
if canEvolve
is set true
.
The new version has to be deployed first, and pass the contractTxId
of the new contract to the evolve
function.
await db.evolve(contractTxId, { ar: arweave_wallet })
After evolving you need execute migrate
. The write operations will be blocked before the migration.
await db.migrate(newVersion, { ar: arweave_wallet })