Я только что познакомился со смарт-контрактами Ethereum, и у меня есть проект, связанный с преподавателями, который подразумевает их использование.
Идея состоит в том, чтобы создать DApp, который позволяет клиентам (лицам) платить налоги (в Ethereum) государственному учреждению.
Моя проблема в том, что я не могу решить, какая высокоуровневая версия смарт-контракта соответствует лучшим практикам:
Глобальный смарт-контракт
Смарт-контракт на клиента
Общий смарт-контракт
Жизнеспособны ли приведенные выше идеи в контексте Ethereum — смарт-контракты?
Если да, то какой из них правильный?
Если нет, то как должен выглядеть правильный смарт-контракт, исходя из моей идеи?
Немного сложно понять, насколько тщательный подход вам нужен. Но позвольте предложить вам один вариант:
1) Адрес Ethereum (каждый человек должен иметь адрес Ethereum, привязанный к нему лично)
2) Сумма налога, которую необходимо заплатить (в эфирах)
После этого контракт гарантирует, что люди каким-то образом платят налоги. После даты X учреждение выдает транзакцию по контракту функции makeSureTaxesArePaid
, которая следит за тем, чтобы все налоги были уплачены. Если нет, что-то происходит. Все налоги, уплаченные по договору, могут быть впоследствии изъяты из договора его владельцем (создателем).
Так что это довольно близко к вашей первоначальной первой идее.
С моей точки зрения, у меня нет сомнений: первое решение — лучшая практика.
Он гарантирует, что все необходимые действия, отличные от уплаты налогов, возлагаются на учреждение, которое извлекает выгоду из денег, т. е. не взимает с тех, кто платит налоги, дополнительную работу или дополнительные расходы; кроме того, он, естественно, согласован (наоборот, второй требует согласования между учреждением и всеми налогоплательщиками); кроме того, не требуется клонировать N контрактов, отличающихся только адресом клиента. Помните, что вы платите газ за каждый развернутый контракт и за каждый байт, занятый в блокчейне: слишком много дубликатов в решении 2!
Третье решение действительно плохое и не дешевле.
Решение, предложенное Лаури, может быть полезно, если у какого-либо клиента есть другая сумма налогов к уплате, но ваш вопрос не дает нам информации по этому вопросу.
Короче говоря: используйте первое решение!
Надеюсь это поможет!
ОП не сказал, является ли это налогом с продаж, подоходным налогом или чем-то еще, поэтому у нас нет информации о том, как он рассчитывается. Я собираюсь использовать налоговую форму/схему перечисления налогов, так как это кажется наиболее вероятным.
На первый взгляд это звучит как приложение «запрос платежа» и не более того. Если конфиденциальность вызывает беспокойство, то для ее защиты требуются усердные усилия, и следует воздерживаться от размещения ненужной информации в блокчейне.
Я бы склонялся к варианту 1. Для наглядности:
учреждение создает его
и ...
Адреса и суммы обязательств и квитанций будут открыты для просмотра всеми, что может быть нежелательно. Рассмотрите возможность изучения методов обфускации для поддержки гарантий конфиденциальности, включая анализ метаданных.
Надеюсь, поможет.
ГрандФлит
хСкайриппер
ГрандФлит