Как работает подписание несколькими людьми?

Я создал смарт-контракт DAO, где около 20 человек голосуют за предложения. Каждый из них создает новый Tx.

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

Я слышал, что несколько человек подписывают свой баланс в состоянии канала сети освещения.

Ответы (2)

Вы используете подпись так же, как если бы подписывался один человек. Каждый человек должен будет оплатить транзакционные издержки, необходимые для подачи своей подписи. Однако вы можете создать единую функцию, которая будет автоматически анализировать все подписанные сообщения, что будет немного дешевле, чем если бы вы отправляли новую транзакцию для анализа каждого подписанного сообщения. Вы могли бы потенциально реализовать что-то вроде аирдропов merkle ( https://blog.ricmoo.com/merkle-air-drops-e6406945584d )

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

При подписании сообщений к ним добавляются следующие данные: https://github.com/postables/Postables-Payment-Channel/blob/7d2f91bb060f80b139cab72b5fdff79d116f6210/solidity/ChannelsV4.sol#L12 .

У меня также есть скрипт Python, который можно использовать для подписи сообщений: https://github.com/postables/Postables-Payment-Channel/blob/develop/python/signer.py .

В следующей функции надежности подробно описано, как проверить ИСХОДНОЕ сообщение, которое было подписано, а также лицо, подписавшее подписанное сообщение : L257

Следующая функция солидности подробно описывает, как проверить лицо, подписавшее сообщение :

Вы сказали "чуть дешевле". Пропорционально, сколько затрат на газ можно сэкономить с помощью этого заявленного метода?
Точную сумму я не смог рассчитать, однако каждая транзакция, которую вы отправляете, должна включать газ 21000, поэтому теоретически вы сэкономите 21 тыс. газа за каждую транзакцию, которую вы не отправляете. Конечно, это не сработает именно так, но вы сэкономите немного.

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

Посмотрите этот пример мультиподписного кошелька, который работает следующим образом: https://medium.com/@ChrisLundkvist/exploring-simpler-ethereum-multisig-contracts-b71020c19037 .

Однако имейте в виду, что каждая добавленная вами подпись будет увеличивать стоимость газа транзакции, которая их отправляет, а общий газ, который вы можете использовать в одной транзакции, ограничен лимитом газа блока, который может измениться. Таким образом, если количество подписей, которое может потребоваться, велико или не ограничено, вам все равно может потребоваться написать контракт, чтобы подписи можно было разделить между несколькими транзакциями.