Hookpoints черпают вдохновение из эпохи Web2, когда такие платформы, как Magento, WordPress, Shopify и Salesforce, процветали благодаря своим расширяемым системам плагинов. Система магазинов ориентирована на надежное ядро, связанное с каталогами, кассами и управлением заказами. Разработчики расширений предоставляют дополнительную функциональность и настройку, что позволяет создать гибкую систему.

Аналогичным образом, Substrate предлагает специализированное ядро ​​блокчейна, которое подчеркивает принцип Unix: делать что-то правильно. Точки крючка основаны на этом, представляя систему плагинов, которая расширяет основные функции и позволяет добавлять инновации.

Используя ink! и pallet_contracts, точки крепления обеспечивают плавную интеграцию между поддонами носителя для печати и модулями чернил. Они абстрагируют такие проблемы, как обработка и кодирование байтов, предоставляя разработчикам интерфейс более высокого уровня. Это объединяет среды подложки и чернил, упрощая разработку.

Мы из Deep Ink Ventures разработали эту палитру для Genesis DAO, которая имеет надежное ядро ​​или управление DAO и жизненный цикл предложений, и мы собираемся продемонстрировать здесь, как мы можем использовать pallet_hookpoints для этого.

Настраивать

Мы создали очень простое руководство по интеграции в Crates README, и оно довольно простое. Мы предполагаем, что вы настроили узел с pallet_contracts, если хотите следовать дальше, но вы также можете просто проверить сам Genesis DAO, который его настроил.

Мы создали забавный небольшой инструмент CLI, который сделает за вас тяжелую работу:

Имея это в виду, вы можете перейти в корневую папку вашего узла и запустить команду!

Это поможет вам в интерактивном режиме настроить установку.

В Genesis DAO мы работаем над кошельками для Вестинга, которые учитываются при расчете силы голоса учетной записи, а также над функциональностью, которая заменяет большинство голосов основного ядра субстрата на голосование в Делегированном совете и многое другое. грядущие дела.

Поэтому хорошей отправной точкой будет крючок, который происходит во время голосования! Разработчикам расширений нужен некоторый содержательный контекст для создания значимых плагинов, голосование по учетной записи и исходная сила голоса могут быть интересными. Давайте настроим это:

Это было весело. Инструмент знает о ваших поддонах и может плавно кодировать/декодировать чернила! и субстрат, так что вам просто нужно было передать основную информацию.

Далее мы можем создать много шаблонного кода!

Откройте свою идею и обратите внимание, что произошло много всего!

Наш CLI создал для вас три папки:

  • особенность, которую могут импортировать разработчики расширений, с определением всех функций перехвата вашей среды выполнения.
  • шаблоновый контракт для начала работы разработчиков расширений, наш CLI смог настроить базовые модульные и e2e тесты!
  • тестовый контракт, который вы можете использовать в своих тестах во время выполнения

Давайте посмотрим, как это может работать на практике, с помощью небольшого теста. В нашем тестовом контракте мы просто умножим количество голосов на два. Хотя это небольшое изменение, это та же функциональность, которая необходима для внедрения более крупного расширения, так что давайте попробуем:

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

Предположим, ALICE является владельцем DAO на Genesis DAO и хочет развернуть это простое расширение, несмотря на его ограниченные возможности.

Теперь контракт активен и работает в нашей среде рукописного ввода, и ALICE может сообщить Genesis DAO, что хочет использовать это расширение. Она может зарегистрировать этот контракт для всех точек подключения в системе или только для определенной; давайте выберем последнее:

Достаточно легко. Полный тест можно найти здесь.

Одна линия

Обратите внимание, что приведенные выше строки предназначены только для демонстрационных целей, позволяющих настроить модульный тест или настроить контракт вручную вместо использования нашего пользовательского интерфейса. Чего мы до сих пор вообще не сделали, так это не написали реальный код для интеграции этого в нашу среду выполнения.

Однако CLI сделал кое-что еще: он предоставил hooks.rs в нашем поддоне:

Он многое понял сам, например, преобразование рукописного ввода! и подложку, а также как вводить информацию в палитру точек крепления без необходимости работы разработчика с кодировками, деталями контрактной палитры, селекторами чернил и тому подобным. Это просто работает.

И вот, это один лайнер, добавляющий вызов функции в нашу палитру.

В рамках внешнего голосования мы вычисляем текущую силу голосования на основе последней контрольной точки. Давайте переопределим это ровно одной строкой:

Вот и все. Мы предоставляем владельцу возможность получить правильный контракт, передаем подписывающему лицу (в данном случае то же самое, что и избирателю) и настроенным ранее аргументам.

Основной механизм голосования Genesis DAO теперь можно расширять и настраивать отдельно для каждого DAO. Волнующие времена.

Привлекать

pallet_hookpoints доступен в виде пакета и может быть установлен с помощью ветки polkadot-v1.0.0 с github, чтобы легко интегрироваться в ваш Субстратная цепь.

Следите за Genesis DAO, чтобы получить дополнительную информацию о том, как мы используем палитру точек подключения, и свяжитесь с нами, если вы хотите использовать точки подключения в своей собственной среде выполнения: [email protected].

Счастливое здание.