๋๋ ์ข๋ค. PHP ๊ฐ๋ฐ ์๋์ ๋ฐ์ด๋ ์ด์์ฑ์ ์ํด. ์ฃผ๋จธ๋์ ํญ์ ๋๊ตฌ๊ฐ ์๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ค๋น๊ฐ ๋์ด ์์ผ๋ฉด ๋งค์ฐ ์ข์ต๋๋ค.
๊ตญ๋ด ๋ธ๋ก์ฒด์ธ์ ์ ํ ๋ ์๋นํ ์์ฌ์ ์ต๋๋ค. ํ๋ ํ๋ซํผ ๊ทธ์ ๋ฌด๊ธฐ๊ณ ์๋ ๊ธฐ์ฑํ PHP SDK๊ฐ ์์์ต๋๋ค. ๊ธ์, ๋๋ ๊ทธ๊ฒ์ ์จ์ผ๋ง ํ๋ค.
์ฒ์์๋ ์ฌ์ฉํด์ผ ํ์ด์ ๋
ธ๋ ๊ฑฐ๋์ ์๋ช
ํฉ๋๋ค. ๊ทธ๋์ ์ธ ๊ฐ์ ์ฃผ์๋ฅผ ๊ด๋ฆฌํ๋ ค๋ฉด ์ธ ๊ฐ์ ๋
ธ๋๋ฅผ ์คํํด์ผ ํ์ต๋๋ค... ์ผ๋ถ ๋ฌธ์ ๋ ํด๊ฒฐ๋์์ง๋ง ์ํ๊น์ด ๊ด๊ฒฝ์ด์์ต๋๋ค. ๋
ธ๋์ ์์กดํ๋ ๊ฒ์ ๋ง๋ค๋ฅธ ๊ณจ๋ชฉ์ด๋ผ๋ ๊ฒ์ ์ดํดํ๊ธฐ ์ ๊น์ง๋ ๋ง์ด์ฃ . ์ฒซ์งธ, ์ ํ๋ ๊ธฐ๋ฅ์ผ๋ก ์ธํด API, ๋์งธ, ์๋ ๋๋ฌธ์
๋๋ค(๋น์์๋ ๋
ธ๋๊ฐ ๋งค์ฐ ๋๋ ธ์ต๋๋ค).
๋ ๊ฐ์ ๋ณ๋ ฌ ์์
์ ์์ํ์ต๋๋ค. ํ๋๋ ๋น ๋ฅด๊ณ ๋
ธ๋ API์ ์์ ํ ๋
๋ฆฝ์ ์ธ ๋ธ๋ก์ฒด์ธ ํ์๊ธฐ๋ฅผ ๋ง๋๋ ๊ฒ์
๋๋ค. ๋ ๋ฒ์งธ๋ Waves Platform ์์
์ ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ ํ๊ณณ์ ๋ชจ์ผ๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ด ํ๋ก์ ํธ๊ฐ ๋ํ๋ ๋ฐฉ์์
๋๋ค w8io ะธ WavesKit.
Waves ๋ธ๋ก์ฒด์ธ์ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. w8io ๋ธ๋ผ์ฐ์ . ์ฝ์ง๋ ์์์ง๋ง ์ฐ๋ฆฌ๋ ์ฌ์ ํ ๋ชจ๋ ์์ก์ ๋ํ ๋
๋ฆฝ์ ์ธ ๊ณ์ฐ์ ์์ฑํ๊ณ ์๋ ๋
ธ๋์ ๊ณ์ฐ์์ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ ์ ์์์ต๋๋ค(๋ฒ๊ทธ ํ์๊ธ ํ๋ก๊ทธ๋จ ๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ๊ทธ๊ฒ์ ๊ทธ๋ค์๊ฒ ํจ๊ณผ์ ์ด๋ฉฐ ๋ฐ๊ฒฌ๋ ์ค๋ฅ์ ๋ํด ๋น์ฉ์ ์ง๋ถํฉ๋๋ค). ์ด ํญ๋ชฉ์์ w8io ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ฅ์ ๋ํด ์์ธํ ์์๋ณผ ์ ์์ต๋๋ค. https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite
w8io๋ฅผ ์์
ํ๋ฉด์ ๋๋ ์ด๋ฏธ ์๊ตฌ์ฌ์ ํ์์ง๋ง, ์์
์ด ๋
ผ๋ฆฌ์ ์ผ๋ก ๋๋๊ณ SDK๋ฅผ ๋ง๋ค๊ธฐ ์์ํ์ ๋ ๋์ ์๊ตฌ์ฌ์ ํ์ฆ๋์์ต๋๋ค. ๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ์ธ ์ํธํ ๊ธฐ๋ฅ์ ํฌํจํ์ฌ ์ผ๋ถ ๊ธฐ๋ฅ์ ์ด๋์์๋ ์ฐพ์ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ธฐ์ด๋ฅผ ์ํ ๋ฒฝ๋์ ์ง์ ๋ง๋๋ ๊ฒ๋ถํฐ ์์ํ์ต๋๋ค. ์ด๊ฒ์ด ๊ทธ๋ค์ด ํ์ด๋ ๋ฐฉ๋ฒ์
๋๋ค: ABC์ฝ๋ base58๋ก ์ธ์ฝ๋ฉํ๋ ค๋ฉด(์ค์ ๋ก๋ ์ด๋ค ์ํ๋ฒณ์ด๋ผ๋ ์ธ์ฝ๋ฉํด์ผ ํจ), ์ปค๋ธ 25519 ํธํ๋๋ ์๋ช
์ ์์ฑํ๊ณ ํ์ธํ๋ ค๋ฉด(์ต์
ํฌํจ) ์คํ
๋ก์ด๋์), ๋ธ๋ ์ดํฌ 2b ํด์ ์ค ํ๋๋ฅผ ๊ณ์ฐํฉ๋๋ค(PHP 7.2๋ถํฐ๋ง ์ฌ์ฉ ๊ฐ๋ฅ).
๊ฐ์ฌํด์ผ ํ ๊ณณ์ ๋ฐ๋ก ์ฌ๊ธฐ๋ค ์ด๋๋ผ ์นด๋ฅด๋ค๋
ธ๋ฐ ๋์๊ฒ ๋ฐฉํฅ์ ์๋ ค์ค ๊ท์คํ ์กฐ์ธ์ ๋ํด ์๊ณก๊ฐ ๋์๊ฒ ์ต์ํ์ง๋ง ์ค๋๋ ํฌํจ ํ์ผ ๋์ .
๋ช ๋ฌ ํ์ WavesKit์ด ์ถ์๋์์ต๋๋ค., ๋์๋ค ๋ฒ ํ ๋ฒ์ ์ด์ Waves ํ๋ซํผ์ ๋ชจ๋ ํ์ค ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ค๋น๊ฐ ๋์์ต๋๋ค. ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ ๋ฉ์ธ ๋คํธ์ํฌ PHP 64๋ถํฐ ๋ชจ๋ 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 );
์์ ์์์๋ "T" ํ
์คํธ๋ท์์ ์คํ๋๋ WavesKit ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. ๊ณต๊ฐ ํค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํค์ ๊ณ์ ์ฃผ์๊ฐ ์๋์ผ๋ก ๊ณ์ฐ๋๋ ์๋ ๋ฌธ๊ตฌ๋ฅผ ์ค์นํฉ๋๋ค. ๋ค์์ผ๋ก, ์๋ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ๊ณ์ฐ๋ ์ฃผ์์์ ๋ณ์นญ ์ฃผ์ "test"๋ก ์ ์ก ํธ๋์ญ์
0.00000001 Waves๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ๊ฐ์ธ ํค๋ก ์๋ช
๋๋๋ก ์ ์กํ ํ ๋คํธ์ํฌ๋ก ๋ณด๋
๋๋ค. ๊ทธ ํ, ์ฐ๋ฆฌ๋ ๊ฑฐ๋๊ฐ ๋คํธ์ํฌ์ ์ํด ์ฑ๊ณต์ ์ผ๋ก ํ์ธ๋์๋์ง ํ์ธํฉ๋๋ค.
๊ฑฐ๋ ์์
์ด ์ง์ค๋์ด ์์ต๋๋ค. tx๋ก ์์ํ๋ ํจ์. ํธ๋์ญ์
์์
์ ๋ํ ๋ ๋์ ์ดํด๋ฅผ ์ํด ๋ค์์ ๊ณต๋ถํ ์ ์์ต๋๋ค. WavesKit ๋ฌธ์ ๋๋ ์ฆ์ ์์์ ์ธ ์๋ก ์ ํํ์ญ์์ค. ์ง์์ ์ธ ํตํฉ ํ
์คํธ.
WavesKit์ ์ค์ ์ฌ์ฉ์ ์ํด ๊ฐ๋ฐ๋์๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ํฌ๋ฌ ๊ธฐ๋ฅ์ ๊ธฐ๋ฅ์ ๋ณด์ฅํ๋ค, ์ด๋ ๊ฑฐ๋๊ฐ ์์ค๋์ง ์์์ง๋ง ๋ฐ๋๋ก ํ์ธ๋์ด ๋คํธ์ํฌ์์ ํ์ํ ํ์ธ ์์ ๋๋ฌํ๋ค๋ ํ์ํ ์ ๋ขฐ๋ ์์ค์ ๋ฌ์ฑ์ ์ ์ดํฉ๋๋ค.
๋ ๋ค๋ฅธ ๋ฐฉํ ๋ฉ์ปค๋์ฆ์ WavesKit์ด ๋
ธ๋์ ํต์ ํ๋ ๋ฐฉ์์
๋๋ค. ์จ์ค ์กฐ๊ฑด์์ ํ๋ ์์ํฌ๋ ๊ธฐ๋ณธ ๋
ธ๋์์๋ง ์๋ํ์ฌ ์ง์์ ์ธ ์ฐ๊ฒฐ์ ์ ์งํ์ง๋ง ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์๋์ผ๋ก ๋ฐฑ์
๋
ธ๋๋ก ์ ํํ ์ ์์ต๋๋ค. ๋ฐฑ์
๋
ธ๋ ๋ฐฐ์ด์ ์ค์ ํ๋ ๊ฒฝ์ฐ ๋ค์ ํจ์๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค. setBestNode ํ์ฌ ๋์ด์ ์๋ต ์๋์ ์ต๋๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฅ ์ข์ ๋
ธ๋๋ฅผ ์ฃผ ๋
ธ๋๋ก ๊ฒฐ์ ํฉ๋๋ค. ์ด์ ์ฌ๊ธฐ์ ๋ด๋ถ ์ฟผ๋ฆฌ ์บ์๋ฅผ ์ถ๊ฐํ๋ฉด ์ฌ์ฉ์์ ๋
ธ๋ ์์ ์ ๋ชจ๋์ ๋ํ ๋ฐฐ๋ ค๋ฅผ ๋๋ ์ ์์ต๋๋ค.
์ต์ ๊ณ ๊ธ ๋ฉ์ปค๋์ฆ ์ค ํ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. tx๋ชจ๋ํฐ. ๋ค์ด์ค๋ ๊ฑฐ๋์ ์ค์๊ฐ์ผ๋ก ์๋ตํด์ผ ํ ํ์์ฑ ๋๋ฌธ์ ๋ฑ์ฅํ์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋ธ๋ก์ฒด์ธ์ ๊ฑฐ๋ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ๋ชจ๋ ๋ฏธ๋ฌํ ์ฐจ์ด๋ฅผ ์์ ํ ํด๊ฒฐํฉ๋๋ค. ๋ ์ด์ ๊ณ ํต์ ๊ฒช์ง ๋ง์ธ์. ์ํ๋ ์ต์
์ผ๋ก ์ฝ๋ฐฑ ํจ์๋ฅผ ์ค์ ํ๊ณ ์๋ก์ด ํธ๋์ญ์
์ด ํ๋ก์ธ์ค๋ฅผ ์์ํ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์๋ฉด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ด ๋ ๋ค๋ฅธ ํ๋ก์ ํธ๋ ๋ฒ ํฌ๋ก ์ด ๊ธฐ๋ฅ์ ์ค์ฌ์ผ๋ก ์์ ํ ๊ตฌ์ถ๋์์ผ๋ฏ๋ก ์ง์ ์๋ ๋ฐฉ์์ ์ฝ๊ฒ ์ฐ๊ตฌํ ์ ์์ต๋๋ค. ํ๋ก์ ํธ ์ฝ๋์์.
์ ๋ ์คํ ์์ค๋ฅผ ์ข์ํฉ๋๋ค. ์ด๋ ์ธ๋ฅ์ ๊ฐ์ฅ ํฐ ์
์ ์ค ํ๋์
๋๋ค. ๋๋ ์ ์ผํ ๊ฐ๋ฐ์์ด๊ณ ๋ชจ๋ ์๊ตฌ ์ฌํญ์ด ํด๊ฒฐ๋ ์ํ์ ๋๋ฌํ์ผ๋ฏ๋ก WavesKit.
์ถ์ฒ : habr.com