All articles

Glossary

Block

A block is a cryptographically secured collection of transactions. It is a basic part of blockchain structure.
 

Creation of blocks

Blocks are created and added to the blockchain as part of the mining process. Miners are competing in finding new blocks using a proof-of-work algorithm. This involves repeatedly hashing the header of the block and a random number with the SHA-256 cryptographic algorithm until a solution matching a predetermined pattern emerges. The first miner who finds the solution fills the block with transactions which are picked (mostly according to highest fees included in them) from mempool and publishes that block into the blockchain. Transactions that miners add to a block are considered confirmed, which means that the new owners can now spend them in new transactions. When the block is published, a new, different competition starts for all miners, which now also includes the added block. A special transaction is also included (coinbase transaction) - this transaction pays miner the a block reward. Miners also get the sum of transaction fees from all the transactions included in the block. Every new block contains a hash of the previous block. It is also impractical to modify it once it is in the chain for some time because every block after it would also have to be regenerated.

As Bitcoin's blockchain is a public ledger, it is possible to check the block and transactions included in it on the blockchain explorer (eg., see transactions in block 556701 - the first transaction shows block reward together with transaction fees that were paid to its successful miner).
 

Block structure

The main data recorded in blocks are transactions. Every block also contains block header, block size and metadata.

Block header contains three sets of metadata:

  • a reference to a previous block hash - this hash connects this block to the previous block in the blockchain.
  • difficulty, timestamp, and nonce
  • merkle tree root - a data structure used to summarize all the transactions in the block efficiently
 

Previous block hash

Every block in the blockchain has its parent block to which it is connected. When a new block is mined by the miner, its validity is checked by all nodes, and it is linked to the existing blockchain using the previous block hash.
 

Merkle tree

Merkle root is part of the block metadata. It can be used to check if a specific transaction is part of the block. Transactions are firstly divided into pairs, and if there is an odd number of transactions in the block, the last transaction is doubled. The pairs are hashed using SHA-256 two times (double-SHA-256). These hashes are subsequently paired (concatenated) with the double SHA-256 hash of neighbour transactions, and these paired hashes are hashed again. This is repeated, which creates a merkle tree (or binary hash tree) until one final hash - the merkle root (or root hash) - emerges. Merkle root always summarizes all transactions to 32 bytes hash no matter how many transactions there are in the block.

Merkle root is a very efficient way to prove that a transaction is part of the block. To prove this, a node needs to compute only log2(N) 32-byte hashes. The number of computations increases slowly even when the count of transactions within the block increase rapidly.
 

Simplified Payment Verification (SPV)

Simplified Payment Verification (SPV) are nodes that do not download full blocks but only block headers. These nodes use the merkle path to verify if transactions are part of the block.
 

Block height

The block height is the number of blocks in the chain between a given block and the genesis block (the first block mined in the blockchain).
 

Blockchain

A blockchain is a shared database secured by cryptography. It is used by cryptocurrencies like Bitcoin or Ethereum as an independently auditable storage of all its transactions (recorded in blocks) in a decentralized network. This is why it is also often referred to as a decentralized ledger - it is saved on many computers all over the world that are called nodes.
 

Public ledger

In most cryptocurrencies the blockchain is a public ledger, meaning anyone can check the balances and transactions of any address used. Some cryptocurrencies (e.g. Monero) have their blockchain obfuscated.
 

Blocks and mining

The blockchain is also characterized by adding new transactions in separate blocks in a process called mining. Every new block contains a hash of the previous block, and it must meet certain criteria. A new block always comes after the previous block (chronologically) because the previous block's hash would otherwise not be known. It is also impractical to modify it once it has been in the chain for some time because every block after it would also have to be regenerated. These properties are what make transactions in Bitcoin and other cryptocurrencies irreversible.
 

Forks

During the creation of new blocks, forks can occur. One-block forks are created from time to time when two blocks are created just a few seconds apart by two different miners. Nodes build onto whichever one of the blocks they received first. This situation lasts until the next block is found on one or another chain. If a new block is found on one of these chains, it is broadcasted and the nodes with the second chain have to accept the new chain, because the longer chain prevails. In some rare situations a new block can be found in both of these chains. This fork is then solved in the next block in the same way. This is why the transactions are confirmed 'absolutely' only after 6 confirmations - it is almost impossible that the fork of new blocks lasts for 6 or more blocks. More serious forks have occurred after fixing bugs that required backward-incompatible changes.

