From aacead62c0eb052068172eba6b53fc85874d6d54 Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Sat, 21 Sep 2019 22:18:59 -0700 Subject: [PATCH] Move images from img/ to .gitbook/assets --- book/makefile | 6 +++--- book/src/{img => .gitbook/assets}/consensus.svg | 0 .../{img => .gitbook/assets}/data-plane-fanout.svg | 0 .../assets}/data-plane-neighborhood.svg | 0 .../{img => .gitbook/assets}/data-plane-seeding.svg | 0 book/src/{img => .gitbook/assets}/data-plane.svg | 0 .../assets}/economic_design_infl_230719.png | Bin .../{img => .gitbook/assets}/fork-generation.svg | 0 book/src/{img => .gitbook/assets}/forks-pruned.svg | 0 book/src/{img => .gitbook/assets}/forks-pruned2.svg | 0 book/src/{img => .gitbook/assets}/forks.svg | 0 book/src/{img => .gitbook/assets}/p_ex_schedule.png | Bin book/src/{img => .gitbook/assets}/p_ex_supply.png | Bin .../assets}/passive-staking-callflow.svg | 0 book/src/{img => .gitbook/assets}/porep_reward.png | Bin book/src/{img => .gitbook/assets}/runtime.svg | 0 book/src/{img => .gitbook/assets}/sdk-tools.svg | 0 .../{img => .gitbook/assets}/spv-bank-merkle.svg | 0 .../{img => .gitbook/assets}/spv-block-merkle.svg | 0 book/src/{img => .gitbook/assets}/tpu.svg | 0 book/src/{img => .gitbook/assets}/tvu.svg | 0 .../assets}/validation_client_interest_rates.png | Bin .../{img => .gitbook/assets}/validator-proposal.svg | 0 book/src/{img => .gitbook/assets}/validator.svg | 0 book/src/ed_economic_sustainability.md | 2 +- book/src/ed_overview.md | 2 +- ...d_vce_state_validation_protocol_based_rewards.md | 6 +++--- book/src/fork-generation.md | 2 +- book/src/managing-forks.md | 6 +++--- book/src/programs.md | 2 +- book/src/runtime.md | 2 +- book/src/simple-payment-and-state-verification.md | 4 ++-- book/src/stake-delegation-and-rewards.md | 2 +- book/src/tpu.md | 2 +- book/src/turbine-block-propagation.md | 8 ++++---- book/src/tvu.md | 2 +- book/src/validator-proposal.md | 2 +- book/src/validator.md | 2 +- 38 files changed, 25 insertions(+), 25 deletions(-) rename book/src/{img => .gitbook/assets}/consensus.svg (100%) rename book/src/{img => .gitbook/assets}/data-plane-fanout.svg (100%) rename book/src/{img => .gitbook/assets}/data-plane-neighborhood.svg (100%) rename book/src/{img => .gitbook/assets}/data-plane-seeding.svg (100%) rename book/src/{img => .gitbook/assets}/data-plane.svg (100%) rename book/src/{img => .gitbook/assets}/economic_design_infl_230719.png (100%) rename book/src/{img => .gitbook/assets}/fork-generation.svg (100%) rename book/src/{img => .gitbook/assets}/forks-pruned.svg (100%) rename book/src/{img => .gitbook/assets}/forks-pruned2.svg (100%) rename book/src/{img => .gitbook/assets}/forks.svg (100%) rename book/src/{img => .gitbook/assets}/p_ex_schedule.png (100%) rename book/src/{img => .gitbook/assets}/p_ex_supply.png (100%) rename book/src/{img => .gitbook/assets}/passive-staking-callflow.svg (100%) rename book/src/{img => .gitbook/assets}/porep_reward.png (100%) rename book/src/{img => .gitbook/assets}/runtime.svg (100%) rename book/src/{img => .gitbook/assets}/sdk-tools.svg (100%) rename book/src/{img => .gitbook/assets}/spv-bank-merkle.svg (100%) rename book/src/{img => .gitbook/assets}/spv-block-merkle.svg (100%) rename book/src/{img => .gitbook/assets}/tpu.svg (100%) rename book/src/{img => .gitbook/assets}/tvu.svg (100%) rename book/src/{img => .gitbook/assets}/validation_client_interest_rates.png (100%) rename book/src/{img => .gitbook/assets}/validator-proposal.svg (100%) rename book/src/{img => .gitbook/assets}/validator.svg (100%) diff --git a/book/makefile b/book/makefile index 79e04165e8..132a12f58f 100644 --- a/book/makefile +++ b/book/makefile @@ -2,7 +2,7 @@ BOB_SRCS=$(wildcard art/*.bob) MSC_SRCS=$(wildcard art/*.msc) MD_SRCS=$(wildcard src/*.md) -SVG_IMGS=$(BOB_SRCS:art/%.bob=src/img/%.svg) $(MSC_SRCS:art/%.msc=src/img/%.svg) +SVG_IMGS=$(BOB_SRCS:art/%.bob=src/.gitbook/assets/%.svg) $(MSC_SRCS:art/%.msc=src/.gitbook/assets/%.svg) TARGET=html/index.html TEST_STAMP=src/tests.ok @@ -19,11 +19,11 @@ open: $(TEST_STAMP) watch: $(SVG_IMGS) mdbook watch -src/img/%.svg: art/%.bob +src/.gitbook/assets/%.svg: art/%.bob @mkdir -p $(@D) svgbob < $< > $@ - src/img/%.svg: art/%.msc +src/.gitbook/assets/%.svg: art/%.msc @mkdir -p $(@D) mscgen -T svg -i $< -o $@ diff --git a/book/src/img/consensus.svg b/book/src/.gitbook/assets/consensus.svg similarity index 100% rename from book/src/img/consensus.svg rename to book/src/.gitbook/assets/consensus.svg diff --git a/book/src/img/data-plane-fanout.svg b/book/src/.gitbook/assets/data-plane-fanout.svg similarity index 100% rename from book/src/img/data-plane-fanout.svg rename to book/src/.gitbook/assets/data-plane-fanout.svg diff --git a/book/src/img/data-plane-neighborhood.svg b/book/src/.gitbook/assets/data-plane-neighborhood.svg similarity index 100% rename from book/src/img/data-plane-neighborhood.svg rename to book/src/.gitbook/assets/data-plane-neighborhood.svg diff --git a/book/src/img/data-plane-seeding.svg b/book/src/.gitbook/assets/data-plane-seeding.svg similarity index 100% rename from book/src/img/data-plane-seeding.svg rename to book/src/.gitbook/assets/data-plane-seeding.svg diff --git a/book/src/img/data-plane.svg b/book/src/.gitbook/assets/data-plane.svg similarity index 100% rename from book/src/img/data-plane.svg rename to book/src/.gitbook/assets/data-plane.svg diff --git a/book/src/img/economic_design_infl_230719.png b/book/src/.gitbook/assets/economic_design_infl_230719.png similarity index 100% rename from book/src/img/economic_design_infl_230719.png rename to book/src/.gitbook/assets/economic_design_infl_230719.png diff --git a/book/src/img/fork-generation.svg b/book/src/.gitbook/assets/fork-generation.svg similarity index 100% rename from book/src/img/fork-generation.svg rename to book/src/.gitbook/assets/fork-generation.svg diff --git a/book/src/img/forks-pruned.svg b/book/src/.gitbook/assets/forks-pruned.svg similarity index 100% rename from book/src/img/forks-pruned.svg rename to book/src/.gitbook/assets/forks-pruned.svg diff --git a/book/src/img/forks-pruned2.svg b/book/src/.gitbook/assets/forks-pruned2.svg similarity index 100% rename from book/src/img/forks-pruned2.svg rename to book/src/.gitbook/assets/forks-pruned2.svg diff --git a/book/src/img/forks.svg b/book/src/.gitbook/assets/forks.svg similarity index 100% rename from book/src/img/forks.svg rename to book/src/.gitbook/assets/forks.svg diff --git a/book/src/img/p_ex_schedule.png b/book/src/.gitbook/assets/p_ex_schedule.png similarity index 100% rename from book/src/img/p_ex_schedule.png rename to book/src/.gitbook/assets/p_ex_schedule.png diff --git a/book/src/img/p_ex_supply.png b/book/src/.gitbook/assets/p_ex_supply.png similarity index 100% rename from book/src/img/p_ex_supply.png rename to book/src/.gitbook/assets/p_ex_supply.png diff --git a/book/src/img/passive-staking-callflow.svg b/book/src/.gitbook/assets/passive-staking-callflow.svg similarity index 100% rename from book/src/img/passive-staking-callflow.svg rename to book/src/.gitbook/assets/passive-staking-callflow.svg diff --git a/book/src/img/porep_reward.png b/book/src/.gitbook/assets/porep_reward.png similarity index 100% rename from book/src/img/porep_reward.png rename to book/src/.gitbook/assets/porep_reward.png diff --git a/book/src/img/runtime.svg b/book/src/.gitbook/assets/runtime.svg similarity index 100% rename from book/src/img/runtime.svg rename to book/src/.gitbook/assets/runtime.svg diff --git a/book/src/img/sdk-tools.svg b/book/src/.gitbook/assets/sdk-tools.svg similarity index 100% rename from book/src/img/sdk-tools.svg rename to book/src/.gitbook/assets/sdk-tools.svg diff --git a/book/src/img/spv-bank-merkle.svg b/book/src/.gitbook/assets/spv-bank-merkle.svg similarity index 100% rename from book/src/img/spv-bank-merkle.svg rename to book/src/.gitbook/assets/spv-bank-merkle.svg diff --git a/book/src/img/spv-block-merkle.svg b/book/src/.gitbook/assets/spv-block-merkle.svg similarity index 100% rename from book/src/img/spv-block-merkle.svg rename to book/src/.gitbook/assets/spv-block-merkle.svg diff --git a/book/src/img/tpu.svg b/book/src/.gitbook/assets/tpu.svg similarity index 100% rename from book/src/img/tpu.svg rename to book/src/.gitbook/assets/tpu.svg diff --git a/book/src/img/tvu.svg b/book/src/.gitbook/assets/tvu.svg similarity index 100% rename from book/src/img/tvu.svg rename to book/src/.gitbook/assets/tvu.svg diff --git a/book/src/img/validation_client_interest_rates.png b/book/src/.gitbook/assets/validation_client_interest_rates.png similarity index 100% rename from book/src/img/validation_client_interest_rates.png rename to book/src/.gitbook/assets/validation_client_interest_rates.png diff --git a/book/src/img/validator-proposal.svg b/book/src/.gitbook/assets/validator-proposal.svg similarity index 100% rename from book/src/img/validator-proposal.svg rename to book/src/.gitbook/assets/validator-proposal.svg diff --git a/book/src/img/validator.svg b/book/src/.gitbook/assets/validator.svg similarity index 100% rename from book/src/img/validator.svg rename to book/src/.gitbook/assets/validator.svg diff --git a/book/src/ed_economic_sustainability.md b/book/src/ed_economic_sustainability.md index a739f84bc7..5a680923c4 100644 --- a/book/src/ed_economic_sustainability.md +++ b/book/src/ed_economic_sustainability.md @@ -7,7 +7,7 @@ The dominant remittances from the Solana mining pool are validator and replicato The Replicator rewards are to be delivered to replicators as a portion of the network inflation after successful PoRep validation. The per-PoRep reward amount is determined as a function of the total network storage redundancy at the time of the PoRep validation and the network goal redundancy. This function is likely to take the form of a discount from a base reward to be delivered when the network has achieved and maintained its goal redundancy. An example of such a reward function is shown in **Figure 3** -

==PoRep Reward Curve ==

+

==PoRep Reward Curve ==

**Figure 3**: Example PoRep reward design as a function of global network storage redundancy. diff --git a/book/src/ed_overview.md b/book/src/ed_overview.md index 534f9989ef..474daffb10 100644 --- a/book/src/ed_overview.md +++ b/book/src/ed_overview.md @@ -11,6 +11,6 @@ Transaction fees are market-based participant-to-participant transfers, attached A high-level schematic of Solana’s crypto-economic design is shown below in **Figure 1**. The specifics of validation-client economics are described in sections: [Validation-client Economics](ed_validation_client_economics.md), [State-validation Protocol-based Rewards](ed_vce_state_validation_protocol_based_rewards.md), [State-validation Transaction Fees](ed_vce_state_validation_transaction_fees.md) and [Replication-validation Transaction Fees](ed_vce_replication_validation_transaction_fees.md). Also, the chapter titled [Validation Stake Delegation](ed_vce_validation_stake_delegation.md) closes with a discussion of validator delegation opportunties and marketplace. Additionally, in [Storage Rent Economics](ed_storage_rent_economics.md), we describe an implementation of storage rent to account for the externality costs of maintaining the active state of the ledger. The [Replication-client Economics](ed_replication_client_economics.md) chapter will review the Solana network design for global ledger storage/redundancy and replicator-client economics ([Storage-replication rewards](ed_rce_storage_replication_rewards.md)) along with a replicator-to-validator delegation mechanism designed to aide participant on-boarding into the Solana economy discussed in [Replication-client Reward Auto-delegation](ed_rce_replication_client_reward_auto_delegation.md). An outline of features for an MVP economic design is discussed in the [Economic Design MVP](ed_mvp.md) section. Finally, in chapter [Attack Vectors](ed_attack_vectors.md), various attack vectors will be described and potential vulnerabilities explored and parameterized. -

== Solana Economic Design Diagram ==

+

== Solana Economic Design Diagram ==

**Figure 1**: Schematic overview of Solana economic incentive design. diff --git a/book/src/ed_vce_state_validation_protocol_based_rewards.md b/book/src/ed_vce_state_validation_protocol_based_rewards.md index 3a18519798..77ccd92eb3 100644 --- a/book/src/ed_vce_state_validation_protocol_based_rewards.md +++ b/book/src/ed_vce_state_validation_protocol_based_rewards.md @@ -21,10 +21,10 @@ The first factor is a function of protocol parameters only (i.e. independent of At any given point in time, a specific validator's interest rate can be determined based on the porportion of circulating supply that is staked by the network and the validator's uptime/activity in the previous epoch. For example, consider a hypothetical instance of the network with an initial circulating token supply of 250MM tokens with an additional 250MM vesting over 3 years. Additionally an inflation rate is specified at network launch of 7.5%, and a disinflationary schedule of 20% decrease in inflation rate per year (the actual rates to be implemented are to be worked out during the testnet experimentation phase of mainnet launch). With these broad assumptions, the 10-year inflation rate (adjusted daily for this example) is shown in **Figure 2**, while the total circulating token supply is illustrated in **Figure 3**. Neglected in this toy-model is the inflation supression due to the portion of each transaction fee that is to be destroyed. -

drawing

+

drawing

**Figure 2:** In this example schedule, the annual inflation rate [%] reduces at around 20% per year, until it reaches the long-term, fixed, 1.5% rate. -

drawing

+

drawing

**Figure 3:** The total token supply over a 10-year period, based on an initial 250MM tokens with the disinflationary inflation schedule as shown in **Figure 2** Over time, the interest rate, at a fixed network staked percentage, will reduce concordant with network inflation. Validation-client interest rates are designed to be higher in the early days of the network to incentivize participation and jumpstart the network economy. As previously mentioned, the inflation rate is expected to stabalize near 1-2% which also results in a fixed, long-term, interest rate to be provided to validator-clients. This value does not represent the total interest available to validator-clients as transaction fees for state-validation and ledger storage replication (PoReps) are not accounted for here. @@ -33,7 +33,7 @@ Given these example parameters, annualized validator-specific interest rates can -

drawing

+

drawing

**Figure 4:** Shown here are example validator interest rates over time, neglecting transaction fees, segmented by fraction of total circulating supply bonded as stake. diff --git a/book/src/fork-generation.md b/book/src/fork-generation.md index 906a8267ca..9d7e6d0941 100644 --- a/book/src/fork-generation.md +++ b/book/src/fork-generation.md @@ -67,7 +67,7 @@ PoH stream with possible forks over time. L1, L2, etc. are leader slots, and represent ticks only, and time flows downwards in the diagram. -Fork generation +Fork generation Note that an `E` appearing on 2 forks at the same slot is a slashable condition, so a validator observing `E3` and `E3'` can slash L3 and safely diff --git a/book/src/managing-forks.md b/book/src/managing-forks.md index 22b6eaf04f..97e752f8e9 100644 --- a/book/src/managing-forks.md +++ b/book/src/managing-forks.md @@ -30,7 +30,7 @@ An active fork is as a sequence of checkpoints that has a length at least one longer than the rollback depth. The shortest fork will have a length exactly one longer than the rollback depth. For example: -Forks +Forks The following sequences are *active forks*: @@ -50,14 +50,14 @@ can into the root. Starting from the example above, wth a rollback depth of 2, consider a vote on 5 versus a vote on 6. First, a vote on 5: -Forks after pruning +Forks after pruning The new root is 2, and any active forks that are not descendants from 2 are pruned. Alternatively, a vote on 6: -Forks +Forks The tree remains with a root of 1, since the active fork starting at 6 is only 2 checkpoints from the root. diff --git a/book/src/programs.md b/book/src/programs.md index b7aeaa622c..aff15aafd4 100644 --- a/book/src/programs.md +++ b/book/src/programs.md @@ -10,7 +10,7 @@ transaction are discarded. ## Deploying Programs to a Cluster -SDK tools +SDK tools As shown in the diagram above a client creates a program and compiles it to an ELF shared object containing BPF bytecode and sends it to the Solana cluster. diff --git a/book/src/runtime.md b/book/src/runtime.md index 39fdf83a0e..83ec6f7d4b 100644 --- a/book/src/runtime.md +++ b/book/src/runtime.md @@ -34,7 +34,7 @@ memory is committed. The TVU runtime ensures that PoH verification occurs before the runtime processes any transactions. -Runtime pipeline +Runtime pipeline At the *execute* stage, the loaded accounts have no data dependencies, so all the programs can be executed in parallel. diff --git a/book/src/simple-payment-and-state-verification.md b/book/src/simple-payment-and-state-verification.md index bb3903996b..344100c882 100644 --- a/book/src/simple-payment-and-state-verification.md +++ b/book/src/simple-payment-and-state-verification.md @@ -68,7 +68,7 @@ transaction to the required set of validator votes. An Entry-Merkle is a Merkle Root including all transactions in the entry, sorted by signature. -Block Merkle Diagram +Block Merkle Diagram A Block-Merkle is a Merkle root of all the Entry-Merkles sequenced in the block. Transaction status is necessary for the receipt because the state receipt is @@ -95,7 +95,7 @@ state receipt would point to the same value for A or B. The Bank-Merkle is computed from the Merkle Tree of the new state changes, along with the Previous Bank-Merkle, and the Block-Merkle. -Bank Merkle Diagram +Bank Merkle Diagram A state receipt contains only the state changes occurring in the block. A direct Merkle Path to the current Bank-Merkle guarantees the state value at that bank diff --git a/book/src/stake-delegation-and-rewards.md b/book/src/stake-delegation-and-rewards.md index 7943e69b12..72592ebdaf 100644 --- a/book/src/stake-delegation-and-rewards.md +++ b/book/src/stake-delegation-and-rewards.md @@ -199,7 +199,7 @@ stake. ## Example Callflow -Passive Staking Callflow +Passive Staking Callflow ## Staking Rewards diff --git a/book/src/tpu.md b/book/src/tpu.md index 2636b35233..4783354bbe 100644 --- a/book/src/tpu.md +++ b/book/src/tpu.md @@ -1,3 +1,3 @@ # The Transaction Processing Unit -TPU Block Diagram +TPU Block Diagram diff --git a/book/src/turbine-block-propagation.md b/book/src/turbine-block-propagation.md index c07448537b..65d8e74529 100644 --- a/book/src/turbine-block-propagation.md +++ b/book/src/turbine-block-propagation.md @@ -56,15 +56,15 @@ The following diagram shows how the Leader sends shreds with a Fanout of 2 to Neighborhood 0 in Layer 0 and how the nodes in Neighborhood 0 share their data with each other. -Leader sends shreds to Neighborhood 0 in Layer 0 +Leader sends shreds to Neighborhood 0 in Layer 0 The following diagram shows how Neighborhood 0 fans out to Neighborhoods 1 and 2. -Neighborhood 0 Fanout to Neighborhood 1 and 2 +Neighborhood 0 Fanout to Neighborhood 1 and 2 Finally, the following diagram shows a two layer cluster with a Fanout of 2. -Two layer cluster with a Fanout of 2 +Two layer cluster with a Fanout of 2 #### Configuration Values @@ -87,4 +87,4 @@ in a neighborhood in the upper layer, we'd need a big network failure in the upp layers to end up with incomplete data. Inner workings of a neighborhood +src=".gitbook/assets/data-plane-neighborhood.svg" class="center"/> diff --git a/book/src/tvu.md b/book/src/tvu.md index b2d63cd47c..9aac5d08dd 100644 --- a/book/src/tvu.md +++ b/book/src/tvu.md @@ -1,3 +1,3 @@ # The Transaction Validation Unit -TVU Block Diagram +TVU Block Diagram diff --git a/book/src/validator-proposal.md b/book/src/validator-proposal.md index 04be634b12..a47b572343 100644 --- a/book/src/validator-proposal.md +++ b/book/src/validator-proposal.md @@ -36,7 +36,7 @@ We unwrap the many abstraction layers and build a single pipeline that can toggle leader mode on whenever the validator's ID shows up in the leader schedule. -Validator block diagram +Validator block diagram ## Notable changes diff --git a/book/src/validator.md b/book/src/validator.md index 3e006c246f..ae8f4548ce 100644 --- a/book/src/validator.md +++ b/book/src/validator.md @@ -1,6 +1,6 @@ # Anatomy of a Validator -Validator block diagrams +Validator block diagrams ## Pipelining