ΠΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ PHP Π·Π° ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡΠΎ, ΠΊΠΎΠ³Π΄Π° Π² ΠΊΠ°ΡΠΌΠ°Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅Π΅ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ.
ΠΡΠ»ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΠ±ΠΈΠ΄Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π΅ Ρ ΠΎΡΠ΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ΠΎΠΌ Waves Platform Π² Π΅Π³ΠΎ Π°ΡΡΠ΅Π½Π°Π»Π΅ Π½Π΅ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ SDK Π½Π° PHP. Π§ΡΠΎ ΠΆ, ΠΏΡΠΈΡΠ»ΠΎΡΡ Π΅Π³ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ.
ΠΠΎΠ½Π°ΡΠ°Π»Ρ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ. Π’Π°ΠΊ, Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ΅ΠΌΡ Π°Π΄ΡΠ΅ΡΠ°ΠΌΠΈ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΡΠΈ Π½ΠΎΠ΄Ρβ¦ ΠΡΠΎ Π±ΡΠ»ΠΎ ΠΆΠ°Π»ΠΊΠΎΠ΅ Π·ΡΠ΅Π»ΠΈΡΠ΅, Ρ
ΠΎΡΡ ΠΈ ΡΠ΅ΡΠ°Π»ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡΠΈΡΠ»ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° Π½ΠΎΠ΄Ρ β ΡΡΠΎ ΡΡΠΏΠΈΠΊ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, ΠΈΠ·-Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° API, Π²ΠΎ-Π²ΡΠΎΡΡΡ
, ΠΈΠ·-Π·Π° ΡΠΊΠΎΡΠΎΡΡΠΈ (Π² ΡΠ΅ Π΄Π½ΠΈ Π½ΠΎΠ΄Ρ Π±ΡΠ»ΠΈ ΠΎΡΠ΅Π½Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌΠΈ).
Π― Π½Π°ΡΠ°Π» Π΄Π²Π΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΡ. ΠΠ΄Π½Π° β ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»Ρ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π±ΡΡΡΡΡΠΉ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΎΡ API Π½ΠΎΠ΄. ΠΡΠΎΡΠ°Ρ β ΡΠΎΠ±ΡΠ°ΡΡ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Waves Platform Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅. Π’Π°ΠΊ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ w8io ΠΈ WavesKit.
ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π·Π° ΠΊΡΠ»ΠΈΡΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π° Waves ΡΡΠ°Π» ΠΎΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»Ρ w8io. ΠΡΠ»ΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ, Π½ΠΎ Π²ΡΡ ΠΆΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΡΠ°ΡΡΡΡ Π²ΡΠ΅Ρ
Π±Π°Π»Π°Π½ΡΠΎΠ² ΠΈ Π΄Π°ΠΆΠ΅ Π½Π°ΠΉΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΠ°ΡΡΡΡΠ°Ρ
Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΡ
Π½ΠΎΠ΄Π°Ρ
(ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° bug-bounty ΠΊΡΡΠ°ΡΠΈ Ρ Π½ΠΈΡ
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π·Π° Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠ»Π°ΡΡΡ). ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΈΠ·ΡΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΎΠ±ΠΎΠ·ΡΠ΅Π²Π°ΡΠ΅Π»Ρ w8io Π² ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ w8io Ρ ΠΌΠ΅Π½Ρ ΡΠΆΠ΅ Π±ΡΠ»ΠΈ ΡΠΎΠΌΠ½Π΅Π½ΠΈΡ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎΠ΄ΠΎΡΠ»Π° ΠΊ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΊΠΎΠ½ΡΡ ΠΈ Ρ ΠΏΡΠΈΡΡΡΠΏΠΈΠ» ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ SDK, ΡΠΎΠΌΠ½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ»ΠΈΡΡ. Π― Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΡΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΡΠ°ΠΌΡΡ
Π²Π°ΠΆΠ½ΡΡ
, ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
. Π’ΠΎΠ³Π΄Π° Ρ Π½Π°ΡΠ°Π» Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ
ΠΊΠΈΡΠΏΠΈΡΠ΅ΠΉ Π΄Π»Ρ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°. Π’Π°ΠΊ ΡΠΎΠ΄ΠΈΠ»ΠΈΡΡ: ABCode Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² base58 (Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π°Π»ΡΠ°Π²ΠΈΡΠ° Π² Π»ΡΠ±ΠΎΠΉ), Curve25519 Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ
ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉ (Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ Π½Π° ΡΡΠ΅ΡΠΎΠΈΠ΄Π°Ρ
), Blake2b Π΄Π»Ρ ΡΠ°ΡΡΡΡΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Ρ
ΡΡΠ΅ΠΉ (ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠΈΠ½Π°Ρ Ρ PHP 7.2) ΠΈ Ρ.Π΄.
ΠΠ΄Π΅ΡΡ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΡΡ ΠΠ½Π°Π»Π° ΠΠ°ΡΠ΄Π°Π½ΠΎΠ²Π° Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π½Π½ΡΡ
ΡΠΎΠ²Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΌΠ΅Π½Ρ Π² ΡΡΠΎΡΠΎΠ½Ρ composer Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΠ²ΡΡΠ½ΡΡ
Π΄Π»Ρ ΠΌΠ΅Π½Ρ, Π½ΠΎ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ
, include ΡΠ°ΠΉΠ»ΠΎΠ².
Π‘ΠΏΡΡΡΡ ΠΏΠ°ΡΡ ΠΌΠ΅ΡΡΡΠ΅Π² WavesKit ΡΠ²ΠΈΠ΄Π΅Π» ΡΠ²Π΅Ρ, Π²ΡΡΠ΅Π» ΠΈΠ· Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π³ΠΎΡΠΎΠ² ΠΊ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ Π²ΡΠ΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΠΎΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Waves. ΠΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ΅ΡΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π½Ρ, ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Ρ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½Ρ ΡΠΈΠ»Π°ΠΌΠΈ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ Π½Π° Π²ΡΠ΅Ρ
64-Π±ΠΈΡΠ½ΡΡ
Π²Π΅ΡΡΠΈΡ PHP ΠΎΡ 5.6 Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ WavesKit Π² ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ:
composer require deemru/waveskit
ΠΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ:
use deemruWavesKit;
$wk = new WavesKit( 'T' );
$wk->setSeed( 'manage manual recall harvest series desert melt police rose hollow moral pledge kitten position add' );
$tx = $wk->txBroadcast( $wk->txSign( $wk->txTransfer( 'test', 1 ) ) );
$tx = $wk->ensure( $tx );
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ WavesKit, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΠΈ «T». Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠΈΠ΄ ΡΡΠ°Π·Ρ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΠΊΠ»ΡΡΠΈ ΠΈ Π°Π΄ΡΠ΅Ρ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°. ΠΠ°Π»Π΅Π΅ ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΡΠ°Π½ΡΡΠ΅ΡΠ° 0.00000001 Waves Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎ ΡΠΈΠ΄ ΡΡΠ°Π·Π΅ Π°Π΄ΡΠ΅ΡΠ° Π½Π° Π°Π΄ΡΠ΅Ρ Π°Π»ΠΈΠ°ΡΠ° «test», ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΌ Π΅Ρ Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΡ Π·Π°ΠΊΡΡΡΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π² ΡΠ΅ΡΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ, ΡΡΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π° ΡΠ΅ΡΡΡ.
Π Π°Π±ΠΎΡΠ° Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½Π° Π² ΡΡΠ½ΠΊΡΠΈΡΡ
Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΡΡ Ρ tx. ΠΠ»Ρ Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ WavesKit ΠΈΠ»ΠΈ ΡΡΠ°Π·Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ Π½Π°Π³Π»ΡΠ΄Π½ΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌ Π² ΡΠ΅ΡΡΠ°Ρ
Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ WavesKit ΡΠ°Π·Π²ΠΈΠ²Π°Π»ΡΡ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ
ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Ρ Π½Π΅Π³ΠΎ ΡΠΆΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΡΠΈΡΠΈ. ΠΠ΅ΡΠ²Π°Ρ ΠΊΠΈΠ»Π»Π΅Ρ ΡΠΈΡΠ° β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ensure, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΠΈ, ΡΡΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΠ»Π°ΡΡ, Π° Π½Π°ΠΏΡΠΎΡΠΈΠ², Π±ΡΠ»Π° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π° ΠΈ Π΄ΠΎΡΡΠΈΠ³Π»Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ Π² ΡΠ΅ΡΠΈ.
ΠΡΡΠ³ΠΎΠΉ ΠΏΡΠ»Π΅Π½Π΅ΠΏΡΠΎΠ±ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ β ΠΊΠ°ΠΊ WavesKit ΠΎΠ±ΡΠ°Π΅ΡΡΡ Ρ Π½ΠΎΠ΄Π°ΠΌΠΈ. Π ΡΠ΅ΠΏΠ»ΠΈΡΠ½ΡΡ
ΡΡΠ»ΠΎΠ²ΠΈΡΡ
ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π½ΠΎΠ΄ΠΎΠΉ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Ρ Ρ Π½Π΅ΠΉ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ°Ρ
ΠΌΠΎΠΆΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠ΅. ΠΡΠ»ΠΈ Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ
Π½ΠΎΠ΄, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ setBestNode Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π»ΡΡΡΠ΅ΠΉ Π½ΠΎΠ΄Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²ΡΡΠΎΡΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΎΡΠ²Π΅ΡΠ°. Π’Π΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊ ΡΡΠΎΠΌΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΏΠΎΡΡΠ²ΡΡΠ²ΡΠΉΡΠ΅ Π·Π°Π±ΠΎΡΡ ΠΊΠ°ΠΊ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡ
, ΡΠ°ΠΊ ΠΈ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°Ρ
Π½ΠΎΠ΄.
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡ
ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΠ² β ΡΡΠ½ΠΊΡΠΈΡ txMonitor. ΠΠ½Π° ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π² ΡΠ²ΡΠ·ΠΈ Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π²Ρ
ΠΎΠ΄ΡΡΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΅ Π½ΡΠ°Π½ΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π΅. ΠΠΎΠ»ΡΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π±ΠΎΠ»ΠΈ, ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ ΡΠ²ΠΎΡ callback ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΌΠΈ ΠΎΠΏΡΠΈΡΠΌΠΈ ΠΈ ΠΆΠ΄ΡΡΠ΅ Π½ΠΎΠ²ΡΡ
ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΡΡΡΡΡ Π²Π°ΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ VECRO ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π²ΠΎΠΊΡΡΠ³ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²Ρ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΡΠΌΠΎ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ open source, ΡΡΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π²Π΅Π»ΠΈΡΠ°ΠΉΡΠΈΡ
Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΡΠ²Π°. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈ Π΄ΠΎΡΡΠΈΠ³ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΌΠΎΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ ΡΠ΅ΡΠ΅Π½Ρ, Ρ ΠΏΡΠΈΠ³Π»Π°ΡΠ°Ρ Π²Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π²Π½ΠΎΡΠΈΡΡ Π²ΠΊΠ»Π°Π΄ Π² WavesKit.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com