Skip to content

Commit

Permalink
Merge branch 'master' into update-system-canisters
Browse files Browse the repository at this point in the history
  • Loading branch information
jessiemongeon1 authored Jan 2, 2025
2 parents 42d470f + 88eba87 commit 0cd59b1
Show file tree
Hide file tree
Showing 94 changed files with 736 additions and 5,323 deletions.
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,5 @@ stats.py
unlighthouse.config.ts
# Local Netlify folder
.netlify
roadmap.json
roadmap.d.ts
/roadmap/roadmap.json
/roadmap/roadmap.d.ts
8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -600,23 +600,25 @@ The list of tags is not final, and will be updated as the project evolves. For n
- `DAO`
- `DeFi`
- `Enterprise`
- `Games`
- `Gaming`
- `Metaverse`
- `NFT`
- `SocialFi`
- `Tools / Infrastructure`
- `Wallet`
- `Analytics`
- `Creator Economy`
### Object schema
```
```json
{
id: string,
name: string,
oneLiner: string, // short description of the project
website: string, // URL starting with `https://`
tags: ('AI' | 'Chain Fusion' | 'Bitcoin' | 'Ethereum' | 'DAO' | 'DeFi' | 'Enterprise' | 'Games' | 'Metaverse' | 'NFT' | 'SocialFi' | 'Tools / Infrastructure' | 'Wallet')[],
tags: ('AI' | 'Chain Fusion' | 'Bitcoin' | 'Ethereum' | 'DAO' | 'DeFi' | 'Enterprise' | 'Gaming' | 'Metaverse' | 'NFT' | 'SocialFi' | 'Tools / Infrastructure' | 'Wallet' | 'Analytics' | 'Creator Economy')[],
description: string, // description of the project
stats: string, // eg. "10,000 users"
logo: string, // url to logo file, eg. /img/showcase/awesome-icp-project_logo.webp
Expand Down
55 changes: 55 additions & 0 deletions blog/news-and-updates/2024-12-28-update.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
title: Developer weekly update December 18, 2024
description: This week, we're going to take a look at the road ahead for ICP developers in 2025 and dive into some roadmap items and ongoing initiatives that we'll see take the stage in the new year.
tags: [Devs]
image: /img/blog/dev-update-blog-dec-18.jpg
---

# Developer weekly update December 18, 2024

![December 18 2024](../../static/img/blog/dev-update-blog-dec-18.jpg)

Hello developers, and welcome to this week's developer weekly update! This week, we're going to take a look at the road ahead for ICP developers in 2025 and dive into some roadmap items and ongoing initiatives that we'll see take the stage in the new year. Let's get started!

## Roadmap milestones

In 2025, ICP will work toward several roadmap milestones, including:

- Flux: Focused on increasing network compute capacity and scalability, Flux plans to implement asynchronous checkpointing and canister migration between subnets.

- Ignition: Part of the decentralized AI roadmap, the Ignition milestone will expand compute and memory capabilities of canisters.

- Helium: Next up in the Chain Fusion roadmap is an integration with Solana through a Solana RPC canister.

- Niobium: The long-awaited vetKeys feature enabling decentralized key management.

You can view details about the roadmap on [internetcomputer.org](https://internetcomputer.org/roadmap).

## Decentralized AI: DeAI Manifesto

Decentralized AI on ICP is just getting started and will be a major topic of conversation and development in 2025. Recently, the DeAI working group put together the [DeAI Manifesto](https://deaimanifesto.com/), a set of parameters and values that they believe will drive decentralized AI across all ecosystems—not just ICP. Some of these values include:

- DeAI is safe AI.

- DeAI is responsible AI.

- DeAI is verifiable. AI

You can read and sign the [DeAI Manifesto](https://deaimanifesto.com/) to participate in DeAI on ICP.

## ICP developer ecosystem growth

In the [Electric Capital 2024 Developer Report](https://www.developerreport.com/developer-report), the ICP developer community ranked highly across several different statistics, including:

- In 2024, ICP was the third largest ecosystem for new developers.

- In 2024, ICP was the second highest chain for full-time developer growth.

- In Africa, ICP was the third most popular blockchain ecosystem.

More details can be found [on X](https://x.com/dfinity/status/1867619158906876252).

That'll wrap up this week and this year! Tune back in 2025 for more developer updates!

-DFINITY

33 changes: 16 additions & 17 deletions docs/developer-docs/ai/ai-on-chain.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ keywords: [intermediate, tutorial, machine learning, ml, mnist, rust]
import useBaseUrl from "@docusaurus/useBaseUrl";
import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
import '/src/components/CenterImages/center.scss';
import TabItem from "@theme/TabItem";
import Tabs from "@theme/Tabs";

# Image classification sample

<MarkdownChipRow labels={["Advanced", "Tutorial", "Rust" ]} />



ICP's unique ability to run compute at scale allows AI and neural networks to run directly onchain within a canister smart contract.

To showcase this capability, this demo example displays how an AI that identifies an image can be deployed as a smart contract with a frontend and backend, both running onchain.
Expand Down Expand Up @@ -72,19 +72,24 @@ Currently, Wasm execution is not optimized for this workload. A single call exec

## Deploying the demo

### Prerequisites
<Tabs>
<TabItem value="prereq" label="Prerequisites" default>

<input type="checkbox"/> <a href="/docs/current/developer-docs/getting-started/install">Install the IC SDK.</a>

<input type="checkbox"/> Download and install <a href="https://doc.rust-lang.org/book/ch01-01-installation.html">Rust.</a>

- [x] Download and install the Rust programming language and Cargo as described in the [Rust installation instructions](https://doc.rust-lang.org/book/ch01-01-installation.html) for your operating system.
<input type="checkbox"/> Download and install <a href="https://git-scm.com/downloads">git.</a>

- [x] Download and install the IC SDK package as described in the [installing the IC SDK](/docs/current/developer-docs/getting-started/install) page.
<input type="checkbox"/> Download and install <a href="https://github.com/WebAssembly/wasi-sdk/releases/tag/wasi-sdk-21"><code>wasi-skd-21.0</code>.</a>

- [x] Download and install [git](https://git-scm.com/downloads).
<input type="checkbox"/> Export `CC_wasm32_wasi` in your shell such that it points to WASI clang and sysroot: <code>export CC_wasm32_wasi="/path/to/wasi-sdk-21.0/bin/clang --sysroot=/path/to/wasi-sdk-21.0/share/wasi-sysroot"</code>

- [x] Install [`wasi-skd-21.0`](https://github.com/WebAssembly/wasi-sdk/releases/tag/wasi-sdk-21).
<input type="checkbox"/> Download and install <a href="https://github.com/wasm-forge/wasi2ic"><code>wasi2ic</code> and make sure that `wasi2ic` binary is in your <code>$PATH</code>.</a>

- [x] Export `CC_wasm32_wasi` in your shell such that it points to WASI clang and sysroot: `export CC_wasm32_wasi="/path/to/wasi-sdk-21.0/bin/clang --sysroot=/path/to/wasi-sdk-21.0/share/wasi-sysroot"`
</TabItem>
</Tabs>

- [x] Install [`wasi2ic`](https://github.com/wasm-forge/wasi2ic) and make sure that `wasi2ic` binary is in your `$PATH`.

### Downloading the example

Expand Down Expand Up @@ -120,17 +125,11 @@ rustup target add wasm32-wasi

### Deploying the code

To deploy the example, first start `dfx`:
To deploy the example, first start `dfx`, then deploy the project:

```
dfx start --clean --background
```

Then to deploy the canisters, run the command:

```
dfx deploy // Deploy locally
dfx deploy --network ic // Deploy to the mainnet
dfx deploy
```

## Using the demo
Expand Down
51 changes: 9 additions & 42 deletions docs/developer-docs/ai/machine-learning-sample.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,13 @@ keywords: [intermediate, tutorial, machine learning, ml, mnist, rust]
import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
import useBaseUrl from "@docusaurus/useBaseUrl";
import '/src/components/CenterImages/center.scss';
import TabItem from "@theme/TabItem";
import Tabs from "@theme/Tabs";

# Machine learning sample

<MarkdownChipRow labels={["Advanced", "Tutorial", "Rust" ]} />




Machine learning is a form of artificial intelligence (AI) that observes statistical algorithms and their data to learn patterns and generalizations. By analyzing these data patterns, machine learning algorithms can execute tasks by predicting the correct result with high accuracy.

One common machine learning model that is used to train data sets is the Modified National Institute of Standards and Technology (MNIST) database which contains a collection of handwritten numbers. This database is commonly used for training different image processing systems and testing different machine learning platforms.
Expand All @@ -23,14 +22,15 @@ For example, if the user draws the digit `5`, the machine learning model will so

This project is based off of one [found within the Rust Burn examples](https://github.com/tracel-ai/burn/tree/main/examples/mnist-inference-web).

### Prerequisites

- [x] [Download and install Rust](https://www.rust-lang.org/tools/install).
<Tabs>
<TabItem value="prereq" label="Prerequisites" default>

- [x] [Download and install Node.js](https://nodejs.org/en/download) `16.0.0` or newer.
<input type="checkbox"/> <a href="/docs/current/developer-docs/getting-started/install">Install the IC SDK.</a>

- [x] [Download and install the IC SDK](/docs/current/developer-docs/getting-started/install).
<input type="checkbox"/> Download and install <a href="https://doc.rust-lang.org/book/ch01-01-installation.html">Rust.</a>

</TabItem>
</Tabs>

## Creating a new project

Expand All @@ -43,40 +43,7 @@ dfx start --clean --background
dfx new machine_learning_sample
```

You will be prompted to select the language that your backend canister will use. Select 'Rust':

```
? Select a backend language: ›
Motoko
❯ Rust
TypeScript (Azle)
Python (Kybra)
```

:::info
`dfx` versions `v0.17.0` and newer support this `dfx new` interactive prompt. [Learn more about `dfx v0.17.0`](/blog/2024/02/14/news-and-updates/update#dfx-v0170).
:::

Then, select a frontend framework for your frontend canister. Select 'Vanilla JS':

```
? Select a frontend framework: ›
SvelteKit
React
Vue
❯ Vanilla JS
No JS template
No frontend canister
```

Lastly, you can include extra features to be added to your project:

```
? Add extra features (space to select, enter to confirm) ›
⬚ Internet Identity
⬚ Bitcoin (Regtest)
⬚ Frontend tests
```
You will be prompted to select the language that your backend canister will use. Select 'Rust'. For the frontend, select 'Vanilla JS.'

Then, navigate into the new project directory:

Expand Down
12 changes: 8 additions & 4 deletions docs/developer-docs/defi/cycles/cycles-wallet.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ keywords: [beginner, tutorial, cycles, cycles wallet]

import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
import TabItem from "@theme/TabItem";
import Tabs from "@theme/Tabs";

# Using a cycles wallet

<MarkdownChipRow labels={["Beginner", "Tutorial"]} />



As discussed in [tokens and cycles](/docs/current/developer-docs/getting-started/tokens-and-cycles), ICP tokens can be converted into **cycles** to power <GlossaryTooltip>canister</GlossaryTooltip> operations. Cycles reflect the operational cost of communication, computation, and storage that dapps consume.

Unlike ICP tokens, cycles are only associated with canisters and not with user or developer <GlossaryTooltip>principals</GlossaryTooltip>. Because only canisters require cycles to perform operations and pay for the resources they use, users and developers can manage the distribution and ownership of cycles through a special type of canister called a **cycles wallet**.
Expand Down Expand Up @@ -78,9 +78,13 @@ Authorizing a principal as a custodian does not automatically grant the principa

## Creating a cycles wallet

### Prerequisites
<Tabs>
<TabItem value="prereq" label="Prerequisites" default>

<input type="checkbox"/> <a href="/docs/current/developer-docs/getting-started/install">Install the IC SDK.</a>

- [x] Install the [IC SDK](/docs/current/developer-docs/getting-started/install).
</TabItem>
</Tabs>

If you are **deploying locally**, your local cycles wallet is created in the background when you register a new canister principal using `dfx canister create` or when you register, build, and deploy a canister with `dfx deploy`.

Expand Down
17 changes: 10 additions & 7 deletions docs/developer-docs/defi/exchange-rate-canister.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ keywords: [intermediate, tutorial, exchange rate canister]

import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
import TabItem from "@theme/TabItem";
import Tabs from "@theme/Tabs";

# Exchange rate canister

<MarkdownChipRow labels={["Intermediate" , "Tutorial"]} />



The exchange rate canister, referred to as the XRC, is a canister that runs on the **uzr34 system subnet**. The XRC uses [HTTPS outcalls](https://internetcomputer.org/https-outcalls/) to fetch data from major cryptocurrency exchanges by using the exchange's public API to retrieve real time or historical cryptocurrency pricing information. The XRC also queries the public APIs for foreign exchange data providers around the world periodically in order to get forex rates.

The XRC canister can be used by dapps such as decentralized exchanges (DEXs) to provide functionality such as comparing exchange rates against market rates to determine the value of assets that are held in a canister smart contract. For example, the cycle minting canister of the <GlossaryTooltip>NNS</GlossaryTooltip> uses the XRC to obtain the current ICP/XDR exchange rates, which it requires for the conversion of ICP to cycles.
Expand Down Expand Up @@ -93,13 +93,16 @@ Alternatively, you can run a local XRC demo application to test the functionalit
It is worth noting that this sample dapp is very simple. If there is an error, it always returns `0` because the return value is simply a float.
:::

### Prerequisites

- [x] Download and install the IC SDK package as described in the [download and install](/docs/current/developer-docs/getting-started/install) page.
<Tabs>
<TabItem value="prereq" label="Prerequisites" default>

- [x] Download and install [Nodejs and npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm).
<input type="checkbox"/> <a href="/docs/current/developer-docs/getting-started/install">Install the IC SDK.</a>
<div>
</div>
<input type="checkbox"/> Download and install <a href="https://git-scm.com/downloads">git.</a>

- [x] Download and install [git](https://git-scm.com/downloads).
</TabItem>
</Tabs>

Then, clone the sample repository, install the dependencies, and build the canisters with the following commands:

Expand Down
15 changes: 10 additions & 5 deletions docs/developer-docs/defi/nfts/nft-collections.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ keywords: [intermediate, tutorial, nft collection, create an nft, icrc-7, icrc-3

import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
import TabItem from "@theme/TabItem";
import Tabs from "@theme/Tabs";

# Creating an NFT collection

<MarkdownChipRow labels={["Intermediate", "NFTs", "Tutorial"]} />



An NFT collection is a series of non-fungible tokens that each have a unique identifier value. Each token's metadata may be the same, such as the name, image, and description, or each token's data can be unique and associated with a 'rarity' value, where some metadata values are less common than others. Rarity metadata attributes are common in generative NFT collections, often referring to an NFT collection where the artwork for each image has been randomly generated and some components only appear in a select few of the generated images.

For this basic NFT example, you will create a collection where each token has the same metadata values, with the only difference between each NFT being their unique token identifier value.
Expand All @@ -27,11 +27,16 @@ This example combines three standards: ICRC-3, ICRC-7, and ICRC-37:

## Creating an NFT collection

### Prerequisites
<Tabs>
<TabItem value="prereq" label="Prerequisites" default>

- Download and install the [IC SDK](/docs/current/developer-docs/getting-started/install).
<input type="checkbox"/> <a href="/docs/current/developer-docs/getting-started/install">Install the IC SDK.</a>
<div>
</div>
<input type="checkbox"/> Download and install <a href="https://git-scm.com/downloads">git.</a>

- Download and install [git](https://git-scm.com/downloads).
</TabItem>
</Tabs>

### Step 1: Download the NFT example project.

Expand Down
13 changes: 8 additions & 5 deletions docs/developer-docs/defi/tokens/indexes.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,12 @@ import TabItem from "@theme/TabItem";
import { AdornedTabs } from "/src/components/Tabs/AdornedTabs";
import { MarkdownChipRow } from "/src/components/Chip/MarkdownChipRow";
import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";

import Tabs from "@theme/Tabs";

# Index canisters

<MarkdownChipRow labels={["Intermediate" , "Tutorial"]} />



On ICP, an index <GlossaryTooltip>canister</GlossaryTooltip> is used in conjunction with a <GlossaryTooltip>ledger</GlossaryTooltip> canister to provide the ability for transactions to be queried for a specific account. Without an index canister, a ledger's transaction history cannot easily be parsed and used by applications, as the entire transaction history of a ledger would need to be processed.

An index canister can be used to:
Expand All @@ -28,9 +26,14 @@ If you are working in a local development environment, you can't access the main

This guide displays how to deploy an index canister locally and use it in conjunction with a ledger canister. Instructions for both an ICP index and an ICRC index are included.

### Prerequisites
<Tabs>
<TabItem value="prereq" label="Prerequisites" default>

<input type="checkbox"/> Read the guide on deploying a local ledger, then continue with this guide. This guide will assume that you have setup up a local ledger pertaining to your intended token type (ICP or ICRC), and that all prerequisites are fulfilled.

</TabItem>
</Tabs>

- Read the guide on deploying a local ledger, then continue with this guide. This guide will assume that you have setup up a local ledger pertaining to your intended token type (ICP or ICRC), and that all prerequisites are fulfilled.

## Wasm and Candid files

Expand Down
2 changes: 1 addition & 1 deletion docs/developer-docs/defi/tokens/token-standards.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ The ICP token is the network's native token used for various utility and governa

- Rewarding neurons for staking ICP into the neuron and voting on governance proposals.

View an example dapp for [ICP transfers](https://github.com/dfinity/examples/tree/master/motoko/icp_transfer).
View an example dapp for [ICP transfers](https://github.com/dfinity/examples/tree/master/motoko/token_transfer).

## ICRC-1

Expand Down
Loading

0 comments on commit 0cd59b1

Please sign in to comment.