From 90683cd5c8b72ef971b51994a3d7e71456bab018 Mon Sep 17 00:00:00 2001 From: Patrick Woo Date: Wed, 30 Nov 2022 11:04:54 -0800 Subject: [PATCH] feat: Upgrade factory from DAO feat: create proposal to upgrade factory feat: upgrade factory from dao feat: create script for upgrading factory from dao feat: introduce upgrade_factory method fix: remove new proposals revert: factory manager update factory_contract method fix: remove update factory method restore old dao code fix: dao wasm modify scripts --- scripts/upgrade_factory_from_dao.sh | 140 ++++++++++++++++++ .../res/sputnikdao_factory2.wasm | Bin 806763 -> 827210 bytes sputnikdao-factory2/src/lib.rs | 104 +++++++++++++ 3 files changed, 244 insertions(+) create mode 100644 scripts/upgrade_factory_from_dao.sh diff --git a/scripts/upgrade_factory_from_dao.sh b/scripts/upgrade_factory_from_dao.sh new file mode 100644 index 000000000..b3de976e7 --- /dev/null +++ b/scripts/upgrade_factory_from_dao.sh @@ -0,0 +1,140 @@ +#!/bin/bash +#### -------------------------------------------- +#### NOTE: The following flows are supported in this file, for testing! +# - Create an UpgradeDAO via sputnikv2.testnet, funded with enough for 10 upgrades +# - Create an Upgradeable DAO via sputnikv2.testnet, for testing v2-v3 upgrade +# - UpgradeDAO proposal to store_blob on Upgradeable DAO +# - Upgradeable DAO proposal UpgradeSelf with hash from UpgradeDAO store_blob +# - Check code_hash on Upgradeable DAO +#### -------------------------------------------- +set -e + +# # TODO: Change to the official approved commit: +# COMMIT_V3=596f27a649c5df3310e945a37a41a957492c0322 +# # git checkout $COMMIT_V3 + +# build the things +./build.sh + +export NEAR_ENV=testnet +export FACTORY=testnet + +if [ -z ${NEAR_ACCT+x} ]; then + # export NEAR_ACCT=sputnikv2.$FACTORY + export NEAR_ACCT=sputnikpm.$FACTORY +else + export NEAR_ACCT=$NEAR_ACCT +fi + +# export FACTORY_ACCOUNT_ID=sputnikv2.$FACTORY +export FACTORY_ACCOUNT_ID=factory_1.$NEAR_ACCT +# export DAO_ACCOUNT_ID=croncat.sputnikv2.$FACTORY +export MAX_GAS=300000000000000 +export GAS_100_TGAS=100000000000000 +export GAS_150_TGAS=150000000000000 +export GAS_220_TGAS=220000000000000 +export BOND_AMOUNT=1 +export BYTE_STORAGE_COST=10000000000000000000000000 + + +# #### -------------------------------------------- +# #### New Factory for entire test +# #### -------------------------------------------- +near create-account $FACTORY_ACCOUNT_ID --masterAccount $NEAR_ACCT --initialBalance 80 +# #### -------------------------------------------- + +# #### -------------------------------------------- +# #### Build and deploy factory +# - Build and Deploy factory contract by running the following command from your current directory _(`sputnik-dao-contract/sputnikdao-factory2`)_: +# - Initialize factory +# #### -------------------------------------------- +near deploy $FACTORY_ACCOUNT_ID --wasmFile=res/sputnikdao_factory2.wasm --accountId $FACTORY_ACCOUNT_ID +near call $FACTORY_ACCOUNT_ID new --accountId $FACTORY_ACCOUNT_ID --gas 100000000000000 +# #### -------------------------------------------- + + +#### -------------------------------------------- +#### Deploy DAO that can upgrade factory +#### -------------------------------------------- +export COUNCIL='["'$NEAR_ACCT'"]' +export TIMESTAMP=$(date +"%s") +export DAO_NAME=upgrademe-1-$TIMESTAMP +export DAO_ARGS=`echo '{"config": {"name": "'$DAO_NAME'", "purpose": "A dao that can upgrade a factory", "metadata":""}, "policy": '$COUNCIL'}' | base64` +near call $FACTORY_ACCOUNT_ID create "{\"name\": \"$DAO_NAME\", \"args\": \"$DAO_ARGS\"}" --accountId $FACTORY_ACCOUNT_ID --gas $GAS_150_TGAS --amount 12 +export GENDAO=$DAO_NAME.$FACTORY_ACCOUNT_ID +#### -------------------------------------------- + + +#### -------------------------------------------- +#### Quick sanity check on getters +#### -------------------------------------------- +near view $FACTORY_ACCOUNT_ID get_dao_list +#### -------------------------------------------- + +#### -------------------------------------------- +#### Set owner of factory as DAO +#### -------------------------------------------- +near call $FACTORY_ACCOUNT_ID set_owner '{"owner_id":"'$GENDAO'"}' --accountId $FACTORY_ACCOUNT_ID +#### -------------------------------------------- + +#### -------------------------------------------- +#### Modify factory, rebuild, and create proposal to store +#### -------------------------------------------- +# Store the code data +export FACTORYCODE='cat sputnikdao_factory2.wasm | base64' +# - most likely need to use near-cli-rs due to wasm string size limit +# Store blob in DAO +echo '{ "proposal": { "description": "Store upgrade", "kind": { "FunctionCall": { "receiver_id": "'$GENDAO'", "actions": [ { "method_name": "store_blob", "args": "'$(eval $FACTORYCODE)'", "deposit": "'$BYTE_STORAGE_COST'", "gas": "'$GAS_150_TGAS'" } ]}}}}' | base64 | pbcopy +# near call $GENDAO store $(eval "$FACTORYCODE") --base64 --accountId $FACTORY_ACCOUNT_ID --gas $GAS_100_TGAS --amount 10 > new_factory_hash.txt +# Once proposal created on Genesis DAO that is owner of factory account now, vote on it so that it can act_proposal storing the new factory code and returning a hash +# Vote on proposal +near call $GENDAO act_proposal '{"id": 0, "action" :"VoteApprove"}' --accountId $CONTRACT_ID --gas $MAX_GAS +# Act proposal might fail due to exceeded pre paid gas limit but factory is stored +# Set factory hash +export FACTORY_HASH="" + +#### -------------------------------------------- +#### Create proposal to upgrade factory to new factory hash +#### -------------------------------------------- +near call $GENDAO add_proposal '{ + "proposal": { + "description": "Upgrade to new factory hash using local stored code", + "kind": { + "UpgradeRemote": { + "receiver_id": "spudnike.testnet", + "method_name": "upgrade_factory", + "hash": "'$FACTORY_HASH'" + } + } + } +}' --accountId $CONTRACT_ID --amount $BOND_AMOUNT --gas $MAX_GAS +# Vote on proposal +near call $GENDAO act_proposal '{"id": 2, "action" :"VoteApprove"}' --accountId $CONTRACT_ID --gas $MAX_GAS + +# Factory should be pointing to new hash + +# Optionally store factory metadata +export PROPOSALARGS=`echo '{"factory_hash": "'$FACTORY_HASH'", "metadata": {"version": [1,0], "commit_id": ""}, "set_default": true}' | base64` +near call $GENDAO add_proposal '{ + "proposal": { + "description": "Store factory metadata", + "kind": { + "FunctionCall": { + "receiver_id": "'$CONTRACT_ID'", + "actions": [ + { + "method_name": "store_factory_metadata", + "args": "'$PROPOSALARGS'", + "deposit": "'$BYTE_STORAGE_COST'", + "gas": "'$GAS_220_TGAS'" + } + ] + } + } + } +}' --accountId $CONTRACT_ID --amount $BOND_AMOUNT --gas $MAX_GAS + +# Vote on storing factory metadata + +near call $GENDAO act_proposal '{"id": 1, "action" :"VoteApprove"}' --accountId $CONTRACT_ID --gas $MAX_GAS +#### -------------------------------------------- diff --git a/sputnikdao-factory2/res/sputnikdao_factory2.wasm b/sputnikdao-factory2/res/sputnikdao_factory2.wasm index e11c55200db560e2edfb0aa8029f6c740cfe2e71..d8897cfcf1393160626e366eb64db2cef39aa1c7 100755 GIT binary patch delta 168532 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 delta 95233 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 a%Z`3pll=@9y=1@i$*vVtH}t-rTCIQLxIR1p diff --git a/sputnikdao-factory2/src/lib.rs b/sputnikdao-factory2/src/lib.rs index b1f028e1f..28840487f 100644 --- a/sputnikdao-factory2/src/lib.rs +++ b/sputnikdao-factory2/src/lib.rs @@ -14,6 +14,8 @@ type Version = [u8; 2]; // The keys used for writing data to storage via `env::storage_write`. const DEFAULT_CODE_HASH_KEY: &[u8; 4] = b"CODE"; const FACTORY_OWNER_KEY: &[u8; 5] = b"OWNER"; +const DEFAULT_FACTORY_HASH_KEY: &[u8; 7] = b"FACTORY"; +const FACTORY_METADATA_KEY: &[u8; 7] = b"FACMETA"; const CODE_METADATA_KEY: &[u8; 8] = b"METADATA"; // The values used when writing initial data to the storage. @@ -39,6 +41,19 @@ pub struct DaoContractMetadata { pub changelog_url: Option, } +#[derive(BorshSerialize, BorshDeserialize, Serialize, Deserialize)] +#[cfg_attr(not(target_arch = "wasm32"), derive(Clone, Debug))] +#[serde(crate = "near_sdk::serde")] +pub struct DaoFactoryMetadata { + // version of the DAO factory code (e.g. [2, 0] -> 2.0, [3, 1] -> 3.1, [4, 0] -> 4.0) + pub version: Version, + // commit id of https://github.com/near-daos/sputnik-dao-contract + // representing a snapshot of the code that generated the wasm + pub commit_id: String, + // if available, url to the changelog to see the changes introduced in this version + pub changelog_url: Option, +} + #[near_bindgen] #[derive(BorshSerialize, BorshDeserialize, PanicOnDefault)] pub struct SputnikDAOFactory { @@ -291,6 +306,10 @@ impl SputnikDAOFactory { slice_to_hash(&env::storage_read(DEFAULT_CODE_HASH_KEY).expect("Must have code hash")) } + pub fn get_default_factory_hash(&self) -> Base58CryptoHash { + slice_to_hash(&env::storage_read(DEFAULT_FACTORY_HASH_KEY).expect("Must have code hash")) + } + pub fn get_default_version(&self) -> Version { let storage_metadata = env::storage_read(CODE_METADATA_KEY).expect("INTERNAL_FAIL"); let deserialized_metadata: UnorderedMap = @@ -301,6 +320,16 @@ impl SputnikDAOFactory { default_metadata.version } + pub fn get_default_factory_version(&self) -> Version { + let storage_metadata = env::storage_read(CODE_METADATA_KEY).expect("INTERNAL_FAIL"); + let deserialized_metadata: UnorderedMap = + BorshDeserialize::try_from_slice(&storage_metadata).expect("INTERNAL_FAIL"); + let default_metadata = deserialized_metadata + .get(&self.get_default_code_hash()) + .expect("INTERNAL_FAIL"); + default_metadata.version + } + /// Returns non serialized code by given code hash. pub fn get_code(&self, code_hash: Base58CryptoHash) { self.factory_manager.get_code(code_hash); @@ -342,6 +371,42 @@ impl SputnikDAOFactory { } } + pub fn store_factory_metadata( + &self, + factory_hash: Base58CryptoHash, + metadata: DaoFactoryMetadata, + set_default: bool, + ) { + self.assert_owner(); + let hash: CryptoHash = factory_hash.into(); + assert!( + env::storage_has_key(&hash), + "Factory not found for the given factory hash. Please store the factory code first." + ); + + let storage_metadata = env::storage_read(FACTORY_METADATA_KEY); + if storage_metadata.is_none() { + let mut storage_metadata: UnorderedMap = + UnorderedMap::new(b"m".to_vec()); + storage_metadata.insert(&factory_hash, &metadata); + let serialized_metadata = + BorshSerialize::try_to_vec(&storage_metadata).expect("INTERNAL_FAIL"); + env::storage_write(FACTORY_METADATA_KEY, &serialized_metadata); + } else { + let storage_metadata = storage_metadata.expect("INTERNAL_FAIL"); + let mut deserialized_metadata: UnorderedMap = + BorshDeserialize::try_from_slice(&storage_metadata).expect("INTERNAL_FAIL"); + deserialized_metadata.insert(&factory_hash, &metadata); + let serialized_metadata = + BorshSerialize::try_to_vec(&deserialized_metadata).expect("INTERNAL_FAIL"); + env::storage_write(FACTORY_METADATA_KEY, &serialized_metadata); + } + + if set_default { + env::storage_write(DEFAULT_FACTORY_HASH_KEY, &hash); + } + } + pub fn delete_contract_metadata(&self, code_hash: Base58CryptoHash) { self.assert_owner(); let storage_metadata = env::storage_read(CODE_METADATA_KEY).expect("INTERNAL_FAIL"); @@ -353,6 +418,17 @@ impl SputnikDAOFactory { env::storage_write(CODE_METADATA_KEY, &serialized_metadata); } + pub fn delete_factory_metadata(&self, factory_hash: Base58CryptoHash) { + self.assert_owner(); + let storage_metadata = env::storage_read(FACTORY_METADATA_KEY).expect("INTERNAL_FAIL"); + let mut deserialized_metadata: UnorderedMap = + BorshDeserialize::try_from_slice(&storage_metadata).expect("INTERNAL_FAIL"); + deserialized_metadata.remove(&factory_hash); + let serialized_metadata = + BorshSerialize::try_to_vec(&deserialized_metadata).expect("INTERNAL_FAIL"); + env::storage_write(FACTORY_METADATA_KEY, &serialized_metadata); + } + pub fn get_contracts_metadata(&self) -> Vec<(Base58CryptoHash, DaoContractMetadata)> { let storage_metadata = env::storage_read(CODE_METADATA_KEY).expect("INTERNAL_FAIL"); let deserialized_metadata: UnorderedMap = @@ -360,6 +436,13 @@ impl SputnikDAOFactory { return deserialized_metadata.to_vec(); } + pub fn get_factories_metadata(&self) -> Vec<(Base58CryptoHash, DaoFactoryMetadata)> { + let storage_metadata = env::storage_read(FACTORY_METADATA_KEY).expect("INTERNAL_FAIL"); + let deserialized_metadata: UnorderedMap = + BorshDeserialize::try_from_slice(&storage_metadata).expect("INTERNAL_FAIL"); + return deserialized_metadata.to_vec(); + } + fn assert_owner(&self) { assert_eq!( self.get_owner(), @@ -392,6 +475,27 @@ pub extern "C" fn store() { ); } +/// Store new contract. Non serialized argument is the contract. +/// Returns base58 of the hash of the contract. +#[no_mangle] +pub extern "C" fn upgrade_factory() { + env::setup_panic_hook(); + let contract: SputnikDAOFactory = env::state_read().expect("Contract is not initialized"); + contract.assert_owner(); + + let current_id = env::current_account_id(); + + let input = env::input().expect("ERR_NO_INPUT"); + + // Create a promise toward given account. + let promise_id = env::promise_batch_create(¤t_id); + + // Deploy the contract code. + env::promise_batch_action_deploy_contract(promise_id, &input); + + env::promise_return(promise_id); +} + #[cfg(test)] mod tests { use near_sdk::test_utils::test_env::{alice, bob, carol};