There are also permanent divergences in the blockchain, which occurs when non-upgraded nodes can’t validate blocks created by upgraded nodes that follow newer consensus rules. They mostly occur when there is a change in protocol and are called hard forks.
 

CashAddr address format

On 14 January 2018, Bitcoin Cash updated their standard address format, while maintaining compatibility with the old address formats. The new address format is called CashAddr. It has the following form:

 
Example only
bitcoincash:qrfltq7md4f737m0tdjvgx3nl3w29yyqcvw3upswxu

Starting from firmware 1.6.2 (Trezor Model One) and 2.0.7 (Trezor Model T), Trezor devices only use the new address format. Converting between CashAddr and legacy address formats can be done using third party tools.
 
Due to length constraints, Trezor Suite and Trezor devices display Bitcoin Cash addresses without the bitcoincash: prefix. If needed, please prepend the prefix manually.
 

Coin split

A coin split is a hard fork of a cryptocurrency which is created via changes of the blockchain rules, sharing a transaction history with the split coin up to a particular time and date.
 

Crowdsale

Crowdsale is the central concept used in ICOs. Crowdsale is the process via which a quantity of a certain cryptocurrency is sold in the form of tokens. These tokens are promoted as future functional units of the currency, if or when the project launches. As an example, the development of Ethereum was funded through an online crowdsale in which 11.9 million coins (ETH) were distributed prior to the launch of the network.

Trezor users interested in emerging cryptcurrencies and crowdsales should be careful, as crowdsales are risky and largely unregulated.
 

Expanse (EXP)

Expanse (EXP) is a blockchain powered cloud computer that facilitates censorship resistant smart contracts and decentralized applications. The Expanse network started as a fork of Ethereum (ETH) and launched on 14 September 2015.
 

Overview

  • Firmware (device) support: 1.4.0. (Trezor Model One), 2.0.5. (Trezor Model T)
  • Third-party wallets: MyEtherWallet, MetaMask
     

How to use Expanse with Trezor

Even though Expanse is currently not integrated in Trezor Suite, it can be safely used with certain third-party wallets and services, with the seed and private keys fully protected by the Trezor device.
 

Fee

In cryptocurrencies, a transaction fee (or simply fee) is a payment made to the miners for adding a transaction into the blockchain. When a transaction has been included in the blockchain, it is considered 'confirmed'. The size of the fee sent with the transaction determines the confirmation time.
 

Transaction fees in Trezor Suite

Trezor Suite allows you to determine the size of the fee to send with a transaction: low, economy, normal, or high. It is also possible to set a custom fee. However, it is essential to make sure the fee will be sufficient for the confirmation time you are trying to achieve; sending a transaction with a fee that is too low might mean that the transaction never gets confirmed.
 

Fork

In cryptocurrencies, a fork can be defined as:

 
  • what happens when a blockchain diverges into two potential paths forward (e.g. a situation that occurs when two or more blocks have the same block height)
  • a change in protocol (soft fork, hard fork)


Hard fork

A hard fork is a permanent divergence in the blockchain, which occurs when non-upgraded nodes can’t validate blocks created by upgraded nodes that follow newer consensus rules. Cryptocurrencies after a hard fork share a transaction history up to a certain time and date.

The first intentional Bitcoin hard fork happened on 1 August 2017, resulting in the creation of Bitcoin Cash. Other coin splits created altcoins such as Bitcoin Gold or Bitcoin Private; Bitcoin owners automatically received the newly created coin, so if you owned Bitcoin during the hard fork coin split, you also own the new coin (e.g. Bitcoin Cash). If users want to claim this, it has to be implemented in the wallet.

In November 2018, a hard-fork chain split of Bitcoin Cash occurred. This hard fork resulted in the creation of Bitcoin ABC and Bitcoin SV.
 

Hash rate

A hash rate (also hash power, hash per second) is the measure of a miner's performance. It is a unit representing the number of double SHA-256 computations performed in one second. Hash rate is used in every cryptocurrency that uses proof of work.

The 'hash per second' is also used in calculations of the Bitcoin network's overall hash rate. The overall hash rate of the network is calculated based on the time between blocks, which is useful when measured over longer periods of time.
 

Input

In the context of Bitcoin, an input is a reference to an output from a previous transaction. Multiple inputs are often listed in a transaction. An input can only be spent as a whole. If a payment is smaller than the input, the remaining change is sent back to the user's change address.

