Я хочу создать смарт-контракт, который позволит нескольким пользователям вносить/выводить средства. Мой первый подход заключался в том, чтобы просто иметь один контрактный адрес, на котором будут храниться средства всех пользователей, и сопоставление, которое будет отслеживать индивидуальные балансы каждого из пользователей, однако это помешало бы мне идентифицировать депозиты для конкретных пользователей, поскольку они все вносят депозит на один и тот же адрес.
Чтобы преодолеть это, я хочу, чтобы смарт-контракт генерировал дочерний контракт для каждого пользователя, которому этот пользователь может вносить средства. Проблема в том, что развертывание этого дочернего контракта будет стоить газа. Я не хочу, чтобы пользователь оплачивал эту стоимость газа, однако, если у меня есть родительский контракт, возмещающий затраты на газ пользователей, возникает потенциальная атака, когда кто-то может создать несколько учетных записей, чтобы контракт потратил весь баланс на эту задачу. Как я могу преодолеть это?
Ваша первая идея была лучшей, но следующая оценка вводит вас в заблуждение:
однако это помешает мне идентифицировать депозиты для конкретных пользователей
Выявление того, кто и что отправил, — это то, что позволяет вам делать сопоставление (и журналы событий).
То, что вы делаете с этой информацией, относится к нераскрытым деталям варианта использования. Возможно есть деталь реализации с неочевидным решением?
манки