Миграция с 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, смещает конец пропускаемого диапазона. См. настройки валидации синхронизации.