Skip to content

Commit

Permalink
Merge branch 'master' into docs-audit-2
Browse files Browse the repository at this point in the history
  • Loading branch information
jessiemongeon1 authored Dec 3, 2024
2 parents 8315a16 + 7e28a0d commit f5e2e24
Show file tree
Hide file tree
Showing 118 changed files with 387 additions and 575 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,5 @@ stats.py
unlighthouse.config.ts
# Local Netlify folder
.netlify
roadmap.json
roadmap.d.ts
34 changes: 34 additions & 0 deletions blog/news-and-updates/2024-11-27-update.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
title: Developer weekly update November 27, 2024
description: This week we have two community projects to showcase, Toolkit and Linkpin, and a reminder about developer office hours in the ICP Discord.
tags: [Devs]
image: /img/blog/dev-update-blog-nov-27.jpg
---

# Developer weekly update November 27, 2024

![November 27 2024](../../static/img/blog/dev-update-blog-nov-27.jpg)

Hello developers, and welcome to this week's developer weekly update! This week we have two community projects to showcase, Toolkit and Linkpin, and a reminder about developer office hours in the ICP Discord. Let's get started!

## Toolkit

Toolkit is a dapp management platform with an initial focus on providing tooling for Service Nervous System (SNS) projects. It is designed to simplify dapp development, deployment, scaling, and collaboration. It provides tools to interact with SNS treasuries, mechanisms, and proposals. Developers can also use Toolkit to experiment with dapp governance and management.

