рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ PHP рдореЗрдВ рдПрдХ рдЕрд░реНрдз-рд╡рд┐рдХреЗрдиреНрджреНрд░реАрдХреГрдд cryptocurrency рд▓рд┐рдЦрд╛ рд╣реИред (рднрд╛рдЧ 2 - рд╡рд┐рдХрд╛рд╕)

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдореИрдВрдиреЗ рдмрд╛рдд рдХреА рдереА рдХрд┐ рдХреМрди рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВ рдФрд░ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдЙрд╕ рдЕрд╕рдлрд▓ рд╕реЗ рдХреА рд╣реИред рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рд╕реНрд╡рдпрдВ рдХреНрд░рд┐рдкреНрдЯреЛрдХреНрдпреВрд░реЗрдВрд╕реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЯреНрд░реИрдХрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗред рдЪрд▓рд┐рдП рдХреЛрдИ рд╕рдВрдХреЛрдЪ рдирд╣реАрдВ рд╣реИ, рдЬрд╛рдиреЗ рджреАрдЬрд┐рдПред

рд▓реЗрдЦреЛрдВ рдХреА рд╕реВрдЪреА


  1. рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ PHP рдореЗрдВ рдПрдХ рдЕрд░реНрдз-рд╡рд┐рдХреЗрдиреНрджреНрд░реАрдХреГрдд cryptocurrency рд▓рд┐рдЦрд╛ рд╣реИред (рднрд╛рдЧ 1 - рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛)
  2. рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ PHP рдореЗрдВ рдПрдХ рдЕрд░реНрдз-рд╡рд┐рдХреЗрдиреНрджреНрд░реАрдХреГрдд cryptocurrency рд▓рд┐рдЦрд╛ рд╣реИред (рднрд╛рдЧ 2 - рд╡рд┐рдХрд╛рд╕)

рдЯреНрд░реИрдХрд░ рд╕реНрдерд╛рдкрдирд╛


рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╡реЗрдм рдЯреНрд░реИрдХрд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ - рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреНрд░реИрдХрд░ - рдореВрд▓ рдФрд░ рд╡реЗрдм рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдиреЗрдЯрд┐рд╡-рдЯреНрд░реИрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рд╡реАрдбреАрдПрд╕ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдП рд░рдЦреЗрдВрдЧреЗред
рдпрд╣рд╛рдВ рдореИрдВ рдПрдХ рд╡реЗрдм рдЯреНрд░реИрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рдЬрд┐рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рд╛рдЗрдЯ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо GitHub рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдкрд╛рд╕ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдмрд╛рдд рдХреА рдереАред рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рд╣рдореЗрдВ рд░реБрдЪрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИ, рд╣рдо рд╡реЗрдм рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдереНрд░реЗрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЗрд╕реЗ рдЕрдирдкреИрдХ рдХрд░реЗрдВ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдкреИрдб рдпрд╛ рдХрд╣реАрдВ рдФрд░ рдЦреЛрд▓реЗрдВ, рдЬрд╣рд╛рдВ рдЖрдк рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, index.php рдлрд╝рд╛рдЗрд▓ред рдпрд╣рд╛рдБ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИ:

index.php
<?php

/**
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * @package     Bit Points Network
 * @copyright   2020 Podvirnyy Nikita (Observer KRypt0n_)
 * @license     GNU GPLv3 <https://www.gnu.org/licenses/gpl-3.0.html>
 * @author      Podvirnyy Nikita (Observer KRypt0n_)
 * 
 * Contacts:
 *
 * Email: <suimin.tu.mu.ga.mi@gmail.com>
 * VK:    <https://vk.com/technomindlp>
 *        <https://vk.com/hphp_convertation>
 * 
 */

namespace BPN;

const TRACKER_KEY = 'EFJI#*$&(*#WEF(@Q#)(DFJSAO(@#*$)REFSKE)UJ*#@(&$';

