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

Модель 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 во время сборки

Далее​