Я хотел бы знать, как отправить эфир с нескольких аккаунтов. Например, предположим, что у меня есть 3 аккаунта с 5 эфирами в каждом аккаунте, как мне отправить общее количество (15 эфиров) на аккаунт за одну транзакцию? Я спрашиваю, потому что, насколько я понимаю, параметр «от» в «sendTransaction» принимает только одну учетную запись.
Причина, по которой я спрашиваю об этом, заключается в том, что мне нужно принимать платежи эфиром в моей системе, и я хотел бы создать уникальную учетную запись для каждого депозита, но я не уверен, как потратить полученный эфир, не отправляя несколько транзакций. .
Спасибо!
Это фундаментальное различие между Биткойном и Эфириумом.
В Ethereum иметь несколько учетных записей — это не то же самое, что иметь несколько неизрасходованных транзакций в биткойнах, потому что каждая учетная запись Ethereum имеет свой собственный закрытый ключ и баланс.
Поэтому вам придется отдельно подписывать каждый платеж с каждой учетной записи, фактически каждый раз создавая отдельную транзакцию.
Есть два момента, которые я вижу в этом: первый заключается в том, что при коротком времени блока вы не оштрафованы с точки зрения потерянного времени, если вы создаете несколько платежей, а второй заключается в том, что сборы за каждый платеж применяются к каждому платежу. а не один общий расчетный сбор.
Однако, если бы все учетные записи были частью платежа с несколькими подписями, это могло бы работать, но это не очень гибко, если вы хотите использовать только одну учетную запись для чего-то.
Причина, по которой я спрашиваю об этом, заключается в том, что мне нужно принимать платежи Ether в моей системе, и я хотел бы создать уникальную учетную запись для каждого депозита.
Не размещайте эфир в необработанных учетных записях на клиентском узле, рассматривайте смарт-контракт как владельца учетной записи и отслеживайте учетные записи в своем смарт-контракте. См. кошелек с мультиподписью и другие примеры того, как отслеживать нескольких пользователей.
Когда вы хотите отправить эфир, вы отправляете его из своего смарт-контракта, что является одной транзакцией.
Также более безопасно хранить эфир таким образом. Вот почему был изобретен мультиподписной кошелек.
[EDIT, дополнительные требования из комментариев].
Если вы просто хотите отслеживать баланс по отправителю, вы должны сделать это в солидности (псевдокод). Если вы хотите отслеживать по идентификатору клиента, надеюсь, это очевидно, как изменить код.
struct Deposit {
uint customer_id;
uint value;
}
mapping (address => Deposit) depositers;
function deposit() {
depositsers[msg.sender].value = msg.value;
}
Нет,
В Ethereum все транзакции имеют один источник и одно место назначения. Источник должен быть реальным аккаунтом (тот, откуда будет сниматься газ). Назначением может быть реальный счет или контракт. Если это контракт, код контракта может генерировать транзакции, которые будут отправлять эфир на другие учетные записи, другие контракты или даже вызывать другие контракты в той же транзакции.
Возможно, вам следует отправить деньги на один счет или контракт, а затем выполнить оттуда одну транзакцию.
зависит от того, что вы пытаетесь сделать. Теоретически возможно запустить несколько экземпляров geth... но я полагаю, что вы, скорее всего, не захотите этого делать. Существует фундаментальное различие между передачей транзакций в биткойнах и передачей транзакций в Ethereum. Более подробную статью смотрите здесь:
https://medium.com/@ConsenSys/thoughts-on-utxo-by-vitalik-buterin-2bb782c67e53#.cioo9ab7g
но вкратце, если вы работаете с одним экземпляром ethereum, вам нужно будет выполнять транзакции последовательно с нескольких учетных записей. В этой итерации Ethereum нет ничего похожего на мультисиг... но говорят, что это произойдет благодаря Serenity. Следите за обновлениями.
Самый простой способ сделать это, IMO, - отправить / переслать входящие (ваш пользователь / клиент) платежи на одну учетную запись и укусить пулю за (1 дополнительная плата за перевод). Менее 1 цента в долларах США это не нарушение игры LOL
эт