Skip to content

Sputnik Factory V2 Upgrade Action Plan

Trevor Clarke edited this page Feb 5, 2022 · 4 revisions

Action Plan Intro

The Sputnik DAO codebase is ready to start rolling out upgrades & new features to allow DAOs to continue innovating. This is a step in the direction of continuous deployment of new features the community needs. This is the first phase of upgrades that will be rolled out over the coming months.

Does this apply to Sputnik v1

No. At current time of writing, this upgrade only applies to Sputnik v2 factory & governance contracts.

Who is affected?

The following groups will need to self-identify & read pertinent information, action items & next steps:

  • Factory Owners:
    • You are a factory owner if you hold keys to any of the following accounts: ['sputnik-dao.near','sputnikdao.near','sputnikv2.testnet','sputnik-2.testnet']
    • You are a factory owner if you have ever deployed the file sputnikdao_factory2.wasm to testnet or mainnet.
  • Client Owners:
    • You are a client owner if you are a core team members in Astro, Sputnik or have a web UI deployed that utilizes sputnik contracts.
  • DAO Owners:
    • You are a DAO owner if you have a governing vote within a deployed sputnik-dao contract instance. You will know by checking the DAO address is a sub-account of sputnik-dao.near, example some_dao.sputnik-dao.near.
  • Near Community
    • Anyone that believes in DAOs and is a NEAR hodler :)

Factory Owners

You will be responsible for:

  1. Deploying new factory code to factory contracts
  2. Testing deployed factory code with sample scripts
  3. Follow guidance & testing process for each network: testnet, mainnet

Client Owners (Astro)

You will be responsible for:

  1. Preparing web interfaces for upcoming upgrade support
  2. Assisting DAO owners understand when they can upgrade
  3. Creating a web experience helping DAO owners propose upgrades
  4. Creating a web experience for displaying versioning information based on new factory standards

DAO Owners

You will be responsible for:

  1. Waiting patiently until DAO upgrades are available
  2. Doing research & understanding each upcoming upgrades requirements & data migrations
  3. Proposing that your DAO does an upgrade (including potential data migrations in the future)
  4. Confirming all DAO functionality works post-upgrade

NOTE: This first upgrade for your DAO will not require a data migration. This is just a reference to help you understand that future upgrades may require some data migrations before your DAO can continue using new upgrades & features.

Near Community

As a community member you will help assist in a positive influence in helping others come along-side to support the upgrade process. You will help answer any questions & concerns other community members have while this upgrade process happens.


Process Overview

The upgrade process will require a very rigid procedure order:

  1. Codebase Updates [Sputnik Dev Team]
  2. Security Audit [External Audit Team]
  3. Client Preparedness [Client Owners]
  4. Factory Deployment [Factory Owners]
  5. Factory Testing & QA [Factory Owners], [Sputnik Dev Team]
  6. Factory Cooloff [Factory Owners], [Sputnik Dev Team]
  7. Governance Contract Deployment (AKA DAO V3) [Factory Owners]
  8. Governance Contract Testing & QA [Sputnik Dev Team]
  9. DAO Upgrade Proposals Testing [Sputnik Dev Team]
  10. DAO Upgrade Proposal Client Integration Rollout [Client Owners]
  11. DAO Upgrade Proposal Approval & Deployment [Client Owners], [DAO Owners]

NOTE: Each owner has been tagged for quick reference of responsibilities in order.

Upgrade Process

0. [Complete] Upgrade Factory Development

A. Develop Code for Factory Contract

Update the factory contract code to support version based code stored in blobs. Each stored instance of code should apply the approved standards for upgrading contracts. The factory will be used as a registry of versioned DAO code.

B. Documentation

Create documentation on the deployment + testing flow for new factory changes.

1. Audit

A. Reference Documentation

View all documentation available for currently deployed code, core codebase, local/testnet deployment practices & the new upgrade flow documentation.

Audit docs list

B. Results Submission

Upon audit completion, results should be submitted directly to the core development team to review. All audit results should be considered confidencial until any/all mitigation steps have been completed. In the interest of transparency, all audit items will be posted upon mitigation in the "Audit Guidance" section below.

2. Client Preparedness

A. Version Interface Support

Thigns

3. Factory Deployment

A. Title

Thigns

4. Factory Testing & QA

A. Title

Thigns

5. Factory Cooloff (2 weeks)

A. 2 Week Period of Mainnet Testing

Using a cooloff window for testing in mainnet without rolling out upgrades to DAO contracts will help mitigate any exploits or data corruption pre-maturely. It will help ensure all stakeholders are in lock-step approving next phase of upgrades safely.

6. Governance Contract Deployment (AKA DAO V3)

A. Title

Thigns

7. Governance Contract Testing & QA

A. Title

Thigns

8. DAO Upgrade Proposals Testing

A. Title

Thigns

9. DAO Upgrade Proposal Client Integration Rollout (Astro, etc)

A. Title

Thigns

10. Community Announcements

A. Gov Forum & Blog Post

Thigns

11. DAO Upgrade Proposal Approval & Deployment

A. Title

Thigns


Open Questions

TBD (If you have a question/concern, submit a comment)

Audit Guidance

TBD upon audit completion


Reference Data

Known Code Hashes:

History of Sputnik - Searching through the archives:

Sputnik V1 smart contracts

Factory:

  • the factory code can be found inside sputnikdao-factory/src
  • the factory code is deployed on mainnet on sputnikdao.near account
  • the factory code was deployed on mainnet for the first time on January 11, 2021 at 2:29:30pm and the second time on January 20, 2021 at 1:31:05pm
  • the factory code is deployed on testnet on sputnik-v1.testnet account

DAOs:

  • the DAOs code can be found inside sputnikdao/src
  • the DAO code is deployed to several accounts that have the following format: <dao_name>.sputnikdao.near for mainnet and <dao_name>.sputnik-v1.testnet for testnet
  • see all the DAOs that live on mainnet by calling near view sputnikdao.near get_dao_list
  • see all the DAOs that live on testnet by calling near view sputnik-v1.testnet get_dao_list

Sputnik v2 smart contracts

Factory:

  • the factory code can be found inside sputnikdao-factory2/src
  • the factory code is deployed on mainnet on sputnik-dao.near account
  • the factory code was deployed only once on mainnet on June 01, 2021 at 6:17:46pm
  • the factory code is deployed on testnet on sputnikv2.testnet account

DAOs:

  • the DAOs code can be found inside sputnikdao2/src
  • the DAO code is deployed to several accounts that have the following format: <dao_name>.sputnik-dao.near for mainnet and <dao_name>.sputnikv2.testnet for testnet
  • see all the DAOs that live on mainnet by calling near view sputnik-dao.near get_dao_list
  • see all the DAOs that live on testnet by calling near view sputnik-v1.testnet get_dao_list

UI DApps built on top of the Sputnik smart contracts (from oldest to newest)