как сделать так, чтобы контракт извлекал эфир из аккаунта - PullRequest
0 голосов
/ 21 сентября 2018

Я новичок в солидности.Я играл и хотел узнать, смогу ли я заключить контракт на получение эфира с одного аккаунта и перенести его на другой аккаунт.Спасибо

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Короткий ответ: вы не можете использовать контракт для получения эфира с другого адреса.Если бы какая-то форма была возможной, было бы трудно помешать злоумышленникам делать это со всеми.

Чем дольше ответ, так это тем, что в Солидности ему выгоднее тянуть транзакции вместо push их .Имея это в виду, вы не должны пытаться получить эфир из учетной записи, а скорее должны разработать контракт таким образом, чтобы задействованная учетная запись вытащила бы их распределение из контракта.Вы можете сделать одно из двух:

  1. Пользователь1 отправляет эфир в контракт, который автоматически пересылает средства Пользователю2 (хотя я не уверен, почему вы будете использовать контракт в этом случае).
  2. Пользователь1 отправляет средства в контракт, а Пользователь2 получает средства во второй транзакции.

Обе эти работы работают, но вы не можете получить контракт, извлекающий эфир от первого пользователя автоматически.

Есть способы, где это, казалось бы, возможно, но это сделанос предварительно подписанной транзакцией от User1, что, скорее всего, вы не пытаетесь достичь.

0 голосов
/ 21 сентября 2018

Если учетная запись, из которой вы получаете эфир, также не является контрактом и не предоставляет метод, позволяющий выводить эфир, это невозможно.Контракт не может автономно извлекать эфир из учетной записи, находящейся во внешней собственности.

Альтернативой является перевод вашего эфира в контракт с Wrapped Ether (WETH), который вместо этого предоставляет вам маркер ERC20 с эфирной поддержкой, который затем дает вам доступдо approve() и transferFrom()

...