-
Notifications
You must be signed in to change notification settings - Fork 447
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into canister-history
- Loading branch information
Showing
83 changed files
with
3,406 additions
and
364 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
--- | ||
title: Developer weekly update October 25, 2023 | ||
description: This week, we're excited to share the first video tutorial in the developer journey series, announce the name for the dfx version manager, and take a look at the details of a proposed new workflow for SNS launches. | ||
tags: [Devs] | ||
image: /img/blog/dev-update-blog-oct-25.jpg | ||
--- | ||
|
||
# Developer weekly update October 25, 2023 | ||
|
||
![October 25 2023](../../static/img/blog/dev-update-blog-oct-25.jpg) | ||
|
||
Hello developers and welcome back to developer weekly! This week, we're excited to share the first video tutorial in the developer journey series, announce the name for the `dfx` version manager, and take a look at the details of a proposed new workflow for SNS launches. | ||
|
||
## Developer journey video series | ||
|
||
In previous dev updates, we've introduced the developer journey documentation series and provided updates when new 'levels' of the tutorial series have been published. In today's update, we're excited to share that the first video corresponding to the documentation has been released! | ||
|
||
The first video, **ICP Developer Journey 0.1 | Overview of the Internet Computer** corresponds to the very first page in the developer journey series, which can be found [here](/docs/current/tutorials/developer-journey/level-0/ic-overview). | ||
|
||
New videos will be released every week, and will follow each page of the developer journey documentation - that means there will be a total of 36 videos! | ||
|
||
The first video can be found on the DFINITY Youtube channel: | ||
|
||
[![ICP Developer Journey 0.1 | Overview of the Internet Computer](https://img.youtube.com/vi/oBUpJ4CqmN0/0.jpg)](https://youtu.be/oBUpJ4CqmN0?si=q5r223tFnWoZTMGz) | ||
|
||
## `dfx` version manager name decision | ||
|
||
Last week, we asked for your feedback on naming an upcoming tool known as the `dfx` version manager. The results are in, and a name has been decided! | ||
|
||
The `dfx` version manager will be called **dfxvm**. | ||
|
||
Stay tuned for more updates on this new tool! | ||
|
||
## Proposed new SNS workflow | ||
|
||
Recently, a new SNS hand-off workflow has been proposed on the developer forum. This new workflow has been proposed because there has been a high amount of friction during the canister hand-off process, especially when handing off the SNS's asset canister. | ||
|
||
For an SNS to be launched, the dapp's canisters must be handed over from the developers to the SNS itself. Prior to August 2023, this process included the following steps: | ||
|
||
- An SNS is first approved to be launched through an NNS proposal. | ||
|
||
- The dapp's canisters are then created and initialized, with the SNS governance canister's ID being publicly known. | ||
|
||
- Then, developers hand over the dapp's canisters to the SNS. | ||
|
||
- The SNS root canister is set as the controller of the canisters, and the SNS's proposal methods are configured so that they can only be called by the governance canister. | ||
|
||
- Lastly, an NNS proposal is used to start the SNS decentralization swap and launch the SNS. | ||
|
||
This process was amended in August 2023 to simplify and condense several steps, ultimately providing an SNS to be created through a single NNS proposal. In this revised workflow, the dapp's canisters are handed over from the developers to the NNS, then an NNS proposal creates the SNS canisters, initializes them, hands them over to the SNS, then starts the decentralization swap and launches the SNS. | ||
|
||
This is how the SNS process currently operates. | ||
|
||
The newly proposed workflow takes this current workflow and adds an additional step where once the SNS is launched, the SNS community upgrades the dapp's canisters through an SNS proposal. Within this upgrade, they can set the privileges within the dapp appropriately. | ||
|
||
You can read more about this proposed workflow and provide your thoughts on the [developer forum](https://forum.dfinity.org/t/handing-over-dapp-canisters-to-an-sns-dao/23877). | ||
|
||
That'll wrap up this week. Tune back in next week for more developer updates! | ||
|
||
-DFINITY |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,18 @@ | ||
# Neurons and governance | ||
|
||
## Overview | ||
As a decentralized blockchain, all changes to the configuration and behavior of the Internet Computer are controlled by a governance body called the Network Nervous System (NNS). The NNS controls many aspects of the Internet Computer blockchain including the following: | ||
As a decentralized blockchain, all changes to the configuration and behavior of the Internet Computer are controlled by a governance system called the Network Nervous System (NNS). The NNS controls many aspects of the Internet Computer blockchain including: | ||
|
||
- Which data center providers participate in the network. | ||
|
||
- The number, location, and ownership of the nodes accepted from a data center provider. | ||
|
||
- Assignment of nodes to subnet blockchains. | ||
|
||
- Whether upgrades to canisters or to a new protocol version are allowed or not. | ||
- Upgrades to newer protocol versions or upgrades of system canisters. | ||
|
||
In addition, only members of the governance body can vote to adopt or reject requests to upgrade Internet Computer replicas or modify the Internet Computer protocol. | ||
## Who can vote? | ||
|
||
## Voting rights for stakeholders | ||
To favor the long-term sustainability of ICP over short-term interests, only ICP token holders who stake their tokens can participate in the governance process. A staked amount of ICP is called a **neuron**. The amount of ICP staked in a neuron can only be converted back to ICP after the neuron’s lock-up period, called the “dissolve delay”, has elapsed. The longer the dissolve delay of a neuron, the higher the voting power associated with the neuron. | ||
|
||
Because tokens on the Internet Computer are generally liquid, they do not represent a stable enough commitment on the part of their holders for them to be used for governance purposes. To provide the stability required for responsible governance, tokens can be converted to **neurons**. A neuron represents a number of ICP tokens that cannot be exchanged for a minimum period of time (the lock-up period). | ||
|
||
When a person or organization has some number of ICP tokens locked up in a neuron, the neuron holder has the right to vote on proposals, and to be paid for voting in proportion to the number of ICP locked up, the length of the lock-up period and the relative number of votes cast. | ||
|
||
The Internet Computer blockchain tracks the number of ICP tokens that are locked up in neurons and provides the logic necessary for voting in conjunction with managing ICP token account balances. | ||
Neuron holders constitute the governing body of the NNS. Through their neurons, they can vote on proposals and thereby govern the ICP. To incentivize governance participation, neuron holders receive voting rewards. These rewards depend on the number of votes cast and the amount of ICP staked in the respective neurons. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
# What is the Internet Computer? | ||
|
||
The **Internet Computer** is a blockchain that enables developers, organizations, and entrepreneurs to build and deploy secure, autonomous, and tamper-proof **[canisters](/how-it-works/canister-lifecycle/)**, an evolution of **smart contracts**. | ||
|
||
As a dapp developer, you might find it useful to think of the Internet Computer as providing the following key features: | ||
|
||
- A **globally-accessible, public blockchain** for running smart contracts at web speed, that can serve interactive web content to users. You can read more about the architecture of the IC [here](/how-it-works/architecture-of-the-internet-computer/). | ||
|
||
- A secure cryptographic protocol (**[Internet Computer protocol](/how-it-works/core-ic-protocol-overview/)**) run by nodes machines operated by independent node providers in independent data centers all over the world. This guarantees the secure execution of smart contracts. | ||
|
||
- A **network of independent blockchains**, known as [subnets](./nodes-subnets.md), connected using [chain-key cryptography](/how-it-works/#Chain-key-cryptography) that can [scale out](/how-it-works/scalability/) its capacity as required. | ||
|
||
## An open blockchain | ||
|
||
The Internet Computer is a blockchain hosted on node machines operated by independent parties and located in geographically distributed data centers. The nodes run the [Internet Computer protocol](/how-it-works/core-ic-protocol-overview/), an advanced cryptographic fault-tolerant protocol which ensures that smart contracts running on the blockchain cannot be tampered with or stopped. The Internet Computer is composed of individual subnet blockchains running in parallel and connected using [chain-key cryptography](/how-it-works/#Chain-key-cryptography). This means that canisters running on a subnet can seamlessly call canisters hosted in any other subnet of the Internet Computer blockchain. | ||
|
||
Another important feature of the Internet Computer is that it runs under the control of a decentralized, permissionless governance system, called **[Network Nervous System](/how-it-works/#Network-nervous-system)** (NNS), which runs completely on-chain. The NNS can make decisions on several topics, including scaling out the Internet Computer by creating new subnet blockchains, updating the node machines, and configuring parameters used in the Internet Computer protocol. Anyone can participate in the governance and submit new proposals to the NNS or vote on open proposals. To do so, users have to stake ICP, the Internet Computer utility token, and [create a **neuron** with the NNS](/docs/current/tokenomics/token-holders/nns-app-quickstart). | ||
|
||
## Building the next generation of software and services | ||
|
||
The Internet Computer protocol reduces platform-based risks and paves the way for innovation by re-imagining how software is built, deployed, and accessed. | ||
|
||
For example, with the Internet Computer, developers can focus on writing code using canisters without environment-related distractions such as: | ||
|
||
- Physical or virtual network configuration requirements. | ||
|
||
- Load balancing services. | ||
|
||
- Firewalls, network topology, or port management. | ||
|
||
- Database configuration and maintenance. | ||
|
||
- Storage volumes and devices. | ||
|
||
By enabling developers to focus on building applications and delivering value, the Internet Computer helps simplify the development process, reduce time to market, and foster innovation. | ||
|
||
For end-users, the Internet Computer provides a secure environment for accessing dapps with fewer risks. Because of the inherent security of the blockchain, programs running on the Internet Computer cannot be hijacked by malicious code, which also reduces the total cost of ownership for both application end-users or organizations. | ||
|
||
In addition, because dapps can be "autonomous" and public, developers can write services that communicate with each other and share functions in ways that increase productivity and efficiency while leaving room to innovate and improve projects with confidence. | ||
|
||
The Internet Computer also enables developers to use [cryptographically-secure identities](/how-it-works/web-authentication-identity/) to enforce access controls, reducing the need to rely on usernames and passwords or external identity management plug-ins. | ||
|
||
## Learn more | ||
|
||
- [Architecture of the Internet Computer](/how-it-works/architecture-of-the-internet-computer/). | ||
|
||
- [The Internet Computer Protocol](/how-it-works/core-ic-protocol-overview/). | ||
|
||
- [Peer-to-peer layer](/how-it-works/peer-to-peer-p2p/). | ||
|
||
- [Consensus layer](/how-it-works/consensus/). | ||
|
||
- [Message routing layer](/how-it-works/message-routing/). | ||
|
||
- [Execution layer](/how-it-works/execution-layer/). | ||
|
||
- [Chain-key cryptography](/how-it-works/chain-key-technology/). | ||
|
||
- [Chain-key tokens](/how-it-works/chain-key-tokens/). | ||
|
||
- [The Network Nervous System](https://internetcomputer.org/nns/). | ||
|
||
- [Service Nervous Systems](https://internetcomputer.org/sns/). | ||
|
||
- [Canisters](/how-it-works/canister-lifecycle/). | ||
|
||
- [Internet Identity](/how-it-works/web-authentication-identity/). | ||
|
||
## Get started developing on the IC | ||
|
||
- Get started developing on the IC by embarking on your [developer journey](/docs/current/tutorials/developer-journey). | ||
|
||
- [Designing a dapp](/docs/current/developer-docs/backend/design-dapps). | ||
|
||
- [Building backend canisters with Motoko](/docs/current/developer-docs/backend/motoko/). | ||
|
||
- [Building backend canisters with Rust](/docs/current/developer-docs/backend/rust/). | ||
|
||
## Connect with the IC community | ||
|
||
- [Developer Discord community](https://discord.com/invite/cA7y6ezyE2), which is a large chatroom for IC developers to ask questions, get help, or chat with other developers asynchronously via text chat. | ||
|
||
- [Developer journey forum discussion](https://forum.dfinity.org/t/developer-journey-feedback-and-discussion/23893). | ||
|
||
- [Developer tooling working group](https://www.google.com/calendar/event?eid=MHY0cjBubmlnYXY1cTkzZzVzcmozb3ZjZm5fMjAyMzEwMDVUMTcwMDAwWiBjX2Nnb2VxOTE3cnBlYXA3dnNlM2lzMWhsMzEwQGc&ctz=Europe/Zurich). | ||
|
||
- [Motoko bootcamp](https://github.com/motoko-bootcamp/bootcamp-2022), a week-long crash course to learning all things Motoko. | ||
|
||
- [Motoko developer working group](https://www.google.com/calendar/event?eid=ZWVnb2luaHU0ZjduMTNpZHI3MWJkcWVwNWdfMjAyMzEwMTJUMTUwMDAwWiBjX2Nnb2VxOTE3cnBlYXA3dnNlM2lzMWhsMzEwQGc&ctz=Europe/Zurich). | ||
|
||
- [Upcoming events and conferences](https://dfinity.org/events-and-news/). | ||
|
||
- [Upcoming hackathons](https://dfinity.org/hackathons/). | ||
|
||
- [Weekly developer office hours](https://discord.gg/4a7SZzRk?event=1164114241893187655) to ask questions, get clarification, and chat with other developers live via voice chat. This is hosted on our [developer Discord](https://discord.com/invite/cA7y6ezyE2) group. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.