Skip to content

Смарт-контракт BetMe предназначен для разрешения споров при посредничестве выбранного арбитра с вынесением обязательного для всех сторон решения. Спорщик (он же владелец) создает смарт-контракт, в котором содержится истинное (по мнению спорщика) утверждение, затем выставляет свою ставку. Оппонент высказывается против данного утверждения и делает свою ставку. Сумма ставки определяется по количеству присланного эфира.

Владелец контракта выбирает арбитра, который должен разрешить спор. При необходимости владелец устанавливает штраф, который заплатит арбитр, если не решит спор в чью-то пользу.

Адрес арбитра устанавливает только владелец. В дальнейшем можно переписать адрес (изменить арбитра) несколько раз до того как выбранный арбитр подтвердит свое участие.

Когда установлен адрес арбитра, он (арбитр) должен подтвердить участие в споре путем пересылки эфира. После подтверждения со стороны арбитра владелец не может изменить его адрес и сумму штрафа до завершения контракта. Однако сам арбитр может отказаться от судейства до того, как оппонент сделает ставку.

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

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

Контракт BetMe может использоваться для решения споров о результатах матча, чемпионата, выборов и любой другой деятельности. Смарт-контракт защищает от мошенничества со стороны всех участников спора. Суммы ставок и результат, на который ставки сделаны, защищены блокчейном от манипуляций. Открытый код, доступность контракта любому пользователю, а также автоматическое исполнение прописанных условий исключают человеческий фактор и решают все типичные проблемы споров и пари между людьми.

Данные для создания контракта

Зайдите в ваш кошелек MetaMask. Затем залогиньтесь на платформе Smartz.io и перейдите в конструктор BetMe, где вам будет предложено указать следующие параметры смарт-контракта:

Dapp name: название смарт-контракта, которое будет использоваться в интерфейсе Smartz; Assertion text: предмет спора – утверждение, на истинности которого настаивает владелец контракта; Deadline: крайний срок, к которому арбитр должен разрешить спор; Arbiter ethereum address: Ethereum-адрес арбитра, который решит является ли утверждение истинным или ложным; Arbiter fee percent: процент от суммы спора (ставки), который получает арбитр; Opponent ethereum address: Ethereum-адрес оппонента. Поле можно оставить пустым, чтобы позволить любому человеку сделать ставку против вашего утверждения; Arbiter deposit amount: указанную сумму в эфире арбитр отправляет в контракт для гарантии решения спора и получает обратно после принятия решения.

Указав необходимые данные, вы увидите код контракта.

Вы можете ограничить публичный доступ к интерфейсу контракта, поставив галочку на пункте Restrict public access to the contract UI.

После деплоя вы сможете просмотреть развернутый контракт на Etherscan, либо перейти к управлению контрактом в разделе «Dashboard».

Информация о контракте

Эта информация о состояниях и значениях контракта, которая доступна в панели управления.

  • Assertion text: некоторое утверждение, сформулированное владельцем контракта.
  • Deadline: текущее значение крайней даты завершения контракта.
  • Current bet amount: сумма ставки владельца.
  • Arbiter has made decision: арбитр вынес решение (yes или no).
  • Owner address: адрес владельца
  • Arbiter address: адрес арбитра, который определяет истинность или ложность утверждения.
  • Opponent address: адрес оппонента. Если адрес не был указан при создании контракта, любой пользователь может сделать ставку, что утверждение владельца ложно.
  • Arbiter fee percent: текущая стоимость арбитража в процентах от суммы ставки.
  • Arbiter fee in ether: сумма вознаграждения арбитру, в которой учитывается размер ставки и размер платы за арбитраж.
  • Arbiter deposit amount: сумма взимаемая с арбитра в качестве гарантии намерения судить спор.
  • State version number: номер версии текущего состояния, который передается как параметр для согласования функций ToBecameArbiter и betAssertIsFalse.
  • Arbiter agreed to judge: состояние арбитра - подтвердил или нет участие в споре.
  • Opponent confirmed his bet: состояние оппонента - сделал ставку или нет.
  • Arbiter considered assertion true or false: подтверждение того, что арбитр согласен судить спор и считает указанное утверждение истинным или ложным.
  • Owner payout: сумма выплаты владельцу.
  • Opponent payout: сумма выплаты оппоненту.
  • Arbiter payout: сумма выплаты арбитру.
  • Owner claimed payout: указывает, забрал ли владелец свою выплату после разрешения или отмены спора.
  • Opponent claimed payout: указывает, забрал ли оппонент свою выплату после разрешения или отмены спора.
  • Arbiter claimed payout: указывает, забрал ли арбитр свою выплату после разрешения или отмены спора.
  • Current timestamp: текущее время.

Функции записи

Для изменения состояний и значений смарт-контракта нужно воспользоваться функциями записи, вносящими новую информацию в блокчейн. Все эти функции потребляют некоторое количество газа.

  • Change assertion text: записывает новое утверждение владельца.
  • Change deadline: устанавливает новую дату завершения диспута.
  • Change arbiter fee percent: устанавливает новое значение платы за арбитраж.
  • Change arbiter deposit: изменяет сумму штрафа, которую заплатит арбитр, если не примет решение до дедлайна.
  • Change arbiter address: записывает адрес арбитра (должен быть указан до того, как арбитр согласится судить спор).
  • Change opponent address: записывает адрес оппонента.
  • Owner Bet: владелец делает ставку.
  • Agree to be an arbiter: позволяет стать арбитром для этого спора и направить в контракт страховую сумму (если она не равна нулю).
  • Arbiter self retreat: арбитр может отказаться от решения спора, если оппонент не сделал ставку.
  • Opponent Bet: оппонент делает ставку на ложность утверждения.
  • Arbiter: assertion is True: арбитр подтверждает, что текст утверждения содержит истинное заявление.
  • Arbiter: assertion is False: арбитр подтверждает, что текст утверждения содержит ложное заявление.
  • Arbiter: assertion can not be checked: функция указывает на невозможность проверить утверждение в том случае, если арбитр подтверждает текст утверждения, которое не может быть проверено на истинное или ложное из-за некоторых «форс-мажорных обстоятельств» (например, матч, на который делали ставки, был перенесен на время после дедлайна).
  • Get payout: для вывода своей доли каждый участник вызывает функцию withdraw.
  • Drop contract: владелец может уничтожить контракт на некоторых стадиях (например, если нет оппонента).