Эй, ребята, как дела.

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

Введение

Блокчейн — это наиболее используемая технология в настоящее время, это новейшая и самая безопасная технология.

Случаи использования блокчейна

Блокчейн имеет множество применений

  1. Приложение для обмена сообщениями
  2. Приложение для здравоохранения
  3. Система транзакций
  4. Безопасное хранение данных
  5. и многое другое…

Чему вы научитесь с помощью этого учебника

  1. Основы PHP
  2. Классификация PHP и функции
  3. Работа Блокчейна
  4. Работает нормально 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. Так что, пожалуйста, поставьте лайк и подпишитесь на мою страницу, тем самым я получу благодарность, чтобы публиковать больше подобных сообщений.

Спасибо