Сила подписи транзакций и что вы можете с ней сделать

Я поигрался с государственными каналами и начал понимать силу подписи информации/транзакций, но не получил совершенно четкого представления о том, что я могу с ними сделать. Я думаю , что могу сделать следующее, и был бы очень признателен за разъяснения, дополнительные мысли и то, где я просто ошибаюсь!

  1. Подписание платежа, но не отправка его в блокчейн, а отправка его кому-то еще для отправки в блокчейн.

Подписанная транзакция действует как чек (ГБ)/чек (США). Я подписываю платеж, но вместо того, чтобы отправлять данные в блокчейн, могу ли я отправить их человеку, которому я должен деньги, и они отправляют его в блокчейн, и, следовательно, они платят комиссию за транзакцию, немного похоже на то, как государственный канал отправляет подписанное сообщение другой стороне, вообще не проходя через блокчейн.

  1. Подписание платежа, но при этом отмена старого.

Представьте, что я делаю то же самое, но затем, прежде чем получатель подписанной транзакции зафиксирует ее в блокчейне, я должен ему больше денег. Итак, я подписываю новую транзакцию, которая представляет собой сумму первоначальной плюс новые деньги, которые я должен. Есть ли реализация, которую я могу использовать, чтобы означать, что старая транзакция не будет работать, если они отправят новую (или наоборот?) - я смутно думаю о одноразовых номерах/порядковых номерах или что-то в этом роде. Я не могу это представить, но я знаю, что с государственными каналами, скажем, для игры в шахматы, если я отправлю ход в блокчейн, я не смогу отправить предыдущие на основе порядкового номера. А будущие....? Какие-нибудь причудливые подходы здесь?

  1. Оплата комиссии за транзакцию от имени подписанной транзакции

Если я подпишу транзакцию, но отправлю ее кому-то другому, а не в блокчейн, чтобы они могли ее отправить, кто будет платить комиссию за транзакцию? Человек, который заплатил, отправил транзакцию, или человек, который подписал транзакцию?

  1. Подписание транзакции для развертывания контракта

Представьте, что у меня есть контракт, который не был развернут в блокчейне. Кто-то еще хочет отправить его, чтобы он был владельцем контракта. Могут ли они подписать транзакцию, которая означает, что я могу развернуть этот контракт от их имени? Если да, то каков здесь механизм? Преимущество в том, что они платят за развертывание контракта, а не я. Или это единственный способ, если у меня нет их закрытого ключа, развернуть его и передать им право собственности?

  1. Если у меня есть деньги в кошельке, и я хочу купить что-то на смарт-контракте от имени кого-то другого, у которого нет денег в кошельке, могут ли они подписать транзакцию и отправить ее мне, чтобы я мог отправить ее на контракт и оплатить расходы сам, но они будут зарегистрированы в блокчейне как плательщик. Я понимаю, что это может не отображаться в транзакции, поскольку они являются лицом, которое заплатило, но с точки зрения смарт-контракта, скажем, есть функция, payableя оплачиваю эту функцию, но функция записывает в контракте их адрес (возможно, их адрес указан в поле данных транзакции) - есть стандартный подход к этому?

Спасибо!

Ответы (1)

Подписание платежа, но не отправка его в блокчейн, а отправка его кому-то еще для отправки в блокчейн.

A может подписать транзакцию, в которой говорится, что некоторое количество токенов или эфира будет передано B, а затем B может отправить его в блокчейн. Однако в то же время А может перевести все свои средства на другой счет, так что транзакция, отправленная В, станет недействительной.

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

Подписание платежа, но при этом отмена старого.

Ключевым моментом здесь является одноразовый номер. Представьте, что A платит B x эфир, они соглашаются, что B отправит его позже. Представьте, что новый платеж В должен быть произведен А, а В не предъявил предыдущий счет. A может выполнить новый платеж с тем же одноразовым номером и обновленной суммой. Только одна из этих транзакций будет действительной, и B наверняка отправит ту, на которую будет внесена полная сумма.

  1. Оплата комиссии за транзакцию от имени подписанной транзакции
  2. Подписание транзакции для развертывания контракта 5.

Аккаунт подписывается тем, кто его подписывает.

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

Надеюсь, это поможет.