Bitcoin Forum
December 10, 2016, 06:39:29 PM *
News: To be able to use the next phase of the beta forum software, please ensure that your email address is correct/functional.
 
   Home   Help Search Donate Login Register  
Pages: [1] 2 »  All
  Print  
Author Topic: -  (Read 5610 times)
Lomov
Member
**
Offline Offline

Activity: 63



View Profile WWW
-
December 21, 2011, 10:28:52 PM
 #1

-

Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1481395169
Hero Member
*
Offline Offline

Posts: 1481395169

View Profile Personal Message (Offline)

Ignore
1481395169
Reply with quote  #2

1481395169
Report to moderator
1481395169
Hero Member
*
Offline Offline

Posts: 1481395169

View Profile Personal Message (Offline)

Ignore
1481395169
Reply with quote  #2

1481395169
Report to moderator
1481395169
Hero Member
*
Offline Offline

Posts: 1481395169

View Profile Personal Message (Offline)

Ignore
1481395169
Reply with quote  #2

1481395169
Report to moderator
LZ
Moderator
Legendary
*
Offline Offline

Activity: 1456


Satoshi everywhere!


View Profile WWW
December 22, 2011, 12:01:35 AM
 #2

1. Закреплять при регистрации за каждым пользователем свой постоянный "адрес для приема БТС"?
Да, иначе придется каждый раз вручную возвращать недошедшие средства.

2. Использовать шлюз? Какой лучше и надежней?
Даже такой надежный как mybitcoin.com был взломан с потерей половины средств.

3. Если самим, то какой алгоритм?
Запрос адреса для некоего пользователя login01:
Code:
bitcoind.getaccountaddress('login01')
Пользователь нажимает кнопку "Новый адрес":
Code:
bitcoind.getnewaddress('login01')
Проверяем правильность структуры адреса:
Code:
bitcoind.validateaddress('lalala')
Если запрашиваем подтвержденный баланс:
Code:
bitcoind.getbalance('login01')
Делаем копию файла кошелька wallet.dat:
Code:
bitcoind.backupwallet('wallet.bak')
Внутренний перевод между аккаунтами:
Code:
bitcoind.move('login01','login02','1.00')
Выводим средства на указанный адрес:
Code:
bitcoind.sendfrom('login01','1inux7eD8H13GrvBvdPjUbW7oSz8osgD8','1.00')
Кидаем на биты всех пользователей:
Code:
bitcoind.sendtoaddress('1inux6wWiTBsQwU3pPG856rSvPVi8evX4',bitcoind.getbalance())
Выводим список юзеров и балансов:
Code:
bitcoind.listaccounts()

Обращаем внимание на то, что демон не будет спрашивать об оплате комиссии, а сразу заплатит.

"Never invest unless you can afford to lose your entire investment." © S3052
LZ
Moderator
Legendary
*
Offline Offline

Activity: 1456


Satoshi everywhere!


View Profile WWW
December 22, 2011, 12:34:44 AM
 #3

Вообще, где копать, чтобы надежно и просто подключить БТС?
https://en.bitcoin.it/wiki/

"Never invest unless you can afford to lose your entire investment." © S3052
N.Z.
Sr. Member
****
Offline Offline

Activity: 449



View Profile
December 22, 2011, 01:00:21 AM
 #4

Вообще вопрос интересный. Не в плане реализации как таковой, а в плане "Сколько будет стоить система приема биткоинов на сайт". И кто возьмется. Так глядишь больше сервисов появится. Lomov, сколько там у вас по смете стоит этот пункт при условии, что делать сами будете, если не секрет?
LZ
Moderator
Legendary
*
Offline Offline

Activity: 1456


Satoshi everywhere!


View Profile WWW
December 22, 2011, 01:52:48 PM
 #5

Ващее тупо?
Да, не стоит так делать, запутаетсь. Вы не упростили, а усложнили.
Поймите, что пользователи будут называть чужие трансакции своими.
К тому же большинство пользователей Bitcoin понятия не имеют с каких
адресов они отправляли биткоины (следствие сильной паранои клиента).
А суммы могут и совпадать, что приведет к настоящему хаосу с оплатой.

