Модель 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 во время сборки |
Далее
Почему оба кошелька должны участвовать, что такое слейт (slate) и какую последовательность проходит перевод.
Что происходит с вашими средствами между началом отправки и её подтверждением.
Идентификаторы, которые выводит кошелёк, и назначение каждого из них.