Difference between revisions of "Glossary"

From Internet Computer Wiki
Jump to: navigation, search
(Cross-ref up to I)
Line 8: Line 8:
  
 
===== actor =====
 
===== actor =====
An '''actor''' is a primitive in the [https://en.wikipedia.org/wiki/Actor_model Actor Model]. The Actor Model is relevant to the IC because canisters on the IC (a type of smart contract) follow the Actor Model for concurrent and asynchronous computation.
+
An '''actor''' is a primitive in the [https://en.wikipedia.org/wiki/Actor_model Actor Model]. The Actor Model is relevant to the IC because [[#canister|canisters]] on the IC (a type of smart contract) follow the Actor Model for concurrent and asynchronous computation.
  
 
==B==
 
==B==
Line 28: Line 28:
 
==== boundary nodes ====
 
==== boundary nodes ====
  
'''boundary nodes''' Nginx gateways to the internet computer. These nodes act as HTTP routers through which the network’s subnet blockchain nodes can be reached. The boundary nodes have several purposes:  they aid in discover-ability (the ic0.app domain name points to a set of boundary nodes), they are geo-aware and can route incoming requests to the nearest subnet node that hosts the canister involved, they can help load balance query transactions, they can cache cryptographically verified data in the role of a content distribution network, they can throttle excessive interactions from an outside IP address, bootstrapping/Installing the service worker, and they can help protect subnets from DDoS attacks.
+
'''boundary nodes''' Nginx gateways to the internet computer. These nodes act as HTTP routers through which the network’s [[#subnet|subnet]] blockchain nodes can be reached. The boundary nodes have several purposes:  they aid in discover-ability (the ic0.app domain name points to a set of boundary nodes), they are geo-aware and can route incoming requests to the nearest subnet node that hosts the [[#canister|canister]] involved, they can help load balance query transactions, they can cache cryptographically verified data in the role of a content distribution network, they can throttle excessive interactions from an outside IP address, bootstrapping/Installing the service worker, and they can help protect subnets from DDoS attacks.
  
 
===== burning transaction =====
 
===== burning transaction =====
Line 44: Line 44:
  
 
===== canister signature =====
 
===== canister signature =====
A '''canister signature''' uses a signature scheme based on [[#certified variables| certified variables]]. Public “keys” include a canister id plus a seed (so that every canister has many public keys); signatures are certificates that prove that the canister has put the signed message at a specific place in its state tree. Details in the [https://smartcontracts.org/docs/interface-spec/#canister-signatures The Internet Computer Interface Specification].
+
A '''canister signature''' uses a signature scheme based on [[#certified variables| certified variables]]. Public “keys” include a [[#canister identifier|canister id]] plus a seed (so that every [[#canister|canister]] has many public keys); signatures are certificates that prove that the canister has put the signed message at a specific place in its state tree. Details in the [https://smartcontracts.org/docs/interface-spec/#canister-signatures The Internet Computer Interface Specification].
  
 
===== canister state =====
 
===== canister state =====
A '''canister state''' is the entire state of a [[#canister|canister]] at a given point in time. A canister’s state is divided into ''user state'' and ''system state''. The user state is a [[#WebAssembly|WebAssembly]] module instance and the system state is the auxiliary state maintained by the [[#Internet Computer|Internet Computer]] on behalf of the canister, such as its compute allocation, balance of cycles, input and output queues, and other metadata. A canister interacts with its own system state either implicitly, such as when consuming cycles, or through the System API, such as when sending messages.
+
A '''canister state''' is the entire state of a [[#canister|canister]] at a given point in time. A canister’s state is divided into ''user state'' and ''system state''. The user state is a [[#WebAssembly|WebAssembly]] module instance and the system state is the auxiliary state maintained by the [[#Internet Computer|Internet Computer]] on behalf of the canister, such as its compute allocation, balance of [[#cycles|cycles]], input and output queues, and other metadata. A canister interacts with its own system state either implicitly, such as when consuming cycles, or through the System API, such as when sending messages.
  
 
===== catch-up package (CUP) =====
 
===== catch-up package (CUP) =====
Line 56: Line 56:
  
 
===== certified variable =====
 
===== certified variable =====
A piece of data that a [[#canister|canister]] can store in its subnet’s canonical state in the processing of an update call (or inter-canister call), so that during the handling of a [[#query|query]] call, the canister can return a certificate to the user that proves that it really committed to that value.
+
A piece of data that a [[#canister|canister]] can store in its [[#subnet|subnet]]’s canonical state in the processing of an update call (or inter-canister call), so that during the handling of a [[#query|query]] call, the canister can return a certificate to the user that proves that it really committed to that value.
  
 
===== chain key =====
 
===== chain key =====
'''Chain key''' cryptography consists of a set of cryptographic protocols that orchestrate the nodes that make up the Internet Computer. The most visible innovation of chain key cryptography is that the Internet Computer has a single public key. This is a huge advantage as it allows any device, including smart watches and mobile phones, to verify the authenticity of artifacts from the Internet Computer.
+
'''Chain key''' cryptography consists of a set of cryptographic protocols that orchestrate the nodes that make up the [[#Internet Computer|Internet Computer]]. The most visible innovation of chain key cryptography is that the Internet Computer has a single public key. This is a huge advantage as it allows any device, including smart watches and mobile phones, to verify the authenticity of artifacts from the Internet Computer.
  
 
===== consensus =====
 
===== consensus =====
 
In distributed computing, '''consensus''' is a fault tolerant mechanism by means of which a number of [[#nodes|nodes]] can reach agreement about a value or state.
 
In distributed computing, '''consensus''' is a fault tolerant mechanism by means of which a number of [[#nodes|nodes]] can reach agreement about a value or state.
  
Consensus is a core component of the [[#replica|replica]] software. The consensus layer selects [[#messages|messages]] from the peer-to-peer artifact pool and pulls messages from the cross-network streams of other [[#subnets|subnets]] and organizes them into a [[#batch|batch]], which is delivered to the [[#message routing|message routing]] layer.
+
Consensus is a core component of the [[#replica|replica]] software. The consensus layer selects [[#messages|messages]] from the peer-to-peer artifact pool and pulls messages from the cross-network streams of other [[#subnet|subnets]] and organizes them into a [[#batch|batch]], which is delivered to the [[#message routing|message routing]] layer.
  
 
===== controller =====
 
===== controller =====
A '''controller''' of a [[#canister|canister]] is a person, organization, or other canister that has administrative rights over the canister. Controllers are identified by their [[#principals|principals]]. For example, a controller of a canister can upgrade the [[#WebAssembly|WebAssembly]] code of the canister or delete the canister.
+
A '''controller''' of a [[#canister|canister]] is a person, organization, or other canister that has administrative rights over the canister. Controllers are identified by their [[#principal|principals]]. For example, a controller of a canister can upgrade the [[#WebAssembly|WebAssembly]] code of the canister or delete the canister.
  
 
===== cycle =====
 
===== cycle =====
On the Internet Computer, a '''cycle''' is the unit of measurement for resources consumed in the form of processing, memory, storage, and network bandwidth. Every canister has a cycles account to which resources consumed by the canister are charged. The Internet Computer’s utility token ([[#ICP|ICP]]) can be converted to cycles and transferred to a canister. Cycles can also be transferred between canisters by attaching them to an [inter-canister] message.
+
On the [[#Internet Computer|Internet Computer]], a '''cycle''' is the unit of measurement for resources consumed in the form of processing, memory, storage, and network bandwidth. Every canister has a cycles account to which resources consumed by the canister are charged. The Internet Computer’s utility token ([[#ICP|ICP]]) can be converted to cycles and transferred to a canister. Cycles can also be transferred between canisters by attaching them to an [inter-canister] message.
  
 
ICP can always be converted to cycles using the current price of ICP measured in [SDR] using the convention that one trillion cycles correspond to one SDR.
 
ICP can always be converted to cycles using the current price of ICP measured in [SDR] using the convention that one trillion cycles correspond to one SDR.
Line 76: Line 76:
 
==D==
 
==D==
 
===== dapp =====
 
===== dapp =====
A '''dapp''', or decentralised application is a canister smart contract running on the [[#Internet Computer|Internet Computer]].
+
A '''dapp''', or decentralised application is a [[#canister|canister]] running on the [[#Internet Computer|Internet Computer]].
  
 
===== data center =====
 
===== data center =====
Line 96: Line 96:
 
==F==
 
==F==
 
===== fiduciary =====
 
===== fiduciary =====
The '''fiduciary''' of an [[#account|account]] is the [[#principal|principal]] allowed to make [[#transactions|transactions]] on the account; as such, it may be useful to think of it as the ''owner'' of the account, with the caveat that it may or may not be the [[#beneficiary|beneficiary]] of the account. The [[#neuron account|neuron account]] is a prominent example of an account for which the beneficiary and fiduciary do not coincide (the fiduciary is the governance canister while the beneficiary is the neuron holder). The fiduciary of a (ledger) account does not change over time.
+
The '''fiduciary''' of an [[#account|account]] is the [[#principal|principal]] allowed to make [[#transactions|transactions]] on the account; as such, it may be useful to think of it as the ''owner'' of the account, with the caveat that it may or may not be the [[#beneficiary|beneficiary]] of the account. The [[#neuron account|neuron account]] is a prominent example of an account for which the beneficiary and fiduciary do not coincide (the fiduciary is the [[#governance canister|governance canister]] while the beneficiary is the neuron holder). The fiduciary of a (ledger) account does not change over time.
  
 
The distinction between fiduciary and beneficiary is also important for DeFi dapps (canisters) that interact with the IC ledger: in this case, the fiduciary is the DeFi canister while the beneficiary is the individual or organisation ([[#principal|principal) that uses the DeFi canister’s services.
 
The distinction between fiduciary and beneficiary is also important for DeFi dapps (canisters) that interact with the IC ledger: in this case, the fiduciary is the DeFi canister while the beneficiary is the individual or organisation ([[#principal|principal) that uses the DeFi canister’s services.
Line 102: Line 102:
 
==G==
 
==G==
 
===== governance canister =====
 
===== governance canister =====
The '''governance canister''' is a [[#system canister|system canister]] that implements the [[#NNS|NNS]] governance system, i.e., among others, stores and manages neurons and proposals, and implements the NNS voting environment.
+
The '''governance canister''' is a [[#system canister|system canister]] that implements the [[#NNS|NNS]] governance system, i.e., among others, stores and manages [[#neuron|neurons]] and proposals, and implements the NNS voting environment.
  
 
==I==
 
==I==
 
===== ICP =====
 
===== ICP =====
The '''Internet Computer Protocol''' token (ticker "ICP") is the utility token of the Internet Computer. ICP allows the broader internet community to participate in the governance of the Internet Computer blockchain network by locking ICP in neurons. ICP can also be converted into cycles, which are then used to power canister smart contracts.
+
The '''Internet Computer Protocol''' token (ticker "ICP") is the utility token of the [[#Internet Computer|Internet Computer]]. ICP allows the broader internet community to participate in the governance of the Internet Computer blockchain network by locking ICP in [[#neuron|neurons]]. ICP can also be converted into [[#cycles|cycles]], which are then used to power [[#canister|canisters]].
  
 
===== ICP supply account =====
 
===== ICP supply account =====
The '''ICP supply account''' is a quasi-fictitious ledger account whose balance is always zero. It has a central role in ICP burning and minting operations.
+
The '''ICP supply account''' is a quasi-fictitious ledger [[#account|account]] whose balance is always zero. It has a central role in [[#ICP|ICP]] [[#burning|burning]] and [[#minting|minting]] operations.
  
 
===== identity =====
 
===== identity =====
An '''identity''' is a byte string that is used to identify an entity, such as a principal, that interacts with the Internet Computer. For users, the identity is the SHA-224 hash of the DER-encoded public key of the user. The The Internet Computer Interface Specification has more detail.
+
An '''identity''' is a byte string that is used to identify an entity, such as a [[#principal|principal]], that interacts with the [[#Internet Computer|Internet Computer]]. For users, the identity is the SHA-224 hash of the DER-encoded public key of the user. [https://smartcontracts.org/docs/interface-spec/ The Internet Computer Interface Specification] has more detail.
  
 
===== Internet Identity =====
 
===== Internet Identity =====
'''Internet Identity''' is an anonymizing blockchain authentication system running on the Internet Computer.
+
'''Internet Identity''' is an anonymizing blockchain authentication system running on the [[#Internet Computer|Internet Computer]].
  
 
===== induction pool =====
 
===== induction pool =====
The '''induction pool''' of a subnet blockchain is the collection of all input queues of all canisters residing on the subnet.
+
The '''induction pool''' of a [[#subnet|subnet]] blockchain is the collection of all input queues of all [[#canister|canisters]] residing on the subnet.
  
 
===== ingress message =====
 
===== ingress message =====
An '''ingress message''' is a message sent by an end-user to a canister running on a subnet blockchain. The message is signed by the secret key corresponding to the end-user’s identity and sent to one of the replicas that participate in the subnet.
+
An '''ingress message''' is a message sent by an end-user to a [[#canister|canister]] running on a [[#subnet|subnet]] blockchain. The message is signed by the secret key corresponding to the end-user’s identity and sent to one of the replicas that participate in the subnet.
  
 
===== ingress message history =====
 
===== ingress message history =====
Line 127: Line 127:
  
 
===== input queue =====
 
===== input queue =====
The '''input queue''' of a canister contains all messages bound for the canister. See also induction pool. When the canister is scheduled for execution, messages from its input queue will be executed.
+
The '''input queue''' of a [[#canister|canister]] contains all messages bound for the canister. See also induction pool. When the canister is scheduled for execution, messages from its input queue will be executed.
  
 
===== inter-canister message =====
 
===== inter-canister message =====
An '''inter-canister message''' is a message sent from one canister to another. Inter-canister messages are different from user-initiated ingress messages.
+
An '''inter-canister message''' is a message sent from one [[#canister|canister]] to another. Inter-canister messages are different from user-initiated ingress messages.
  
 
===== Internet Computer (IC) =====
 
===== Internet Computer (IC) =====
The '''Internet Computer''' (IC) is a decentralized blockchain that provides scalable compute capacity for running canister smart contracts through independent node providers running node in geographically distributed data centers.
+
The '''Internet Computer''' (IC) is a decentralized blockchain that provides scalable compute capacity for running [[#canister|canisters]] through independent node providers running node in geographically distributed data centers.
  
 
==L==
 
==L==
 
===== ledger canister =====
 
===== ledger canister =====
The '''ledger canister''' is a system canister whose main role is to store accounts and their corresponding transactions.
+
The '''ledger canister''' is a system [[#canister|canister]] whose main role is to store accounts and their corresponding transactions.
  
 
==M==
 
==M==
 
===== message =====
 
===== message =====
A '''message''' is data sent from one canister to another or from a user to a canister.
+
A '''message''' is data sent from one [[#canister|canister]] to another or from a user to a canister.
  
 
===== message routing =====
 
===== message routing =====
The '''message routing''' layer receives batches from the consensus layer and inducts them into the induction pool. Message routing then schedules a set of canisters to execute messages from their input queues.
+
The '''message routing''' layer receives batches from the consensus layer and inducts them into the induction pool. Message routing then schedules a set of [[#canister|canisters]] to execute messages from their input queues.
  
After messages have been executed, the message routing layer takes any messages produced in the execution round from the output queues and puts those messages into the outgoing streams to be consumed by canisters on other subnets.
+
After messages have been executed, the message routing layer takes any messages produced in the execution round from the output queues and puts those messages into the outgoing streams to be consumed by canisters on other [[#subnet|subnets]].
  
 
===== minting transaction =====
 
===== minting transaction =====
A '''minting transaction''' is the process of "minting" ICP, whereby a certain amount of ICP comes into existence. ICP is minted in order to reward neurons for voting, and reward node providers for participating in the IC by providing compute capacity through the running of nodes. A minting transaction is represented as a transaction from the ICP supply account to a destination account.
+
A '''minting transaction''' is the process of "minting" [[#ICP|ICP]], whereby a certain amount of ICP comes into existence. ICP is minted in order to reward [[#neuron|neurons]] for voting, and reward node providers for participating in the IC by providing compute capacity through the running of nodes. A minting transaction is represented as a transaction from the ICP supply account to a destination account.
  
 
===== Motoko =====
 
===== Motoko =====
  
'''Motoko''' is a programming language designed to directly support the programming model of the Internet Computer, making it easier to efficiently build applications and take advantage of some of the more unusual features of this platform, including the Actor Model for smart contracts and compilation to WebAssembly.
+
'''Motoko''' is a programming language designed to directly support the programming model of the [[#Internet Computer|Internet Computer]], making it easier to efficiently build applications and take advantage of some of the more unusual features of this platform, including the Actor Model for smart contracts and compilation to WebAssembly.
  
 
==N==
 
==N==
 
===== non-dissolving state =====
 
===== non-dissolving state =====
A neuron that is not dissolved or dissolving is said to be in a '''non-dissolving state''' (or "aging"). Non-dissolving neurons thus accrue "age", with the caveat that beginning to dissolve at any time reduces this age back to zero. The dissolve delay parameter of a non-dissolving (aka "aging") neuron cannot be zero, because such a neuron would have to already be dissolved.
+
A [[#neuron|neuron]] that is not dissolved or dissolving is said to be in a '''non-dissolving state''' (or "aging"). Non-dissolving neurons thus accrue "age", with the caveat that beginning to dissolve at any time reduces this age back to zero. The dissolve delay parameter of a non-dissolving (aka "aging") neuron cannot be zero, because such a neuron would have to already be dissolved.
  
 
===== network nervous system (NNS) =====
 
===== network nervous system (NNS) =====
The '''network nervous system''' (NNS) is a collection of system canister smart contracts (aka "NNS canisters") assembled into a system that governs all aspects of the Internet Computer.
+
The '''network nervous system''' (NNS) is a collection of system [[#canister|canisters]] (aka "NNS canisters") assembled into a system that governs all aspects of the [[#Internet Computer|Internet Computer]].
  
 
===== neuron =====
 
===== neuron =====
A '''neuron''' is an IC entity that can make proposals and vote on proposals related to the governance of the Internet Computer platform.
+
A '''neuron''' is an IC entity that can make proposals and vote on proposals related to the governance of the [[#Internet Computer|Internet Computer]] platform.
  
To provide the stability required for responsible governance, neurons need to store ("stake") a certain amount of ICP in order to be able to make and vote on proposals. This locks the tokens for a period of time, after which it starts dissolving. The ICP stake of a neuron is stored in a neuron account.
+
To provide the stability required for responsible governance, neurons need to store ("stake") a certain amount of [[#ICP|ICP]] in order to be able to make and vote on proposals. This locks the tokens for a period of time, after which it starts dissolving. The ICP stake of a neuron is stored in a neuron account.
  
 
The neuron owner has the right to propose and vote on governance issues, and is granted rewards for voting in proportion to the amount of ICP staked, and the duration of the dissolve period.
 
The neuron owner has the right to propose and vote on governance issues, and is granted rewards for voting in proportion to the amount of ICP staked, and the duration of the dissolve period.
  
 
===== neuron account =====
 
===== neuron account =====
A '''neuron account''' is a canister account whose beneficiary is a neuron (or the neuron’s owner). The governance canister is the fiduciary of all neuron accounts.
+
A '''neuron account''' is a [[#canister account|canister account]] whose beneficiary is a [[#neuron|neuron]] (or the neuron’s owner). The governance canister is the fiduciary of all neuron accounts.
  
 
===== neuron age =====
 
===== neuron age =====
The '''neuron age''' is a neuron parameter roughly indicative of the time that has passed since its creation or since when it last entered into a non-dissolving state. Calculation of a neuron’s age needs to take into account whether the neuron has spent time dissolving or dissolved, both of which reset this parameter.
+
The '''neuron age''' is a [[#neuron|neuron]] parameter roughly indicative of the time that has passed since its creation or since when it last entered into a non-dissolving state. Calculation of a neuron’s age needs to take into account whether the neuron has spent time dissolving or dissolved, both of which reset this parameter.
  
 
===== node =====
 
===== node =====
 
The term '''node''' and related terms are covered by the node ontology
 
The term '''node''' and related terms are covered by the node ontology
A node is a physical or virtual network endpoint that hosts all the hardware, replica software, and configuration settings required to participate in the Internet Computer.
+
A node is a physical or virtual network endpoint that hosts all the hardware, replica software, and configuration settings required to participate in the [[#Internet Computer|Internet Computer]].
  
 
===== node operator =====
 
===== node operator =====
A '''node operator''' (NO) is a non-canister principal who has the authority to add/remove nodes to/from the IC.
+
A '''node operator''' (NO) is a non-canister [[#principal|principal]] who has the authority to add/remove nodes to/from the IC.
  
 
Node providers come in possession of Hardware Security Modules (HSM), and register the HSMs with the NNS. (The HSM registration process consists essentially in deriving an IC principal ID from the key stored on the HSM, and persisting that ID with the NNS.) NPs hand registered HSMs over to legal persons, who now gain the authority to physically “operate nodes” (aka install replicas). The caveat is that, as opposed to "regular" principals, where a great deal of care goes into making sure that one principal ID corresponds to only one person, HSMs can routinely exchange hands, hence many persons can act as the same NO principal at different times.
 
Node providers come in possession of Hardware Security Modules (HSM), and register the HSMs with the NNS. (The HSM registration process consists essentially in deriving an IC principal ID from the key stored on the HSM, and persisting that ID with the NNS.) NPs hand registered HSMs over to legal persons, who now gain the authority to physically “operate nodes” (aka install replicas). The caveat is that, as opposed to "regular" principals, where a great deal of care goes into making sure that one principal ID corresponds to only one person, HSMs can routinely exchange hands, hence many persons can act as the same NO principal at different times.
  
 
===== node provider =====
 
===== node provider =====
A '''node provider''' (NP) is a non-canister principal that receives the rewards stemming from node participation to the IC (aka “payout principal”). Usually, though not necessarily, a node provider is the owner of the node, and may also be involved in node operation and related tasks. A node provider may receive rewards from multiple nodes in multiple data centers.
+
A '''node provider''' (NP) is a non-canister [[#principal|principal]] that receives the rewards stemming from node participation to the IC (aka “payout principal”). Usually, though not necessarily, a node provider is the owner of the node, and may also be involved in node operation and related tasks. A node provider may receive rewards from multiple nodes in multiple data centers.
  
 
==O==
 
==O==
 
===== output queue =====
 
===== output queue =====
Each canister has an '''output queue''' of messages bound for other canisters.
+
Each [[#canister|canister]] has an '''output queue''' of messages bound for other canisters.
  
 
==P==
 
==P==
Line 197: Line 197:
 
The peer-to-peer layer collects and disseminates messages and artifacts from users and from other nodes.
 
The peer-to-peer layer collects and disseminates messages and artifacts from users and from other nodes.
  
The nodes of a subnet form a dedicated peer-to-peer broadcast network that facilitates the secure bounded-time/eventual delivery broadcast of artifacts (such as ingress messages, control messages and their signature shares). The consensus layer builds upon this functionality.
+
The nodes of a [[#subnet|subnet]] form a dedicated peer-to-peer broadcast network that facilitates the secure bounded-time/eventual delivery broadcast of artifacts (such as ingress messages, control messages and their signature shares). The consensus layer builds upon this functionality.
  
 
===== principal =====
 
===== principal =====
 
The term '''principal''' and related terms can be found in the principal ontology.
 
The term '''principal''' and related terms can be found in the principal ontology.
A principal is an entity that can be authenticated by the Internet Computer. This is the same sense of the word principal as the Wikipedia definition. Principals that interact with the Internet Computer do so using a certain identity.
+
A principal is an entity that can be authenticated by the [[#Internet Computer|Internet Computer]]. This is the same sense of the word principal as the Wikipedia definition. Principals that interact with the Internet Computer do so using a certain identity.
  
 
===== proposal =====
 
===== proposal =====
A '''proposal''' is a statement describing an action to modify certain parameters of the IC, or of any of its subsystems. It is implemented as an IC entity having various attributes, such as an ID, a URL, a summary etc. Proposals are submitted by eligible neuron owners for the consideration of the IC community, and undergo a voting process, following which they can be adopted or rejected. Adopted proposals are then executed.
+
A '''proposal''' is a statement describing an action to modify certain parameters of the IC, or of any of its subsystems. It is implemented as an IC entity having various attributes, such as an ID, a URL, a summary etc. Proposals are submitted by eligible [[#neuron|neuron]] owners for the consideration of the IC community, and undergo a voting process, following which they can be adopted or rejected. Adopted proposals are then executed.
  
There are several taxonomies of proposals, the most prominent of which groups proposals into "topics," whose adoption, in turn, triggers certain categories of actions, such as the creation of a subnet, the addition of a node to a subnet, and the modification of the ICP exchange rate.
+
There are several taxonomies of proposals, the most prominent of which groups proposals into "topics," whose adoption, in turn, triggers certain categories of actions, such as the creation of a [[#subnet|subnet]], the addition of a node to a subnet, and the modification of the [[#ICP|ICP]] exchange rate.
  
 
===== proto-node =====
 
===== proto-node =====
Line 213: Line 213:
 
==Q==
 
==Q==
 
===== query =====
 
===== query =====
A '''query''' is an optimised way to execute operations on a canister where the state changes are not preserved. Queries are synchronous and can be made to any node that hosts the canister. Queries do not require consensus to verify the result.
+
A '''query''' is an optimised way to execute operations on a [[#canister|canister]] where the state changes are not preserved. Queries are synchronous and can be made to any node that hosts the canister. Queries do not require consensus to verify the result.
  
 
==R==
 
==R==
 
===== replica =====
 
===== replica =====
The '''replica''' is a collection of protocol components that are necessary for a node to participate in a subnet.
+
The '''replica''' is a collection of protocol components that are necessary for a node to participate in a [[#subnet|subnet]].
  
 
===== registry =====
 
===== registry =====
The IC '''registry''' manages the system meta-data maintained on the network nervous system (NNS) and accessed by all subnet blockchains.
+
The IC '''registry''' manages the system meta-data maintained on the network nervous system (NNS) and accessed by all [[#subnet|subnet]] blockchains.
  
 
==S==
 
==S==
 
===== smart contract =====
 
===== smart contract =====
A '''smart contract''' is a stateful computer program designed to automatically execute, control or document relevant events and actions according to the terms of a contract or an agreement. A smart contract can be deployed on the Internet Computer in the form of a canister bundling data and code.
+
A '''smart contract''' is a stateful computer program designed to automatically execute, control or document relevant events and actions according to the terms of a contract or an agreement. A smart contract can be deployed on the [[#Internet Computer|Internet Computer]] in the form of a [[#canister|canister]] bundling data and code.
  
 
A canister can have one or more controllers that are permitted to modify the code of the canister, thereby modifying the terms of the smart contract. For a canister smart contract to have immutable code, its list of controllers must be empty.
 
A canister can have one or more controllers that are permitted to modify the code of the canister, thereby modifying the terms of the smart contract. For a canister smart contract to have immutable code, its list of controllers must be empty.
  
 
===== state change =====
 
===== state change =====
A '''state change''' is the result of any transaction, function call, or operation that changes the information stored in a canister. For example, if a function makes an update call that adds two numbers together or removes a name from a list, the result is a change to the canister state.
+
A '''state change''' is the result of any transaction, function call, or operation that changes the information stored in a [[#canister|canister]]. For example, if a function makes an update call that adds two numbers together or removes a name from a list, the result is a change to the canister state.
  
 
===== state manager =====
 
===== state manager =====
Line 235: Line 235:
 
# maintaining (multiple versions of) the replicated state the deterministic state machine implemented by message routing and the execution environment operates on,
 
# maintaining (multiple versions of) the replicated state the deterministic state machine implemented by message routing and the execution environment operates on,
 
# converting back and forth between the replicated state and its canonical version (latter can be understood independent of the concrete implementation),
 
# converting back and forth between the replicated state and its canonical version (latter can be understood independent of the concrete implementation),
# obtaining certifications of parts of the canonical state, which allow other stakeholders such as other subnets and/or users, to verify that some piece of state indeed originates from a valid subnetwork, and
+
# obtaining certifications of parts of the canonical state, which allow other stakeholders such as other [[#subnet|subnets]] and/or users, to verify that some piece of state indeed originates from a valid subnetwork, and
 
# providing capabilities to sync the canonical state with other replicas in the same subnet so that replicas that have fallen behind can catch up.
 
# providing capabilities to sync the canonical state with other replicas in the same subnet so that replicas that have fallen behind can catch up.
  
Line 242: Line 242:
  
 
===== system canister =====
 
===== system canister =====
A '''system canister''' is a pre-installed canister that performs certain tasks needed to maintain the Internet Computer.
+
A '''system canister''' is a pre-installed [[#canister|canister]] that performs certain tasks needed to maintain the [[#Internet Computer|Internet Computer]].
  
 
==T==
 
==T==
 
===== transaction =====
 
===== transaction =====
A ledger account '''transaction''' is the process of transferring ICP from one account to another; it can be of three types: (a) regular transfer transaction, (b) burning transaction, and (c) minting transaction.
+
A ledger account '''transaction''' is the process of transferring [[#ICP|ICP]] from one account to another; it can be of three types: (a) regular transfer transaction, (b) [[#burning|burning]] transaction, and (c) [[#minting|minting]] transaction.
  
 
===== transfer transaction =====
 
===== transfer transaction =====
Line 253: Line 253:
 
==U==
 
==U==
 
===== user =====
 
===== user =====
A '''user''' is any entity that interacts with the Internet Computer. Users include end-users that use dapps deployed on the IC, dapp developers, holders of ICP utility tokens, and neuron holders.
+
A '''user''' is any entity that interacts with the [[#Internet Computer|Internet Computer]]. Users include end-users that use dapps deployed on the IC, dapp developers, holders of [[#ICP|ICP]] utility tokens, and [[#neuron|neuron]] holders.
  
 
==V==
 
==V==
 
===== valid set rule =====
 
===== valid set rule =====
The '''valid set rule''' is the rule that determines a valid induction pool. Ingress messages and inter-canister messages must pass certain checks to ensure that the valid set rule is upheld before they can be added to the induction pool.
+
The '''valid set rule''' is the rule that determines a valid induction pool. Ingress messages and inter-[[#canister|canister]] messages must pass certain checks to ensure that the valid set rule is upheld before they can be added to the induction pool.
  
 
===== voting =====
 
===== voting =====
'''Voting''' is the process through which proposals are selected for adoption and implementation. Its direct participants are the neurons, who both (a) submit proposals and (b) vote on proposals. The voting process is a rather intricate undertaking, involving aspects such as neuron eligibility, voting power, chains of neuron followees etc. This has been designed with security and dependability in mind, and is being continuously improved in order to prevent the concentration of voting power in the hands of just a few neuron owners.
+
'''Voting''' is the process through which proposals are selected for adoption and implementation. Its direct participants are the [[#neuron|neurons]], who both (a) submit proposals and (b) vote on proposals. The voting process is a rather intricate undertaking, involving aspects such as neuron eligibility, voting power, chains of neuron followees etc. This has been designed with security and dependability in mind, and is being continuously improved in order to prevent the concentration of voting power in the hands of just a few neuron owners.
  
 
==W==
 
==W==
 
===== WebAssembly =====
 
===== WebAssembly =====
 
'''WebAssembly''' (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine.
 
'''WebAssembly''' (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine.

Revision as of 17:46, 18 February 2022

A

account

A ledger account is a set of entries in the ledger canister, which is a smart contract that mimics the guise and behavior of a regular banking account, whose unit of measure is ICP (Internet Computer Protocol) utility tokens. Ledger accounts are owned by principals, and their ownerships do not change over time. Every account on the ledger has a positive balance measured in ICP with a precision of eight decimals.

address

In the context of transactions on the ledger, address is synonymous with account.

actor

An actor is a primitive in the Actor Model. The Actor Model is relevant to the IC because canisters on the IC (a type of smart contract) follow the Actor Model for concurrent and asynchronous computation.

B

balance

The balance of an account on the ledger is the sum of all deposits minus the sum of all withdrawals. As a degenerate case, it is sometimes useful to say that an account which is not present in the ledger has a balance of zero.

The balance of a ledger account is denominated in ICP and is represented with eight decimals. Thus, the minimum positive balance of an account is 0.00000001 or 10^-8 ICP; this amount is sometimes referred to as one e8.

batch

A batch is a collection of messages whose order is agreed upon by consensus.

beneficiary

The beneficiary of an account is the principal who owns the balance of the account. The beneficiary of an account cannot be changed. The beneficiary of an account may or may not be allowed to make transactions on the account (see fiduciary).

blockchain

A blockchain is a growing list of cryptographically linked blocks, agreed upon by consensus. On the Internet Computer every subnet is a blockchain and these blockchains interact using chain key cryptography.

boundary nodes

boundary nodes Nginx gateways to the internet computer. These nodes act as HTTP routers through which the network’s subnet blockchain nodes can be reached. The boundary nodes have several purposes: they aid in discover-ability (the ic0.app domain name points to a set of boundary nodes), they are geo-aware and can route incoming requests to the nearest subnet node that hosts the canister involved, they can help load balance query transactions, they can cache cryptographically verified data in the role of a content distribution network, they can throttle excessive interactions from an outside IP address, bootstrapping/Installing the service worker, and they can help protect subnets from DDoS attacks.

burning transaction

A burning transaction is the process of "burning" ICP, whereby a certain amount of ICP are destroyed. The main use case is that of purchasing cycles, through which ICP are destroyed while at the same time a corresponding amount of cycles is created, using the current exchange rate between ICP and ( SDR), in such a way that one SDR corresponds to one trillion (10E12) cycles. It is represented as a transaction from the source account to the ICP supply account.

C

canister

A canister is a type of smart contract that bundles code and state. A canister can be deployed as a smart contract on the Internet Computer and accessed over the Internet.

canister account

A canister account is a ledger account owned by a canister (i.e. whose fiduciary is a canister). A non-canister account is a ledger account whose fiduciary is a non-canister principal.

canister identifier

The canister identifier or canister ID is a globally-unique identifier that identifies a canister and can be used to interact with it.

canister signature

A canister signature uses a signature scheme based on certified variables. Public “keys” include a canister id plus a seed (so that every canister has many public keys); signatures are certificates that prove that the canister has put the signed message at a specific place in its state tree. Details in the The Internet Computer Interface Specification.

canister state

A canister state is the entire state of a canister at a given point in time. A canister’s state is divided into user state and system state. The user state is a WebAssembly module instance and the system state is the auxiliary state maintained by the Internet Computer on behalf of the canister, such as its compute allocation, balance of cycles, input and output queues, and other metadata. A canister interacts with its own system state either implicitly, such as when consuming cycles, or through the System API, such as when sending messages.

catch-up package (CUP)

A catch-up package is a data bundle that contains everything needed to bootstrap a subnet replica.

certified query

A certified query is a query call for which the response is certified.

certified variable

A piece of data that a canister can store in its subnet’s canonical state in the processing of an update call (or inter-canister call), so that during the handling of a query call, the canister can return a certificate to the user that proves that it really committed to that value.

chain key

Chain key cryptography consists of a set of cryptographic protocols that orchestrate the nodes that make up the Internet Computer. The most visible innovation of chain key cryptography is that the Internet Computer has a single public key. This is a huge advantage as it allows any device, including smart watches and mobile phones, to verify the authenticity of artifacts from the Internet Computer.

consensus

In distributed computing, consensus is a fault tolerant mechanism by means of which a number of nodes can reach agreement about a value or state.

Consensus is a core component of the replica software. The consensus layer selects messages from the peer-to-peer artifact pool and pulls messages from the cross-network streams of other subnets and organizes them into a batch, which is delivered to the message routing layer.

controller

A controller of a canister is a person, organization, or other canister that has administrative rights over the canister. Controllers are identified by their principals. For example, a controller of a canister can upgrade the WebAssembly code of the canister or delete the canister.

cycle

On the Internet Computer, a cycle is the unit of measurement for resources consumed in the form of processing, memory, storage, and network bandwidth. Every canister has a cycles account to which resources consumed by the canister are charged. The Internet Computer’s utility token (ICP) can be converted to cycles and transferred to a canister. Cycles can also be transferred between canisters by attaching them to an [inter-canister] message.

ICP can always be converted to cycles using the current price of ICP measured in [SDR] using the convention that one trillion cycles correspond to one SDR.

D

dapp

A dapp, or decentralised application is a canister running on the Internet Computer.

data center

A data center (DC) is a physical site that hosts nodes which contribute to the Internet Computer. It includes the hardware and software infrastructure required for node deployment. A DC is identified on the Internet Computer by a unique identifier.

dissolve delay

The dissolve delay is the amount of time that neurons must spend dissolving before becoming disolved.

dissolved state

The dissolved state is a neuron state characterized by a dissolve delay equal to zero. (It is conventionally said that a neuron in this state does not "have" a dissolve delay.) It is in this state that a neuron can be "disbursed," hence its stake moved elsewhere, and its corresponding neuron account closed. The age of a dissolved neuron is considered to be zero.

dissolving state

A dissolving state is a neuron state that follows immediately after its owner issues a "start dissolving" command, and continues until a "stop dissolving" command is issued, or until the dissolve delay timer runs out. The age of a dissolving neuron is considered to be zero.

E

execution environment

The execution environment is one of the core layers of the replica software.

F

fiduciary

The fiduciary of an account is the principal allowed to make transactions on the account; as such, it may be useful to think of it as the owner of the account, with the caveat that it may or may not be the beneficiary of the account. The neuron account is a prominent example of an account for which the beneficiary and fiduciary do not coincide (the fiduciary is the governance canister while the beneficiary is the neuron holder). The fiduciary of a (ledger) account does not change over time.

The distinction between fiduciary and beneficiary is also important for DeFi dapps (canisters) that interact with the IC ledger: in this case, the fiduciary is the DeFi canister while the beneficiary is the individual or organisation ([[#principal|principal) that uses the DeFi canister’s services.

G

governance canister

The governance canister is a system canister that implements the NNS governance system, i.e., among others, stores and manages neurons and proposals, and implements the NNS voting environment.

I

ICP

The Internet Computer Protocol token (ticker "ICP") is the utility token of the Internet Computer. ICP allows the broader internet community to participate in the governance of the Internet Computer blockchain network by locking ICP in neurons. ICP can also be converted into cycles, which are then used to power canisters.

ICP supply account

The ICP supply account is a quasi-fictitious ledger account whose balance is always zero. It has a central role in ICP burning and minting operations.

identity

An identity is a byte string that is used to identify an entity, such as a principal, that interacts with the Internet Computer. For users, the identity is the SHA-224 hash of the DER-encoded public key of the user. The Internet Computer Interface Specification has more detail.

Internet Identity

Internet Identity is an anonymizing blockchain authentication system running on the Internet Computer.

induction pool

The induction pool of a subnet blockchain is the collection of all input queues of all canisters residing on the subnet.

ingress message

An ingress message is a message sent by an end-user to a canister running on a subnet blockchain. The message is signed by the secret key corresponding to the end-user’s identity and sent to one of the replicas that participate in the subnet.

ingress message history

The ingress message history records the current status of every ingress message processed by a replica and keeps track of whether messages were successfully included in the induction pool and the responses of executed messages.

input queue

The input queue of a canister contains all messages bound for the canister. See also induction pool. When the canister is scheduled for execution, messages from its input queue will be executed.

inter-canister message

An inter-canister message is a message sent from one canister to another. Inter-canister messages are different from user-initiated ingress messages.

Internet Computer (IC)

The Internet Computer (IC) is a decentralized blockchain that provides scalable compute capacity for running canisters through independent node providers running node in geographically distributed data centers.

L

ledger canister

The ledger canister is a system canister whose main role is to store accounts and their corresponding transactions.

M

message

A message is data sent from one canister to another or from a user to a canister.

message routing

The message routing layer receives batches from the consensus layer and inducts them into the induction pool. Message routing then schedules a set of canisters to execute messages from their input queues.

After messages have been executed, the message routing layer takes any messages produced in the execution round from the output queues and puts those messages into the outgoing streams to be consumed by canisters on other subnets.

minting transaction

A minting transaction is the process of "minting" ICP, whereby a certain amount of ICP comes into existence. ICP is minted in order to reward neurons for voting, and reward node providers for participating in the IC by providing compute capacity through the running of nodes. A minting transaction is represented as a transaction from the ICP supply account to a destination account.

Motoko

Motoko is a programming language designed to directly support the programming model of the Internet Computer, making it easier to efficiently build applications and take advantage of some of the more unusual features of this platform, including the Actor Model for smart contracts and compilation to WebAssembly.

N

non-dissolving state

A neuron that is not dissolved or dissolving is said to be in a non-dissolving state (or "aging"). Non-dissolving neurons thus accrue "age", with the caveat that beginning to dissolve at any time reduces this age back to zero. The dissolve delay parameter of a non-dissolving (aka "aging") neuron cannot be zero, because such a neuron would have to already be dissolved.

network nervous system (NNS)

The network nervous system (NNS) is a collection of system canisters (aka "NNS canisters") assembled into a system that governs all aspects of the Internet Computer.

neuron

A neuron is an IC entity that can make proposals and vote on proposals related to the governance of the Internet Computer platform.

To provide the stability required for responsible governance, neurons need to store ("stake") a certain amount of ICP in order to be able to make and vote on proposals. This locks the tokens for a period of time, after which it starts dissolving. The ICP stake of a neuron is stored in a neuron account.

The neuron owner has the right to propose and vote on governance issues, and is granted rewards for voting in proportion to the amount of ICP staked, and the duration of the dissolve period.

neuron account

A neuron account is a canister account whose beneficiary is a neuron (or the neuron’s owner). The governance canister is the fiduciary of all neuron accounts.

neuron age

The neuron age is a neuron parameter roughly indicative of the time that has passed since its creation or since when it last entered into a non-dissolving state. Calculation of a neuron’s age needs to take into account whether the neuron has spent time dissolving or dissolved, both of which reset this parameter.

node

The term node and related terms are covered by the node ontology A node is a physical or virtual network endpoint that hosts all the hardware, replica software, and configuration settings required to participate in the Internet Computer.

node operator

A node operator (NO) is a non-canister principal who has the authority to add/remove nodes to/from the IC.

Node providers come in possession of Hardware Security Modules (HSM), and register the HSMs with the NNS. (The HSM registration process consists essentially in deriving an IC principal ID from the key stored on the HSM, and persisting that ID with the NNS.) NPs hand registered HSMs over to legal persons, who now gain the authority to physically “operate nodes” (aka install replicas). The caveat is that, as opposed to "regular" principals, where a great deal of care goes into making sure that one principal ID corresponds to only one person, HSMs can routinely exchange hands, hence many persons can act as the same NO principal at different times.

node provider

A node provider (NP) is a non-canister principal that receives the rewards stemming from node participation to the IC (aka “payout principal”). Usually, though not necessarily, a node provider is the owner of the node, and may also be involved in node operation and related tasks. A node provider may receive rewards from multiple nodes in multiple data centers.

O

output queue

Each canister has an output queue of messages bound for other canisters.

P

peer-to-peer (P2P)

In common usage, peer-to-peer (P2P) computing or networking is a distributed application architecture that partitions workload across a network of equally-privileged computer nodes so that participants can contribute resources such as processing power, disk storage, or network bandwidth to handle application workload.

The peer-to-peer layer collects and disseminates messages and artifacts from users and from other nodes.

The nodes of a subnet form a dedicated peer-to-peer broadcast network that facilitates the secure bounded-time/eventual delivery broadcast of artifacts (such as ingress messages, control messages and their signature shares). The consensus layer builds upon this functionality.

principal

The term principal and related terms can be found in the principal ontology. A principal is an entity that can be authenticated by the Internet Computer. This is the same sense of the word principal as the Wikipedia definition. Principals that interact with the Internet Computer do so using a certain identity.

proposal

A proposal is a statement describing an action to modify certain parameters of the IC, or of any of its subsystems. It is implemented as an IC entity having various attributes, such as an ID, a URL, a summary etc. Proposals are submitted by eligible neuron owners for the consideration of the IC community, and undergo a voting process, following which they can be adopted or rejected. Adopted proposals are then executed.

There are several taxonomies of proposals, the most prominent of which groups proposals into "topics," whose adoption, in turn, triggers certain categories of actions, such as the creation of a subnet, the addition of a node to a subnet, and the modification of the ICP exchange rate.

proto-node

A proto-node is an IC entity consisting of a combination of hardware and software, that differs from a node in that it has not yet been registered with the IC. A proto-node is, in short, a "node-in-waiting," hence has all that it takes to be a node except the replica software.

Q

query

A query is an optimised way to execute operations on a canister where the state changes are not preserved. Queries are synchronous and can be made to any node that hosts the canister. Queries do not require consensus to verify the result.

R

replica

The replica is a collection of protocol components that are necessary for a node to participate in a subnet.

registry

The IC registry manages the system meta-data maintained on the network nervous system (NNS) and accessed by all subnet blockchains.

S

smart contract

A smart contract is a stateful computer program designed to automatically execute, control or document relevant events and actions according to the terms of a contract or an agreement. A smart contract can be deployed on the Internet Computer in the form of a canister bundling data and code.

A canister can have one or more controllers that are permitted to modify the code of the canister, thereby modifying the terms of the smart contract. For a canister smart contract to have immutable code, its list of controllers must be empty.

state change

A state change is the result of any transaction, function call, or operation that changes the information stored in a canister. For example, if a function makes an update call that adds two numbers together or removes a name from a list, the result is a change to the canister state.

state manager

The state manager is responsible for

  1. maintaining (multiple versions of) the replicated state the deterministic state machine implemented by message routing and the execution environment operates on,
  2. converting back and forth between the replicated state and its canonical version (latter can be understood independent of the concrete implementation),
  3. obtaining certifications of parts of the canonical state, which allow other stakeholders such as other subnets and/or users, to verify that some piece of state indeed originates from a valid subnetwork, and
  4. providing capabilities to sync the canonical state with other replicas in the same subnet so that replicas that have fallen behind can catch up.
subnet

A subnet (subnetwork) is a collection of nodes that run their own instance of the consensus algorithm to produce a subnet blockchain that interacts with other subnets of the IC using chain key cryptography.

system canister

A system canister is a pre-installed canister that performs certain tasks needed to maintain the Internet Computer.

T

transaction

A ledger account transaction is the process of transferring ICP from one account to another; it can be of three types: (a) regular transfer transaction, (b) burning transaction, and (c) minting transaction.

transfer transaction

A transfer transaction is the process of transferring ICP from any regular ledger account (i.e. any ledger account except the ICP supply account) to another regular ledger account.

U

user

A user is any entity that interacts with the Internet Computer. Users include end-users that use dapps deployed on the IC, dapp developers, holders of ICP utility tokens, and neuron holders.

V

valid set rule

The valid set rule is the rule that determines a valid induction pool. Ingress messages and inter-canister messages must pass certain checks to ensure that the valid set rule is upheld before they can be added to the induction pool.

voting

Voting is the process through which proposals are selected for adoption and implementation. Its direct participants are the neurons, who both (a) submit proposals and (b) vote on proposals. The voting process is a rather intricate undertaking, involving aspects such as neuron eligibility, voting power, chains of neuron followees etc. This has been designed with security and dependability in mind, and is being continuously improved in order to prevent the concentration of voting power in the hands of just a few neuron owners.

W

WebAssembly

WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine.