From 3de63570f693e7d33d33079dc8b1edd3d01d75e5 Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Wed, 28 Nov 2018 15:25:07 -0700 Subject: [PATCH] Better formatting and lots of terminology links --- book/src/terminology.md | 242 +++++++++++++++++++++++++++++++++------- 1 file changed, 200 insertions(+), 42 deletions(-) diff --git a/book/src/terminology.md b/book/src/terminology.md index 8d92fe937..9002dac93 100644 --- a/book/src/terminology.md +++ b/book/src/terminology.md @@ -1,51 +1,209 @@ -## Terminology +# Terminology -### Teminology Currently in Use +## Teminology Currently in Use -The following list contains words commonly used throughout the Solana architecture. +The following list contains words commonly used throughout the Solana +architecture. -* account - a persistent file addressed by pubkey and with tokens tracking its lifetime -* block - the entries generated within a slot -* bootstrap leader - the first fullnode to take the leader role -* client - a node that utilizes the cluster -* cluster - a set of fullnodes maintaining a single ledger -* control plane - a gossip network connecting all nodes of a cluster -* data plane - a multicast network used to efficiently validate entries and gain consensus -* entry - an entry on the ledger - either a tick or a transactions entry -* finality - the wallclock duration between a leader creating a tick entry and recognizing - a supermajority of validator votes with a ledger interpretation that matches the leader's -* fork - a ledger derived from common entries but then diverged -* fullnode - a full participant in the cluster - either a leader or validator node -* genesis block - the first entries of the ledger -* instruction - the smallest unit of a program that a client can include in a transaction -* keypair - a public and secret key -* leader - the role of a fullnode when it is appending entries to the ledger -* ledger - a list of entries containing transactions signed by clients -* ledger vote - a hash of the fullnode's state at a given tick height -* lockout - the duration of time in which a fullnode is unable to vote on another fork -* node count - the number of fullnodes participating in a cluster -* program - the code that interprets instructions -* pubkey - a shorthand for public key -* public key - the public key of a keypair -* replicator - a type of client that stores copies of segments of the ledger -* secret key - the private key of a keypair -* slot - the time in which a single leader may produce entries -* stake - tokens forfeit to the cluster if malicious fullnode behavior can be proven -* tick - a ledger entry that estimates wallclock duration -* tick height - the Nth tick in the ledger -* tps - transactions per second -* transaction - one or more instructions signed by the client and executed atomically -* transactions entry - a set of transactions that may be executed in parallel -* validator - the role of a fullnode when it is validating the leader's latest entries +#### account + +A persistent file addressed by [public key](#public-key) and with tokens +tracking its lifetime. + +#### block + +The [entries](#entry) generated within a [slot](#slot). + +#### bootstrap leader + +The first [fullnode](#fullnode) to take the [leader](#leader) role. + +#### client + +A [node](#node) that utilizes the [cluster](#cluster). + +#### cluster + +A set of [fullnodes](#fullnode) maintaining a single [ledger](#ledger). + +#### control plane + +A gossip network connecting all [nodes](#node) of a [cluster](#cluster). + +#### data plane + +A multicast network used to efficiently validate [entries](#entry) and gain +consensus. + +#### entry + +An entry on the [ledger](#ledger) either a [tick](#tick) or a [transactions +entry](#transactions-entry). + +#### finality + +The wallclock duration between a [leader](#leader) creating a [tick +entry](#tick) and recognizing a supermajority of [ledger votes](#ledger-vote) +with a ledger interpretation that matches the leader's. + +#### fork + +A [ledger](#ledger) derived from common entries but then diverged. + +#### fullnode + +A full participant in the [cluster](#cluster) either a [leader](#leader) or +[validator](#validator) node. + +#### fullnode state + +The result of interpreting all programs on the ledger a given [tick +height](#tick-height). It includes at least the set of all [accounts](#account) +holding nonzero [native tokens](#native-tokens). + +#### genesis block + +The first [block](#block) of the [ledger](#ledger). + +#### hash + +A digital fingerprint of a sequence of bytes. + +#### instruction + +The smallest unit of a [program](#program) that a [client](#client) can include +in a [transaction](#instruction). + +#### keypair + +A [public key](#public-key) and coesponding [secret key](#secret-key). + +#### lamport + +A fractional [native token](#native-token) with the value of approximately +0.0000000000582 [sol](#sol) (2^-34). + +#### leader + +The role of a [fullnode](#fullnode) when it is appending [entries](#entry) to +the [ledger](#ledger). + +#### leader schedule + +A sequence of [fullnode](#fullnode) [public keys](#public-key). The cluster +uses the leader schedule to determine which fullnode is in the [leader](#leader) +at any moment in time. + +#### ledger + +A list of [entries](#entry) containing [transactions](#transaction) signed by +[clients](#client). + +#### ledger vote + +A [hash](#hash) of the [fullnode's state](#fullnode-state) at a given [tick +height](#tick-height). + +#### lockout + +The duration of time in which a [fullnode](#fullnode) is unable to [vote](#vote) on +another [fork](#fork). + +#### native token + +The [token](#token) used to track work done by [nodes](#node) in a cluster. + +#### node + +A computer particpating in a [cluster](#cluster). + +#### node count + +The number of [fullnodes](#fullnode) participating in a [cluster](#cluster). + +#### program + +The code that interprets [instructions](#instruction). + +#### public key + +The public key of a [keypair](#keypair). + +#### replicator + +A type of [client](#client) that stores copies of segments of the [ledger](#ledger). + +#### secret key + +The private key of a [keypair](#keypair). + +#### slot + +The time in which a single [leader](#leader) may produce [entries](#entry). + +#### sol + +The [native token](#native-token) tracked by a [cluster](#cluster) recognized +by the company Solana. + +#### stake + +Tokens forfeit to the [cluster](#cluster] if malicious [fullnode](#fullnode) behavior can be proven. + +#### tick + +A ledger [entry](#entry) that estimates wallclock duration. + +#### tick height + +The Nth [tick](#tick) in the [ledger](#ledger). + +#### token + +A scarce, fungible member of a set of tokens. + +#### tps + +[Transactions](#transaction) per second. + +#### transaction + +One or more [instructions](#instruction) signed by the [client](#client) and executed atomically. + +#### transactions entry + +A set of [transactions](#transaction) that may be executed in parallel. + +#### validator + +The role of a [fullnode](#fullnode) when it is validating the [leader's](#leader) latest [entries](#entry). -### Terminology Reserved for Future Use +## Terminology Reserved for Future Use The following keywords do not have any functionality but are reserved by Solana for potential future use. -* blob - a fraction of a block; the smallest unit sent between validators -* epoch - the time in which a leader schedule is valid -* light client - a type of client that can verify it's pointing to a valid cluster -* mips - millions of instructions per second -* thin client - a type of client that trusts it is communicating with a valid cluster +#### blob + +A fraction of a [block](#block); the smallest unit sent between [fullnodes](#fullnode). + +#### curio + +A scarce, non-fungible member of a set of curios. + +#### epoch + +The time in which a [leader schedule](#leader-schedule) is valid. + +#### light client + +A type of [client](#client) that can verify it's pointing to a valid [cluster](#cluster). + +#### mips + +Millions of [instructions](#instruction) per second. + +#### thin client + +A type of [client](#client) that trusts it is communicating with a valid [cluster](#cluster).