Всегда ли транзакция требует выполнения смарт-контракта?

У меня была дискуссия с кем-то, кто объяснил, что каждый раз, когда происходит транзакция (например, токен ICO или ETH) в Ethereum, она проходит через смарт-контракт или требует его.

Я хотел бы знать, каковы ваши лучшие аргументы, чтобы доказать, что он не прав?

Ответы (2)

Я думаю, что лучший способ взглянуть на это — определить два типа учетных записей, возможных в Ethereum:

  1. Аккаунты, принадлежащие внешним владельцам (EOA)
  2. Смарт-контракты

Транзакции могут исходить только из EOA, могут быть нацелены на другие EOA или смарт-контракты и могут содержать как значение (Ether), так и полезную нагрузку данных.

Из раздела «Освоение эфириума — транзакции» :

Когда вы создаете транзакцию Ethereum, содержащую ценность, это эквивалент платежа. Такие транзакции ведут себя по-разному в зависимости от того, является ли адрес назначения контрактом или нет.

Для адресов EOA или, скорее, для любого адреса, который не помечен как контракт в блокчейне, Ethereum запишет изменение состояния, добавив отправленное вами значение к балансу адреса. Если адрес ранее не был замечен, он будет добавлен к внутреннему представлению клиента о состоянии, а его баланс инициализирован до значения вашего платежа.

Таким образом, в этом случае между двумя пользователями может быть транзакция, которая не требует смарт-контракта или требует его. Он просто использует конечный автомат, определенный EVM, для обновления балансов на обоих счетах.

Я рекомендую вам и вашему другу прочитать главу, ссылку на которую я дал выше.

РЕДАКТИРОВАТЬ: Кстати, вы упомянули ICO и токены. В этом случае ВСЕГДА потребуется смарт-контракт, потому что токены в Ethereum представлены как смарт-контракты. Описанная выше транзакция без смарт-контракта применима только к транзакциям эфира.

Нет.

@Ответ Шона очень хорош. Простой способ объяснить это то, что у транзакций есть принимающая учетная запись. Все учетные записи могут иметь или не иметь код. Учетная запись с кодом называется смарт-контрактом. Транзакция может быть отправлена ​​на учетную запись, у которой нет кода, поэтому смарт-контракт не выполняется.

Так что текущий ответ - нет. Однако в будущем он может измениться, и все аккаунты будут иметь код. Это сложная тема, которую можно найти, используя термин абстракция аккаунта .