To make the user experience better and easier, Trezor Suite calculates all the inputs and outputs and displays only the final balances and transaction amounts.
 

Light wallet

A light wallet does not download the complete blockchain. Instead, it downloads the block headers only, to validate the authenticity of the transactions. As such, light wallets are easy to maintain and run. Lightweight wallets use a method called simplified payment verification (SPV) to verify transactions.

Simplified payment verification (SPV) is a method for verifying if particular transactions are included in a block without downloading the entire block.
 

Mining

In cryptocurrencies, mining is the process of completing a new block of transactions and adding it to a blockchain. Miners are nodes in cryptocurrency networks that select transactions from the mempool, validate that the transactions follow all protocol rules and include them in the created block.

Mining is typically a decentralized process. A successful valid block formation is a random event, the probability of which is proportional to the computing power of the miner's hardware. The reason why miners are motivated to commit their resources to mining is that they are rewarded by newly created cryptocurrency in each block they successfully create, together with transaction fees from each transaction they add to a valid block. Mining thus also constitutes the default way of decentralized cryptocurrency initial distribution. However, mining is not primarily a process for the creation of new Bitcoin, but rather serves as a mechanism by which is the security of the network decentralized.

Mining is a competition between miners (or typically mining pools). Every miner tries to solve a difficult mathematical problem based on a cryptographic hash algorithm. A solution - proof-of-work - is included in the found block and provides proof that the miner spent the necessary power or computing effort. The SHA-256 hash function is used in the Bitcoin mining process. Mining involves hashing the block header repeatedly, changing one parameter, until the resulting hash matches a specific target.
 

Mining - repeatedly hashing the block header to meet the target

Miner nodes which want to win the competition in finding next block have to prepare a so-called 'candidate block', meaning it is not valid until the miner finds the valid proof-of-work. Candidate blocks contain coinbase transactions (which contain the block reward for the miner), transactions that are waiting for their first confirmation (picked up from the mempool), block header which consists of version, previous block hash, merkle root, timestamp, target and nonce.

Miner's hardware starts to hash the block header repeatedly with SHA-256, only with a different nonce each time. The nonce provides additional data to the block header, which will cause a different hash every time the block header is hashed. When this hash meets the target, the candidate block becomes valid and can be broadcasted to the network as a new block.

The target is a challenge, meaning that the hash of the new block header has to meet certain criteria. The probability that the hash will meet the criteria is very low, so typically many hashes have to be produced by a miner's hardware until the criteria is met. A lower target means it is more difficult to find a hash below the target. The target and difficulty are inversely related.
 

Nonce

A nonce, short for "number used once," is a unique, randomly generated value that plays a crucial role in cryptographic processes, enhancing security and preventing data reuse. In the world of cryptocurrencies, a nonce is used in two primary ways:

  1. Consensus algorithms (e.g., Proof-of-Work mining): In blockchain technology, a nonce helps secure the network by differentiating each mined block and avoiding transaction data reuse. Miners are required to find a valid nonce that, when combined with the block's data and passed through a cryptographic hash function, yields a hash that meets or falls below a predetermined target difficulty.

  2. Transaction nonce: In some blockchain networks, such as Ethereum, a nonce is assigned to each transaction originating from an account. This sequential number ensures that transactions are processed in the correct order and protects against double-spending or replay attacks. The transaction nonce starts at 0 for a new account and increments by 1 for each subsequent transaction.

 

Non-deterministic wallet

A non-deterministic wallet is a type of cryptocurrency wallet that generates its private keys randomly and independently. Unlike a hierarchical deterministic wallet, a non-deterministic wallet requires the user to make backups periodically.

The number of users of non-deterministic wallets is currently declining, as people opt for the more modern hierarchical deterministic wallets such as Trezor.
 

Output

In the context of Bitcoin, an output contains instructions for sending Bitcoins. The value is the number of satoshis (1 BTC = 100,000,000 sats) that this output will be worth when claimed.

To make the user experience better and more accessible, Trezor Suite calculates all the inputs and outputs, and displays only the final balances and transaction amounts.
 

scriptPubKey

A scriptPubKey is an ouput transaction script. It defines a condition that must be met to spend funds commited to the output in question.
 

scriptSig

A scriptSig is an input script that unlocks funds committed the referenced transaction output. It contains one or more signatures and other informatioin that is needed to satisfy spending condition defined in the output.
 