require 'ext/DH-Generator/Generator.php';
require 'php/User.php';
require 'php/Tracker.php';

$tracker = new Tracker;
$tracker->update ();

if (isset ($_GET['r']))
    $tracker->processRequest ($_GET['r']);

рдЖрдкрдХреЛ TRACKER_KEY рдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдпрд╣ рдореВрд▓ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдореЗрд▓ рди рдЦрд╛рдПред

рдЖрдЗрдП рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ:


const TRACKER_KEY = 'sdT*&Y&*YO*&T*OGTGYFIYYUFGKUHLIYIj9sfhysdphphdpsfhBLABLABLAhsidlfhlisd';

рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЖрдкрдХреЛ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдпрд╣ рд╕рдм рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗрдм рдЯреНрд░реИрдХрд░ рд╕реЗрдЯрдЕрдк рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдпрд╣ рдЯреНрд░реИрдХрд░ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ?

рд╡рд┐рдХрд╛рд╕


рд╕рд╛рдорд╛рдиреНрдп


рдЪреВрдВрдХрд┐ рдпрд╣ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдФрд░ рдШрдЯрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рд╕рдВрдЧреАрддрдХрд╛рд░ рдФрд░ рдЧреИрд░-рд╕рдВрдЧреАрддрдХрд╛рд░ рдкреИрдХреЗрдЬ, рдЦрд╛рддреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЦрд╛рддреЛрдВ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛, рдЖрд╡реЗрджрди рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХрд░рдирд╛ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрд╡рдпрдВ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ред

General.php
<?php

declare (strict_types=1);

require_once __DIR__ . '/vendor/autoload.php'; #   

require_once 'PHP/Structure.php';              # 
require_once 'PHP/UserAPI.php';                # 

require_once 'NotComposer/vendor/autoload.php';#  - 

require_once 'PHP/App.php';                    # 


BIP39 рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕рдЦреНрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдХреЛрдб рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
BIP39 рдФрд░ BIP44 рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрд╡рдпрдВ рдСрдЯреЛрд▓реИрдб.php рдлрд╝рд╛рдЗрд▓, рдХрдореНрдкреЛрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВред
рд╣рдо Structure.php рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВрдЧреЗред

рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп UserAPI.php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реЛрдВрдЧреЗред

BPN рдФрд░ phpblockchain рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрдВрдкреЛрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо рдХрдВрдкреЛрдЬрд╝рд░ рдХреЗ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред

рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрд╡рдпрдВ App.php рдореЗрдВ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ - рдпрд╣ рд╡рд╣рд╛рдВ рд╕реЗ рдЬреБрдбрд╝реА рдЕрдВрддрд┐рдо рдлрд╝рд╛рдЗрд▓ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕рдм рдХреБрдЫ рдКрдкрд░ рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

NotComposer / рд╡рд┐рдХреНрд░реЗрддрд╛ / autoload.php


рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдерд╛ рдХрд┐ рд╡реЗ рджреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрдореНрдкреЛрдЬрд╝рд░ рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИрдВ, рдРрд╕реА рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдореВрд▓ рдирд╣реАрдВ рд╣реИрдВ, рдпрд╛ рд╡реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рд╡реЗ рдкреИрдХрдЧрд┐рд╕реНрдЯ рдкрд░ рднреА рдЧрд╛рдпрдм рд╣реИрдВред рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдлрд╛рдЗрд▓ рдЙрд╕реА рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рд╣реИред

рд╕рдВрд░рдЪрдирд╛


рдпрд╣рд╛рдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рддреИрдпрд╛рд░ рдХреА рдЧрдИ рд╣реИрдВ рддрд╛рдХрд┐ рдкрд░реНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХреЗред рд▓рд╛рдпрдмреНрд░реЗрд░реА UserAPI.php рдХреЛ рд╡реЙрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЕрд░реНрдерд╛рддреН рд╡реЙрд▓реЗрдЯ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЗрди рд╡реЙрд▓реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП App.php рдХреЗ рд▓рд┐рдПред
Structure.php
<?php

