Смартконтракти
На цій сторінці описуються основні контракти Пул і ваучер в протоколі v1.1.0. Контрактна поведінка забезпечує механізм розрахунку; вона не заміняє розкриття інформації про емітента, правила групи або інші умови транзакції, що застосовуються до певного використання.
Використання Поняття й термінологія розрізняти регулюваний Пул зобов’язань від SwapPool, а розрахунки за свапом від представлення, виконання та виплати виплати.
Ваучер (GiftableToken)
GiftableToken є токеном ERC20 з механікою, яку емітент може використовувати для ваучера:
- Авторизоване виготовлення Власник може визначити письменників, які можуть видавати токенів з
mintTo. - Факультативний термін дії Скінчення терміну
0означає відсутність терміну дії на рівні договору. В іншому випадку переведення, розкидання і спалювання повертаються до конфігурованої марки часу або після цього. Будь-хто може зберегти стан терміналуexpired, викликаючиapplyExpiryбезпосередньо. - Бухгалтерський облік поставок
totalMintedіtotalBurnedекспонують кумулятивну активність постачання. Функція тільки власникаburnспалює токенів, які містяться в адресі власника.
Токенний контракт не ідентифікувати товари або послуги емітента, встановити вартість погашення, довести потужність або обіцяти конверсію грошових коштів. GiftableToken стає погасним зобов'язанням лише за допомогою окремо опублікованих умов і поведінки емітента. Видавці залишаються відповідальними за точне опису та дотримання цих умов.
Пул зобов’язань (SwapPool)
SwapPool - це двигун для розрахунку токенів. Хоча в договорі v1.1.0 з'являються метаданні ERC20 для імені Пул, символу та десятичних знаків, в договорі v1.1.0 не виготовляються токені Пул-share. Ліквидність забезпечується шляхом переведення токенів в фонд, а власник договору може вивести наявну ліквидність.
Складання та факультативні залежності
| Конфігурація | Коли не встановлено | Печаткована адресова ділянка |
|---|---|---|
tokenRegistry | Будь-який значок може пройти контроль над курацією Пулу. | Так. |
tokenLimiter | Депозити не мають обмеження балансу на рівні договору | Так. |
quoter | Кількість сировиного вводу розглядається як сумма сировиного коцінованого продукту | Так. |
feePolicy | Заплата за Пул - нуль. | Так. |
feeAddress | Оплата платіжної суми не стягується в якості вирахункових платіжностей для призначеного одержувача | Так. |
protocolFeeController | Протокол не стягується | Ні, ні. |
П'ять фіксаційних бітів постійно блокирують поточні адреси feePolicy, feeAddress, quoter, tokenRegistry і tokenLimiter проти їх відповідних налаштувачів. protocolFeeController і feesDecoupled є значеннями ініціації і не входять в число цих п'яти бітів.
Закріплення адресної ділянки не заморожує контракт на цьому адресі. Запечатаний реєстр, лімітер, квотер або політика зборів і конфігурований контролер протоколу-плати все ще можуть змінюватися, якщо це дозволяє його власне управління. Адміністратор прокси ERC-1967 також може оновлювати реалізацію Пул. Таким чином, змістовне твердження про незмінність залежить від управління власником Пулу, адміністратором прокси та будь-якою конфігурованою залежністю.
Заплата за обмін
Для обміну SwapPool:
- Перевірка того, що вхідні та вихідні токені проходять факультативний реєстр і тестування запитуваного входу проти факультативного обмеження балансу групи.
- Витягує вхідний токен від зателефонника і вимірює фактичну отриману суму. Ціни використовуються за цією вимірюваною сумою, в тому числі для токенів платіж на трансфер.
- Ви отримуєте брутову котировку з конфігурованого котиру або використовуєте чисту отриману суму, коли котиру не встановлено.
- Вираховує плату групи та будь-які додаткові протокольні плати, а потім перевіряє наявну ліквідітність вихідних токенів.
- Відправляє протокольну плату безпосередньо до конфігурованого одержувача протоколу, передає номінальний чистий вихід до одержувача і записує плату групи при конфігуренні адреси плати.
- Випускає традиційну подію
Swapі більш детальну подіюSwapSettlement.
SwapSettlement записує ініціатора, обох токенів, вимірений вхід, об'ємний коцірований вихід, номінальний вихід, направлений, вихід, який фактично спостерігається у одержувачем, плата поєдинку та плата протоколу. Номінальні і спостерігаються виходи можуть відрізнятися, коли вихідний токен сам забирає плату за трансфер. Полі fee в традиційному заході Swap є лише платою Пул.
Шіст-аргумент withdraw(tokenOut, tokenIn, value, recipient, minAmountOut, deadline) перевантаження є обмежений шлях виконання. Він повертається після закінчення терміну або коли спостерігається збільшення балансу одержувача нижче minAmountOut. Інтегратори повинні віддавати перевагу тому, що показання котирування є тимчасовим: стан котирування, політика зборів, ліквідності, обмеження та дані Oracle можуть змінюватися до виконання. Старі три- і чотири-аргументні перевантаження не забезпечують ці межі рівня Пулу.
Вичислення додаткового збору
Заплати за групу та протокол вирахуваються з коцірованої брутної продукції. Протокол платіж не вирахувана з плати за базен, а Пункт зберігає повну розраховану плату.
Наприклад, на валову котировку 100 одиниць:
- 2% плата на базен набирає 2 одиниці на базен;
- 10% протокольна ставка, що застосовується до цієї плати групи, направляє інші одиниці 0.2 безпосередньо до одержувача протоколу; і
- користувач отримує одиниці 97.8.
При розрахунку протоколу використовується більший від розрахованої плати групи та передбачувана база 1% плати. Це запобігає тому, що дуже невелика плата "Пол" зменшує розрахунки протоколу майже до нуля. Недійні комбіновані курси повертаються з FeeTooHigh, а котировка, яка вирішувалася б на нулі, повертається з InsufficientOutput.
Власницькі та модернізовані повноваження
Власник контракту може зібрати стягнуті збори Пул і може зв'язатися з withdrawLiquidity, щоб передати будь-який доступний токен Пул на обраний адрес, який не є нулевим. У разі розкопулювання зборів, накладені збори зберігаються з цього шляху виведення ліквідності; в іншому випадку вони залишаються частиною балансу Пулу. Учасники фонду не повинні тлумачити депозитовану ліквідітність як постійне заблокування, якщо цей результат не встановлюється додатковими перевіренними контролями управління.
Конфігураційна запечатка не видаляє цю силу виведення ліквідності. Він також не видаляє потужність оновлення окремого адміністратора прокси ERC-1967.
Модули оцінки
Всі три котирувачі реалізують функції перехідного та зворотного котирування, які використовуються SwapPool та SwapRouter:
DecimalQuoterБездержавна децимальна нормалізація під припущенням parity 1:1.RelativeQuoterДецимальна нормалізація плюс власником управлені відносні цінові индекси. Невстановлений токен-індекс не відповідає параті.OracleQuoterОцінюйте кожен токен через конфігурований оракул, з глобальним або на токен межем застою і факультативним множителем виходу 0.9-to-1.0.
OracleQuoter є тільки так само надійним, як його вибір і введення корми. Номінація та напрямок кормів повинні бути послідовними, десятичні числа повинні бути правильними, оновлення повинні бути позитивними і свіжими, а управління може замінити корми або змінити налаштування свіжості. Маніпуляція джерелом, затримка оновлення, відключення мережі, неправильна конфігурація парів або втрата ключа власника Oracle можуть призвести до поганих котирувань або повернення обмінів.
OracleRelay є додатковою однорізовою передачкою, що відповідає інтерфейсу Oracle. призначений письменник повторно публікує джерельні значення; немає доказів перекрестної ланцюжки і немає збереженої історії. Реле приймає цінності письменника лише з перевіркою майбутнього часу. OracleQuoter самостійно відкидає непозитивні або застарілі відповіді, в той час як власник релею може обертатися письменником або скасувати поточний раунд. Таким чином, користувачі повинні оцінити джерело подачі, письменника реле, власника реле та процес моніторингу.
Політика та обмеження тарифів
FeePolicy зберігає дефолтну плату в частинах на мільйон і факультативний напрямовий пара переважає. Його власник може змінити ці ставки, якщо управління поза договором не обмежує цю владу.
Limiter зберігає максимальний баланс для токену на конкретному адресі Пул. Власник або авторизований письменник може змінити цей обмеження. нульовий ліміт блокує депозити, коли лімітер активний; не встановлений лімітер залишає депозити необмежними.
Ці обмеження описують конфігуровані експозиція символів у Пулі. Вони самі по собі не класифікують символьний баланс як кредит або юридичний борг, не доказують можливості видавниця або не гарантують виконання. Ці питання залежать від умов видавництва, правил групи, транзакції, представленої користувачеві, і чинного законодавства.
Контролер протокольних зборів
ProtocolFeeController є факультативним компонентом плати на рівні розгортання. Її власник може змінити тариф протоколу і одержувача або деактувати плату. Один контролер може бути розділений декількома пулями, але протокол не вимагає одного контролера на мережу.
При активізації і конфігурації одержувач отримує оплату безпосередньо в вихідному токені під час кожного успішного обміну. Як цей одержувач використовує кошти—, наприклад, для операцій, моніторингу, підтримки ліквідності або іншої опублікованої мети— є питанням управління, а не гарантією договору.