Эй, ребята, как дела.
Я знаю, что эта тема немного странная, но мне становится скучно создавать веб-сайты на PHP, поэтому я решил создать блокчейн на PHP.
Введение
Блокчейн — это наиболее используемая технология в настоящее время, это новейшая и самая безопасная технология.
Случаи использования блокчейна
Блокчейн имеет множество применений
- Приложение для обмена сообщениями
- Приложение для здравоохранения
- Система транзакций
- Безопасное хранение данных
- и многое другое…
Чему вы научитесь с помощью этого учебника
- Основы PHP
- Классификация PHP и функции
- Работа Блокчейна
- Работает нормально POW (доказательство работы)
Итак, приступим….
Требования
Это хорошо, если вы знаете основы PHP, а PHP должен быть установлен на вашем устройстве. Чтобы установить PHP, просто скачайте XAMPP или WAMP.
Настраивать
Если вы используете XAMPP, создайте папку в папке htdocs, я создаю папку блокчейн в htdocs, затем создайте папку blockchain.php в этой папке.
Откройте XAMPP и запустите веб-сервер Apache, затем откройте localhost/blockchain/blockchain.php в предпочитаемом вами браузере.
Создание класса блокчейна
Определить класс блокчейна
class Blockchain { }
Затем определите переменные - цепочку и сложность
public chain private difficulty
Это будет выглядеть так
Определить функцию построения
В этой функции мы собираемся определить переменную цепочки и установить сложность поиска хэша, а после этого мы собираемся создать блок генезиса;
function __construct() { $this->chain = [] // empty $this->difficulty = 4 // preffered to set between 3 - 6 $this->createBlock(1, '0'); // genesis block }
Определить функцию createBlock
Примерный блок выглядит так
создать функцию createBlock с параметрами — proof и previous_hash
function createBlock($proof, $previous_hash){ $block = array( 'index' => $this->get_chain_length() + 1, 'timestamp' => time(), 'proof' => $proof, 'previous_hash' => $previous_hash ); array_push($this->chain, $block); // add block to the chain return $block; }
после этого нам нужно определить функцию get_chain_length
Определите функцию get_chain_length
Это вернет текущий индекс цепочки
function get_chain_length(){ $i = 0; foreach($this->chain as $ch){ $i += 1; } return $i; }
Теперь нам нужен предыдущий блок, чтобы хешировать его и создать новый блок.
Определите функцию print_previous_block
Это вернет текущий блок
function print_previous_block() { return $this->chain[$this->get_chain_length() - 1]; }
Теперь нам нужно хешировать текущий блок, чтобы создать новый блок.
Определить хэш-функцию
Это будет хешировать блок
function hash($block){ return hash('sha256', json_encode($block)); }
Определить функцию proof_of_work
Мы должны проверить или добыть блок, используя хэш-алгоритм sha256. Если вы установите сложность 4, то мы должны хэшировать new_proof, для которого по умолчанию установлено значение 1, и previous_proof, который мы получим из предыдущего блока, тогда мы должны хэшировать квадрат new_proof минус квадрат предыдущего_proof, если хэш содержит 4 нуля в начале, тогда мы получим новое_доказательство как правильное, иначе мы будем увеличивать новое_доказательство, пока не получим 4 нуля.
Теперь вы можете майнить блок и создавать новый блок
Определить мою функцию (вне класса)
Полный код
Окончательный код будет выглядеть так
Ответ
New Block has been created Index: 2 Timestamp: 1649453381 Proof: 533 Previous Hash: f345ea860cb2c5fb4e6c5845ecb2bce3a09512fb7187fb60f5c7d6e85075442f New Block has been created Index: 3 Timestamp: 1649453381 Proof: 45293 Previous Hash: 26bcd51f317c9258beb826912184c4a6f42b4e1c17f8f41cf05b40dfee7ec62f
В этом руководстве вы узнали об основных классах и функциях блокчейна и PHP. Так что, пожалуйста, поставьте лайк и подпишитесь на мою страницу, тем самым я получу благодарность, чтобы публиковать больше подобных сообщений.
Спасибо