Мы реализуем платеж Ethereum для наших клиентов, и нам нужно выбрать между депозитами на смарт-контракт или на индивидуальные адреса клиентов. Каковы плюсы и минусы? Можно ли скрыть баланс нашего смарт-контракта, если мы используем его для всех платежей? Почему некоторые биржи не принимают платежи со смарт-контрактов — это из-за отсутствия информации об отслеживании клиентов?
Он другой, но лишь немного сложнее. Транзакции из EOA (внешние учетные записи, например, закрытый ключ подписывает транзакцию) имеют назначение и сумму. Биржа или сервис могут следить за мемпулом и видеть, что транзакция отправлена на их адрес, и сообщать вам: «Эй, мы видим вашу транзакцию, мы ждем, пока она будет добыта, и x подтверждений для ее подтверждения!».
Однако сделки с контрактами отличаются. Транзакции из контрактов даже не являются транзакциями, это «вызовы сообщений». Поскольку все транзакции из контрактов запускаются из учетных записей EOA, вызовы сообщений из контрактов не отображаются в мемпуле и даже не включаются в блоки, в блоке находится только исходная транзакция, вызвавшая транзакцию контракта. Вот как платежи по контрактам будут работать на практике:
Я отправляю tx на свой контракт Multisig со словами «отправить 1 ETH на этот адрес».
Multisig в той же транзакции отправляет вызов сообщения на адрес, который я ему указал, с суммой ETH, которую я сказал ему отправить.
Поскольку транзакция, из-за которой ETH переходит к сервису, на самом деле не к сервису, а к Multisig, сервис/биржа не может просто отслеживать транзакции на свой адрес. Им придется запускать каждую транзакцию, которую они видят, и проверять, отправляется ли она на их адрес. Кроме того, возможно, что результат транзакций может измениться в будущем блоке. Скажем, мой Multisig говорит: «Если текущий номер блока нечетный, никогда не отправляйте ETH», но биржа проверила транзакцию в четном блоке, они ошиблись бы, получив ETH, если бы он был добыт в нечетном блоке.
В конце концов, сервис/биржа может просто пинговать изменения баланса своего кошелька вместо того, чтобы пытаться прослушивать транзакции на свой адрес, но многие просто не хотят этого делать.
Джефф
natewelch_
Джефф
natewelch_
Джефф