Короткий ответ: вы не можете использовать контракт для получения эфира с другого адреса.Если бы какая-то форма была возможной, было бы трудно помешать злоумышленникам делать это со всеми.
Чем дольше ответ, так это тем, что в Солидности ему выгоднее тянуть транзакции вместо push их .Имея это в виду, вы не должны пытаться получить эфир из учетной записи, а скорее должны разработать контракт таким образом, чтобы задействованная учетная запись вытащила бы их распределение из контракта.Вы можете сделать одно из двух:
- Пользователь1 отправляет эфир в контракт, который автоматически пересылает средства Пользователю2 (хотя я не уверен, почему вы будете использовать контракт в этом случае).
- Пользователь1 отправляет средства в контракт, а Пользователь2 получает средства во второй транзакции.
Обе эти работы работают, но вы не можете получить контракт, извлекающий эфир от первого пользователя автоматически.
Есть способы, где это, казалось бы, возможно, но это сделанос предварительно подписанной транзакцией от User1, что, скорее всего, вы не пытаетесь достичь.