class Account
{
	public $address;
	public $publicKey;
	protected $privateKey;

	public function getPrivateKey ()
	{
		return $this->privateKey;
	}

	public function setPrivateKey ($key)
	{
		$this->privateKey = $key;
	}
}

class AccountChain
{
	public $accounts;
}


рдЖрджрд┐рдо рдХреЛрдб, рд╣реИ рдирд╛?

UserAPI.php


Structure.php рдФрд░ App.php рдХреЗ рдмреАрдЪ рдордзреНрдпрд╕реНрде UserAPI.php рд╣реИред рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реЙрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗред

рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдХреЛрдб:

UserAPI.php
<?php

use \FurqanSiddiqui\BIP39\BIP39;
use BIP\BIP44;

class User
{
	public $account;

	public function registerNewAccount ($password)
	{
		$mnemonic = BIP39::Generate (18);
		$seed = $mnemonic->generateSeed ($password, 256);

		$HDKey = BIP44::fromMasterSeed ($seed)->derive ("m/44'/0'/0'/0/1");

		$newAccount = new Account;
		$newAccount->address = '1x' . hash ('ripemd160', hash ('sha512', $HDKey->publicKey));
		$newAccount->publicKey = $HDKey->publicKey;
		$newAccount->setPrivateKey ($HDKey->privateKey);

		$accountChain = new AccountChain;
		$accountChain->accounts = [];
		$accountChain->accounts[] = $newAccount;
		
		return ['words' => $mnemonic->words, 'chain' => $accountChain];
	}

	public function registerNewAccountInChain (&$chain, $password, $prevAccountMnemonic)
	{
		$mnemonic = BIP39::Words ($prevAccountMnemonic);
		$seed = $mnemonic->generateSeed ($password, 256);

		$accountsCount = sizeof ($chain->accounts) + 1;

		$HDKey = BIP44::fromMasterSeed ($seed)->derive ("m/44'/0'/0'/0/{$accountsCount}");

		$newAccount = new Account;
		$newAccount->address = '1x' . hash ('ripemd160', hash ('sha512', $HDKey->publicKey));
		$newAccount->publicKey = $HDKey->publicKey;
		$newAccount->setPrivateKey ($HDKey->privateKey);

		$chain->accounts[] = $newAccount;

		return ['chain' => $chain];
	}

	public function restoreAccount ($mnemonic, $password, $accountNo)
	{
		$mnemonic = BIP39::Words ($mnemonic);
		$seed = $mnemonic->generateSeed ($password, 256);

		$HDKey = BIP44::fromMasterSeed ($seed)->derive ("m/44'/0'/0'/0/{$accountNo}");

		$newAccount = new Account;
		$newAccount->address = '1x' . hash ('ripemd160', hash ('sha512', $HDKey->publicKey));
		$newAccount->publicKey = $HDKey->publicKey;
		$newAccount->setPrivateKey ($HDKey->privateKey);

		$accountChain = new AccountChain;
		$accountChain->accounts = [];
		$accountChain->accounts[] = $newAccount;

		return $accountChain;
	}
}


рдЕрдкреНрдк


рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдмрд╣реБрдд рддрд░реНрдХред рд╡рд╣ рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдПрдХ рдЦрдирд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрддреБрд▓рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рд▓реЗрдирджреЗрди рднреЗрдЬрдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдШрд░ рдХрд╛ рдмрдирд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред

App.php
, . 3 тАФ , .

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ


рд╣рдордиреЗ рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдмрдЯреБрдЖ рд░рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рдореБрджреНрд░рд╛ рдХреЛрдб рджрд┐рдЦрд╛рддреЗ рд░рд╣реЗрдВрдЧреЗред

рдЯреАрдПрд▓, рдбреЙ
тАФ тАФ FlyCoin FLC

All Articles