ΠΠ΅ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Π°Ρ Π°ΡΡΠΈΠ»Π΅ΠΉΡ-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π΅ Waves, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Π°Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π³ΡΠ°Π½ΡΠ° Waves Labs ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Bettex.
ΠΠΎΡΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΠΌ! ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠΊΡΡΡΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠΈΠΌΡΠ»ΠΈΡΡΠ΅Ρ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ dApp ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π² ΡΠ΅Π»ΠΎΠΌ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ Π΄Π΅ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΡΠΎ ΠΈΠ΄Π΅Ρ Π½Π° Π±Π»Π°Π³ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π‘Π΅ΡΠΈ.
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ dApp Π΄Π»Ρ affiliate-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΡ
affiliate ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°. ΠΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΎΠ½ Π΄Π»Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ ΠΈΠ΄Π΅ΠΉ Π΄Π»Ρ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Ρ ΡΡΠΎ ΠΎΠ±ΡΡΠ½Π°Ρ affiliate-ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ°Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΠ΅ΡΠ΅ΡΠ°, ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ΅ Π½Π°ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½ΠΈΠΉ Π·Π° ΡΠ΅ΡΠ΅ΡΠ°Π»ΠΎΠ² ΠΈ ΠΌΠΎΡΠΈΠ²Π°ΡΠΈΡ Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ (ΠΊΠ΅ΡΠ±ΡΠΊ). Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ βΡΠΈΡΡΡΠΌβ dApp, ΡΠΎ Π΅ΡΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ Ρ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ΠΎΠΌ, Π½Π΅ ΠΈΠΌΠ΅Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ Π±ΡΠΊΡΠ½Π΄Π°, Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ Ρ.ΠΏ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ :
- ΠΡΠ·ΠΎΠ² ΡΠΌΠ°ΡΡ-Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Π² Π΄ΠΎΠ»Π³ Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ ΠΏΠΎΠ³Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ (Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ·ΠΎΠ²Π° Π½Π° Π°ΠΊΠΊΠ°ΡΠ½ΡΠ΅ Π½Π΅Ρ ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π΄Π»Ρ ΠΎΠΏΠ»Π°ΡΡ Π²ΡΠ·ΠΎΠ²Π°, Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΠΌ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠ·ΠΎΠ²Π°).
- PoW-captchaβββΠ·Π°ΡΠΈΡΠ° ΠΎΡ Π²ΡΡΠΎΠΊΠΎΡΠ°ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΌΠ°ΡΡ-Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°βββΠ°Π½Π°Π»ΠΎΠ³ ΠΊΠ°ΠΏΡΠΈ, Π½ΠΎ ΡΠ΅ΡΠ΅Π· Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ².
- ΠΠ°ΠΏΡΠΎΡ ΠΊ ΠΊΠ»ΡΡΠ°ΠΌ data ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·:
- ΠΊΠΎΠ΄Π° ΡΠΌΠ°ΡΡ-Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Π½Π° ΡΠ·ΡΠΊΠ΅ ride4dapps (ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎ Π·Π°Π΄ΡΠΌΠΊΠ΅ ΠΌΠ΅ΡΠΆΠΈΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΌΠ°ΡΡ-Π°ΠΊΠΊΠ°ΡΠ½Ρ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ affiliate-ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»);
- js-ΠΎΠ±Π΅ΡΡΠΊΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅ΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π½Π°Π΄ WAVES NODE REST API;
- ΠΊΠΎΠ΄Π° Π½Π° vuejs framework, ΡΠ²Π»ΡΡΡΠΈΠΌΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ RIDE-ΠΊΠΎΠ΄Π°.
ΠΠΏΠΈΡΠ΅ΠΌ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ.
ΠΡΠ·ΠΎΠ² ΡΠΌΠ°ΡΡ-Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Π² Π΄ΠΎΠ»Π³ Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ ΠΏΠΎΠ³Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ
ΠΡΠ·ΠΎΠ² InvokeScript ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΠΏΠ»Π°ΡΡ ΠΊΠΎΠΌΠΈΡΡΠΈΠΈ Ρ ΠΈΠ½ΠΈΡΠΈΠΈΡΡΡΡΠ΅Π³ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°. ΠΡΠΎ Π½Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π΅ΡΠ»ΠΈ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ Π΄Π»Ρ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½-Π³ΠΈΠΊΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π° ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠΊΠ΅Π½ΠΎΠ² WAVES, Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΈΡΠΎΠΊΠΈΡ ΠΌΠ°ΡΡΠ°Ρ βββΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠ΅Π΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΏΠΎΠΊΡΠΏΠΊΠΎΠΉ ΡΠΎΠΊΠ΅Π½ΠΎΠ² WAVES (ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π°ΡΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠ»Π°ΡΠΈΠ²Π°ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ), ΡΡΠΎ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΠΈ Π±Π΅Π· ΡΠΎΠ³ΠΎ Π½Π΅ΠΌΠ°Π»ΡΠΉ ΠΏΠΎΡΠΎΠ³ Π²Ρ ΠΎΠ΄Π° Π² ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°Π·Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π°ΡΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΎΠΏΠ»Π°ΡΠΈΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ ΡΡΠΎΠ»ΠΊΠ½Π΅ΠΌΡΡ Ρ ΡΠΈΡΠΊΠΎΠΌ ΠΈΡ Π½Π΅ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ Π²ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ Π»ΠΈΠΊΠ²ΠΈΠ΄Π½ΠΎΠ³ΠΎ Π°ΡΡΠ΅ΡΠ° ΠΈΠ· Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΡΠ»ΠΎ Π±Ρ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π΅ΡΠ»ΠΈ Π±ΡΠ»Π° Π±Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π²ΡΠ·ΠΎΠ² InvokeScript βΠ·Π° ΡΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρβ (ΡΠΎΠ³ΠΎ ΡΠΌΠ°ΡΡ-Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΡΠΊΡΠΈΠΏΡ), ΠΈ ΡΠ°ΠΊΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, Ρ ΠΎΡΡ ΠΈ Π½Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.
ΠΡΠ»ΠΈ Π²Π½ΡΡΡΠΈ InvokeScript ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ScriptTransfer Π½Π° Π°Π΄ΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΡΠ΅Ρ Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΡΠ΅ Π½Π° fee ΡΠΎΠΊΠ΅Π½Ρ, ΡΠΎ ΡΠ°ΠΊΠΎΠΉ Π²ΡΠ·ΠΎΠ² ΠΏΡΠΎΠΉΠ΄Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ·ΠΎΠ²Π° Π½Π° Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π°ΡΡΠ΅ΡΠΎΠ². ΠΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, Π° Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄ Π½Π΅ΠΉ, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² ΠΊΡΠ΅Π΄ΠΈΡ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ ΠΈΡ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ³Π°ΡΠ΅Π½ΠΈΡ.
ScriptTransfer(i.caller, i.fee, unit)
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ Π²ΠΎΠ·ΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ fee Π·Π° ΡΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ² ΡΠΌΠ°ΡΡ-Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°. ΠΠ»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ Π½Π΅ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ, ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΡΡΠ°ΡΠΈΡ fee Π² Π½ΡΠΆΠ½ΠΎΠΌ Π°ΡΡΠ΅ΡΠ΅ ΠΈ Π² ΡΠ°Π·ΡΠΌΠ½ΡΡ ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ :
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
Π‘Π°ΠΌΠ° ΠΈΠ΄Π΅Ρ proof-of-work captcha Π½Π΅ Π½ΠΎΠ²Π° ΠΈ ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ , Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° Π±Π°Π·Π΅ WAVES. Π‘ΠΌΡΡΠ» ΠΈΠ΄Π΅ΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π΄Π»Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΡΠ°ΡΡΡΠ΅Π³ΠΎ ΡΠ΅ΡΡΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΡΠ°ΡΠΈΡΡ ΠΈ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π°ΡΠ°ΠΊΡ Π½Π° ΠΈΡΡΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π·Π°ΡΡΠ°ΡΠ½ΠΎΠΉ. ΠΠ»Ρ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎΠΉ ΠΈ ΠΌΠ°Π»ΠΎΠ·Π°ΡΡΠ°ΡΠ½ΠΎΠΉ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΠ΅ΡΠΈΠ» PoW-Π·Π°Π΄Π°ΡΡ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° id ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ:
if take(toBase58String(i.transactionId), 3) != β123β then throw(βproof of work failedβ) else
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ Π΅Π΅ base58 ΠΊΠΎΠ΄ (id) Π½Π°ΡΠΈΠ½Π°Π»ΡΡ Π½Π° ΡΠΈΡΡΡ 123, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ ΠΏΠ°ΡΠ΅ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΠ΅ΠΊΡΠ½Π΄ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π² ΡΠ΅Π»ΠΎΠΌ ΡΠ°Π·ΡΠΌΠ½ΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ PoW, ΡΠΎ Π·Π°Π΄Π°ΡΡ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
ΠΠ°ΠΏΡΠΎΡ ΠΊ ΠΊΠ»ΡΡΠ°ΠΌ data ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ blockchain Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ API Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ Π±Π°Π·Π΅ ΠΊΠ°ΠΊ key-val ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Π°ΠΌ. Π’Π°ΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΈΡΠ»Ρ 2019 Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ?matches Ρ Π·Π°ΠΏΡΠΎΡΠ° REST API /addresses/data?matches=regexp. Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ· Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΡΡ ΠΈ Π½Π΅ Π²ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΡΡΠ°Π·Ρ, Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊΡΡ-ΡΠΎ Π³ΡΡΠΏΠΏΡ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ±ΠΎΡΠΊΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»ΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΡΡΠ΅Π΄ΡΡΠ² ΠΊΠΎΠ΄ΠΈΡΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅
withdraw_${userAddress}_${txid}
ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π½Π° Π²ΡΠ²ΠΎΠ΄ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠΎ ΡΠ°Π±Π»ΠΎΠ½Ρ:
?matches=withdraw_${userAddress}_.*
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ΄ Π½Π° vuejs
ΠΠΎΠ΄ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠ΅ΠΉ, Π±Π»ΠΈΠ·ΠΊΠΎΠΉ ΠΊ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ. ΠΠ½ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π²Ρ ΠΎΠ΄ ΡΠ΅ΡΠ΅Π· Waves Keeper ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ affiliate.js, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΎΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡ , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π½Π° Π°ΠΊΠΊΠ°ΡΠ½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠΎΠ΄ Π½Π° RIDE
Π‘ΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ register, fund ΠΈ withdraw.
Π€ΡΠ½ΠΊΡΠΈΡ register ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π£ Π½Π΅Π΅ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: referer (Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΠ΅ΡΠ°) ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² ΠΊΠΎΠ΄Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ salt, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ ΠΏΠΎΠ΄Π±ΠΎΡΠ° id ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ (Π·Π°Π΄Π°ΡΠ° PoW-captcha).
Π€ΡΠ½ΠΊΡΠΈΡ (ΠΊΠ°ΠΊ ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΅Ρ Π½ΠΈΠΊΡ Π²ΡΠ·ΠΎΠ²Π° Π² Π΄ΠΎΠ»Π³, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ½Π°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠ»Π°ΡΡ fee Π·Π° Π²ΡΠ·ΠΎΠ² ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π²ΡΠΈΠΉ ΠΊΠΎΡΠ΅Π»Π΅ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠ°Π·Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈ Π΅ΠΌΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ·Π°Π΄Π°ΡΠΈΠ²Π°ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π°ΡΡΠ΅ΡΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ ΠΎΠΏΠ»Π°ΡΠΈΡΡ ΠΊΠΎΠΌΠΈΡΡΠΈΡ Π·Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΠ²Π»ΡΡΡΡΡ Π΄Π²Π΅ Π·Π°ΠΏΠΈΡΠΈ:
${owner)_referer = referer
${referer}_referral_${owner} = owner
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΏΡΡΠΌΠΎΠΉ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊΠΈ (ΡΠ΅ΡΠ΅ΡΠ΅Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π²ΡΠ΅ ΡΠ΅ΡΠ΅ΡΠ°Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ).
Π€ΡΠ½ΠΊΡΠΈΡ fund ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠΎΡΠ΅Π΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°ΡΡΠΎΡΡΠ΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°. Π ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΎΠ½Π° Π±Π΅ΡΠ΅Ρ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅ΠΌΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠ΅ΠΉ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈΡ Π½Π° Π°ΠΊΠΊΠ°ΡΠ½ΡΡ ΡΠ΅ΡΠ΅ΡΠ΅ΡΠΎΠ² 1, 2, 3 ΡΡΠΎΠ²Π½Ρ, Π½Π° Π°ΠΊΠΊΠ°ΡΠ½Ρ βΠΊΠ΅ΡΠ±ΡΠΊΠ°β ΠΈ Π°ΠΊΠΊΠ°ΡΠ½Ρ βΡΠ΄Π°ΡΠΈβ (ΡΡΠ΄Π° ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π²ΡΠ΅, ΡΡΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ ΠΏΡΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°ΠΌ).
ΠΠ΅ΡΠ±ΡΠΊβββΡΡΠΎ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΡΡΠΈΠΌΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΡΡΠ°ΡΡΠΈΡ Π² ΡΠ΅ΡΠ΅ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΡΠΏΠ»Π°ΡΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠΌΠΈΡΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π² Π²ΠΈΠ΄Π΅ βΠΊΠ΅ΡΠ±ΡΠΊΠ°β ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ½ΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½ΠΈΡ Π·Π° ΡΠ΅ΡΠ΅ΡΠ°Π»ΠΎΠ².
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΡΠ΅ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ½ΠΊΡΠΈΡ fund ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΠΈΠ΄ΠΎΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, Π²ΡΡΡΠΎΠΈΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠΎΠ³ΠΎ ΡΠΌΠ°ΡΡ-Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΠ΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²ΡΠΏΠ»Π°ΡΠΈΠ²Π°Π΅ΡΡΡ Π·Π° ΡΠ΄Π΅Π»Π°Π½Π½ΡΡ ΡΡΠ°Π²ΠΊΡ, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ fund Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π° Π² Π»ΠΎΠ³ΠΈΠΊΡ, Π³Π΄Π΅ Π΄Π΅Π»Π°Π΅ΡΡΡ ΡΡΠ°Π²ΠΊΠ° (ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ½ΠΎΠ΅ ΡΠ΅Π»Π΅Π²ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π·Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈ Π²ΡΠΏΠ»Π°ΡΠΈΠ²Π°Π΅ΡΡΡ Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½ΠΈΠ΅). Π Π΄Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΡΠΈ ΡΡΠΎΠ²Π½Ρ ΡΠ΅ΡΠ΅ΡΠ°Π»ΡΠ½ΡΡ Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½ΠΈΠΉ. ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ ΡΡΠΎΠ²Π½Π΅ΠΉ, ΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΡΡΡ Π² ΠΊΠΎΠ΄Π΅. ΠΡΠΎΡΠ΅Π½Ρ Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½ΠΈΡ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ level1-level3, Π² ΠΊΠΎΠ΄Π΅ ΠΎΠ½ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ amount * level / 1000, ΡΠΎ Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ 0,1% (ΡΡΠΎ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ Π² ΠΊΠΎΠ΄Π΅).
ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π±Π°Π»Π°Π½Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ ΡΠ΅Π»Π΅ΠΉ Π»ΠΎΠ³Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΈΠ΄Π°:
fund_address_txid = address:owner:inc:level:timestamp
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ timestamp (ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ Π²ΠΎΡ ΡΠ²ΡΠ·ΠΊΠ°
func getTimestamp() = {
let block = extract(blockInfoByHeight(height))
toString(block.timestamp)
}
Π’ΠΎ Π΅ΡΡΡ Π²ΡΠ΅ΠΌΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈβββΡΡΠΎ Π²ΡΠ΅ΠΌΡ Π±Π»ΠΎΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ. ΠΡΠΎ Π½Π°Π΄Π΅ΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ timestamp ΠΈΠ· ΡΠ°ΠΌΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅, ΡΡΠΎ ΠΎΠ½ Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΈΠ· callable.
Π€ΡΠ½ΠΊΡΠΈΡ withdraw Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π²ΡΠ΅ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡΠ΅ Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½ΠΈΡ Π½Π° ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ ΡΠ΅Π»Π΅ΠΉ Π»ΠΎΠ³Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
# withdraw log: withdraw_user_txid=amount:timestamp
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡβββΠ±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° affiliate.js, ΡΠ²Π»ΡΡΡΠ°ΡΡΡ ΠΌΠΎΡΡΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ Π΄Π°Π½Π½ΡΡ affiliate ΠΈ WAVES NODE REST API. Π Π΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° (ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π»ΡΠ±ΠΎΠΉ). ΠΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (register, withdraw) ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Waves Keeper, ΡΠ°ΠΌΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ.
Π Π΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ:
fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΠΉ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΠΊΠΎΠ΄Π΅. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ registerβββΠΎΠ½Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΈΠΊΠ» ΠΏΠΎΠ΄Π±ΠΎΡΠ° id ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π½Π°ΡΠΈΠ½Π°Π»ΡΡ Π½Π° 123βββΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ Π²ΡΡΠ΅ PoW-captcha, Π·Π°ΡΠΈΡΠ°ΡΡΠ°Ρ ΠΎΡ ΠΌΠ°ΡΡΠΎΠ²ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΉ. Π€ΡΠ½ΠΊΡΠΈΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Ρ Π½ΡΠΆΠ½ΡΠΌ id, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠ΅ΡΠ΅Π· Waves Keeper.
DEX affiliate ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π°
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com