Отвечаю по порядку: 1. Нужен он для того же, для чего и все остальные блокчейны. Для децентрализации. 2. На РНР по той же самой причине, что и п.1. 3. Сервачок надо будет совсем не каждому поднимать, а только майнинг-пулам, торговым площадкам и оракулам. Рядовые же пользователи будут работать через браузер. Ну или на тех же плюсах можно написать компактный кошелек для особых любителей анонимности. Сама крипта в любом случае будет храниться локально. Транзакции будут немного непривычные (подробности потом расскажу, дабы не грузить большим объемом информации). 4. Для блокчейна предназначен любой язык. В том числе и РНР. 5. Сравнивать надо для того, чтобы выбрать лучшее. 6. Усложнять надо опять же для децентрализации. 7. Про алгоритм, написанный на мультипоток я уже понял, сейчас решаю что с этим делать. Думаю, что решу. В продолжение ответа на п.6. Плюс к тому, в ходе вчерашнего обсуждения пришла в голову еще одна мысль о том, зачем нужно усложнять алгоритмы. Если вкратце, то вот для чего: сейчас майнеры тратят кучу мощностей на выполнение очень сложных расчетов. Сложных, но по сути бесполезных. Если все правильно сделать, то эти мощности будут тратиться на разнообразные логические операции, а не на тупой перебор хэшей. Еще не придумал как, но можно будет привлекать заказчиков на аренду мощностей майнеров (например за покупку заказчиками крипты и выплаты купленной крипты майнерам). Но это еще продумать надо, пока в этом деле много белых пятен. Сейчас речь не об этом . Да и в любом случае посмотрите как скупают видеокарты. Если нам удастся сделать алгоритм, который может быть более эффективно решен на процессоре, то это сбавит скорость выкупа видюх --- Добавлено --- Если все правильно сделаем, то наоборот подешевеют. Правда, есть и обратная сторона медали: процы через некоторое время начнут скупать ))) --- Добавлено --- Посмотрим. --- Добавлено --- Спасибо! Сейчас посмотрю.
https://github.com/ilyamain/witch Вот здесь вот выложил. Не судите строго, он еще маленький, ничего не умеет (ни блоки формировать ни с другими участниками общаться), да и написан наскоряк. Пока что это просто оболочка. Со временем обрастет функционалом. Но уже в этой оболочке можно увидеть (в файле транзакции) то, как будет передаваться крипта. Ну это один из вариантов, там еще 3 других способа задуманы, их реализую попозже. Сейчас для меня самое главное разобраться как видеокартам не дать доступ к майнингу.
Для децентрализации чего? Этих криптовалют уже как собак нерезанных, зачем нужна еще одна? Этот тупой бесполезный перебор хэшей - единственное, что обеспечивает хоть какую-то себестоимость блокчейнов. Затраченная электроэнергия. Все. Ну и оборудование, да. Видяха, сама по себе, слабее процессора. Видеоядро - так себе вычислитель. Хрень на палочке. Но когда этих дохленьгих ядер в одном месте собрано более полутора тысяч, внезапно оказывается, что они обладают чудовищной мощностью, если задача, которую они решают, может быть представлена в виде параллельного алгоритма. Беда в том, что любые марковские процессы можно исполнять параллельно. Подбор хэшей - типичный марковский процесс.
Что-то мне подсказывает, что "децентрализация" - явление временное. С возрастанием объемов БД центров будет все меньше. А ажиотаж этот нужен чтобы отсрочить неминуемый крах системы, которая потеряет доверие при низком количестве майнеров. ИМХО. МММ не случайно тут упомянули. Вспоминается кривая Гартнера (цикл Гартнера), на котором криптовалюты по сути подходят к пику завышенных ожиданий.
Ну так, стоп речь тут у нас идет о блокчейне или о криптовалюте. Это 2 разные вещи и их нельзя путать. Они с друг другом взаимодействуют. Блокчейн это у нас способ хранение информации, и реализация блокчайна хорошо для защиты от подделки данных. Что вообщем я и пытаюсь и сам у себя реализовать под задачи. Хотя я не стал бы писать велосипед, уже есть готовое решение под мои задачи это openbankIT. Хотя проблема в том чт оя не могу найти их исходники, а у себя пишут что их проект опенсоурс
На php это если и имеет смысл, то в образовательных целях как демонстрация алгоритма --- Добавлено --- @Maputo до лимита по объему бд еще очень далеко. Там пока что десятки гигов в биткоине, а на домашних пека уже четырьмя терабайтами никого не удивишь.
В данном случае - для децентрализации разработки. А то, что криптовалют много - так речь же не про альткоины, а про формирование блоков на PHP. Этот код потом можно будет и в других местах применять. Сейчас - да. Но так не будет вечно. Давайте смотреть шире!!! Вот, например, сегодня придумал такую схему. Еще стоит домыслить детали, но уже общий "контур прорисовался". Алгоритм такой: для проверки доказательства работы хэш блока бьется на байты. Каждому байту соответствует определенный формат JSON запроса или по курлу что нибудь у кого нибудь спросить надо. У кого спрашивать - например у оракулов, но возможны и другие варианты. От ответа оракула зависит то, какое действие майнеру надо совершить с входящими данными. Еще можно сделать, так что это действие будет зависеть не только от текущего символа хэша, но и от предыдущего и последующего (или от каких нибудь, номера которых также получены из запроса). Это марковский процесс? --- Добавлено --- А я и не рассчитываю на хайп ))). На рынок надо выйти после нижней точки разочарования ))). Главное, чтобы к этому моменту все было готово. Сейчас хайпануть (зачеркнуто) сделать по-быстрому можно только ту анонимную крипту, которая уже виднеется в проекте (который еще не работает в виду обсуждаемой потенциальной проблемы перехвата блоков плюсовиками). Остальные, более важные разработки предлагаю отложить до возврата блокчейнов к цивилизованному режиму --- Добавлено --- Тут на самом деле речь про блокчейн. Не про валюты. Спасибо ребятам, что подсказали, что блоки впоследствии могут перехватить сишники. Да, я именно блокчейн рассматриваю, как способ хранения информации. Не как крипту. Есть пара мыслей совсем не из области финтеха. Но о них попозже. А для каких задач, если, конечно, это не секрет?
Или во! еще круче! Спрашивать у оракулов есть ли задание на данный timestamp. Если задания нет, то заглянуть в предыдущий блок и создать задание (по заранее прописанным алгоритмам) самому исходя из данных (которые до обращения по сути случайны), находящихся в предыдущем блоке. Тогда можно будет не просто прожигать ватты, а делать реальные расчеты под заказ. Оракулы забирают себе половину от оплаты заказчика. Вторую половину отдают майнерам пропорционально их вкладу в решение задачи. Одни плюсы. Да и еще майнеры свою копейку получат от выполнения этих расчетов независимо от того, сформировали они принятый сетью блок или отвергнутый. Даже получат, если они не сформировали блок. Пойду-ка я набухаюсь по такому случаю!!!
такой блокчейн просто не сможет считать блоки, потому что твои оракулы будут заддосены. это раз два, ответ оракулов считать пушкин будет? три, это не оракулы. --- Добавлено --- куча таких сетей знакомый ща делает ICO на блокчейн на рассчёты по распознаванию голоса в текст. Там тоже участники одни закидывают задания, другие их выполняют. За работу платится комиссия. --- Добавлено --- https://bitcointalk.org/index.php?board=90.0 давай-ка зарегайся тут
Ну да может я неправильно придумал к кому обращаться. Ну не к соседним майнерам. Ибо может возникнуть сговор.
О не знал. Надо посмотреть. Может, они что то толковое придумали. --- Добавлено --- Я там зарегистрирован, читаю время от времени. Здесь я искал поддержки именно в том, чтобы на PHP сделать. Поддержку не нашел, но нашел много указаний на возможные ошибки. Спасибо, кстати.
@Fell-x27 Кстати, спасибо за подсказку про марковские цепи! Все оказалось в 100500 раз проще! Как я сразу не додумался? Вот такой цикл у них на поток точно отправить не получится. Каждое следующее вычисление должно дождаться результатов предыдущего. Поэтому все ALU будут сидеть ждать когда один из них посчитает предыдущую итерацию. PHP: $blockhash = 'Eliah'; $i = 0; while ($blockhash[0] != '0') { $blockhash = hash('sha256', $blockhash); $i++; } echo $i.' - '.$blockhash; Или я опять где то пролетел? Конечно, в реальном проекте цикл будет намного сложнее и там не один вариант шифрования будет, но суть, я думаю, понятна. С меня магарыч
ты не понимаешь кой-чего первое если в твоём алгоритме можно считать любой хеш подходящим, без перебора с nonce, то хер знает, как оно вообще будет работать, т.к. любой блок будет подходить с любым хешем, и оно так работать не будет если ты хочешь всё сделать по аналогии с битком, когда перебираются разные nonce пока не найдётся такой, чтобы в хеше было больше ноликов, то это можно распараллелить хотя бы по nonce, и все будут одновременно считать разные nonce второе, в твоём алгоритме есть hash, и сама эта операция можешь быть ускорена за счет параллельных расчётов. так что ой --- Добавлено --- ты принципиально не понимаешь, что любые расчёты можно параллелить по большому счёту. мы привыкли в PHP писать foreach(), а по факту можем писать и map() и фигарить в тыщу потоков
Автор, ложка хороша к обеду. Инструмент хорош к задаче. Блокчейн - не та задача, к которой хорош PHP. Равно как вебдев - не та задача, к которой хорош С++. А у тебя сейчас эффект "золотого молотка". Включай рационализм и не плоди костыли. Как уже было сказано выше - блокчейн на пхп имеет разве что академическую ценность, но не практическую. Был тут завсегдатай с ником @html-программист. Хотя, может и сейчас есть. Раз в год приходил и показывал новую академическую вундервафлю на PHP. Начинал с фракталов, потом ушел в нейросети и генетические алгоритмы. Фана ради. Это все работало гораздо хуже, чем могло бы на тех же плюсах. Но у человека академический задор. Твоя идея из того же ряда. Если интересно - реализуй, конечно. Нельзя мешать чужим идеям. Создавай! Твори! Но без розовых очков. map() не многопоточен под капотом. "Параллельная обработка" входящих массивов на деле означает, что внутри одной итерации будут доступны энные элементы всех переданных аргументов. Но не мультипоток.
Нативной пыхой - нет. Вообще - да, но это загоны с разделяемой памятью, либо с дублированием данных и разговор для отдельного треда.
угу я к тому, что если мы в пхп что-то пишем foreach то это иногда возможно разнести на параллельный алгоритм куда ни кинь - всюду клин, чо
Чирканул для себя консольный скрипт. Демонстрирует вычисления для записи блокчейна, можно потестить разные алгоритмы и уровни сложности. https://github.com/VasyaSh/php-logchain/blob/master/digger.php Запускать в консоли, 3 аргумента: -s - строка подписываемых данных -d - уровень сложности (количество ведущих нулей в хэше) -a - алгоритм. Код (Text): ~ php digger.php -s 'Hello, World!' -d 2 -a sha1
Нет конечно. Код будет намного сложнее. Я просто привел упрощенный пример для понимания того, как можно считать последовательно. Там не только хэши будут. Думаю, что хэшировать надо по-минимуму Понимаю уже ))). Задача ведь не в том, чтобы обломить видеокарты вовсе, а в том, что бы их влияние было минимальным. Чтобы они не захватили 51%. Согласитесь, если здесь видюха будет майнить на 20% эффективнее, а в биткоине она будет майнить в 1000 раз эффективнее процессора, то никто видюхи на этот алгоритм направлять и не будет. Если конечно, курс phpcoin не взлетит до небес. --- Добавлено --- Прикольно. Не видел его . Ну окей, сделаю из академического интереса (я уже начал, меня уже не остановить ). А там - посмотрим. Не приживется, так не приживется. Если захватят сишники, то будут они дальше "вести" эти блоки.