Как потратить эфир с нескольких аккаунтов?

Я хотел бы знать, как отправить эфир с нескольких аккаунтов. Например, предположим, что у меня есть 3 аккаунта с 5 эфирами в каждом аккаунте, как мне отправить общее количество (15 эфиров) на аккаунт за одну транзакцию? Я спрашиваю, потому что, насколько я понимаю, параметр «от» в «sendTransaction» принимает только одну учетную запись.

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

Спасибо!

Связано для тех, кто интересуется, можно ли отправить Эфир НА несколько аккаунтов за одну транзакцию: ethereum.stackexchange.com/q/980/42

Ответы (5)

Это фундаментальное различие между Биткойном и Эфириумом.

В Ethereum иметь несколько учетных записей — это не то же самое, что иметь несколько неизрасходованных транзакций в биткойнах, потому что каждая учетная запись Ethereum имеет свой собственный закрытый ключ и баланс.

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

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

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

Если это правда, как работает новый кошелек Jaxx HD? У него есть новый адрес для каждой входящей транзакции, но он не отправляет несколько транзакций, если вы тратите весь баланс.
Ой, бывает?!? Я только что проверил, и он отправляет транзакцию для каждой входящей транзакции... Это безумие. Если вы получаете 100 транзакций по последовательным адресам, которые он показывает вам, и вы тратите их все сразу, вы заплатите 100 комиссий за транзакцию. Псих.
Это еще одна причина, по которой я думаю, что мы не должны думать об Эфириуме как о биткойне. На самом деле токен со специально разработанным контрактом сделает это намного дешевле.
Чем поможет новый токен? Мне кажется, что (в настоящее время) HD-кошельки и накопительные платежи просто невозможны... Но спрос на такие приложения, безусловно, есть. Возможно, это будет исправлено в будущих выпусках.
Это не вопрос помощи, а больше похоже на то, чтобы не думать об Ethereum как о валюте ради того, чтобы быть валютой и работать как валюта. Это не его цель, биткойн достигает этой цели, однако токен также может достичь этой цели с гораздо большей потенциальной функциональностью, чем биткойн или сам Ethereum, если на то пошло.
Но как это реализует coinbase.com? Они генерируют новый адрес после каждого депозита. Итак, если у меня есть 10 000 адресов, они выполняют 10 000 транзакций, чтобы отправить весь мой эфир куда-то еще?
@NarayanPrusty Вы уверены, что coinbase делает это? Я не использовал coinbase, но в идеале это кажется несбыточной мечтой, по крайней мере, с эфириумом.

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

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

Когда вы хотите отправить эфир, вы отправляете его из своего смарт-контракта, что является одной транзакцией.

Также более безопасно хранить эфир таким образом. Вот почему был изобретен мультиподписной кошелек.

[EDIT, дополнительные требования из комментариев].

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

struct Deposit {
    uint customer_id;
    uint value;
}
mapping (address => Deposit) depositers;
function deposit() { 
    depositsers[msg.sender].value = msg.value;
}
Я понимаю. И когда смарт-контракт получает платеж, как он узнает, кто должен получить кредит? Я не могу полагаться на источник, потому что этот платеж может поступать откуда угодно (например, с общей учетной записи, такой как биржа), и даже если источником является личная учетная запись, мне потребуется какой-то механизм для сопоставления этой учетной записи с моим списком пользователей (например, спросить у каждого из моих пользователей свой идентификатор учетной записи Ethereum, что немного неудобно). В идеале я хотел бы предоставить разные депозитные адреса/счета разным пользователям. Как вы предлагаете мне сделать это с помощью смарт-контрактов? Спасибо.
ну, это новые требования... Я добавил псевдокод, чтобы показать, как отслеживать по исходному адресу. Ethereum не предоставляет встроенного механизма уникальной идентификации, кроме как по адресу. С Homestead вы можете легко проксировать этот адрес, чтобы он был полезен. Если вам нужна собственная настройка идентификатора клиента, вам нужно настроить ее. Это может быть хороший отдельный вопрос: «Как мне создать уникальную идентификацию клиента с учетом обменов и других агрегаций средств по адресам». Я думаю, что ответ может быть «не агрегировать», но попробуйте задать его, кто-то другой ответит.
Вопрос: "Как потратить эфир с нескольких аккаунтов?" Возможные ответы: «Это невозможно» или «Таким образом». Вы отвечаете на вопрос, которого не задавали.

Нет,

В Ethereum все транзакции имеют один источник и одно место назначения. Источник должен быть реальным аккаунтом (тот, откуда будет сниматься газ). Назначением может быть реальный счет или контракт. Если это контракт, код контракта может генерировать транзакции, которые будут отправлять эфир на другие учетные записи, другие контракты или даже вызывать другие контракты в той же транзакции.

Возможно, вам следует отправить деньги на один счет или контракт, а затем выполнить оттуда одну транзакцию.

И это очень разочаровывает Eth, учитывая смехотворно высокие сборы за газ, делающие сеть ETH бесполезной прямо сейчас.

зависит от того, что вы пытаетесь сделать. Теоретически возможно запустить несколько экземпляров geth... но я полагаю, что вы, скорее всего, не захотите этого делать. Существует фундаментальное различие между передачей транзакций в биткойнах и передачей транзакций в Ethereum. Более подробную статью смотрите здесь:

https://medium.com/@ConsenSys/thoughts-on-utxo-by-vitalik-buterin-2bb782c67e53#.cioo9ab7g

но вкратце, если вы работаете с одним экземпляром ethereum, вам нужно будет выполнять транзакции последовательно с нескольких учетных записей. В этой итерации Ethereum нет ничего похожего на мультисиг... но говорят, что это произойдет благодаря Serenity. Следите за обновлениями.

Самый простой способ сделать это, IMO, - отправить / переслать входящие (ваш пользователь / клиент) платежи на одну учетную запись и укусить пулю за (1 дополнительная плата за перевод). Менее 1 цента в долларах США это не нарушение игры LOL

Я не знаю, являетесь ли вы носителем английского языка, но, пожалуйста, приложите усилия...
Помните этот пост? Посмотри сейчас ;)