[Learn more about Toolkit](https://docs.ic-toolkit.app/docs/intro).

## Linkpin

Linkpin is an onchain bookmark manager, enabling you to login with Internet Identity, save a URL as a bookmark, and then reference that bookmark at a later time. Bookmarks can be managed by alphabetical order, number of clicks, or the last time you visited them. Linkpin utilizes ICP for all data storage and uses a backend written in Motoko.

Linkpin is open source and fully customizable. Check out the code on [GitHub](https://github.com/tagoso/linkpin) for more information.

## Developer office hours

Every Wednesday, the ICP Discord server hosts two office hour sessions: 9 AM CET (8 AM UTC) and 10:30 AM PST (18:30 UTC). Each office hour is hosted in a drop-in style, enabling you to drop into the conversation as you please.

Join the ICP Developer Discord: https://discord.internetcomputer.org/

That'll wrap up this week. Tune back in next week for more developer updates!

-DFINITY
56 changes: 51 additions & 5 deletions docs/developer-docs/defi/wallets/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -51,17 +51,19 @@ Third-party custody allows a third-party entity to act on your behalf, managing
Before choosing a third-party option, you should do your own research and be sure that you understand the ramifications of your choices thoroughly before proceeding.
:::

### Web wallets
### Onchain wallets

Web wallets on ICP use Internet Identity for authentication, and are great for new users, less technical users, daily use, or small token transfers. Some examples include:
Onchain wallets on ICP use Internet Identity for authentication, and are great for new users, less technical users, daily use, or small token transfers. Some examples include:

- [NFID](https://nfid.one/): Each new account creates a hardware wallet that is untraceable. NFID supports sign-in with Google in addition to Internet Identity.

- [Oisy](https://oisy.com/): A multi-chain wallet powered by Chain Fusion.

- [Stoic](https://www.stoicwallet.com/): The native wallet for ICP's largest NFT marketplace, Entrepot.

- [AstroX ME](https://astrox.me/): A multi-chain wallet that supports ICP, Ethereum, Polygon, and more.
- [AstroX ME](https://astrox.me/): A multi-chain wallet that supports ICP, Ethereum, Polygon, and more.

- [Orbit](https://orbitwallet.io/): Private alpha.

### Browser extension wallets

Expand All @@ -71,7 +73,13 @@ Browser extension wallets can be used easily on any webpage, making them a good

- [Bitfinity](https://wallet.bitfinity.network/): Supports ICP, BTC, and SNS tokens. Available for Google Chrome.

- [Klever](https://klever.io/en-us): A multi-chain mobile wallet available for Google Chrome
- [Klever](https://klever.io/en-us): A multi-chain mobile wallet available for Google Chrome.

- [Trust Wallet](https://trustwallet.com/blog/beginners-guide-to-icp).

- [Metamask](https://snaps.metamask.io/snap/npm/fort-major/msq/).

- [Primevault](https://www.primevault.com/).

### Mobile app wallets

Expand All @@ -83,6 +91,32 @@ Mobile app wallets can be used for making transfers or payments while on the go,

- [Klever](https://klever.io/en-us): A multi-chain mobile wallet available for Apple and Android devices.

- [AirGap](https://airgap.it/): Available for Apple and Android devices.

- [Trust Wallet](https://trustwallet.com/): Available for Apple and Android devices, or as an APK file.

## Institutional custody

Institutional custody wallets are recommended for holding large amounts of crypto, as they provide additional benefits like customer support.

- [Coinbase](https://www.coinbase.com/custody).

- [Sygnum](https://www.sygnum.com/digital-asset-banking/internet-computer-icp/).

- [Copper](https://copper.co/en/insights/company-news/copper-adds-support-for-new-token-standards-on-the-internet-computer-blockchain-as-institutional-interest-grows).

- [Crypto Finance](https://www.crypto-finance.com/).

- [Dfns (wallet as a service)](https://www.dfns.co/article/icp-support).

- [Primevault](https://www.primevault.com/).

- [Taurus](https://www.taurushq.com/blog/taurus-integrates-the-full-icp-value-chain-including-staking-in-its-custody-solution-taurus-protect/).

- [NFID](https://nfid.one/).

- [Orbit](https://orbitwallet.io/): Private alpha.

## Self-custody wallets

Self-custody is a token distribution option that enables you to have sole responsibility over your digital assets and the management of your private keys, without the need of a third party to act on your behalf. Because there is no third-party, self-custody solutions often look different than third-party custody solutions, such that they use wallet formats such as air-gapped machines or cold wallets.
Expand All @@ -105,7 +139,19 @@ A **hardware wallet** is a physical device that holds your digital assets. Priva

In most cases, you can recover from the loss of a hardware wallet because the assets stored on hardware wallets are secured using a secret seed phrase. If you copy and secure the seed phrase—for example, by storing it in the form of a [paper wallet](#paper-wallets)—you can initialize a new device with the seed phrase and regain access to your digital assets.

One common hardware wallet device is the Ledger Nano. [Read more about how to set up a Ledger Nano device](./self-custody/hardware-wallet-cli.mdx).
Common hardware wallets include:

- [Ledger Nano](./self-custody/hardware-wallet-cli.mdx).

- [AirGap](https://airgap.it/).

- [Tangem](https://tangem.com/en/).

- [Taurus](https://www.taurushq.com/blog/taurus-integrates-the-full-icp-value-chain-including-staking-in-its-custody-solution-taurus-protect/).

- [Quill](/docs/current/developer-docs/developer-tools/cli-tools/quill-cli-reference/).

- ICP custody with seed phrase and air-gapped machine.

### Air-gapped computers

Expand Down
15 changes: 8 additions & 7 deletions docs/developer-docs/smart-contracts/compile.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ keywords: [beginner, tutorial, compile]

import TabItem from "@theme/TabItem";
import Tabs from '@theme/Tabs';
import { GlossaryTooltip } from "/src/components/Tooltip/GlossaryTooltip";
import { AdornedTabs } from "/src/components/Tabs/AdornedTabs";
import { AdornedTab } from "/src/components/Tabs/AdornedTab";
import { BetaChip } from "/src/components/Chip/BetaChip";
Expand All @@ -19,13 +20,13 @@ After you have [written the code](/docs/current/developer-docs/smart-contracts/w

:::danger

You must [create your canisters](/docs/current/developer-docs/smart-contracts/create) before you can build them, otherwise you will receive an error that they do not exist.
You must [create your canisters](/docs/current/developer-docs/smart-contracts/create) before you can build them; otherwise, you will receive an error message saying they do not exist.

:::

`dfx build` looks for source code to compile for each canister configured under the `canisters` section in the [`dfx.json`](/docs/current/developer-docs/developer-tools/cli-tools/dfx-json-reference) file. It can be used to compile a specific canister or all canisters defined in the project.

Verify the location of your project's files and their file names. Be sure to edit your project's `dfx.json` file to reflect the current intended configuration if necessary.
Verify the location of your project's files and their file names. If necessary, edit your project's `dfx.json` file to reflect the current intended configuration.

## Compiling your canister

Expand Down Expand Up @@ -72,16 +73,16 @@ When this command is executed, the following steps happen:

## How code is compiled to Wasm

WebAssembly (Wasm) is a platform independent binary format that can be executed in the Wasm virtual machine.
Many modern compilers support Wasm as the compilation target along with the traditional targets such as x86 and arm32.
WebAssembly (Wasm) is a platform-independent binary format that can be executed in the Wasm virtual machine.
Many modern compilers support Wasm as the compilation target along with traditional targets such as x86 and arm32.

There are three types of Wasm depending on where the Wasm virtual machine is hosted and how it interacts with users and the host environment:

- **Web browser**: the Wasm program interacts with the users via the JavaScript bindings of the browser. The primary toolchain for compiling Wasm for browsers is [Emscripten](https://emscripten.org/). Note that such Wasm programs are incompatible with ICP.
- **Web browser**: The Wasm program interacts with the users via the JavaScript bindings of the browser. The primary toolchain for compiling Wasm for browsers is [Emscripten](https://emscripten.org/). Note that such Wasm programs are incompatible with ICP.

- **WASI**: this abbreviation stands for [WebAssembly System Interface](https://wasi.dev/). It is becoming the standard for running Wasm programs outside of Web browsers. Major Wasm runtimes such as Wasmtime and Wasmer support this standard. Compilers denote this target as `wasm32-wasi`. ICP does not directly support WASI, but it is possible to preprocess a WASI program and make it runnable on ICP with the community project [`wasi2ic`](https://github.com/wasm-forge/wasi2ic).
- **WASI**: This abbreviation stands for [WebAssembly System Interface](https://wasi.dev/). It is becoming the standard for running Wasm programs outside of Web browsers. Major Wasm runtimes such as Wasmtime and Wasmer support this standard. Compilers denote this target as `wasm32-wasi`. ICP does not directly support WASI, but it is possible to preprocess a WASI program and make it runnable on ICP with the community project [`wasi2ic`](https://github.com/wasm-forge/wasi2ic).

- **Vanilla Wasm**: there is no standard API for interacting with users and the host environment. Every host environment provides their own API. ICP uses this approach and provides the set of functions called the System API to the Wasm program. Many compilers denote this target as `wasm32-unknown-unknown` since they do not know the target host environment and do not make any assumptions about the available APIs.
- **Vanilla Wasm**: There is no standard API for interacting with users and the host environment. Every host environment provides its own API. ICP uses this approach and provides a set of functions, called the System API, to the Wasm program. Many compilers denote this target as `wasm32-unknown-unknown` since they do not know the target host environment and do not make any assumptions about the available APIs.

The Canister Development Kit (CDK) of supported programming language comes with build scripts that link the System API and compile the code to Wasm programs that are compatible with ICP:

Expand Down
2 changes: 1 addition & 1 deletion docs/motoko/version.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Motoko Version

The release of Motoko documented here, currently 0.13.3, may be a few versions
The release of Motoko documented here, currently 0.13.4, may be a few versions
ahead of the Motoko compiler that is shipped with dfx.

You can, however, instruct `dfx` to use a newer version of Motoko than the one
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ To get started, open a terminal window, navigate into your working directory (`d
```bash
dfx start --clean --background
git clone https://github.com/dfinity/examples.git
cd examples/motoko/auth-client-demo
cd examples/archive/motoko/auth-client-demo
npm install
```

Expand Down
1 change: 1 addition & 0 deletions docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -600,6 +600,7 @@ const config = {
"What is the ICP token?, How is the Internet Computer governed?, How do I start building fully onchain Web3?",
"data-modal-disclaimer":
" This LLM provides responses are generated automatically and may be inaccurate or outdated. Please take care to verify or validate any responses before making any critical decisions.",
"data-user-analytics-fingerprint-enabled": "true",
async: true,
},
],
Expand Down
3 changes: 2 additions & 1 deletion plugins/utils/redirects.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const redirects = `
/icp-newsletter /news
/ois /sns
/docs/current/developer-docs/getting-started/overview-of-icp /docs/current/developer-docs/getting-started/network-overview
/docs/videos-tutorials /developers
/docs/videos-tutorials /docs/current/home
/docs /docs/current/home
/docs/current/ /docs/current/home
/docs/current/concepts/bitcoin-integration /bitcoin-integration
Expand Down Expand Up @@ -640,6 +640,7 @@ const redirects = `
/docs/current/developer-docs/getting-started/deploy/testnet /docs/current/developer-docs/getting-started/deploy-and-manage
/docs/current/developer-docs/getting-started/deploy-and-manage /docs/current/developer-docs/getting-started/deploy-and-manage
/docs/current/developer-docs/smart-contracts/write/default-template /docs/current/developer-docs/smart-contracts/write/overview
/developers /docs/current/home
`
.split(/[\r\n]+/)
.map((line) => line.trim().replace(/^#.*$/, "").trim())
Expand Down
42 changes: 42 additions & 0 deletions roadmap/entries/data-digital_assets.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,48 @@
"categoryName": "Digital Assets",
"categoryDescription": "DeFi protocols, real-word asset tokenization, and other digital asset solutions are strong drivers of web3 adoption. ICP’s Chain Fusion capabilities, unparalleled scalability, and the ability to serve web assets from chain opens up novel digital asset classes. Moreover, it makes ICP an attractive platform to build multi chain custody solutions and wallets.",
"elements": [
{
"title": "Solana Integration",
"overview": "OISY widens its multi-chain reach beyond Bitcoin and Ethereum, and will integrate with the most important networks. Solana is the first one to be implemented, a crucial step forward in our mission to deliver a true multi-chain wallet for decentralized finance (DeFi) users.",
"status": "in_progress",
"forum": "",
"proposal": "",
"docs": "",
"is_community": false,
"in_beta": false,
"milestone_id": "Helios"
},
{
"title": "In-Wallet Swaps",
"overview": "Introducing in-wallet swaps, this release will enhance flexibility for managing assets, allowing users to seamlessly change their asset allocation directly in OISY using DEX liquidity, mitigating risk or aiming for a higher yield.",
"status": "in_progress",
"forum": "",
"proposal": "",
"docs": "",
"is_community": false,
"in_beta": false,
"milestone_id": "Helios"
},
{
"title": "Promote Chain-Key Tokens",
"overview": "With improved screens, flows, and helper texts for chain fusion conversions, OISY will provide users with the right information at the right places to make informed decisions to easily convert native tokens into their chain fusion twins or vice versa.",
"status": "in_progress",
"forum": "",
"proposal": "",
"docs": "",
"is_community": false,
"in_beta": false,
"milestone_id": "Helios"
},
{
"title": "OISY Wallet v1.0 - The official Launch",
"description": "With the Helios release, officially named v1.0, OISY will step out of the beta status into its first production version. This includes functional coverage of all key features like buy, receive, send, swap, and convert from and to chain-key tokens, and with several major blockchains integrated, also a true multi-chain nature. Behind the scenes, it also includes setting up proper processes for product improvement, marketing, automated testing, and setting up a user friendly support process.",
"is_milestone": true,
"milestone_id": "Helios",
"status": "in_progress",
"eta": "",
"eta_to_render": "January 2025"
},
{
"title": "Orbit Multi custody wallet for ICP",
"overview": "Users can securely share ownership of the ICP token with a fully onchain wallet. From simple 1-out-of-2 configurations to sophisticated approval policy rules, Orbit provides comprehensive support for secure financial transactions with a flexible user-role-based system.",
Expand Down
9 changes: 4 additions & 5 deletions search/src/search/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@ name = "search"
version = "0.1.0"
edition = "2021"


[dependencies]
rust-stemmers = "*"
regex = "*"
serde = { version = "1.0.152", features = ["derive"] }
candid = "0.8.4"
rust-stemmers = "1.2.0"
regex = "1.10.2"
serde = { version = "1.0.193", features = ["derive"] }
candid = "0.8.4"
Loading

0 comments on commit f5e2e24

Please sign in to comment.