ΠΠ΅ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠ°ΡΡΠ½ΡΠΎΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ Waves, Π²Π½Π΅Π΄ΡΠ΅Π½Π° ΠΊΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ Π³ΡΠ°Π½Ρ Π½Π° Waves Labs ΠΎΡ Π΅ΠΊΠΈΠΏΠ° Π½Π° Bettex.
ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π΅ Π΅ ΡΠΏΠΎΠ½ΡΠΎΡΠΈΡΠ°Π½Π°! ΠΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π΅ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, Π½Π΅ΠΉΠ½ΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΈ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΅ Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΎ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΡΡΠΈΠΌΡΠ»ΠΈΡΠ° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° dApp ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ Π½Π°ΡΡΡΡΠ°Π²Π° Π΄Π΅ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ°, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΎΡ ΠΏΠΎΠ»Π·Π° Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°.
ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΎΡΠΎ dApp Π·Π° Π°ΡΠΈΠ»ΠΈΠ΅ΠΉΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π΅ ΡΠ°Π±Π»ΠΎΠ½ Π·Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π°ΡΠΈΠ»ΠΈΠ΅ΠΉΡ ΠΊΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ ΡΠ²ΠΎΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ. ΠΠΎΠ΄ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΡΠΎ ΡΠ°Π±Π»ΠΎΠ½ Π·Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅, ΠΊΠ°ΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠ°ΡΠΎ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΈΠ΄Π΅ΠΈ Π·Π° ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ.
ΠΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° ΡΠΎΠ²Π° Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π° ΠΏΠ°ΡΡΠ½ΡΠΎΡΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Ρ ΡΠ΅ΡΠ΅ΡΠ΅Π½Ρ, ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π½Π°ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΡΠ΅ΡΠ΅ΡΠ°Π»ΠΈ ΠΈ ΠΌΠΎΡΠΈΠ²Π°ΡΠΈΡ Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° (ΠΊΠ΅ΡΠ±Π΅ΠΊ). Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΅ βΡΠΈΡΡΠΎβ dApp, ΡΠΎΠ΅ΡΡ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Ρ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π° Π±Π΅Π· ΡΠΎΠ±ΡΡΠ²Π΅Π½ Π±Π΅ΠΊΠ΅Π½Π΄, Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ ΠΈ Ρ.Π½.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΠΈ Π² ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ:
- ΠΠ±Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠΌΠ°ΡΡ Π°ΠΊΠ°ΡΠ½Ρ Π½Π° ΠΊΡΠ΅Π΄ΠΈΡ Ρ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΠΏΠΎΠ³Π°ΡΡΠ²Π°Π½Π΅ (Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ° Π² ΡΠΌΠ΅ΡΠΊΠ°ΡΠ° Π½ΡΠΌΠ° ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° ΠΏΠ»Π°ΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ°, Π½ΠΎ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ ΡΠ°ΠΌ Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ°).
- PoW-captcha - Π·Π°ΡΠΈΡΠ° ΡΡΠ΅ΡΡ Π²ΠΈΡΠΎΠΊΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΡΠΌΠ°ΡΡ Π°ΠΊΠ°ΡΠ½Ρ - ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° captcha, Π½ΠΎ ΡΡΠ΅Π· Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΠ²ΠΎ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ.
- ΠΠ°ΡΠ²ΠΊΠ° Π·Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ:
- ΠΊΠΎΠ΄ Π½Π° ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ΅Π½ Π°ΠΊΠ°ΡΠ½Ρ Π½Π° Π΅Π·ΠΈΠΊΠ° ride4dapps (ΠΊΠΎΠΉΡΠΎ, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΎ, Π΅ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ΅Π½ Π°ΠΊΠ°ΡΠ½Ρ, Π·Π° ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π²Π½Π΅Π΄ΡΠΈΡΠ΅ ΠΏΠ°ΡΡΠ½ΡΠΎΡΡΠΊΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ);
- js ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°, ΠΊΠΎΡΡΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΎΠ½Π΅Π½ ΡΠ»ΠΎΠΉ Π²ΡΡΡ Ρ WAVES NODE REST API;
- ΠΊΠΎΠ΄ Π½Π° ΡΠ°ΠΌΠΊΠ°ΡΠ° vuejs, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΈ RIDE ΠΊΠΎΠ΄Π°.
ΠΠ΅ΠΊΠ° ΠΎΠΏΠΈΡΠ΅ΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ.
ΠΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Π² Π΄ΡΠ»Π³ Ρ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΠΈΠ·ΠΏΠ»Π°ΡΠ°Π½Π΅
ΠΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° InvokeScript ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠ»Π°ΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΊΡΠ° ΠΎΡ ΡΠΌΠ΅ΡΠΊΠ°ΡΠ°, ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°ΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ°. Π’ΠΎΠ²Π° Π½Π΅ Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π°ΠΊΠΎ ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π° Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ ΠΌΠ°Π½ΠΈΠ°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ WAVES ΡΠΎΠΊΠ΅Π½ΠΈ Π² Π°ΠΊΠ°ΡΠ½ΡΠ° ΡΠΈ, Π½ΠΎ Π°ΠΊΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΡΡ Π΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ ΠΌΠ°ΡΠΈΡΠ΅, ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΡΠ° Π² ΡΠ΅ΡΠΈΠΎΠ·Π΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. Π ΠΊΡΠ°Ρ Π½Π° ΠΊΡΠ°ΠΈΡΠ°ΡΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ³ΡΠΈΠΆΠΈ Π·Π° Π·Π°ΠΊΡΠΏΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠΊΠ΅Π½ΠΈ WAVES (ΠΈΠ»ΠΈ Π΄ΡΡΠ³ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π°ΠΊΡΠΈΠ², ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠ»Π°ΡΠ°Π½Π΅ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ), ΠΊΠΎΠ΅ΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° ΠΈ Π±Π΅Π· ΡΠΎΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈΡ ΠΏΡΠ°Π³ Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΠΌΠ΅ Π°ΠΊΡΠΈΠ²ΠΈ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π΄Π° ΠΏΠ»Π°ΡΠ°Ρ Π·Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ°Π²ΡΡ ΠΏΡΠ΅Π΄ ΡΠΈΡΠΊΠ° ΠΎΡ Π·Π»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π° Ρ ΡΡΡ , ΠΊΠΎΠ³Π°ΡΠΎ Π±ΡΠ΄Π°Ρ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠΌΠΏΠ²Π°Π½Π΅ Π½Π° Π»ΠΈΠΊΠ²ΠΈΠ΄Π½ΠΈ Π°ΠΊΡΠΈΠ²ΠΈ ΠΎΡ Π½Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°.
ΠΠΈ Π±ΠΈΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π°ΠΊΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ° InvokeScript βΠ·Π° ΡΠΌΠ΅ΡΠΊΠ° Π½Π° ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρβ (ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½ΠΈΡ Π°ΠΊΠ°ΡΠ½Ρ, Π½Π° ΠΊΠΎΠΉΡΠΎ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ ΡΠΊΡΠΈΠΏΡΡΡ), ΠΈ ΡΠ°Π·ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°, ΠΌΠ°ΠΊΠ°Ρ ΠΈ Π½Π΅ ΠΏΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½ Π½Π°ΡΠΈΠ½.
ΠΠΊΠΎ Π²ΡΡΡΠ΅ Π² InvokeScript ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ScriptTransfer Π΄ΠΎ Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°ΡΠΈΡ, ΠΊΠΎΠΉΡΠΎ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΠ° ΡΠΎΠΊΠ΅Π½ΠΈΡΠ΅, ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π°Π½ΠΈ Π·Π° ΡΠ°ΠΊΡΠ°ΡΠ°, ΡΠΎΠ³Π°Π²Π° ΡΠ°ΠΊΠΎΠ²Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π΄ΠΎΡΠΈ Π°ΠΊΠΎ Π½ΡΠΌΠ° Π°ΠΊΡΠΈΠ²ΠΈ Π² ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΡΠΈΡ Π°ΠΊΠ°ΡΠ½Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ. Π’ΠΎΠ²Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π·Π° Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΡΠΎΠΊΠ΅Π½ΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ»Π΅Π΄ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ°, Π° Π½Π΅ ΠΏΡΠ΅Π΄ΠΈ Π½Π΅Ρ, ΡΠ°ΠΊΠ° ΡΠ΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ°Π²ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π½Π° ΠΊΡΠ΅Π΄ΠΈΡ, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΠΈΠ·ΠΊΡΠΏΠ΅Π½ΠΈ.
ScriptTransfer(i.caller, i.fee, unit)
ΠΠΎΠ΄ΡΡ ΠΏΠΎ-Π΄ΠΎΠ»Ρ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π° ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π°Π½Π°ΡΠ° ΡΠ°ΠΊΡΠ°, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΎΡ ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ΅Π½ Π°ΠΊΠ°ΡΠ½Ρ. ΠΠ° Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠ°Π·ΠΈΡΠ΅ ΠΎΡ Π·Π»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π° Ρ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π°Π»ΠΈ ΠΎΠ±Π°ΠΆΠ΄Π°ΡΠΈΡΡ ΡΠ΅ Ρ Π°ΡΡΠΈ ΡΠ°ΠΊΡΠ°ΡΠ° Π² ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ Π°ΠΊΡΠΈΠ² ΠΈ Π² ΡΠ°Π·ΡΠΌΠ½ΠΈ Π³ΡΠ°Π½ΠΈΡΠΈ:
func checkFee(i:Invocation) = {
if i.fee > maxFee then throw(βunreasonable large feeβ) else
if i.feeAssetId != unit then throw(βfee must be in WAVESβ) else true
}
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, Π·Π° Π·Π°ΡΠΈΡΠ° ΡΡΠ΅ΡΡ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ ΠΈ Π±Π΅Π·ΡΠΌΠΈΡΠ»Π΅Π½ΠΎ ΠΏΠΈΠ»Π΅Π΅Π½Π΅ Π½Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π·Π°ΡΠΈΡΠ° ΡΡΠ΅ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ (PoW-captcha).
PoW-captcha
Π‘Π°ΠΌΠ°ΡΠ° ΠΈΠ΄Π΅Ρ Π·Π° captcha Π·Π° Π΄ΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π΅ Π΅ Π½ΠΎΠ²Π° ΠΈ Π²Π΅ΡΠ΅ Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½Π° Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°ΠΊΠΈΠ²Π°, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° WAVES. Π‘ΠΌΠΈΡΡΠ»ΡΡ Π½Π° ΠΈΠ΄Π΅ΡΡΠ° Π΅, ΡΠ΅ Π·Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ Ρ Π°Π±ΠΈ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° Π½Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΏΠΎΠ²ΠΈΠΊΠ²Π°ΡΠΈΡΡ ΡΡΡΠ±Π²Π° ΡΡΡΠΎ Π΄Π° ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡΠ΅ ΡΠΈ ΡΠ΅ΡΡΡΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈ Π°ΡΠ°ΠΊΠ°ΡΠ° Ρ ΠΈΠ·ΡΠ΅ΡΠΏΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π΄ΠΎΡΡΠ° ΡΠΊΡΠΏΠ°. ΠΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅ΡΠ½ΠΎ ΠΈ Π΅Π²ΡΠΈΠ½ΠΎ ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅, ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΡΡΡ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° Π΅ ΡΠ΅ΡΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ PoW, ΠΈΠΌΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ:
if take(toBase58String(i.transactionId), 3) != β123β then throw(βΠ΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΠ²ΠΎ Π·Π° ΡΠ°Π±ΠΎΡΠ° Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎβ) else
ΠΠ° Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΠΏΠΎΠ²ΠΈΠΊΠ²Π°ΡΠΈΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ ΡΠ°ΠΊΠΈΠ²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠ΄ base58 (id) Π΄Π° Π·Π°ΠΏΠΎΡΠ²Π° Ρ ΡΠΈΡΠ»Π°ΡΠ° 123, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° ΡΡΠ΅Π΄Π½ΠΎ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄Π΅ΡΠ΅ΡΠΊΠΈ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΈ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ Π΅ ΡΠ°Π·ΡΠΌΠ½ΠΎ Π·Π° Π½Π°ΡΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ°. ΠΠΊΠΎ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎ-ΠΏΡΠΎΡΡ ΠΈΠ»ΠΈ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ΅Π½ PoW, ΡΠΎΠ³Π°Π²Π° Π·Π°Π΄Π°ΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΠΏΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½ Π½Π°ΡΠΈΠ½.
ΠΠ°ΡΠ²ΠΊΠ° Π·Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° Π΄Π°Π½Π½ΠΈ ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½
ΠΠ° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π° ΠΊΠ°ΡΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΠΆΠΈΠ·Π½Π΅Π½ΠΎΠ²Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ API ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ ΠΊΡΠΌ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΊΠ°ΡΠΎ ΠΊΠ»ΡΡ-Π²Π°Π» Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ. Π’Π°ΠΊΡΠ² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΠ»ΠΈ 2019 Π³. ΠΊΠ°ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ?ΡΡΠ²ΠΏΠ°Π΄Π° ΠΏΡΠΈ Π·Π°ΡΠ²ΠΊΠ° Π·Π° REST API /addresses/data?matches=regexp. Π‘Π΅Π³Π°, Π°ΠΊΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΊΠ»ΡΡ, Π° Π½Π΅ Π²ΡΠΈΡΠΊΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ Π½Π°Π²Π΅Π΄Π½ΡΠΆ ΠΎΡ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π° ΡΠ°ΠΌΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° Π³ΡΡΠΏΠ°, ΡΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΈΠ·Π±ΠΎΡ ΠΏΠΎ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠ»ΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΡΠ΅Π³Π»Π΅Π½Π΅ ΡΠ° ΠΊΠΎΠ΄ΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ
withdraw_${userAddress}_${txid}
ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠΏΠΈΡΡΠΊ Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π·Π° ΡΠ΅Π³Π»Π΅Π½Π΅ Π½Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π²ΡΠ΅ΠΊΠΈ Π΄Π°Π΄Π΅Π½ Π°Π΄ΡΠ΅Ρ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π°:
?matches=withdraw_${userAddress}_.*
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π° Π³ΠΎΡΠΎΠ²ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
vuejs ΠΊΠΎΠ΄
ΠΠΎΠ΄ΡΡ Π΅ ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ Π΄Π΅ΠΌΠΎ, Π±Π»ΠΈΠ·ΠΊΠΎ Π΄ΠΎ ΡΠ΅Π°Π»Π΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ. Π’ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Π²Π»ΠΈΠ·Π°Π½Π΅ ΡΡΠ΅Π· Waves Keeper ΠΈ ΡΠ°Π±ΠΎΡΠΈ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° affiliate.js, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΡΡΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΏΡΠ°Π²ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅ ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ ΡΠΏΠ΅ΡΠ΅Π»Π΅Π½ΠΈΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π² Π°ΠΊΠ°ΡΠ½ΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
ΠΠΎΠ΄ Π·Π° RIDE
Π‘ΡΡΡΠΎΠΈ ΡΠ΅ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅, ΡΠΎΠ½Π΄ΠΈΡΠ°Π½Π΅ ΠΈ ΡΠ΅Π³Π»Π΅Π½Π΅.
Π€ΡΠ½ΠΊΡΠΈΡΡΠ° Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. Π’ΠΎΠΉ ΠΈΠΌΠ° Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°: ΡΠ΅ΡΠ΅ΡΠ΅Π½Ρ (Π°Π΄ΡΠ΅Ρ Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½Ρ) ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΎΠ», ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΊΠΎΠ΄Π° Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ°, ΠΊΠΎΠΉΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° (PoW-captcha Π·Π°Π΄Π°ΡΠ°).
Π€ΡΠ½ΠΊΡΠΈΡΡΠ° (ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ) ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΡΠ° Π½Π° Π·Π°Π΅ΠΌΠ°Π½Π΅, ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π΅ ΡΠΈΠ½Π°Π½ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ»Π°ΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΊΡΠ° Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π», ΠΊΠΎΠΉΡΠΎ ΡΠΎΠΊΡ-ΡΠΎ Π΅ ΡΡΠ·Π΄Π°Π» ΠΏΠΎΡΡΡΠ΅ΠΉΠ», ΠΌΠΎΠΆΠ΅ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΈ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠ·Π°Π΄Π°ΡΠ΅Π½ ΠΎΡ Π²ΡΠΏΡΠΎΡΠ° Π·Π° ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ²Π°Π½Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π°ΠΊΡΠΈΠ², ΠΊΠΎΠΉΡΠΎ ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΠ»Π°ΡΠΈ ΡΠ°ΠΊΡΠ° Π·Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ.
Π Π΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π΅ Π΄Π²Π° Π·Π°ΠΏΠΈΡΠ°:
${owner)_referer = referer
${referer}_referral_${owner} = owner
Π’ΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΡΡΠ΅Π½Π΅ Π½Π°ΠΏΡΠ΅Π΄ ΠΈ Π½Π°Π·Π°Π΄ (ΡΠ΅ΡΠ΅ΡΠ΅Π½Ρ Π½Π° Π΄Π°Π΄Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΈ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΠ΅ΡΠ°Π»ΠΈ Π½Π° Π΄Π°Π΄Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»).
Π€ΡΠ½ΠΊΡΠΈΡΡΠ° ΡΠΎΠ½Π΄ Π΅ ΠΏΠΎ-ΡΠΊΠΎΡΠΎ ΡΠ°Π±Π»ΠΎΠ½ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π°Π»Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ. Π ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π°ΡΠ° ΡΠΎΡΠΌΠ° ΡΠΎΠΉ Π²Π·Π΅ΠΌΠ° Π²ΡΠΈΡΠΊΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°, ΠΏΡΠ΅Ρ Π²ΡΡΠ»Π΅Π½ΠΈ ΠΎΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ°, ΠΈ Π³ΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΊΡΠΌ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠΌΠ΅ΡΠΊΠΈ Π½Π° 1-Π²ΠΎ, 2-ΡΠΎ, 3-ΡΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΡΠΌ ΡΠΌΠ΅ΡΠΊΠ°ΡΠ° βΠΊΠ΅ΡΠ±Π΅ΠΊβ ΠΈ ΡΠΌΠ΅ΡΠΊΠ°ΡΠ° βΠΏΡΠΎΠΌΡΠ½Π°β (Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡΡΠ°Π²Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ ΠΊΡΠΌ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ ΡΠΌΠ΅ΡΠΊΠΈ ΡΡΠΈΠ³Π° ΡΡΠΊ).
ΠΠ΅ΡΠ±Π΅ΠΊΡΡ Π΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π·Π° ΡΡΠΈΠΌΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π΄Π° ΡΡΠ°ΡΡΠ²Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠΈ. Π§Π°ΡΡΡΠ° ΠΎΡ ΠΊΠΎΠΌΠΈΡΠΈΠΎΠ½Π½Π°ΡΠ°, ΠΏΠ»Π°ΡΠ΅Π½Π° ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° βΠΊΠ΅ΡΠ±Π΅ΠΊβ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½Π° ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½ ΠΊΠ°ΡΠΎ Π½Π°Π³ΡΠ°Π΄ΠΈΡΠ΅ Π·Π° ΡΠ΅ΡΠ΅ΡΠ°Π»ΠΈ.
ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ΅ΡΠ΅ΡΠ°Π»Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π½Π° ΡΠΎΠ½Π΄Π° ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½Π°, Π²Π³ΡΠ°Π΄Π΅Π½Π° Π² ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° ΡΠΌΠ°ΡΡ Π°ΠΊΠ°ΡΠ½ΡΠ°, Π²ΡΡΡ Ρ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠ»Π°ΡΠ° Π½Π°Π³ΡΠ°Π΄Π° Π·Π° ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠ° Π·Π° Π½Π°ΠΏΡΠ°Π²Π΅Π½ Π·Π°Π»ΠΎΠ³, ΡΠΎΠ³Π°Π²Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π·Π° ΡΠΎΠ½Π΄ΠΈΡΠ°Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π²Π³ΡΠ°Π΄Π΅Π½Π° Π² Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Π·Π°Π»ΠΎΠ³ΡΡ (ΠΈΠ»ΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π΄ΡΡΠ³ΠΎ ΡΠ΅Π»Π΅Π²ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π·Π° ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠ»Π°ΡΠ° Π½Π°Π³ΡΠ°Π΄Π°ΡΠ°). ΠΠΌΠ° ΡΡΠΈ Π½ΠΈΠ²Π° Π½Π° Π½Π°Π³ΡΠ°Π΄ΠΈ Π·Π° ΡΠ΅ΡΠ΅ΡΠ°Π»ΠΈ, ΠΊΠΎΠ΄ΠΈΡΠ°Π½ΠΈ Π² ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ. ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π½ΠΈΠ²Π°, ΡΠΎΠ²Π° ΡΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ° Π² ΠΊΠΎΠ΄Π°. ΠΡΠΎΡΠ΅Π½ΡΡΡ Π½Π° Π½Π°Π³ΡΠ°Π΄Π°ΡΠ° ΡΠ΅ Π·Π°Π΄Π°Π²Π° ΠΎΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈΡΠ΅ level1-level3, Π² ΠΊΠΎΠ΄Π° ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° ΠΊΠ°ΡΠΎ ΡΡΠΌΠ° * Π½ΠΈΠ²ΠΎ / 1000, ΡΠΎΠ΅ΡΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° 1 ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° 0,1% (ΡΠΎΠ²Π° ΡΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π°).
ΠΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Ρ Π±Π°Π»Π°Π½ΡΠ° Π½Π° Π°ΠΊΠ°ΡΠ½ΡΠ° ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΡΠ·Π΄Π°Π²Π° Π·Π°ΠΏΠΈΡΠΈ Π·Π° ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΡΠΌΡΠ»ΡΡΠ°:
fund_address_txid = address:owner:inc:level:timestamp
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ timestamp (ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ Π²ΠΎΡ ΡΠ²ΡΠ·ΠΊΠ°
func getTimestamp() = {
let block = extract(blockInfoByHeight(height))
toString(block.timestamp)
}
Π’ΠΎΠ΅ΡΡ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° Π΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π±Π»ΠΎΠΊΠ°, Π² ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ»Π΅ΠΉΠΌΠΎΡΠΎ Π·Π° Π²ΡΠ΅ΠΌΠ΅ ΠΎΡ ΡΠ°ΠΌΠ°ΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π½Π΅ Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΎΡ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΡΡΠ° Π·Π° ΡΠ΅Π³Π»Π΅Π½Π΅ ΠΈΠ·ΡΠ΅Π³Π»Ρ Π²ΡΠΈΡΠΊΠΈ Π½Π°ΡΡΡΠΏΠ°Π½ΠΈ Π½Π°Π³ΡΠ°Π΄ΠΈ Π² ΡΠΌΠ΅ΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ. Π‘ΡΠ·Π΄Π°Π²Π° Π·Π°ΠΏΠΈΡΠΈ Π·Π° ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅:
# withdraw log: withdraw_user_txid=amount:timestamp
App
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° affiliate.js, ΠΊΠΎΡΡΠΎ Π΅ ΠΌΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ°ΡΡΠ½ΡΠΎΡΡΠΊΠΈΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΈ WAVES NODE REST API. ΠΠ½Π΅Π΄ΡΡΠ²Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌ ΠΎΡ ΡΠ°ΠΌΠΊΠ°ΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΎΠ½Π΅Π½ ΡΠ»ΠΎΠΉ (ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΡΠ΅ΠΊΠΈ). ΠΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ, ΠΎΡΡΠ΅Π³Π»ΡΠ½Π΅) ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΠ΅ Waves Keeper Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΡΠ°ΠΌΠ°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΡΠΎΠ²Π°.
ΠΡΠΈΠ»Π°Π³Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ:
fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π° ΠΎΡ ΠΈΠΌΠ΅Π½Π°ΡΠ°, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΈ Π²ΡΡΡΠ°Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΡΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² ΠΊΠΎΠ΄Π°. Π€ΡΠ½ΠΊΡΠΈΡΡΠ° Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ - ΡΡ ΡΡΠ°ΡΡΠΈΡΠ° ΡΠΈΠΊΡΠ»Π° Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ ΠΎΡ 123 - ΡΠΎΠ²Π° Π΅ PoW captcha, ΠΎΠΏΠΈΡΠ°Π½Π° ΠΏΠΎ-Π³ΠΎΡΠ΅, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠ°Π·Π²Π° ΠΎΡ ΠΌΠ°ΡΠΎΠ²ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ. Π€ΡΠ½ΠΊΡΠΈΡΡΠ° Π½Π°ΠΌΠΈΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π° ΡΡΠ΅Π· Waves Keeper.
ΠΠ°ΡΡΠ½ΡΠΎΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° DEX, Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π°
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com