Как отправить с нескольких счетов на один счет в договоре

Например, у меня есть 3 счета с остатками:

1 аккаунт - 5 эфиров

2 аккаунт - 15 эфиров

3 аккаунт - 7 эфиров

Я хочу отправить 20 эфиров, поэтому будет использован 1 и 2 аккаунт. Я понимаю, как совершать только простые транзакции, но для этого нужно будет платить комиссию за каждую транзакцию. И для каждой транзакции перед отправкой мне нужно разблокировать аккаунт. Контракт не может разблокировать учетную запись, поэтому я не понимаю, как будет выводиться эфир с этих учетных записей и как у него может быть разрешение на это. Пожалуйста помоги.

Ответы (1)

Коротко: нельзя отправлять с нескольких аккаунтов за одну транзакцию.

Длинный: каждая учетная запись контролируется связанным с ней закрытым ключом. Это означает, что весь эфир, который покидает эту учетную запись, должен быть подписан этим ключом, а затем подписанная транзакция транслируется по всей сети. Поэтому у вас не может быть только одна транзакция, которая отправляет эфир с трех учетных записей, контролируемых закрытым ключом. Что вы можете сделать, так это иметь смарт-контракт с несколькими подписями. В этом контракте будет храниться весь эфир, и вы сможете, например, контролировать любой из трех аккаунтов. Это позволяет вам по-прежнему отправлять средства, если вы потеряли ключ к одной учетной записи. Обратите внимание, что в то же время это означает, что все средства находятся под угрозой, если злоумышленник получит доступ к любому из этих трех закрытых ключей. Поэтому вам может быть лучше настроить мультиподпись 2 из 3 и вам понадобятся 2 из всех 3 закрытых ключей для подписи транзакции. Читать здесьподробнее о мультиподписных смарт-контрактах для Ethereum.

@Sebastian, значит, контракт с несколькими подписями позволяет снимать деньги с 3 счетов и вызывать внутренние транзакции? Или эти 3 аккаунта имеют доступ к эфиру на каждый?
Первый: мультиподпись на самом деле является смарт-контрактом, в котором хранятся средства (а не учетные записи, контролируемые закрытым ключом!). Вы можете выбрать мультиподпись, в которой, например, все три счета, контролируемые закрытым ключом, могут тратить средства из этого мультиподписного контракта. имейте в виду, что вам нужно (небольшое) количество эфира на каждом из трех счетов, чтобы оплатить транзакционные издержки (газ). На данный момент смарт-контракты никогда не платят за газ. Это может измениться в долгосрочной перспективе, но не слишком скоро. Так что на данный момент вам просто нужно держать достаточное количество ETH на своих счетах с закрытым ключом, чтобы заплатить за газ.