Glossary#
These definitions describe how terms are used in this course.
- Account#
An identifier associated with a balance and a payment sequence number.
- API#
The functions and classes a package offers to your Python programs.
- Block#
A batch of records with metadata, including a link to its predecessor. The first block is called the genesis block.
- Byte#
Eight bits. A bit is a single binary digit, either zero or one.
- Commitment#
A value published now that can later be checked against a revealed message. A cryptographic commitment aims to prevent changing the message while hiding it until it is revealed.
- Consensus#
Rules and a process for participants to agree on accepted updates.
- Deterministic#
Producing the same result from the same inputs under the same rules.
- Digital signature#
Evidence that a message was authorized using a particular private key, which others can check with the corresponding public key.
- Discrete logarithm#
Reversing a group exponentiation: recovering the secret exponent from the public result. Carefully chosen large groups make this difficult.
- Double spending#
Attempting conflicting payments using the same available funds.
- Encryption#
Transforming readable information into a form recoverable using a key.
- Finality#
An assurance that an accepted update will not be reversed, under a protocol’s assumptions. This package provides no unconditional finality.
- Finite field#
A finite set with addition, subtraction, multiplication, and division by nonzero elements. Arithmetic modulo a prime is one example.
- Fork#
Competing continuations of a blockchain. Here this means a split in history, rather than a software upgrade.
- Gas#
A budget for program execution. This teaching VM charges one unit per instruction; these units are not money.
- Gossip#
Spreading an announcement by having peers pass it to neighbors.
- Group#
A set with a combining operation, an identity, and inverses, where regrouping operations does not change the result. Curve points form a group under a specially defined addition rule.
- Hash#
- Digest#
A fixed-length fingerprint computed from data. Different inputs can share an output, but a secure hash makes finding such pairs difficult.
- Ledger#
Accounting state, such as balances, derived from accepted payments.
- Merkle tree#
A tree of hashes that summarizes a collection in a single root hash. A Merkle proof contains the information needed to check one item’s membership without sending the entire collection.
- Modulo#
Arithmetic that keeps the remainder after division. For example,
17 % 5is 2 in Python. The mathematical notation is “mod 5”.- Nonce#
A value with a special one-use or changing role. An account nonce orders payments, a mining nonce is varied during a search, and a signing nonce must be secret and fresh. These are different requirements.
- Partition#
A break in connectivity that prevents some peers from communicating.
- Peer#
A participating computer, represented here by a simulated object.
- Prime#
An integer greater than one divisible only by itself and one.
- Private key#
- Public key#
Related values: the private key is kept secret, while the public key can be shared to let others check signatures.
- Proof of stake#
A family of designs that gives participants influence based on stake. This package demonstrates only a weighted proposer lottery.
- Proof of work#
A result that is costly to find but cheap to check, used here as one ingredient in choosing between valid histories.
- Protocol#
The agreed rules for exchanging and interpreting information.
- Reorganization#
Switching the selected history to a competing branch and updating the corresponding ledger state.
- Replay#
Reusing an earlier message, for example trying to apply a payment twice.
- Salt#
Extra input to a hash. Its requirements depend on the application: in this course’s commitment example it must remain secret until opening.
- Seed#
A starting value used to reproduce a sequence of simulated random choices.
- Serialization#
Turning structured data into bytes using a precise, repeatable format.
- State#
The current stored information, such as balances or program storage.
- Virtual machine#
A program that executes instructions according to specified rules. This one uses a stack: values are added and removed at one end.
- Zero knowledge#
A precise property of a proof protocol: the verifier gains no additional knowledge beyond the claim’s validity, under stated assumptions.