Skip to content

Смарт-контракт Invoice предназначен для автоматизации процессов выставления и отслеживания оплаты счетов.

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

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

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

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

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

  • Dapp name: название смарт-контракта, которое будет использоваться в интерфейсе Smartz;
  • Invoice Amount: сумма счета на оплату;
  • Beneficiary address: адрес бенефициара (получателя);
  • Short message: назначение счета;
  • Payer address: адрес плательщика (можно не указывать);
  • Valid Until: срок действия счета (можно не указывать);
  • Partial Receiver: если срок действия указан, но до его завершения счет был оплачен лишь частично, вы можете выбрать получателя неполных средств – бенефициара (по умолчанию) или плательщика;
  • Auto send on paid: снимите галочку, если вы не хотите автоматически отправлять средства бенефициару после оплаты счета.

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

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

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

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

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

  • Short Message: назначение счета, указанное при развертывании.
  • Invoice Amount: сумма, выставленная на оплату.
  • Current Paid Amount: оплачено на данный момент.
  • Status: статус действия контракта (активен, т.е. находится в начальном состоянии, просрочен или оплачен).
  • Balance: объем эфира, накопленный в настоящее время в контракте.
  • Beneficiary: адрес, на который будут отправлены деньги после оплаты счета.
  • Partial Receiver: адрес, на который будут отправлены деньги из счета после окончания срока действия, если была собрана только часть средств, а не вся сумма.

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

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

  • Pay: оплатить счет.
  • Withdraw: изъять остаток средств со счета (если не была собрана вся сумма) и перевести по указанному адресу.