Skip to content

Commit b3a5f06

Browse files
diamondhands0gitbook-bot
authored andcommitted
GitBook: [#165] No subject
1 parent c6abc3d commit b3a5f06

File tree

2 files changed

+60
-1
lines changed

2 files changed

+60
-1
lines changed

SUMMARY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
* [Setup](for-node-operators/node-setup/README.md)
8787
* [Requirements](for-node-operators/node-setup/requirements.md)
8888
* [Setup](for-node-operators/node-setup/setup.md)
89-
* [Managing Network Upgrades](for-node-operators/node-setup/managing-network-upgrades.md)
89+
* [Keeping Your Node Up-To-Date](for-node-operators/node-setup/keeping-your-node-up-to-date.md)
9090
* [FAQ](for-node-operators/running-a-node.md)
9191

9292
## Contact And Media
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Keeping Your Node Up-To-Date
2+
3+
This is a step-by-step guide on how to stay up to date with hard forks of the core repository, as well as instructions for core team members on how to execute updates that could cause a hard fork on the network. This doc should help node operators and the core team release new code in an organized way, particularly so that the developer community has sufficient time and resources to upgrade their nodes.
4+
5+
## Instructions for Node Operators <a href="#_cv2t10tt14ya" id="_cv2t10tt14ya"></a>
6+
7+
1. Subscribe to release notifications on GitHub
8+
1. Which repos?
9+
1. [https://github.com/deso-protocol/core](https://github.com/deso-protocol/core) (important)
10+
2. [https://github.com/deso-protocol/backend](https://github.com/deso-protocol/backend) (important)
11+
3. [https://github.com/deso-protocol/rosetta-deso](https://github.com/deso-protocol/rosetta-deso) (important for exchanges like Coinbase)
12+
4. [https://github.com/deso-protocol/identity](https://github.com/deso-protocol/identity)
13+
5. [https://github.com/deso-protocol/frontend](https://github.com/deso-protocol/frontend)
14+
2. How to subscribe
15+
1. Click “Watch” at the top
16+
2. Select “Custom”
17+
3. Check “Releases”
18+
2. Whenever a major version update occurs, e.g. moving from 2.9.9 to 3.0.0, be sure to read the release notes and reboot your node within the next week to avoid issues
19+
1. Note that occasionally a resync will be required, which could cause \~20 minutes of downtime unless done in parallel with a second running node. Be sure to read the release instructions to avoid any interruptions.
20+
3. Follow [@deso](https://diamondapp.com/u/deso) and [@nader](https://diamondapp.com/u/nader) on [node.deso.org](https://node.deso.org/) or [DiamondApp](https://diamondapp.com/) for on-chain announcements and discussion
21+
4. Follow [@desoprotocol](https://twitter.com/desoprotocol) and [@nadertheory](https://twitter.com/nadertheory) on Twitter
22+
23+
## Instructions for Core Team <a href="#_9wdvp7tesgvk" id="_9wdvp7tesgvk"></a>
24+
25+
### Code preparation <a href="#_2tidf3tg7ql4" id="_2tidf3tg7ql4"></a>
26+
27+
1. Gate all the forking changes by a ForkHeight which initially should be set to `math.MaxUint32` for both mainnet and testnet, and 0 for regtest.
28+
2. Verify that the code passes all basic tests:
29+
1. core unit tests
30+
2. core integration tests
31+
3. node syncs with hypersync + txindex on testnet and mainnet
32+
4. node syncs with blocksync + txindex on testnet and mainnet
33+
5. rosetta can sync mainnet
34+
6. repeat steps c. and d. for postgres
35+
7. test that all of the changes work in the reference frontend
36+
8. make sure to run more comprehensive tests when deploying a complex change
37+
3. Assuming you’re ready with all the content for the steps in the next sections, you should announce everything at 12:00 PM PT and set the testnet fork height to 1 day from the announcement, and the mainnet fork height to **a minimum of** 7 days from the announcement.
38+
1. We will strive to give as much time for node operators to upgrade as possible, erring on the side of two weeks. However, in the interest of moving quickly, it will sometimes be necessary to make updates with less warning, though generally with no less than one week of warning.
39+
40+
### Release preparation <a href="#_nkce44tidl7s" id="_nkce44tidl7s"></a>
41+
42+
1. Come up with a description of what happens in the fork. Make it a couple sentences, or a couple paragraphs depending on the scope of the change. See what fits based on next steps.
43+
2. Draft a Fork Preparation Checklist document which is a step-by-step checklist/walkthrough of what node operators need to do in order to upgrade their nodes (inspired by [prism’s merge preparation checklist](https://docs.prylabs.network/docs/prepare-for-merge))
44+
3. (Optionally) Write a before and after table which describes what happens in the fork. The left column should describe different aspects of the “before” tech and the right shows how they updated / changed “after” the fork. (also [prism’s merge preparation docs](https://docs.prylabs.network/docs/prepare-for-merge#the-merge-before-and-now))
45+
4. Put all of the above in a new draft release on github, similar to how [consensys does it with teku](https://github.com/ConsenSys/teku/releases), or how [ethereum does it](https://github.com/ethereum/go-ethereum/releases)
46+
5. Assuming the release number is XX.YY.ZZ (major.minor.patch):
47+
1. You should increment the major XX
48+
1. \-> if the node operators will be required to upgrade their software within a fixed amount of time, otherwise risking ending up on a stale fork.
49+
2. You should increment the minor YY
50+
1. \-> if the node operators can do nothing and still properly participate in the network. The code augments the node in a backwards-compatible fashion.
51+
3. You should increment the patch ZZ
52+
1. \-> If the update fixes a bug in a backwards-compatible fashion.
53+
6. Cut the new release
54+
55+
### Announcement <a href="#_persa8n1a2dg" id="_persa8n1a2dg"></a>
56+
57+
1. Create twitter announcement for the fork
58+
2. Create diamond announcement for the fork
59+
3. Create discord announcement for the fork

0 commit comments

Comments
 (0)