ホームページ >バックエンド開発 >PHPチュートリアル >基本的なブロックチェーン アプリケーション開発に PHP を使用する方法

基本的なブロックチェーン アプリケーション開発に PHP を使用する方法

王林
王林オリジナル
2023-06-23 10:20:111070ブラウズ

ブロックチェーン技術の発展に伴い、ますます多くの開発者がこの技術を使用してアプリケーションを構築する方法を学び始めています。 PHP は、ブロックチェーンの操作を容易にし、開発者がより高度なアプリケーションを構築できるようにする人気のスクリプト言語です。この記事では、基本的なブロックチェーン アプリケーション開発に PHP を使用する方法を説明します。

ブロックチェーン インフラストラクチャ

PHP を使用して基本的なブロックチェーン アプリケーションを構築する方法を理解する前に、ブロックチェーンの基本をいくつか理解する必要があります。簡単に言うと、ブロックチェーンは多くの「ブロック」で構成されたデータベースであり、それぞれのブロックにはいくつかのトランザクションに関する情報が含まれています。これらのブロックは暗号的にハッシュされてチェーンを形成します。このチェーンは、データを簡単に保存および管理できる分散台帳と考えることができます。

ブロックチェーントランザクションを実行するには、ウォレットソフトウェアを使用する必要があります。ウォレットをインストールしたら、秘密キーと公開キーを生成できます。秘密キーはトランザクションの署名を検証するために使用され、公開キーはブロックチェーン内の次のトランザクションの入力を受け取るために使用されます。

PHP を使用してブロックチェーン アプリケーションを構築する前に、次の依存関係がインストールされていることを確認してください:

  1. PHP 7.0 以降
  2. Composer
  3. Laravelフレームワーク
  4. Guzzle HTTP クライアント

PHP を使用してブロックチェーンの作成を開始する

PHP を使用してブロックチェーン アプリケーションを作成する手順をいくつか示します。

  1. Laravel フレームワークをインストールする

Laravel フレームワークは、Web アプリケーションを簡単に構築するのに役立ちます。 Laravel は Composer を通じてインストールできます。コマンドは次のとおりです。

composer create-project --prefer-dist laravel/laravel blockchain-app
cd blockchain-app
  1. Guzzle HTTP クライアントのインストール

アプリケーションで HTTP リクエストを開始できるようにするには、次のようにします。 Guzzle HTTP クライアント エンドを使用する必要があります。 Guzzle は、次のコマンドを使用して Composer からインストールできます:

composer require guzzlehttp/guzzle
  1. ブロックチェーン クラスの作成

ここで、ブロックチェーン クラスの作成を開始できます。アプリフォルダーに Blockchain.php という名前のファイルを作成してください。このクラスは、ブロックチェーン トランザクションとブロック生成を処理します。

<?php

namespace App;

class Block
{
    # 这个区块的索引
    public $index;

    # 这个块的创建时间戳
    public $timestamp;

    # 包含的数据
    public $data;

    # 上一个块的hash
    public $previousHash;

    # 这个块的hash
    public $hash;

    public function __construct($index, $timestamp, $data, $previousHash = '')
    {
        $this->index = $index;
        $this->timestamp = $timestamp;
        $this->data = $data;
        $this->previousHash = $previousHash;
        $this->hash = $this->hashBlock();
    }

    # 对块进行hash加密
    public function hashBlock()
    {
        return hash('sha256', $this->index . $this->timestamp . $this->data . $this->previousHash);
    }
}

class Blockchain
{
    public $chain;

    public function __construct()
    {
        $this->chain = [
            $this->createGenesisBlock()
        ];
    }

    # 创建创世块
    public function createGenesisBlock()
    {
        return new Block(0, time(), 'Genesis Block', '0');
    }

    # 获取最后一个块
    public function getLastBlock()
    {
        return $this->chain[count($this->chain) - 1];
    }

    # 添加新块
    public function addBlock($newBlock)
    {
        $newBlock->previousHash = $this->getLastBlock()->hash;
        $newBlock->hash = $newBlock->hashBlock();
        $this->chain[] = $newBlock;
    }

    # 验证区块链
    public function isChainValid()
    {
        for ($i = 1; $i < count($this->chain); $i++) {
            $currentBlock = $this->chain[$i];
            $previousBlock = $this->chain[$i - 1];
            if ($currentBlock->hash !== $currentBlock->hashBlock()) {
                return false;
            }
            if ($currentBlock->previousHash !== $previousBlock->hash) {
                return false;
            }
        }
        return true;
    }
}

上記のコードでは、各ブロックのインデックス、タイムスタンプ、データ、前のブロックのハッシュ、および現在のブロックのハッシュを含むブロック クラスを作成します。 Blockchain クラスも作成しました。このクラスには、ブロックチェーンの配列と、ブロックチェーン内でトランザクションを処理するためのメソッドが含まれています。

  1. ルートの作成

次に、アプリケーション内の Blockchain クラスにアクセスするためのルートをいくつか作成する必要があります。

routes/web.php ファイルを変更し、get リクエスト ルートを追加してください:

<?php

use IlluminateSupportFacadesRoute;
use AppBlockchain;
use AppBlock;

Route::get('/', function () {
    return view('welcome');
});

Route::get('/blockchain', function () {

    # 创建一个新的区块链对象
    $blockchain = new Blockchain();

    # 创建一个新的“块”
    $block1 = new Block(1, time(), 'Block 1');
    $block2 = new Block(2, time(), 'Block 2');

    # 添加块到区块链中
    $blockchain->addBlock($block1);
    $blockchain->addBlock($block2);

    # 如有需要,请验证区块链
    #$isValid = $blockchain->isChainValid();

    # 返回JSON格式的区块链
    return response()->json($blockchain, 200);
});

上記のコードでは、「/blockchain」という名前のルートを作成しました。新しいブロックチェーン オブジェクトを作成し、2 つの新しいブロックを作成します。新しいブロックをブロックチェーン配列に追加し、最後にブロックチェーンを JSON 形式の文字列として返します。

  1. アプリケーションの実行

最後に、Artisan コマンドを使用してアプリケーションを起動できます。

php artisan serve

ブラウザで http://127.0.0.1:8000/blockchain を開くと、JSON 形式のブロックチェーンが表示されます。

概要

この記事では、PHP と Laravel フレームワークを使用して基本的なブロックチェーン アプリケーションを構築する方法を学びました。ブロックを処理するブロック クラス、ブロックチェーンを処理するブロックチェーン クラス、ルートを作成し、JSON 形式でブロックチェーンを返しました。

これはブロックチェーン アプリケーション開発の単なる紹介であり、必要に応じてブロックとチェーンを拡張できます。たとえば、取引システムやウォレット システムを追加することで、より高度なアプリケーションを構築できます。

以上が基本的なブロックチェーン アプリケーション開発に PHP を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。