# Трёхсторонние сделки

Трёхсторонние сделки - это сервис в блокчейне, который позволяет осуществлять децентрализованные переводы ликвидных токенов между аккаунтами с участием третьей стороны.

Третья сторона гарантирует второй стороне сделки (получателю), что в случае выполнения всех условий, о которых договорились обе стороны сделки, вторая сторона получит весь причитающийся объём ликвидных токенов от первой стороны или их часть, в зависимости от условий договора. А первой стороне (отправителю) гарантирует, что вернёт отправителю токены, если получатель нарушит условия договора. За свою работу третья сторона может установить комиссию.

Трёхсторонние сделки могут использоваться, когда отправитель денежных средств и получатель не могут полностью доверять друг другу, например, при обмене токенов двух блокчейнов. В таком случае они могут прибегнуть к помощи третьей, более авторитетной стороны, которая поможет в спорной ситуации, но не сможет забрать себе токены.

# Этапы осуществления трёхсторонней сделки

# Создание договора о трёхсторонней сделке

Для создания договора о трёхсторонней сделке инициатор (первая сторона сделки, отправитель) должен сформировать транзакцию заключения договора о трёхсторонней сделке.

В ней должны быть указаны:

  • имя аккаунта получателя (второй стороны),
  • имя аккаунта агента (третьей стороны),
  • уникальный цифровой индикатор договора (инициатор должен указать его сам, выбрав любое число от 0 до 4294967295),
  • сумма сделки,
  • размер комиссии в пользу агента,
  • срок ратификации (время, к которому агент и вторая сторона должны согласиться с условиями договора),
  • срок действия договора (срок, после которого или получатель сможет сам забрать токены, или отправитель сможет их вернуть без разрешения третьей стороны).

Также в транзакции по желанию могут быть объявлены другие параметры сделки, которые блокчейн не будет учитывать, но сохранит.

После отправки транзакции блокчейн заморозит на балансе инициатора сумму токенов, равную сумме сделки и комиссии агента.

# Согласия агента и второй стороны

Чтобы договор вступил в силу, агент и вторая сторона должны дать согласие, отправив транзакцию согласия на трёхстороннюю сделку. При этом и агент, и вторая сторона должны дать согласие до истечения срока ратификации. Если стороны не успеют дать согласие до этого срока или откажутся давать согласие, то договор будет отменен. При отмене договора средства инициатора будут разморожены и возвращены ему.

После согласия всех сторон с договором агент немедленно получит свои комиссионные.

# Добровольное завершение договора инициатором и получателем

Если срок действия договора не истек, любая из двух сторон (инициатор и получатель) может отправить токены противоположной стороне.

При этом каждый участник вправе указать, какое количество токенов получит противоположная сторона. В пользу выбранной стороны с замороженного счёта спишется указанная сумма. Если в итоге на замороженном счёте сумма токенов окажется равной 0, то договор считается завершённым. Если же на замороженном счёте останется какое-либо количество токенов, то договор не будет завершён, пока стороны не договорятся, что делать с остатком.

# Решение споров

Если стороны не смогут договориться, кому достанутся токены, или какое именно количество токенов должно быть перечислено каждой стороне с замороженного счёта, то любая из сторон вправе(инициатор или получатель), если не истек срок действия договора, отправить в блокчейн транзакцию о начале спора.

С этого момента в распоряжение агента перейдёт вся сумма токенов на замороженном счёте, и ни одна из сторон, в том числе агент, не смогут отклонить спор.

Как только агент получит возможность распоряжаться активами замороженного счёта, он должен решить, какая из двух сторон получит(инициатор или получатель) средства с замороженного счёта, и в каком размере.

Если в результате действия агента сумма на счёте окажется равна 0, то договор будет завершён. Если сумма на счёте окажется больше 0, то договор будет действовать до тех пор, пока агент не отправит со счёта все токены.

# Истечение срока действия договора

Если срок действия договора истёк, любая из двух сторон (инициатор или получатель) сможет забрать себе или передать другой стороне любую сумму с замороженного счёта. По истечении срока действия договора ни инициатор, ни получатель не смогут оспорить действия друг друга.