"Never invest unless you can afford to lose your entire investment." © S3052
DeepBit
Donator
Hero Member
*
Offline Offline

Activity: 532


We have cookies


View Profile WWW
December 22, 2011, 11:36:22 PM
 #6

1. Чтобы делать свой прием платежей БТС надо на сервере сайта запустить bitcoind
2. wallet.dat будет на сервере (он сам создастся или туда надо положить? )
3. дальше все рулится с помощью JSON-RPC?

Тогда алгоритм для сервиса следующий:

1. Пользователь регистрируется на сайте
2. Нажимает "Оплатить услугу" - появляется форма для ввода суммы и адрес для транзакции
3. Он отсылает БТС на этот адрес - система открывает доступ к услуге, но в тоже время ждет подтверждения платежа (если что блокирует услугу/аккаунт)
4. Как только приход БТС подтвердился - система пересылает содержимое кошелька на сервере на кошелек, который находится допустим в офисе/дома. Тем самым - кошелек на сервере практически всегда пустой
1 - да, если не использовать сторонние сервисы.
2 - сам создастся.
3 - да.

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

Я, кстати, тоже думал о том, чтобы поднять сервис приёма платежей. Благо биткойндов и так много крутится на серверах :)

Welcome to my bitcoin mining pool: https://deepbit.net ~ 3600 GH/s, Both payment schemes, instant payout, no invalid blocks !
Coming soon: ICBIT Trading platform
DeepBit
Donator
Hero Member
*
Offline Offline

Activity: 532


We have cookies


View Profile WWW
December 22, 2011, 11:40:08 PM
 #7

1. Закреплять при регистрации за каждым пользователем свой постоянный "адрес для приема БТС"?
Да, иначе придется каждый раз вручную возвращать недошедшие средства.
Возвращать вручную надо только если софт по какой-то причине не может это учитывать сам.
Не представляю, с чего бы вдруг автор не стал бы это реализовывать.

2. Использовать шлюз? Какой лучше и надежней?
Даже такой надежный как mybitcoin.com был взломан с потерей половины средств.
На этот счёт есть разные мнения. Некоторые считают что его никто не взломал, просто автор сбежал с половиной средств.

Welcome to my bitcoin mining pool: https://deepbit.net ~ 3600 GH/s, Both payment schemes, instant payout, no invalid blocks !
Coming soon: ICBIT Trading platform
DeepBit
Donator
Hero Member
*
Offline Offline

Activity: 532


We have cookies


View Profile WWW
December 23, 2011, 12:22:13 AM
 #8

Это как?
Не уловил первый абзац
Можно создать приватный ключ и публичный ключ вообще не связываясь с биткойновой сетью. Просто сгенерировать их.
А потом, когда надо будет забрать деньги - импортировать приватный ключ в свой клиент и подписать нужные транзакции.
Хотя импорт большого количества ключей, возможно, будет тормозить.

Welcome to my bitcoin mining pool: https://deepbit.net ~ 3600 GH/s, Both payment schemes, instant payout, no invalid blocks !
Coming soon: ICBIT Trading platform
LZ
Moderator
Legendary
*
Offline Offline

Activity: 1456


Satoshi everywhere!


View Profile WWW
December 23, 2011, 04:15:06 AM
 #9

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

На этот счёт есть разные мнения. Некоторые считают что его никто не взломал, просто автор сбежал с половиной средств.
Может я чего не понимаю, но труЪ мошенники не возвращают половину средств!

Это как?
Не уловил первый абзац
Использование нестандартных подходов таит опасности. Mt.Gox уже отличился...

"Never invest unless you can afford to lose your entire investment." © S3052
LZ
Moderator
Legendary
*
Offline Offline

Activity: 1456


Satoshi everywhere!


View Profile WWW
December 23, 2011, 05:02:23 AM
 #10

Рассмотрим несколько вариантов.

1. Демон запущен на том же сервере, что и сайт.
ПЛЮС: самый простой вариант, минимум действий.
МИНУС: при взломе сервера пропадут все средства.

