Что есть проверка транзакции, в Биткоине
От: johny5 Новая Зеландия
Дата: 12.01.18 01:51
Оценка:
Привет,

Более конкретные вопросы:

  1. Как убедиться что на счёте, с которого переводятся деньги — есть эти деньги. Нужна ли для этого копия ВСЕЙ история транзакций?
  2. Как убедиться что транзакция была сгенерена покупателем — человеком-владельцем кошелька. Откуда берётся публичный ключ кошелька, которой подписана транзакция?
  3. Где вообще хранятся эти кошельки и что там ещё сохранено.
Re: Что есть проверка транзакции, в Биткоине
От: Shmj Ниоткуда  
Дата: 12.01.18 05:15
Оценка:
Здравствуйте, johny5, Вы писали:

J>Как убедиться что на счёте, с которого переводятся деньги — есть эти деньги. Нужна ли для этого копия ВСЕЙ история транзакций?


Нужна вся история, но можно чуть сократить.

J>Как убедиться что транзакция была сгенерена покупателем — человеком-владельцем кошелька. Откуда берётся публичный ключ кошелька, которой подписана транзакция?


Адрес -- это и есть хеш публичного ключа.

J>Где вообще хранятся эти кошельки и что там ещё сохранено.


В блокчейне, вестимо Или уточните вопрос.
=сначала спроси у GPT=
Отредактировано 12.01.2018 5:15 Shmj . Предыдущая версия . Еще …
Отредактировано 12.01.2018 5:15 Shmj . Предыдущая версия .
Re[2]: Что есть проверка транзакции, в Биткоине
От: johny5 Новая Зеландия
Дата: 12.01.18 06:03
Оценка:
Спасибо, продолжим..


J>>Как убедиться что транзакция была сгенерена покупателем — человеком-владельцем кошелька. Откуда берётся публичный ключ кошелька, которой подписана транзакция?


S>Адрес -- это и есть хеш публичного ключа.

Хэш? А как хешем можно проверить подпись транзакции?

J>>Где вообще хранятся эти кошельки и что там ещё сохранено.

S>В блокчейне, вестимо Или уточните вопрос.

Тут имелось ввиду, какая то информация о кошельках сохраняется где то или нет. Т.е. есть ли возможность узнать существует ли такой кошелёк, кто его владелец и пр. Или транзакция может быть проведена просто на любой hex адрес.
Re[3]: Что есть проверка транзакции, в Биткоине
От: Shmj Ниоткуда  
Дата: 12.01.18 06:15
Оценка: 4 (1)
Здравствуйте, johny5, Вы писали:

S>>Адрес -- это и есть хеш публичного ключа.

J>Хэш? А как хешем можно проверить подпись транзакции?

Когда вы переводите на, то указываете хеш.

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

Если деньги с адреса не были ни разу потрачены -- нельзя сказать какой публичный ключ, есть только хеш.

J>>>Где вообще хранятся эти кошельки и что там ещё сохранено.

S>>В блокчейне, вестимо Или уточните вопрос.

J>Тут имелось ввиду, какая то информация о кошельках сохраняется где то или нет. Т.е. есть ли возможность узнать существует ли такой кошелёк, кто его владелец и пр. Или транзакция может быть проведена просто на любой hex адрес.


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

В адрес еще добавляют 2 байта (емнип) контрольной суммы, т.е. если хотите сгенерить адрес для произвольного hex-кода, то нужно учесть контрольную сумму.
=сначала спроси у GPT=
Re: Проверка транзакции в Биткоине
От: Qbit86 Кипр
Дата: 12.01.18 08:21
Оценка: 22 (3)
Здравствуйте, johny5, Вы писали:

J>Как убедиться что на счёте, с которого переводятся деньги — есть эти деньги. Нужна ли для этого копия ВСЕЙ история транзакций?


Есть разные варианты. Trustless, когда разворачиваешь свою полную ноду, которая синхронизирует блокчейн с другими нодами, и валидирует блоки (в том числе проверяет, что на входных адресах транзакций достаточно средств). Trustful, когда доверяешь сторонним сервисам, т.н. блок-эксплорерам: они гоняют ноду у себя и предоставляют тебе интерфейс. Для Биткоина самый популярный сервис такого рода — blockchain.info. Например: https://blockchain.info/address/123V7agDSR3A7U2mq41uvYSJr1v5ZKyYWo

J>Как убедиться что транзакция была сгенерена покупателем — человеком-владельцем кошелька.


Владелец кошелька — это владелец ключевой пары ECDSA. Issuer подписывает свои транзакции своим приватным ключом; все остальные проверяют эту подпись его публичным ключом.

J>Откуда берётся публичный ключ кошелька, которой подписана транзакция?


Приватный ключ выбирается случайно из определённого диапазона, по нему порождается публичный ключ ECDSA, из него порождаются байты адреса как хэш публичного ключа, из него порождается human-readable адрес типа 123V7agDSR3A7U2mq41uvYSJr1v5ZKyYWo путём добавления контрольной суммы с последующим base58-кодированием.

J>Где вообще хранятся эти кошельки и что там ещё сохранено.


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

На практике обычно используются иерархические детерминированные кошельки (HD-wallets). Владелец хранит только один master-keypair, и из него порождается набор фактических биткоин-кошельков. А уж как хранить этот HD-кошелёк — твоё личное дело. Один из подходов — представление его в виде списка 12 слов (BIP39 seed). Слова можно просто запомнить; и этого достаточно, чтобы позже восстановить HD-кошелёк (и все порождённые и использованные адреса). То есть в принципе тебе для доступа к твоим средствам не нужно даже физически хранить какие-то там файлы; но в жизни практичнее просто хранить и синхронизировать зашифрованный паролем файл HD-кошелька.
Глаза у меня добрые, но рубашка — смирительная!
Re: Что есть проверка транзакции, в Биткоине
От: alex_public  
Дата: 12.01.18 15:21
Оценка: 4 (1)
Здравствуйте, johny5, Вы писали:

J>Как убедиться что на счёте, с которого переводятся деньги — есть эти деньги. Нужна ли для этого копия ВСЕЙ история транзакций?


В биткоине нет счетов. Есть только блуждающие по сети группки монет, трата которых заблокирована с помощью различных публичных ключей (соответственно потратить их может только владелец соответствующих им приватных ключей). Для проверки валидности транзакции не требуется проверять всю её историю (т.к. собственно идея блокчейна в том, что вся его история (ну условно говоря кроме последних 6 блоков) априори верна) — достаточно предыдущей транзакции. Но чтобы узлу иметь возможность проверки любой новой транзакции, очевидно он всё равно должен хранить у себя список всех предыдущих (собственно весь блокчейн).

J>Как убедиться что транзакция была сгенерена покупателем — человеком-владельцем кошелька. Откуда берётся публичный ключ кошелька, которой подписана транзакция?


См. выше.

J>Где вообще хранятся эти кошельки и что там ещё сохранено.


Кошелёк — это собственно говоря просто странное название для одного или нескольких приватных ключей, подходящих для разблокировки траты каких-то биткоинов. Хранятся они соответственно как угодно (можешь хоть на листочке бумаги записать или вообще заучить наизусть). Но чаще всего для этого используется какой-то вид удобного ПО, которое организует зашифрованную базу данных этих ключей.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.