ETHDistributor
Обзор
ETHDistributor — контракт для распределения комиссий между оракульными операторами по заданным долям. Адрес этого контракта устанавливается в diamond как получатель комиссий, чтобы затем автоматическ и распределять полученные комиссии между операторами.
Ключевые свойства:
- owner‑управление (
Ownable); - распределение по фиксированным долям в базисных пунктах (100% = 1000);
- защита от потери wei за счет отправки остатка последнему получателю.
Контекст и зависимости
- Diamond: адрес
ETHDistributorзадается как получатель комиссий в diamond, после чего контракт принимает ETH и распределяет их между операторами. - Оракульные операторы: перечислены в конфигурации контракта как
recipients.
Состояние
recipients— массив адресов получателей (оракульных операторов).percentages— массив долей в базисных пунктах (1% = 10, 100% = 1000).TOTAL_BASIS_POINTS— константа1000.
События
ConfigUpdated
event ConfigUpdated(address[] recipients, uint16[] percentages);
Эмитится при обновлении конфигурации распределения.
ETHDistributed
event ETHDistributed(uint256 amount, address indexed sender);
Эмитится после распределения входящего ETH.
PaymentSent
event PaymentSent(address indexed recipient, uint256 amount);
Эмитится для каждой выплаты получателю.
Ошибки
InvalidArrayLength
Реверт, если длины recipients и percentages не совпадают.
EmptyArray
Реверт, если массив получателей пуст.
InvalidPercentageSum
Реверт, если сумма percentages не равна TOTAL_BASIS_POINTS (1000).
ZeroAddress
Реверт, если один из получателей равен address(0).
TransferFailed
Реверт, если отправка ETH не удалась.