Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 75c7c08496 | |||
| 0a482b1f15 |
14
README.md
14
README.md
@ -93,7 +93,7 @@ The lockdrop simulation validates the Zenith Network's token distribution mechan
|
|||||||
- Set zenith-stack version to use:
|
- Set zenith-stack version to use:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ZENITH_STACK_VERSION=v0.2.16
|
ZENITH_STACK_VERSION=v0.2.23
|
||||||
```
|
```
|
||||||
|
|
||||||
Check [releases](https://git.vdb.to/LaconicNetwork/zenith-stack/releases) page for version history.
|
Check [releases](https://git.vdb.to/LaconicNetwork/zenith-stack/releases) page for version history.
|
||||||
@ -170,7 +170,7 @@ The lockdrop simulation validates the Zenith Network's token distribution mechan
|
|||||||
|
|
||||||
# Run a playbook to install configure-zenith-vars
|
# Run a playbook to install configure-zenith-vars
|
||||||
# Use the same OUTPUT_DIR used for zenith-ansible
|
# Use the same OUTPUT_DIR used for zenith-ansible
|
||||||
zenith-ansible install-config-cli --install-dir "${OUTPUT_DIR}" -K
|
zenith-ansible install-config-cli --install-dir "${OUTPUT_DIR}"
|
||||||
```
|
```
|
||||||
|
|
||||||
Verify installation:
|
Verify installation:
|
||||||
@ -261,7 +261,7 @@ Now, run required system setup (installs docker and laconic-so):
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# sudo access required for installing docker
|
# sudo access required for installing docker
|
||||||
zenith-ansible system-setup -i dev -s stage1 -K --skip-tags onboarding
|
zenith-ansible system-setup -i dev -s stage1 --skip-tags onboarding,explorer
|
||||||
```
|
```
|
||||||
|
|
||||||
If your machine did not have Docker installed before, the above command will install it. On Ubuntu, you will need to activate the `docker` group for your current shell:
|
If your machine did not have Docker installed before, the above command will install it. On Ubuntu, you will need to activate the `docker` group for your current shell:
|
||||||
@ -281,7 +281,7 @@ zenith-ansible setup -i dev -s tge
|
|||||||
Setup the deployment directories and pull required docker images to sign the gentx and setup stage 1 validator node:
|
Setup the deployment directories and pull required docker images to sign the gentx and setup stage 1 validator node:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
zenith-ansible setup -i dev -s stage1 --skip-tags onboarding
|
zenith-ansible setup -i dev -s stage1 --skip-tags onboarding,explorer
|
||||||
```
|
```
|
||||||
|
|
||||||
These steps will create following in the [configured](#view-configuration) deployments directory:
|
These steps will create following in the [configured](#view-configuration) deployments directory:
|
||||||
@ -353,7 +353,7 @@ This will:
|
|||||||
Now, we can use this genesis file to run the stage 1 validator node:
|
Now, we can use this genesis file to run the stage 1 validator node:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
zenith-ansible start -i dev -s stage1 --skip-tags onboarding
|
zenith-ansible start -i dev -s stage1 --skip-tags onboarding,explorer
|
||||||
```
|
```
|
||||||
|
|
||||||
After starting the node, verify it's running correctly:
|
After starting the node, verify it's running correctly:
|
||||||
@ -494,13 +494,13 @@ cd $ZENITH_STACK_DIR/ansible
|
|||||||
Stop validator deployment:
|
Stop validator deployment:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
zenith-ansible stop -i dev -s stage1 --skip-tags onboarding
|
zenith-ansible stop -i dev -s stage1 --skip-tags onboarding,explorer
|
||||||
```
|
```
|
||||||
|
|
||||||
Clean up validator deployment:
|
Clean up validator deployment:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
zenith-ansible cleanup -i dev -s stage1 --skip-tags onboarding -K
|
zenith-ansible cleanup -i dev -s stage1 --skip-tags onboarding,explorer
|
||||||
```
|
```
|
||||||
|
|
||||||
### Python Virtual Environment
|
### Python Virtual Environment
|
||||||
|
|||||||
@ -22,8 +22,8 @@ NUM_STARS = pow(2, 16) - pow(2, 8)
|
|||||||
NUM_PLANETS = pow(2, 32) - pow(2, 16)
|
NUM_PLANETS = pow(2, 32) - pow(2, 16)
|
||||||
|
|
||||||
# Allocation Distribution
|
# Allocation Distribution
|
||||||
STAR_ALLOCATION_PERCENT = Decimal(NUM_STARS / pow(2, 16))
|
STAR_ALLOCATION_PERCENT = Decimal('0.99')
|
||||||
GALAXY_ALLOCATION_PERCENT = 1 - STAR_ALLOCATION_PERCENT
|
GALAXY_ALLOCATION_PERCENT = Decimal('0.01')
|
||||||
|
|
||||||
# Lockdrop Duration (5 years including 1 leap year)
|
# Lockdrop Duration (5 years including 1 leap year)
|
||||||
LOCKDROP_DURATION_SECONDS = 5 * 365.25 * 24 * 60 * 60
|
LOCKDROP_DURATION_SECONDS = 5 * 365.25 * 24 * 60 * 60
|
||||||
|
|||||||
@ -31,7 +31,7 @@ def print_constants_summary():
|
|||||||
# Lockdrop Allocation Table
|
# Lockdrop Allocation Table
|
||||||
lockdrop_df = pd.DataFrame({
|
lockdrop_df = pd.DataFrame({
|
||||||
'Parameter': ['Total Supply (1 $Z per Urbit ID)', 'Lockdrop Allocation %', 'Lockdrop Allocation ($Z)'],
|
'Parameter': ['Total Supply (1 $Z per Urbit ID)', 'Lockdrop Allocation %', 'Lockdrop Allocation ($Z)'],
|
||||||
'Value': [f"{TOTAL_SUPPLY:,}", f"{LOCKDROP_ALLOCATION_PERCENT:.1%}", f"{LOCKDROP_ALLOCATION:,.1f}"]
|
'Value': [f"{TOTAL_SUPPLY:,}", f"{LOCKDROP_ALLOCATION_PERCENT:.2%}", f"{LOCKDROP_ALLOCATION:,.1f}"]
|
||||||
})
|
})
|
||||||
print_table_with_borders(lockdrop_df, "🔒 LOCKDROP ALLOCATION")
|
print_table_with_borders(lockdrop_df, "🔒 LOCKDROP ALLOCATION")
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ def print_constants_summary():
|
|||||||
# Penalty Schedule Table
|
# Penalty Schedule Table
|
||||||
penalty_df = pd.DataFrame({
|
penalty_df = pd.DataFrame({
|
||||||
'Lock Period': ['5 Years', '4 Years', '3 Years', '2 Years', '1 Year'],
|
'Lock Period': ['5 Years', '4 Years', '3 Years', '2 Years', '1 Year'],
|
||||||
'Penalty Rate': [f"{PENALTY_RATES[year]:.1%}" for year in [5, 4, 3, 2, 1]],
|
'Penalty Rate': [f"{PENALTY_RATES[year]:.2%}" for year in [5, 4, 3, 2, 1]],
|
||||||
'Token % of Max': ['100%', '80%', '60%', '40%', '20%']
|
'Token % of Max': ['100%', '80%', '60%', '40%', '20%']
|
||||||
})
|
})
|
||||||
print_table_with_borders(penalty_df, "⚖️ PENALTY SCHEDULE")
|
print_table_with_borders(penalty_df, "⚖️ PENALTY SCHEDULE")
|
||||||
@ -132,7 +132,7 @@ def print_penalty_analysis(allocation_data):
|
|||||||
|
|
||||||
penalty_analysis_df = pd.DataFrame({
|
penalty_analysis_df = pd.DataFrame({
|
||||||
'Lock Period': ['5 Years', '4 Years', '3 Years', '2 Years', '1 Year'],
|
'Lock Period': ['5 Years', '4 Years', '3 Years', '2 Years', '1 Year'],
|
||||||
'Penalty Rate': [f"{PENALTY_RATES[year]:.1%}" for year in [5, 4, 3, 2, 1]],
|
'Penalty Rate': [f"{PENALTY_RATES[year]:.2%}" for year in [5, 4, 3, 2, 1]],
|
||||||
'Star Allocation ($Z)': [f"{adjusted_max_allocation_per_star * (1 - PENALTY_RATES[year]):,.6f}" for year in [5, 4, 3, 2, 1]],
|
'Star Allocation ($Z)': [f"{adjusted_max_allocation_per_star * (1 - PENALTY_RATES[year]):,.6f}" for year in [5, 4, 3, 2, 1]],
|
||||||
'Galaxy Allocation ($Z)': [f"{adjusted_max_allocation_per_galaxy * (1 - PENALTY_RATES[year]):,.6f}" for year in [5, 4, 3, 2, 1]],
|
'Galaxy Allocation ($Z)': [f"{adjusted_max_allocation_per_galaxy * (1 - PENALTY_RATES[year]):,.6f}" for year in [5, 4, 3, 2, 1]],
|
||||||
'vs Max Allocation': ['100%', '80%', '60%', '40%', '20%']
|
'vs Max Allocation': ['100%', '80%', '60%', '40%', '20%']
|
||||||
@ -153,9 +153,9 @@ def print_participation_summary(allocation_data):
|
|||||||
participation_df = pd.DataFrame({
|
participation_df = pd.DataFrame({
|
||||||
'Lock Period': ['1 Year', '2 Years', '3 Years', '4 Years', '5 Years', 'Total'],
|
'Lock Period': ['1 Year', '2 Years', '3 Years', '4 Years', '5 Years', 'Total'],
|
||||||
'Stars': [f"{stars_counts[year]:,}" for year in [1, 2, 3, 4, 5]] + [f"{total_stars_locked:,}"],
|
'Stars': [f"{stars_counts[year]:,}" for year in [1, 2, 3, 4, 5]] + [f"{total_stars_locked:,}"],
|
||||||
'% of Total Stars': [f"{stars_counts[year]/NUM_STARS:.2%}" for year in [1, 2, 3, 4, 5]] + [f"{total_stars_locked/NUM_STARS:.1%}"],
|
'% of Total Stars': [f"{stars_counts[year]/NUM_STARS:.2%}" for year in [1, 2, 3, 4, 5]] + [f"{total_stars_locked/NUM_STARS:.2%}"],
|
||||||
'Galaxies': [f"{galaxies_counts[year]:,}" for year in [1, 2, 3, 4, 5]] + [f"{total_galaxies_locked:,}"],
|
'Galaxies': [f"{galaxies_counts[year]:,}" for year in [1, 2, 3, 4, 5]] + [f"{total_galaxies_locked:,}"],
|
||||||
'% of Total Galaxies': [f"{galaxies_counts[year]/NUM_GALAXIES:.2%}" for year in [1, 2, 3, 4, 5]] + [f"{total_galaxies_locked/NUM_GALAXIES:.1%}"],
|
'% of Total Galaxies': [f"{galaxies_counts[year]/NUM_GALAXIES:.2%}" for year in [1, 2, 3, 4, 5]] + [f"{total_galaxies_locked/NUM_GALAXIES:.2%}"],
|
||||||
'Total': [f"{stars_counts[year] + galaxies_counts[year]:,}" for year in [1, 2, 3, 4, 5]] + [f"{total_stars_locked + total_galaxies_locked:,}"],
|
'Total': [f"{stars_counts[year] + galaxies_counts[year]:,}" for year in [1, 2, 3, 4, 5]] + [f"{total_stars_locked + total_galaxies_locked:,}"],
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -218,8 +218,8 @@ def print_final_allocations_and_verification(allocation_data, final_data):
|
|||||||
# Star Final Allocations Table
|
# Star Final Allocations Table
|
||||||
star_final_df = pd.DataFrame({
|
star_final_df = pd.DataFrame({
|
||||||
'Lock Period': ['5 Years', '4 Years', '3 Years', '2 Years', '1 Year'],
|
'Lock Period': ['5 Years', '4 Years', '3 Years', '2 Years', '1 Year'],
|
||||||
'Penalty': [f"{PENALTY_RATES[year]:.1%}" for year in [5, 4, 3, 2, 1]],
|
'Penalty': [f"{PENALTY_RATES[year]:.2%}" for year in [5, 4, 3, 2, 1]],
|
||||||
'Final Allocation ($Z)': [f"{final_star_allocations[year]:,.8f}" for year in [5, 4, 3, 2, 1]],
|
'Final Allocation (per star) ($Z)': [f"{final_star_allocations[year]:,.8f}" for year in [5, 4, 3, 2, 1]],
|
||||||
'Z per Block': [f"{star_z_per_block[year]:,.8f}" for year in [5, 4, 3, 2, 1]],
|
'Z per Block': [f"{star_z_per_block[year]:,.8f}" for year in [5, 4, 3, 2, 1]],
|
||||||
'Participants': [f"{stars_counts[year]:,}" for year in [5, 4, 3, 2, 1]]
|
'Participants': [f"{stars_counts[year]:,}" for year in [5, 4, 3, 2, 1]]
|
||||||
})
|
})
|
||||||
@ -228,8 +228,8 @@ def print_final_allocations_and_verification(allocation_data, final_data):
|
|||||||
# Galaxy Final Allocations Table
|
# Galaxy Final Allocations Table
|
||||||
galaxy_final_df = pd.DataFrame({
|
galaxy_final_df = pd.DataFrame({
|
||||||
'Lock Period': ['5 Years', '4 Years', '3 Years', '2 Years', '1 Year'],
|
'Lock Period': ['5 Years', '4 Years', '3 Years', '2 Years', '1 Year'],
|
||||||
'Penalty': [f"{PENALTY_RATES[year]:.1%}" for year in [5, 4, 3, 2, 1]],
|
'Penalty': [f"{PENALTY_RATES[year]:.2%}" for year in [5, 4, 3, 2, 1]],
|
||||||
'Final Allocation ($Z)': [f"{final_galaxy_allocations[year]:,.8f}" for year in [5, 4, 3, 2, 1]],
|
'Final Allocation (per galaxy) ($Z)': [f"{final_galaxy_allocations[year]:,.8f}" for year in [5, 4, 3, 2, 1]],
|
||||||
'Z per Block': [f"{galaxy_z_per_block[year]:,.8f}" for year in [5, 4, 3, 2, 1]],
|
'Z per Block': [f"{galaxy_z_per_block[year]:,.8f}" for year in [5, 4, 3, 2, 1]],
|
||||||
'Participants': [f"{galaxies_counts[year]:,}" for year in [5, 4, 3, 2, 1]]
|
'Participants': [f"{galaxies_counts[year]:,}" for year in [5, 4, 3, 2, 1]]
|
||||||
})
|
})
|
||||||
|
|||||||
@ -60,7 +60,7 @@ To reproduce the results from any one of the test runs, follow these steps to ru
|
|||||||
- Set zenith-stack version to use:
|
- Set zenith-stack version to use:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ZENITH_STACK_VERSION=v0.2.16
|
ZENITH_STACK_VERSION=v0.2.23
|
||||||
```
|
```
|
||||||
|
|
||||||
Check [releases](https://git.vdb.to/LaconicNetwork/zenith-stack/releases) page for version history.
|
Check [releases](https://git.vdb.to/LaconicNetwork/zenith-stack/releases) page for version history.
|
||||||
@ -139,7 +139,7 @@ To reproduce the results from any one of the test runs, follow these steps to ru
|
|||||||
|
|
||||||
# Run a playbook to install configure-zenith-vars
|
# Run a playbook to install configure-zenith-vars
|
||||||
# Use the same OUTPUT_DIR used for zenith-ansible
|
# Use the same OUTPUT_DIR used for zenith-ansible
|
||||||
zenith-ansible install-config-cli --install-dir "${OUTPUT_DIR}" -K
|
zenith-ansible install-config-cli --install-dir "${OUTPUT_DIR}"
|
||||||
```
|
```
|
||||||
|
|
||||||
Verify installation:
|
Verify installation:
|
||||||
@ -219,7 +219,7 @@ Now, run required system setup (installs docker and laconic-so):
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# sudo access required for installing docker
|
# sudo access required for installing docker
|
||||||
zenith-ansible system-setup -i dev -s stage1 -K --skip-tags onboarding
|
zenith-ansible system-setup -i dev -s stage1 --skip-tags onboarding,explorer
|
||||||
```
|
```
|
||||||
|
|
||||||
If your machine did not have Docker installed before, the above command will install it. On Ubuntu, you will need to activate the `docker` group for your current shell:
|
If your machine did not have Docker installed before, the above command will install it. On Ubuntu, you will need to activate the `docker` group for your current shell:
|
||||||
@ -239,7 +239,7 @@ zenith-ansible setup -i dev -s tge
|
|||||||
Setup the deployment directories and pull required docker images to sign the gentx and setup stage 1 validator node:
|
Setup the deployment directories and pull required docker images to sign the gentx and setup stage 1 validator node:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
zenith-ansible setup -i dev -s stage1 --skip-tags onboarding
|
zenith-ansible setup -i dev -s stage1 --skip-tags onboarding,explorer
|
||||||
```
|
```
|
||||||
|
|
||||||
These steps will create following in the [configured](#view-configuration) deployments directory:
|
These steps will create following in the [configured](#view-configuration) deployments directory:
|
||||||
@ -318,7 +318,7 @@ This will:
|
|||||||
Now, we can use this genesis file to run the stage 1 validator node:
|
Now, we can use this genesis file to run the stage 1 validator node:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
zenith-ansible start -i dev -s stage1 --skip-tags onboarding
|
zenith-ansible start -i dev -s stage1 --skip-tags onboarding,explorer
|
||||||
```
|
```
|
||||||
|
|
||||||
After starting the node, verify it's running correctly:
|
After starting the node, verify it's running correctly:
|
||||||
@ -450,13 +450,13 @@ cd $ZENITH_STACK_DIR/ansible
|
|||||||
Stop validator deployment:
|
Stop validator deployment:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
zenith-ansible stop -i dev -s stage1 --skip-tags onboarding
|
zenith-ansible stop -i dev -s stage1 --skip-tags onboarding,explorer
|
||||||
```
|
```
|
||||||
|
|
||||||
Clean up validator deployment:
|
Clean up validator deployment:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
zenith-ansible cleanup -i dev -s stage1 --skip-tags onboarding -K
|
zenith-ansible cleanup -i dev -s stage1 --skip-tags onboarding,explorer
|
||||||
```
|
```
|
||||||
|
|
||||||
### Python Virtual Environment
|
### Python Virtual Environment
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user