SegWit

Segregated Witness (SegWit) is an implemented protocol upgrade providing protection from transaction malleability and an increase of block capacity. SegWit defines a new structure called a 'witness' that is committed to blocks separately from the transaction merkle tree. This structure contains data required to check transaction validity, but is not required to determine transaction effects. In particular, signatures and redeem scripts are moved into this new structure, which does not count towards the traditional 1 MB block size limit. Instead, a new weight parameter is defined, and blocks are allowed to have at most 4 million weight units (WU). A byte in the original 1 MB zone of the block weighs 4 WU, but a byte in a witness structure only weighs 1 WU, allowing blocks that are technically larger than 1 MB without a hard-fork change.
 

SegWit was the last protocol change needed to make the Lightning network safe to deploy on the Bitcoin network.


Soft fork

A soft fork is a change to a cryptocurrency protocol wherein only previously valid blocks and transactions are made invalid. Since old nodes will recognize the new blocks as valid, unlike a hard fork, a soft fork can still work with older versions of the protocol. If a wallet wants to support new soft fork rules it has to be upgraded.
 

Soft forks in Bitcoin:

  • Introducing the limit of 1MB for a block was done through a soft fork
  • The pay-to-script-hash function, which enhances the code without changing the structure was also successfully added through a soft fork.
  • SegWit was implemented in Bitcoin protocol using a soft fork in BIP141.
 
Trezor started supporting SegWit in August 2017


UASF vs MASF

When a majority of miners upgrade to enforce new rules, it is called a miner-activated soft fork (MASF). When full nodes coordinate to enforce new rules, without the support from miners, it is called a user-activated soft fork (UASF).
 

Super Shamir

Super Shamir is a two-level configuration of Shamir Backup. Super Shamir was first introduced in firmware version 2.1.6 and remains available exlusively for the Trezor Model T.

Unlike the classic Shamir Backup scheme, Super Shamir sets threshold for groups, which then can be divided to another 16 shares. Each group has its individual member threshold. The wallet secret is then reconstructed when the group threshold is reached.

  • Member threshold - defines how many shares are needed to reconstruct the group.
  • Group threshold - defines how many groups need to fill their member threshold to reconstruct the master secret.
     

Token

A token is a digital asset that lives on a cryptocurrency. The term 'token' is often used in the meaning of a user-issued token, in contrast to a native token that comes into existence along with the cryptocurrency itself.
 

Native and user tokens

All cryptocurrencies have at least one token. This is a native token that is created along with the cryptocurrency, is essential to its function, and is often synonymous to it.

Some cryptocurrencies also support user asset issuance. Such assets are referred to as a 'user tokens'. For example, Ethereum has a growing number of ERC20 tokens issued by individual users and companies during ICOs or crowdsales.

Native tokens are commonly referred to as cryptocurrencies (or less formally as 'coins'), while user tokens are simply called tokens.


UBIQ (UBQ)

Ubiq (UBQ) is a blockchain-based distributed computing platform that features smart contracting functionality, able to host Ethereum (ETH) smart contracts. The Ubiq network launched on January 28, 2017.
 

Overview

  • Firmware (device) support: 1.4.0. (Trezor One), 2.0.5. (Trezor Model T)
  • Third-party wallets: MyEtherWallet, MetaMask
     

How to use UBIQ with Trezor

Even though UBIQ is currently not integrated in Trezor Suite, it can be safely used with certain third-party wallets and services, with the seed and private keys fully protected by the Trezor device.
 

Version bytes

In Bitcoin-like cryptocurrencies, version bytes is a piece of data that is responsible for making different kinds of addresses and account public keys distinguishable in order to prevent potential errors leading to confusion and loss of funds.
 

Relation of version bytes and address

Technically, an address is base58check-encoded form of transaction commitment prefixed by version bytes:

address = Base58Check ( <versionBytes> <transactionCommitment> )


where transaction commitment is either public key hash for P2PKH, or script hash for P2SH.

Note: Unlike transaction commitments, version bytes and addresses are not included in the blockchain. Rather, they are implemented on cryptocurrency software level by wallets and services. Sometimes this implementation may change, which leads to confusion among users and to transactional problems with services that are slow to adopt the change. This was the case with Litecoin's P2SH where address prefix changed from "3" to "M" to prevent confusion with similar addresses in Bitcoin. In such cases, custom tools are needed to convert an address to different format.