2. То же самое, но с bitcoind.encryptwallet('password').
ПЛЮС: если хакер не сможет найти скрипт с паролем
в открытом виде, то он уже не украдет все средства.
МИНУС: непонятно, как это можно надежно спрятать.

3. Демон запущен на другом сервере, настроен на SSL.
ПЛЮС: если хакер не сможет найти ключи SSL, то уже
он не сможет украсть все средства (аналогично SSH).
МИНУС: точно такой минус, как и у второго варианта.

4. То же самое, но команды фильтруются скриптом.
ПЛЮС: захватив сервер, хакер не сможет выполнять
нежелательные команды, например - отправка битов.
МИНУС: нужно хитроумно проводить выводы средств.

5. Сгенерировать много ключей на самом вебсервере.
ПЛЮС: тулзы vanitygen и pywallet спешат на помощь.
МИНУС: хакера позабавит, что все ключи на виду...

6. Сгенерировать много ключей и хранить их оффлайн.
ПЛЮС: все закрытые ключи принципиально не в сети.
МИНУС: все то же самое, что и в четвертом варианте.

Так как у Вас не планируется вывод средств самими
пользователями, то хитроумный вывод не требуется,
просто импортируете ключи с помощью pywallet или
запрашиваете множество ключей с помощью самого
клиента Bitcoin. На сервере выдаете адреса из уже
заготовленного списка, BlockExplorer'ом проверяете
баланс каждого адреса скриптом или же вручную.

"Never invest unless you can afford to lose your entire investment." © S3052
DeepBit
Donator
Hero Member
*
Offline Offline

Activity: 532


We have cookies


View Profile WWW
December 23, 2011, 08:59:31 AM
 #11

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

На этот счёт есть разные мнения. Некоторые считают что его никто не взломал, просто автор сбежал с половиной средств.
Может я чего не понимаю, но труЪ мошенники не возвращают половину средств!
Разве ? А как же btcex, например ?

Welcome to my bitcoin mining pool: https://deepbit.net ~ 3600 GH/s, Both payment schemes, instant payout, no invalid blocks !
Coming soon: ICBIT Trading platform
DeepBit
Donator
Hero Member
*
Offline Offline

Activity: 532


We have cookies


View Profile WWW
December 23, 2011, 09:03:18 AM
 #12

1. Демон запущен на том же сервере, что и сайт.
ПЛЮС: самый простой вариант, минимум действий.
МИНУС: при взломе сервера пропадут все средства.
Скрипту ничего не мешает раз в час или по мере необходимости отправлять все средства на кошелёк автора или вообще в оффлайн.
Таким образом риск снимается.

Так как у Вас не планируется вывод средств самими пользователями, то хитроумный вывод не требуется,
просто импортируете ключи с помощью pywallet или запрашиваете множество ключей с помощью самого
клиента Bitcoin. На сервере выдаете адреса из уже заготовленного списка, BlockExplorer'ом проверяете
баланс каждого адреса скриптом или же вручную.
Вручную - как-то не модно в наш век высоких технологий. На то они и электронные платежи чтобы всё работало само.
Можно автоматически по блокэксплореру или с использованием специального сервиса.

Welcome to my bitcoin mining pool: https://deepbit.net ~ 3600 GH/s, Both payment schemes, instant payout, no invalid blocks !
Coming soon: ICBIT Trading platform
N.Z.
Sr. Member
****
Offline Offline

Activity: 449



View Profile
December 23, 2011, 11:17:01 AM
 #13

Quote
Так как у Вас не планируется вывод средств самими
пользователями, то хитроумный вывод не требуется,
просто импортируете ключи с помощью pywallet или
запрашиваете множество ключей с помощью самого
клиента Bitcoin. На сервере выдаете адреса из уже
заготовленного списка, BlockExplorer'ом проверяете
баланс каждого адреса скриптом или же вручную
Строить такую конструкцию и надеяться на сторонний BlockExplorer как-то не комильфо. Тогда уж еще проще. Сгенерировать 1000 адресов, список - на сайт, на отдельном серваке с bitcoind проверять приход, в случае успеха посылать команду на сайт "Бабло пришло" и включать услугу. <paranoia>Команду посылать через Tor, чтобы злые хакеры не догадались, откуда она идет</paranoia>  Серваком может быть хоть впс за 10 долларов, кто-то даже предлагает вроде с настроенным кошельком уже, хоть домашний компьютер.
Lexiko
Sr. Member
****
Offline Offline

