Должен то он должен, но кто его заставит? Можно наоборот, сначала товар потом деньги.
Однако, продавец вызывает большее доверие. У него бизнес и он заботится о своей репутации.
Т.к. мне все равно приходится доверять продавцу, я могу положить некоторую сумму ему на
депозит, а уже потом запросить множество товаров на эту сумму. Таким образом, не нужно
посылать транзакцию за каждый товар.
Выглядит как организация большого количества миниатюрных централизованных систем посредников с прямыми транзакциями меду участниками, которые не будут откладываться в общем логе... звучит вполне реализуемо, даже поверх bitcoin.
Реализация всего чего угодно может быть сделана, если разрешить использовать mesh сеть bitcoin для передачи шифрованных сообщений:
* создать новый тип транзакций - назвать например private или message, с ограниченным сроком жизни (кстати как долго сейчас необработанные транзакции лежат в буфере, ожидающих упаковки их в блок? как сеть реагирует на dDOS транзакциями?), можно даже зашифрованные с использованием приватного ключа адреса получателя, все получат: поймет только получатель, остальные по таймауту (чтобы лишний раз не принимать) его удаляют.
* разрешить отправку таких транзакций через
https://en.bitcoin.it/wiki/IP_Transactions (это немного не то, сейчас это только возможность получить адрес для приема монет по IP), при отсутствии необходимости в анонимности, для скорости и чтобы не флудить в сеть лишними транзакциями.
* чтобы хакерам сделать жизнь слаще, такие транзакции можно делать платными (пусть платит тот кто выслал, вот только непонятно кому, а точнее как, ну, например, тому, кто первый обнаружит такую транзакцию и придержит ее у себя, для периодической повторной рассылки на время жизни сообщения),
сложный момент, непонятно можно ли реализовать и как, но собственно тут вся собака и зарыта,.. обсуждаемо, но если этого не делать, то
сама сеть bitcoin вообще получается не нужна.. иначе приложение само может себе создать mesh-сеть и поддерживать ее самостоятельно, более надежно, секурно и не мешаешь другим.
Сам клиент bitcoin никак не хранит эти сообщения, он должен их только доставлять до адресата, а уже пользовательское ПО средствами JSON запросов собирает присланные сообщения и обрабатывает как хочет... теми же средствами можно высылать ответ (или пакетом выслать сразу много ответов-подтверждений)
А дальше уже приложение само контролирует:
* private-account - некий идентификатор, определяющий этот подаккаунт и связанный с bitcoin-адресом, шифрующим или подписывающим сообщение
* private-balance - размер средств у этого подаккаунта
* типы private-транзакций:
+ sendtransaction - перемещения денег с балланса отославшего сообщение на указанный список с указанными значениями (все как у обычных транзакций bitcoin)
+ getbalance - запросить текущий баланс
+ setbalance - установить баланс, это ответ обработчика балансов на запрос getbalance или отсылается при любых изменениях баланса
Для примера есть 2 кошелька SERVER и CLIENT, у каждого по одному bitcoin-адресу выделено под использование private-account, каждый из которых назовем server и client, определяющий, например, балансы пользователя, только у SERVER аккаунт client, а у CLIENT аккаунт server, оба являются объемом средств пользователя CLIENT на SERVER..
p.s. самое главное, все вышеописанное требует, чтобы клиенты доверяли серверу (тому, кто теперь хранит их аккаунты)