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

Модель MimbleWimble

Epic — это MimbleWimble-цепочка. Транзакция Epic не содержит адресов, скриптов и читаемых сумм. Она представляет собой набор ослеплённых обязательств (commitments) плюс компактную подпись, доказывающую, что входы и выходы сбалансированы. Поскольку каждый выход (output) фиксирует ослепляющий фактор (blinding factor), известный только его владельцу, отправитель не может самостоятельно построить полную транзакцию.

Что хранит цепочка

Прозрачная цепочка записывает для каждого платежа отправителя, получателя и сумму. Epic не записывает ничего из этого.

Выход (output) — это обязательство Педерсена (Pedersen commitment), точка на кривой вида v·H + r·G, где v — значение, а r — ослепляющий фактор (blinding factor). Любой может проверить, что набор обязательств балансирует, не узнав ни одного v. Доказательство диапазона (range proof) сопровождает каждый выход и доказывает, что значение не отрицательное; именно это предотвращает инфляцию.

Транзакция, балансирующая к нулю. Переключайте шаги, меняйте количество входов или попробуйте раздуть сдачу и посмотрите, как проверка отклоняет её.

Арифметика обязательств. Шаг 1 из 6. Две стороны, которые должны совпасть

Ядро (kernel) несёт подпись превышения (excess signature) и, в зависимости от варианта функции, комиссию и высоту блокировки. Существует три варианта. Plain несёт комиссию, HeightLocked несёт комиссию и высоту блокировки, а Coinbase не несёт ни того ни другого (core/src/core/transaction.rs:39). Ядро Plain сериализуется в 106 байт: один байт функции, 8-байтовая комиссия, 33-байтовое обязательство превышения и 64-байтовая подпись; HeightLocked добавляет 8 байт для высоты блокировки (core/src/core/transaction.rs:113). Ядра — постоянная часть цепочки, поэтому рост цепочки отражает количество пользователей, а не общее количество когда-либо совершённых транзакций.

Потраченные выходы удаляются посредством cut-through. Как только выход создан и потрачен, пара аннулируется, и ни один из элементов не нужен для проверки текущего состояния. Горизонт cut-through составляет 10,080 блоков — одна неделя при целевом интервале 60 секунд.

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

Адресов нет

У Epic есть идентификаторы, похожие на адреса. Адрес epicbox вида esYQ…@epicbox.epiccash.com реален и пригоден для использования. Однако это не адрес в том смысле, в котором это слово употребляется в других цепочках.

Это маршрутизирующие идентификаторы для сообщений между кошельками. Они указывают вашему кошельку, куда доставить частично построенную транзакцию, чтобы другая сторона могла завершить свою половину. Цепочка не имеет о них никакого представления. Ни один выход никогда не «оплачивается на» epicbox-адрес.

Баланс не является свойством адреса. Такого запроса не существует ни на одном уровне. Баланс — это приватное вычисление, которое ваш кошелёк выполняет, сканируя набор выходов с помощью ваших собственных ключей.

Отправка не является односторонней операцией. Доставка сообщения кошельку, который не слушает, сама по себе ничего не даёт.

Опечатка в адресе не уничтожает средства, но может отправить их не тому получателю. Повреждённый адрес epicbox не проходит контрольную сумму base58, и кошелёк отклоняет его до того, как что-либо отправлено. Корректно сформированный адрес, принадлежащий другому кошельку, ведёт себя как любой другой получатель. Если тот кошелёк слушает, перевод завершается и средства переходят к нему. Если ничто не слушает, перевод так и не завершается, а ваши входы остаются зарезервированными до тех пор, пока вы не отмените его. См. что освобождает их.

Единицы измерения

Один EPIC равен 100,000,000 базовых единиц. Наименьшая единица называется freeman. Все API принимают и возвращают суммы как целое число freemen, поэтому 0.1 EPIC — это 10000000.

Связь с Grin

Epic начинался как форк Grin и разделяет основы MimbleWimble. Он отличается в нескольких областях, поэтому материалы, написанные для Grin, плохо подходят в качестве руководства по следующим темам:

ОбластьEpic
Доказательство работыТри алгоритма работают одновременно в соотношении, задаваемом консенсусом для каждой эры. См. доказательство работы
ЭмиссияСтупенчатые эры, конечная эмиссия. См. эмиссию
Награда за блокУбывающий сбор фонда забирает долю
Транспорт по умолчаниюEpicbox — релей с хранением и пересылкой. См. протокол
TorКошелёк и узел могут включать экспертный пакет Tor во время сборки

Далее