Activity: 358


View Profile
January 12, 2012, 03:35:56 PM
 #14

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

Порядок действий такой.
Игрок в личном кабинете переходит на станицу оплаты BTC (жмет кнопку оплатить через BTC).
Скрипт проверяет, есть ли в базе для этого игрока уникальный BTC счет , если нет, тогда генерит его используя bitcoind.getnewaddress('login01') и сохраняет в базе (счет навсегда закрепляется за этим логином), иначе извлекает старый.
Далее игроку высвечивается этот адрес для пополнения и соотношение 1 btc = единиц игровой валюты.
Игрок платит на этот BTC счет, и через какое-то время (необходимое для прохождения транзакции) жмет кнопку проверить баланс.
В этот момент скрипт делает bitcoind.getbalance('login01') ,если там любой ненулевой баланс,тогда запоминает сумму, и обнуляет баланс путем перевода на основной кошелек (если мы храним все на одном сервере bitcoind.move('login01','login02','1.00') ) или  переводит всю сумму на наш кошелек, который спрятан в надежном месте bitcoind.sendfrom('login01','1inux7eD8H13GrvBvdPjUbW7oSz8osgD8','1.00') , далее проверяется обнулился ли баланс , если да, эта запомненная сумма перемножается на курс игровой валюты и зачисляется на баланс игрока.
Оплата окончена.

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

В качестве rpc сервера используем линуксовый bitoind, в качестве клиента пхп скрипт https://en.bitcoin.it/wiki/PHP_developer_intro

Все ли я правильно делаю? Есть ли ограничение на количество созданных счетов на один аккаунт?

Lexiko
Sr. Member
****
Offline Offline

Activity: 358


View Profile
January 13, 2012, 01:45:12 AM
 #15

