В тексте представлена концепция и реализация системы безопасного условного депонирования с использованием смарт-контракта Solidity, предназначенного для облегчения безопасных условных платежей на децентрализованных рынках. Функционируя как цифровой посредник, контракт удерживает средства до тех пор, пока покупатель и продавец не выполнят согласованные условия или пока арбитр не разрешит спор. Ключевые роли: Покупатель (вносит средства), Продавец (поставляет услуги/товары) и Арбитр (разрешает разногласия).
Контракт, получивший название Escrow.sol, поддерживает токены ETH и ERC-20, используя для безопасности библиотеки OpenZeppelin, такие как ReentrancyGuard и SafeERC20. Рабочий процесс включает в себя Покупателя, создающего и финансирующего условное депонирование, Продавца, осуществляющего доставку, и Покупателя, утверждающего освобождение от ответственности, или Арбитра, вмешивающегося во время спора для принятия решения об освобождении или возврате средств. Соглашения отслеживаются с помощью перечисления Status (например, AWAITING_PAYMENT, COMPLETE, DISPUTED).
Модификаторы, такие как onlyBuyer, onlySeller и inStatus, обеспечивают контроль доступа и правильные переходы между состояниями. Специализированные функции занимаются финансированием токенов ETH и ERC20, утверждением покупателей, возбуждением споров и разрешением арбитров. Механизм крайнего срока позволяет продавцу требовать получение средств, если покупатель остается неактивным после установленного срока.
Внедренные методы безопасности включают защиту от повторного входа, безопасную передачу токенов и явные проверки состояния. Тестирование демонстрируется с помощью Foundry, в котором излагаются тестовые кейсы для успешного депонирования ETH и возврата средств по спорам ERC20, обрабатываемых арбитром. Система служит основополагающим компонентом для децентрализованных торговых площадок, обеспечивая бездоверительные условные платежи.
dev.to
🏦 Day 24 of #30DaysOfSolidity — Build a Secure Conditional Payments (Escrow) System in Solidity
Create attached notes ...
