Итак, вы хотите развернуть Internet Identity (II) локально?

Вот мои четыре самых простых решения для этого!

Введение

Чтобы развернуть II локально, нам нужно получить его канистру (модуль Wasm). Мы можем либо собрать код самостоятельно, используя Docker и скрипт docker-build, предоставленный командой II, либо загрузить существующий релиз.

Поскольку мне очень не нравится делать что-либо, связанное с DevOps, а также потому, что цель этого руководства — ускорить выполнение задач, в следующих решениях используется предварительно созданный/выпущенный wasm (второй вариант выше).

Первые два варианта применимы для любых децентрализованных приложений, последние два более полезны, если вы начинаете новый проект.

1. Автоматическая установка

Можно настроить II для проекта с dfx ›= 0.12.0, используя канистру custom.

Итак, просто добавьте следующую конфигурацию в свой проект, и все.

{
   "canisters": {

        ...

          "internet_identity": {
         "type": "custom",
            "candid": "https://github.com/dfinity/internet-identity/releases/latest/download/internet_identity.did",
            "wasm": "https://github.com/dfinity/internet-identity/releases/latest/download/internet_identity_dev.wasm",
            "shrink": false
         "remote": {
            "candid": "internet_identity.did",
            "id": {
               "ic": "rdmx6-jaaaa-aaaaa-aaadq-cai"
            }
         }
        }
   },

    ...

}

Используя dfx ‹ v0.12.0, это немного более подробно — или хаки, в зависимости от точки зрения — но мы также можем использовать обратный вызов build для автоматической загрузки и установки II.

{
   "canisters": {

        ...

          "internet_identity": {
         "type": "custom",
         "candid": "internet_identity.did",
         "wasm": "internet_identity.wasm",
         "build": "bash -c 'test -f internet_identity.wasm || curl -sSL https://github.com/dfinity/internet-identity/releases/latest/download/internet_identity_dev.wasm -o internet_identity.wasm; test -f internet_identity.did || curl -sSL https://raw.githubusercontent.com/dfinity/internet-identity/main/src/internet_identity/internet_identity.did -o internet_identity.did'",
         "remote": {
            "candid": "internet_identity.did",
            "id": {
               "ic": "rdmx6-jaaaa-aaaaa-aaadq-cai"
            }
         }
        }
   },

    ...

}

Поскольку мы хотим развернуть II только локально, стоит отметить, что приведенная выше конфигурация содержит параметр remote​, который указывает на II в основной сети. Благодаря этому wasm не будет развернут, когда мы развернем наши канистры в основной сети.

Вы также можете пропустить фиксацию файлов .did и .wasm, которые будут загружаться автоматически, убрав их в файле .gitignore​.

internet_identity.wasm
internet_identity.did

2. Ручная установка

Если вы предпочитаете не трогать какую-либо конфигурацию вашего проекта, вы также можете развернуть II локально вручную. например это стратегия, которую я лично использую, когда развертываю Papyrs.

В любом месте на вашем компьютере, пока dfx start запущен в вашем проекте, запустите следующие командные строки, и это уже тоже.

git clone https://github.com/dfinity/internet-identity
cd internet-identity/demos/using-dev-build
npm ci
dfx deploy --no-wallet --argument '(null)'

3. Новое децентрализованное приложение

Если вы начинаете с нуля или хотите создать образец децентрализованного приложения, вместо инициализации нового проекта с помощью dfx​ я рекомендую вам использовать интерфейс командной строки npm (я создал его). Он интерактивно предложит вам варианты и настроит все для вас, включая II.

npm init ic

4. Изменение игры

Я работаю над новым секретным побочным проектом, целью которого является сокращение разрыва между разработчиками web2 в IC в начале 2023 года (🤯). Подпишитесь на мою рассылку новостей, чтобы узнавать об этом, или свяжитесь со мной в Твиттере, чтобы узнать больше!

​В бесконечность и дальше
Дэвид​