Проверил вышенаписанное на практике, полет нормальный. Запустил службу на linux серваке, дождался пока скачались все блоки.
Написал php скрипт, который проверяет по базе есть ли уже адрес у игрока, если нет, выдает.
В том же скрипте реализовал функции проверки баланса (чтобы игрок видел поступили средства или нет тыкая ajax кнопочку) и функции пополнения игрового аккаунта (в этот момент все поступившие средства переводятся с внутреннего btc  аккаунта игрока , на общий btc аккаунт сервера и btc игрока обнуляется, а игровой пополняется соответствующей суммой (тут проверка обнулился ли игровой акк).

Плюсы у данного алгоритма такие:
+ минимум кода и таблиц БД (всего одна простая с полями login - btc_address), ну еще одна будет наверное хранить историю пополнений
+ нет необходимости контролировать и хранить выписанные счета и суммы на них (только для истории)
+ пополнение доступно на любую сумму. Т.е. сколько btc игрок пополнит, столько по курсу игровой валюты и получит.
+ независимость, обошлись без сторонних сервисов

Минусы:
- нужен отдельный linux сервер (по скорости не важно, но место нужно гигабайта полтора для начала)
- rpc вызов из пхп . Не очень я люблю такие шаманства , при большом числе запросов любая сетевая ошибка связи с rpc сервером может вылезти боком (кучей зависших процессов, которые с удовольствием слопают все ресурсы сервера). Но тут число запросов будет по числу платежей, так что проблем не должно быть, накрайняк переписать основной код под nodejs , темболее есть клиентский пакет , так что даже код особо не изменится.

Для rpc использовал этот http://code.gogulski.com/bitcoin-php/ класс-обертку, достаточно добротно сделано и хорошо задокументированно.

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

Оптимально , теперь найти сервис, который просто , без лишних регистраций и телодвижений с минимальным %, позволяет пополнить указанный btc кошелек на определенную сумму стандартными валютами , и многие , даже не зная что это за биткоин такой пополнять ваш сервис, а мы получаем анонимность платежей и полную защиту от призвола wm и yd .

promankirov
Full Member
***
Offline Offline

Activity: 180


View Profile
January 13, 2012, 10:29:15 AM
 #16

Проверил вышенаписанное на практике, полет нормальный. Запустил службу на linux серваке, дождался пока скачались все блоки.
Написал php скрипт, который проверяет по базе есть ли уже адрес у игрока, если нет, выдает.
В том же скрипте реализовал функции проверки баланса (чтобы игрок видел поступили средства или нет тыкая ajax кнопочку) и функции пополнения игрового аккаунта (в этот момент все поступившие средства переводятся с внутреннего btc  аккаунта игрока , на общий btc аккаунт сервера и btc игрока обнуляется, а игровой пополняется соответствующей суммой (тут проверка обнулился ли игровой акк).


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

Мне очень интересно. Готов отблагодарить небольшим BTC переводом.
Lexiko
Sr. Member
****
Offline Offline

Activity: 358


View Profile
January 13, 2012, 12:10:07 PM
 #17

Проверил вышенаписанное на практике, полет нормальный. Запустил службу на linux серваке, дождался пока скачались все блоки.
Написал php скрипт, который проверяет по базе есть ли уже адрес у игрока, если нет, выдает.
В том же скрипте реализовал функции проверки баланса (чтобы игрок видел поступили средства или нет тыкая ajax кнопочку) и функции пополнения игрового аккаунта (в этот момент все поступившие средства переводятся с внутреннего btc  аккаунта игрока , на общий btc аккаунт сервера и btc игрока обнуляется, а игровой пополняется соответствующей суммой (тут проверка обнулился ли игровой акк).


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

Мне очень интересно. Готов отблагодарить небольшим BTC переводом.
Сделаю, вот даже есть желание статью человеческую написать и по основным ресурсам раскидать, но мне нужен кто-то в редакторы, чтобы проверил и поправил если я в чем-то ошибаюсь, ибо в реальной работе пока не могу все протестировать.

N.Z.
Sr. Member
****
Offline Offline

Activity: 449



View Profile
January 13, 2012, 12:24:03 PM
 #18

Quote
Если кому интересно , код причешу хоть немного и выложу.
Естественно!
Quote
а мы получаем анонимность платежей и полную защиту от призвола wm и yd .
И киви с некоторых пор Smiley
Quote
мне нужен кто-то в редакторы, чтобы проверил и поправил если я в чем-то ошибаюсь, ибо в реальной работе пока не могу все протестировать.
Где ж ты раньше был, только-только свободный сервак припахал  Undecided А что нужно конкретно?
Lexiko
Sr. Member
****
Offline Offline

Activity: 358


View Profile
January 13, 2012, 12:33:41 PM
 #19

Где ж ты раньше был, только-только свободный сервак припахал  Undecided А что нужно конкретно?
Я сделаю статью с подробным описанием и кодом как осуществить пополнение баланса (игрового/неигрового) при помощи btc, на гитхаб выложу исходники.
Потом размещу на хабре (с которого тут же перепечатают еще в 10-ок источников) и еще некоторых ресурсах уже непосредственно посвященных BTC.
Все что мне нужно будет, чтобы кто-то проверил готовую статью, дабы не было каких-то неточностей и явных косяков, просто привык такие дела делать с долей ответственности, ибо если сделаю какой-то косяк, потом много народу будет бестолку долбаться.

N.Z.
Sr. Member
****
Offline Offline

Activity: 449



View Profile
January 13, 2012, 01:19:33 PM
 #20

Все равно не понял - тебе орфографию, код проверить или на практике попользоаться? Если на практике, то я так понял сервер с bitcoind нужен? Кто хотел отблагодарить рублем биткоином, могут скинуться на вот это вот: "The cost of this service is $5.26 a month, ONLY! "

В любом случае до публикации на хабре можно отписаться здесь в раздел "Кодеры", а то и в английской ветке. Если кто и сможет помочь, то тусуются они тут на форуме.
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!