Я пытаюсь создать контракт, который ведет себя по-разному в зависимости от выбора пользователя. Я, однако, понятия не имею, как позволить пользователю «выбрать» опцию. В настоящее время у меня есть базовая резервная функция, которая выполняет основную логику, но эта логика имеет 2 важные переменные, которые я бы хотел, чтобы пользователь мог изменить. Каков наилучший подход для достижения этой цели? Я знаю, что могу создать платную функцию с двумя входами, которая изменит это поведение, но как люди вообще будут использовать эту функцию? Ни один кошелек (кроме MyEtherWallet) не поддерживает функции, и даже с MEW вам нужно знать ABI. Есть ли обходной путь или что-то в этом роде?
Спасибо, SEnergy
На самом деле, практически никто не предоставляет контракты конечным пользователям в том виде, в каком они есть. Почти всегда между пользователем и вашим смарт-контрактом (-ами) есть более старомодные интерфейсные слои, такие как web3. Таким образом, пользователь использует простой в использовании интерфейс, а в фоновом режиме web3 и выбранный узел заботятся о взаимодействии смарт-контрактов.
Однако, если это больше теоретический вопрос или вы действительно хотите, чтобы ваши конечные пользователи подключались напрямую к смарт-контрактам:
Если вы не хотите, чтобы конечные пользователи использовали кошелек, который поддерживает пользовательские контракты (или не хотите, чтобы они проходили настройку и все такое), у вас осталось не так много вариантов.
Единственное, что я мог придумать, это определить выбор, исходя из количества отправленного эфира. Например, последняя цифра может быть выбором - если пользователь отправляет 5003 или 4239082482390482903 weis, это означает выбор 3. Денежная разница незначительна, когда речь идет о weis.
Другая (глупая) идея — потребовать от них отправки необходимого количества транзакций. Если только одна транзакция, это означает выбор 1 и так далее.
пользователь19510
Лаури Пелтонен