Перейти к основному содержимому

Миграция с 3.x

Текущие релизы: узел 4.1.0, кошелёк 4.1.0 и протокол epicbox 3.0.0.

Изменения API​

total_difficulty — объект​

Сложность отслеживается отдельно для каждого алгоритма доказательства работы:

{
"total_difficulty": {
"cuckaroo": 0,
"cuckatoo": 1234,
"randomx": 5678,
"progpow": 9012
}
}

Заголовки блоков описывают доказательства двумя полями​

proof задаёт алгоритм, а solution — размеченное объединение, форма которого зависит от него. В 3.x решение хранилось в одном скалярном поле.

Чтение выходов и транзакций кошелька поддерживает пагинацию​

retrieve_outputs и retrieve_txs принимают limit, offset и sort_order. Передавайте их явно.

Status получает поля supply​

supply и max_supply — суммы в freemen. blocks_to_next_halving — количество блоков, при api/src/types.rs:102. Шаги вознаграждения — не все халвинги; см. emission.

Ядра представлены в двух формах​

get_block возвращает плоское ядро (kernel). get_kernel и get_last_n_kernels возвращают исходный тип с внешне размеченным полем features.

Изменения командной строки​

Флаги изменились. init -h для текущего каталога теперь -w, scan -h <height> теперь -s <height>, а аргумент taxes узла — start_height. Новые команды кошелька: export_tx, import_tx и change_password, а также --slate_version для команд перевода. Все команды и флаги описаны в configuration and CLI.

Смесь алгоритмов в тестовых сетях задаётся ключом конфигурации, а не флагом командной строки. См. the block policy.

Тулчейн и сборка​

Каждый репозиторий фиксирует версию Rust, поэтому достаточно установить rustup — самостоятельно фиксировать версию не нужно. Для сборки также требуются системные пакеты помимо тулчейна Rust; они перечислены по платформам в building from source.

Изменения хранилища​

Кошелёк хранит данные в SQLite по пути db/sqlite/epic.db в режиме WAL, а его каталог Tor — wallet_tor. Всё, что напрямую читало базу данных кошелька 3.x, требует переработки. Пути и ключи описаны в wallet configuration.

Новое поведение​

Встроенный Tor​

Сборка с --features with-tor загружает экспертный пакет Tor и проверяет его по зафиксированному дайджесту. В релизных сборках эта функция не включена. См. what this version does not cover.

Epicbox подтверждает доставку​

Протокол 3.0.0, который кошельки используют начиная с 3.6.0 и потому не являющийся новым в 4.x, добавляет подтверждение Made с идентификатором сообщения, так что слейт (slate) помечается доставленным только после того, как получатель подтверждает его обработку. Совместимость с клиентами старше 3.5.2 сохранена. См. the protocol.

Подтверждение мемпула после публикации​

После публикации транзакции кошелёк отслеживает мемпул узла и фиксирует отдельное состояние при её появлении там. Именно это ожидание может выглядеть как зависание отправки — подробнее в the send appears to hang; кроме того, опубликованный перевод выходит из множества, которое принимает cancel_tx, — подробнее в cancelling has preconditions.

Реализация релея Epicbox изменилась​

Релей — EpicCash/epic-epicbox-docker, Node.js с вспомогательным модулем верификации на Rust. Топология развёртывания и хранилище описаны в the epicbox reference.

Поведение, которое нужно проверить в вашей интеграции​

  • tx_lock_outputs обязателен в ручной последовательности отправки. См. what reserves outputs.
  • Epicbox конвертирует каждый слейт в V2, что удаляет запрос доказательства платежа. См. the transport comparison.
  • change_password удаляет резервную сид-фразу, если не передан --remove-backup.
  • Значения по умолчанию для валидации синхронизации изменились. skip_pow_validation по умолчанию равен true, а disable_checkpoints — false. В mainnet доказательство работы пропускается только до последней контрольной точки и полностью проверяется выше неё, а disable_checkpoints игнорируется. См. node and wallet setup.

Изменения в 4.1.0​

Узел и кошелёк 4.1.0 ужесточают аутентификацию. Интеграция, работавшая с 4.0.x, может начать получать ответы 401.

  • Owner API кошелька требует HTTP Basic. /v3/owner и /v2/owner принимают имя пользователя epic и содержимое .owner_api_secret в дополнение к токену v3. См. owner access on the wallet.
  • /v1 и /v2/owner узла закрыты по умолчанию. При отсутствии настроенного секрета они отвечают 401, а не работают в открытом режиме. Без учётных данных отвечают только GET /v1/version и один вызов get_status. См. the node credential.
  • Новый метод Foreign API ready_for_txs сообщает, синхронизирован ли узел, без учётных данных. Кошелёк использует его вместо get_status из Owner API. См. which method lives where.
  • Кошелёк значительно реже отправляет секрет узла. Он никогда не отправляет его в /v2/foreign, поэтому узел с установленным foreign_api_secret_path не может его обслуживать. См. the credential the wallet presents to the node.
  • /v1/kerneldownload удалён. См. the v1 routes.
  • disable_checkpoints по умолчанию равен false и игнорируется на mainnet, а новая контрольная точка на высоте 3,710,000, задающая 13, смещает конец пропускаемого диапазона. См. настройки валидации синхронизации.

Далее​