ΠΠ°ΠΊ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΌΠ΅ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π² TON
ΠΠ° ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΠ°Π²Π° Π΄ΡΠΌΠ° Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ?
Π ΡΡΠ°ΡΠΈΡΡΠ° ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ ΡΡΠ°ΡΡΠ²Π°Ρ Π² ΠΏΡΡΠ²ΠΈΡ (ΠΎΡ Π΄Π²Π°) ΠΊΠΎΠ½ΠΊΡΡΡΠ° Π½Π° Telegram Π·Π° Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½, Π½Π΅ ΡΠΏΠ΅ΡΠ΅Π»ΠΈΡ Π½Π°Π³ΡΠ°Π΄Π° ΠΈ ΡΠ΅ΡΠΈΡ Π΄Π° Π·Π°ΠΏΠΈΡΠ° ΠΎΠΏΠΈΡΠ° ΡΠΈ Π² ΡΡΠ°ΡΠΈΡ, Π·Π° Π΄Π° Π½Π΅ ΠΈΠ·ΡΠ΅Π·Π½Π΅ Π² Π½Π΅Π±ΠΈΡΠΈΠ΅ΡΠΎ ΠΈ, ΠΌΠΎΠΆΠ΅ Π±ΠΈ, Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ³ΠΎ.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π½Π΅ ΠΌΠΈ ΡΠ΅ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΏΠΈΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠ΅Π½ ΠΊΠΎΠ΄, Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²Ρ Π½Π΅ΡΠΎ ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ, Π·Π° ΡΡΠ°ΡΠΈΡΡΠ° Π½Π°ΠΏΠΈΡΠ°Ρ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π·Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½Π° Π»ΠΎΡΠ°ΡΠΈΡ ΠΈ ΡΠ°ΠΉΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ TON Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°.
Π‘ΡΠ°ΡΠΈΡΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π° Π½Π° ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΡΡ ΡΠ²ΠΎΡ ΠΏΡΡΠ²ΠΈ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π² TON, Π½ΠΎ Π½Π΅ Π·Π½Π°ΡΡ ΠΎΡΠΊΡΠ΄Π΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π°Ρ.
ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π° Π»ΠΎΡΠ°ΡΠΈΡΡΠ° ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π° ΠΎΡ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ΅Π΄Π° Π΄ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Ρ Π½Π΅Π³ΠΎ ΠΈ ΡΠ΅ Π½Π°ΠΏΠΈΡΠ° ΡΠ°ΠΉΡ Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ.
ΠΠ° ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π² ΠΊΠΎΠ½ΠΊΡΡΡΠ°
ΠΡΠ΅Π· ΠΎΠΊΡΠΎΠΌΠ²ΡΠΈ ΠΌΠΈΠ½Π°Π»Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π° Telegram ΠΎΠ±ΡΠ²ΠΈ ΠΊΠΎΠ½ΠΊΡΡΡ ΠΏΠΎ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ Ρ Π½ΠΎΠ²ΠΈ Π΅Π·ΠΈΡΠΈ Fift ΠΈ FunC. Π’ΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΏΠ΅ΡΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°. Π Π΅ΡΠΈΡ
, ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° Π΅ Π»ΠΎΡΠΎ Π΄Π° ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌ Ρ Π½Π΅ΡΠΎ Π½Π΅ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΎ, Π΄Π° ΠΈΠ·ΡΡΠ° Π΅Π·ΠΈΠΊΠ° ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²Ρ Π½Π΅ΡΠΎ, Π΄ΠΎΡΠΈ ΠΈ Π² Π±ΡΠ΄Π΅ΡΠ΅ Π΄Π° Π½Π΅ ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° ΠΏΠΈΡΠ° Π½Π΅ΡΠΎ Π΄ΡΡΠ³ΠΎ. ΠΠ»ΡΡ, ΡΠ΅ΠΌΠ°ΡΠ° Π΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π½Π° ΡΠ»ΡΡ
.
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΊΠ°ΠΆΠ°, ΡΠ΅ Π½ΡΠΌΠ°ΠΌ ΠΎΠΏΠΈΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΈ.
ΠΠ»Π°Π½ΠΈΡΠ°Ρ
Π΄Π° ΡΡΠ°ΡΡΠ²Π°ΠΌ Π΄ΠΎ ΡΠ°ΠΌΠΈΡ ΠΊΡΠ°ΠΉ, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΌΠΎΠ³Π°, ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ° ΠΎΠ±Π·ΠΎΡΠ½Π° ΡΡΠ°ΡΠΈΡ, Π½ΠΎ ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈΡ
Π²Π΅Π΄Π½Π°Π³Π° Π½Π° ΠΏΡΡΠ²ΠΈΡ. ΠΠ· Ρ ΠΌΡΠ»ΡΠΈΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° FunC ΠΈ ΡΠΎΠΉ Π²ΡΡΡΠ½ΠΎΡΡ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅. ΠΠ° ΠΎΡΠ½ΠΎΠ²Π° Π²Π·Π΅Ρ
.
Π ΠΎΠ½Π·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅ΡΠΈΡ , ΡΠ΅ ΡΠΎΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ, Π·Π° Π΄Π° Π·Π°Π΅ΠΌΠ° ΠΏΠΎΠ½Π΅ Π½ΡΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠΈΠ·ΠΎΠ²ΠΎ ΠΌΡΡΡΠΎ. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΠΎΠΊΠΎΠ»ΠΎ 40 ΠΎΡ 60 ΡΡΠ°ΡΡΠ½ΠΈΡΠΈ ΡΡΠ°Π½Π°Ρ Π° ΠΏΡΠΈΠ·ΡΠΎΡΠΈ, Π° ΠΌΠ΅Π½ ΡΡΠ΅Π΄ ΡΡΡ Π½Π΅ ΠΌΠ΅ ΠΈΠΌΠ°ΡΠ΅. Π ΠΎΠ±ΡΠΈ Π»ΠΈΠ½ΠΈΠΈ, Π² ΡΠΎΠ²Π° Π½ΡΠΌΠ° Π½ΠΈΡΠΎ ΡΡΡΠ°ΡΠ½ΠΎ, Π½ΠΎ ΠΌΠ΅ Π½Π°ΠΏΡΠ΅Π³Π½Π° Π½Π΅ΡΠΎ. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΠΎΠ±ΡΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Ρ ΡΠ΅ΡΡΠ° Π½Π° ΠΌΠΎΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π½Π΅ Π±Π΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½Π°, ΠΏΠΎΠΏΠΈΡΠ°Ρ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅ Π² ΡΠ°ΡΠ° Π΄Π°Π»ΠΈ ΠΈΠΌΠ° Π½ΡΠΊΠΎΠΉ Π΄ΡΡΠ³, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠΎ Π΄Π° Π½Π΅ Π³ΠΎ Π΅ ΠΈΠΌΠ°Π», Π½ΠΎ ΡΠ°ΠΊΠΈΠ²Π° Π½ΡΠΌΠ°ΡΠ΅.
Π―Π²Π½ΠΎ Π·Π°ΠΌΠ΅ΡΠ°Ρ ΠΌΠΎΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠ΅ΡΠ΅Π· Π΄Π²Π° Π΄Π½Ρ ΡΡΠ΄ΡΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, ΠΈ Ρ ΡΠ°ΠΊ ΠΈ Π½Π΅ ΠΏΠΎΠ½ΡΠ», ΠΏΡΠΎΠΏΡΡΡΠΈΠ»ΠΈ Π»ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠΉ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ΄Π΅ΠΉΡΡΠ²Π° ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠΎΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ»ΠΎΡ ΠΈΠΌ, ΡΡΠΎ Π½Π΅ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. Π― Π·Π°Π΄Π°Π» Π²ΠΎΠΏΡΠΎΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅, Π½ΠΎ ΠΎΡΠ²Π΅ΡΠ° Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ». Π₯ΠΎΡΡ ΠΊΡΠΎ ΡΡΠ΄ΠΈΠ» β Π½Π΅ ΡΠ΅ΠΊΡΠ΅Ρ, ΠΏΠΈΡΠ°ΡΡ Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΡΡΠΈΡΠ°Π» ΠΈΠ·Π»ΠΈΡΠ½ΠΈΠΌ.
ΠΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΏΠΎΡΡΠ°ΡΠ΅Π½ΠΎ Π½Π΅ΠΌΠ°Π»ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π±ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ°ΡΡΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ, ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠ΅ΠΌ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΠΌ.
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² Π² TON
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΠΈΡΠ°ΡΡ, Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, Ρ ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ ΠΊ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ ΡΠΎΡΡΠΎΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°. Π’ΠΎΡΠ½Π΅Π΅, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΡΡΠΈ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎΠ±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Ρ ΠΎΡΡ Π±Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ.
ΠΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌΡΡ Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ TON Virtual Machine (TVM), Fift ΠΈ FunC, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠ°ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΡ
ΠΎΠΆΠ° Π½Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΌΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, Π·Π°Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ.
ΠΠΎΠΎΠ±ΡΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ TVM ΠΈ ΡΠ·ΡΠΊ Fift Π΅ΡΡΡ Ρ
ΠΎΡΠΎΡΠ°Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ°ΡΡΠΈΡ Π² ΠΊΠΎΠ½ΠΊΡΡΡΠ΅ ΠΈ ΡΠ΅ΠΉΡΠ°Ρ, Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°, Ρ ΡΠ°ΡΡΠΎ ΠΊ Π½Π΅ΠΉ ΠΎΠ±ΡΠ°ΡΠ°Π»ΡΡ.
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ·ΡΠΊ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΈΡΡΡΡΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ β FunC. ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Π½Π΅ΠΌΡ Π½Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΡΡΠΎ-ΡΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ, Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΡΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² ΠΈΠ· ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ ΡΠ°ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ·ΡΠΊΠ° ΡΠ°ΠΌ ΠΆΠ΅, ΠΏΠ»ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² Ρ ΠΏΡΠΎΡΠ»ΡΡ
ΠΊΠΎΠ½ΠΊΡΡΡΠΎΠ². Π‘ΡΡΠ»ΠΊΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ.
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ ΡΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π½Π° FunC, ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ΄ Π² Fift-Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ.
Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΠΎΡΡΠ°Π΅ΡΡΡ Π»ΠΈΡΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π½Π° Fift, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π° Π²Ρ
ΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠΎΠ΄ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π° Π½Π° Π²ΡΡ
ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠ°ΠΉΠ» Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .boc (ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ "bag of cells"), ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ, ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΠΈ Π°Π΄ΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠ΄Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°. ΠΠ° Π°Π΄ΡΠ΅Ρ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΠ΅ Π½Π΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½, ΡΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π³ΡΠ°ΠΌΡ.
Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π² TON, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ .boc Π€Π°ΠΉΠ» ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π»Π°ΠΉΡ-ΠΊΠ»ΠΈΠ΅Π½Ρ (Π·Π° ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΠΎ-Π΄ΠΎΠ»Ρ). ΠΠΎ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π³ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΌΠ΅, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅Π²Π΅Π΄Π΅ΠΌ Π³ΡΠ°ΠΌΠΎΠ²Π΅ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡ Π°Π΄ΡΠ΅Ρ, Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡΡ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½. Π‘Π»Π΅Π΄ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°ΠΌΠ΅ ΡΡΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°, ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΉΠΊΠΈ ΠΌΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡΠ²ΡΠ½ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π»Π°ΠΉΡ-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°) ΠΈΠ»ΠΈ ΠΎΡΠ²ΡΡΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅Π΄ΠΈΠ½ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΡΡΠ³ Π²ΡΡΡΠ΅ Π² TON).
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ°Π·Π±ΡΠ°Ρ
ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° ΠΊΠΎΠ΄, ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ ΡΡΠ°Π²Π° ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ. ΠΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ Π·Π½Π°Π΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΈ ΠΊΠ°ΠΊ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Π½Π°ΡΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°. Π ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΠΈΡΠ°Π½Π΅ΡΠΎ ΡΡΡΡΠΈΠΌ ΠΊΠ°ΠΊ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΠΎΠ²Π° Π² ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΈ, ΠΈΠ»ΠΈ Π½Π°Π΄Π½ΠΈΠΊΠ²Π°ΠΌΠ΅ Π² ΠΊΠΎΠ΄Π° Π½Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ. Fift ΠΈ FunC Π² ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎΡΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΈΠ»ΠΈ Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π² ΠΎΡΠΈΡΠΈΠ°Π»Π½Π°ΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
ΠΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΎ ΡΡΡΡΠ΅Ρ ΠΏΠΎ ΠΊΠ»ΡΡΠΎΠ²ΠΈ Π΄ΡΠΌΠΈ Π² Telegram ΡΠ°ΡΠ°, ΠΊΡΠ΄Π΅ΡΠΎ Π±ΡΡ Π° ΡΡΠ±ΡΠ°Π½ΠΈ Π²ΡΠΈΡΠΊΠΈ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈ Π² ΠΊΠΎΠ½ΠΊΡΡΡΠ° ΠΈ ΡΠ»ΡΠΆΠΈΡΠ΅Π»ΠΈ Π½Π° Telegram. Π’Π°ΠΊΠ° ΡΠ΅ ΡΠ»ΡΡΠΈ, ΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠ½ΠΊΡΡΡΠ° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ ΡΡΠ±ΡΠ°Ρ Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΌ ΠΈ Π·Π°ΠΏΠΎΡΠ½Π°Ρ Π° Π΄Π° ΠΎΠ±ΡΡΠΆΠ΄Π°Ρ Fift ΠΈ FunC. ΠΡΡΠ·ΠΊΠ° Π² ΠΊΡΠ°Ρ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ°.
ΠΡΠ΅ΠΌΠ΅ Π΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΎΡ ΡΠ΅ΠΎΡΠΈΡ ΠΊΡΠΌ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ TON
ΠΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΡΠ°ΡΠΈΡΡΠ°, ΠΏΡΠ°Π²ΠΈΡ Π½Π° MacOS ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡ ΠΎΡΠ½ΠΎΠ²ΠΎ Π² ΡΠΈΡΡΠ° Ubuntu 18.04 LTS Π½Π° Docker.
ΠΡΡΠ²ΠΎΡΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ, Π΅ Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΠΌ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ lite-client , Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ Π·Π°ΡΠ²ΠΊΠΈ Π² TON.
ΠΠ½ΡΡΡΡΠΊΡΠΈΡΡΠ° Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ ΡΠ°ΠΉΡ Π΄ΠΎΡΡΠ° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈ ΡΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ²Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ ΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ° Π½ΡΠΊΠΎΠΈ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ. Π’ΡΠΊ ΡΠ»Π΅Π΄Π²Π°ΠΌΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΡΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ Π»ΠΈΠΏΡΠ²Π°ΡΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΠ΅ ΡΠ΅ΡΠΈΡ
ΡΠ°ΠΌ Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΠΌ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡ, Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ
ΠΎΡ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎΡΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Ubuntu (Π½Π° MacOS ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
brew).
apt -y install git
apt -y install wget
apt -y install cmake
apt -y install g++
apt -y install zlib1g-dev
apt -y install libssl-dev Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Π²ΡΠΈΡΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ lite-client, Fift, FunC.
ΠΡΡΠ²ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°ΠΌΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° TON Π·Π°Π΅Π΄Π½ΠΎ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅. ΠΠ° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠΌ Π² ΠΏΠ°ΠΏΠΊΠ° ~\/TON.
cd ~\/TON
git clone https:\/\/github.com\/ton-blockchain\/ton.git
cd .\/ton
git submodule update --init --recursiveΠ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΡΡΡΠΎ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Fift ΠΈ FunC.
Π‘Π΅Π³Π° ΡΠΌΠ΅ Π³ΠΎΡΠΎΠ²ΠΈ Π΄Π° ΡΡΠ±Π΅ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎΠ΄ΡΡ Π½Π° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½ Π² ΠΏΠ°ΠΏΠΊΠ° ~\/TON\/ton. Π ~\/TON ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°ΠΏΠΊΠ° build ΠΈ ΡΡΠ±ΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Π½Π΅Ρ.
mkdir ~\/TON\/build
cd ~\/TON\/build
cmake ..\/tonΠ’ΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΠ·Π½Π°ΠΌΠ΅ΡΡΠ²Π°ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ, Π½ΠΈ Π΅ Π½ΡΠΆΠ΅Π½ Π½Π΅ ΡΠ°ΠΌΠΎ lite-client, Π½ΠΎ ΠΈ Fift Ρ FunC, Π·Π°ΡΠΎΠ²Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ. ΠΠ΅ Π΅ Π±ΡΡΠ· ΠΏΡΠΎΡΠ΅Ρ, Π·Π°ΡΠΎΠ²Π° ΡΠ°ΠΊΠ°ΠΌΠ΅.
cmake --build . --target lite-client
cmake --build . --target fift
cmake --build . --target funcΠ‘Π»Π΅Π΄Π²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ», Π² ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Ρ Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° Π²ΡΠ·Π΅Π»Π°, Ρ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΠΌ. lite-client ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°.
wget https://test.ton.org/ton-lite-client-test1.config.jsonΠΠ·Π²ΡΡΡΠ²Π°ΠΌΠ΅ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π² TON
Π‘Π΅Π³Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ lite-client.
cd ~/TON/build
./lite-client/lite-client -C ton-lite-client-test1.config.jsonΠΠΊΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΠ»Π΅Π΄ ΡΡΠ°ΡΡΠ° ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π»ΠΎΠ³ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° lite ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Ρ Π²ΡΠ·Π΅Π»Π°.
[ 1][t 2][1582054822.963129282][lite-client.h:201][!testnode] conn ready
[ 2][t 2][1582054823.085654020][lite-client.cpp:277][!testnode] Π²Π΅ΡΡΠΈΡ Π½Π° ΡΡΡΠ²ΡΡΠ° Π΅ 1.1, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ 7
[ 3][t 2][1582054823.085725069][lite-client.cpp:286][!testnode] Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΡΡΠ²ΡΡΠ° Π΅ 1582054823 (Π΄Π΅Π»ΡΠ° 0)
...ΠΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° help ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ.
helpΠΠ΅ΠΊΠ° ΠΈΠ·Π±ΡΠΎΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ.
ΡΠΏΠΈΡΡΠΊ Π½Π° Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:
last ΠΠΎΠ»ΡΡΠ°Π²Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π±Π»ΠΎΠΊ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ ΠΎΡ ΡΡΡΠ²ΡΡΠ°
sendfile ΠΠ°ΡΠ΅ΠΆΠ΄Π° ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°
getaccount [] ΠΠ°ΡΠ΅ΠΆΠ΄Π° Π½Π°ΠΉ-Π½ΠΎΠ²ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΠΊΠ°Π·Π°Π½Π°ΡΠ° ΡΠΌΠ΅ΡΠΊΠ°; Π΅ Π² ΡΠΎΡΠΌΠ°Ρ [<workchain>:]<hex-or-base64-addr>
runmethod [] ... ΠΠ·ΠΏΡΠ»Π½ΡΠ²Π° GET ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π° ΡΠΌΠ΅ΡΠΊΠ° Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈlast ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π±Π»ΠΎΠΊ ΠΎΡ ΡΡΡΠ²ΡΡΠ°.
sendfile ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΠ°ΠΉΠ» Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² TON, ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡΡ ΠΈ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΠΊΡΠΌ Π½Π΅Π³ΠΎ.
getaccount Π·Π°ΡΠ΅ΠΆΠ΄Π° ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Ρ ΡΠΊΠ°Π·Π°Π½ Π°Π΄ΡΠ΅Ρ.
runmethod [] ΡΡΠ°ΡΡΠΈΡΠ° get-ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π½Π° ΡΠΌΠ°ΡΡΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°. Π‘Π΅Π³Π° ΡΠΌΠ΅ Π³ΠΎΡΠΎΠ²ΠΈ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ°ΠΌΠΈΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΠ΄Π΅ΡΡΠ°
ΠΠ°ΠΊΡΠΎ Π²Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ , ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΈΡΠ΅ΠΌ, Π΅ Π»ΠΎΡΠ°ΡΠΈΡ.
Π ΡΠΎΠ²Π° Π½Π΅ Π΅ Π»ΠΎΡΠ°ΡΠΈΡ, Π² ΠΊΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΡΠΏΠΈΡ Π±ΠΈΠ»Π΅Ρ ΠΈ Π΄Π° ΡΠ°ΠΊΠ°Ρ ΡΠ°Ρ, Π΄Π΅Π½ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠ΅Ρ, Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½Π°, Π² ΠΊΠΎΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΏΡΠ΅Ρ
Π²ΡΡΠ»Ρ Π³ΡΠ°ΠΌΠΎΠ²Π΅ Π½Π° Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° N ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ 2 * N Π³ΡΠ°ΠΌΠΎΠ²Π΅ ΠΈΠ»ΠΈ Π³ΡΠ±ΠΈ. ΠΠ΅ΡΠΎΡΡΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΠΎΠ±Π΅Π΄Π° ΡΠ΅ Ρ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΎΠΊΠΎΠ»ΠΎ 40%. ΠΠΊΠΎ Π³ΡΠ°ΠΌΠΎΠ²Π΅ΡΠ΅ Π·Π° ΠΈΠ·ΠΏΠ»Π°ΡΠ°Π½Π΅ Π½Π΅ ΡΠ° Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΈ, ΡΠ΅ ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° Π·Π° Π΄ΠΎΠΏΡΠ»Π²Π°Π½Π΅.
Π Π΅ Π²Π°ΠΆΠ½ΠΎ Π·Π°Π»ΠΎΠ·ΠΈΡΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠΆΠ΄Π°Ρ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΈ ΠΏΠΎ ΡΠ΄ΠΎΠ±Π΅Π½ Π½Π°ΡΠΈΠ½, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ Π΄Π°Π»ΠΈ Π΅ ΡΠΏΠ΅ΡΠ΅Π»ΠΈΠ» ΠΈΠ»ΠΈ Π·Π°Π³ΡΠ±ΠΈΠ». ΠΠ°ΡΠΎΠ²Π° Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ΅Π±ΡΠ°ΠΉΡ, ΠΊΠΎΠΉΡΠΎ Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π° Π·Π°Π»ΠΎΠ·ΠΈΡΠ΅ ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ TON.
ΠΠ°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ
ΠΠ° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠΎΠ΄Π° Π·Π° FunC, ΠΏΠ»ΡΠ³ΠΈΠ½ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Π² ΡΡΡΡΠ΅Π½Π΅ΡΠΎ Π½Π° Visual Studio Code, Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π½Π΅ΡΠΎ, Π³ΠΎ ΠΊΠ°ΡΠΈΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, ΠΏΠΎ-ΡΠ°Π½ΠΎ Π΅ Π±ΠΈΠ» Π½Π°ΠΏΡΠ°Π²Π΅Π½ ΠΏΠ»ΡΠ³ΠΈΠ½ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Fift, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Π² VSC.
ΠΠ΅ΠΊΠ° Π²Π΅Π΄Π½Π°Π³Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π² ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°ΠΌΠ΅ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ.
ΠΠ° Π΄Π° ΡΠΈ ΡΠ»Π΅ΡΠ½ΠΈΠΌ ΠΆΠΈΠ²ΠΎΡΠ°, ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΠΈ ΡΠ΅ Π³ΠΎ ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ Π΅ Π³ΠΎΡΠΎΠ². Π‘Π°ΠΌΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ Π³ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΌΠ΅ Π² TON.
Π‘ΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡΡ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π° Ρ Π΄Π²Π° Π²ΡΠ½ΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°, Π΄ΠΎ ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ Π΄ΠΎΡΡΡΠΏ. ΠΡΡΠ²ΠΈΡΡ, recv_external() ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠΎΠΈΡΠΊΠ°Π½Π΅ΡΠΎ ΠΊΡΠΌ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΈΠ΄Π²Π° ΠΎΡ Π²ΡΠ½ΡΠ½ΠΈΡ ΡΠ²ΡΡ, ΡΠΎΠ΅ΡΡ Π½Π΅ ΠΎΡ TON, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°ΠΌΠΈ ΡΠΎΡΠΌΡΠ»ΠΈΡΠ°ΠΌΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ ΡΡΠ΅Π· lite-client. ΠΡΠΎΡΠΈΡΡ, recv_internal() Π΅ ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΡΡΠ΅ Π² ΡΠ°ΠΌΠΈΡ TON Π½ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΡΠ΅ ΠΎΠ±ΡΡΡΠ° ΠΊΡΠΌ Π½Π°ΡΠΈΡ. Π Π΄Π²Π°ΡΠ° ΡΠ»ΡΡΠ°Ρ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ΅Π΄Π°Π΄Π΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ°.
ΠΠ΅ΠΊΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΠΏΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ, Π°ΠΊΠΎ Π±ΡΠ΄Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½, Π½ΠΎ Π² Π½Π΅Π³ΠΎ Π½ΡΠΌΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅.
() recv_internal(slice in_msg) impure {
;; TODO: ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
}
() recv_external(slice in_msg) impure {
;; TODO: ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
}Π’ΡΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΡΠ½ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ slice. ΠΡΠΈΡΠΊΠΈ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² TON Blockchain ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡ ΠΎΡ TVM cell ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ cell, Π² ΡΠ°ΠΊΠ°Π²Π° ΠΊΠ»Π΅ΡΠΊΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ Π΄ΠΎ 1023 Π±ΠΈΡΠ° Π΄Π°Π½Π½ΠΈ ΠΈ Π΄ΠΎ 4 Π»ΠΈΠ½ΠΊΠ° ΠΊΡΠΌ Π΄ΡΡΠ³ΠΈ ΠΊΠ»Π΅ΡΠΊΠΈ.
TVM cell slice ΠΈΠ»ΠΈ slice Π΅ ΡΠ°ΡΡ ΠΎΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠ° cell ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π·Π° Π½Π΅ΠΉΠ½ΠΎΡΠΎ ΠΏΠ°ΡΡΠΈΡΠ°Π½Π΅, ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ ΡΠ΅ ΡΡΠ°Π½Π΅ ΡΡΠ½ΠΎ. ΠΠ°ΠΆΠ½ΠΎ Π·Π° Π½Π°Ρ Π΅, ΡΠ΅ Π² ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ΅Π΄Π°Π΄Π΅ΠΌ slice ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π²ΠΈΠ΄Π° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΠΌ Π΄Π°Π½Π½ΠΈΡΠ΅ Π² recv_external() ΠΈΠ»ΠΈ recv_internal().
impure β ΠΊΠ»ΡΡΠΎΠ²Π° Π΄ΡΠΌΠ°, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΠΈ Π² ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
Π©Π΅ Π·Π°ΠΏΠ°Π·ΠΈΠΌ ΠΊΠΎΠ΄Π° Π½Π° ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Π² lottery-code.fc ΠΈ ΡΠ΅ Π³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΠΌΠ΅.
~/TON/build/crypto/func -APSR -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fc Π‘ΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ»Π°Π³ΠΎΠ²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
~/TON/build/crypto/func -helpΠΠΎΠ»ΡΡΠΈΡ
ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ Fift-Π°ΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅Π½ ΠΊΠΎΠ΄ Π² lottery-compiled.fif:
// lottery-compiled.fif
"Asm.fif" include
// automatically generated from `/Users/rajymbekkapisev/TON/ton/crypto/smartcont/stdlib.fc` `./lottery-code.fc`
PROGRAM{
DECLPROC recv_internal
DECLPROC recv_external
recv_internal PROC:<{
// in_msg
DROP //
}>
recv_external PROC:<{
// in_msg
DROP //
}>
}END>cΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, Π·Π° ΡΠΎΠ²Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΡΠΌΠ΅ ΡΡΠ΅Π΄Π°ΡΠ°.
ΠΠ° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈΠΌ, ΡΠ΅ Π² ΠΏΡΡΠ²ΠΈΡ ΡΠ΅Π΄ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π° Asm.fif, ΡΠΎΠ²Π° Π΅ ΠΊΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Fift Π·Π° Fift-Π°ΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΈ ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Π»ΠΎΠΊΠ°Π»Π½ΠΎ, ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠ°ΠΉΠ» lottery-test-suite.fif ΠΈ ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄, Π·Π°ΠΌΠ΅Π½ΡΠΉΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ΅Π΄, ΠΊΠΎΠΉΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π° ΠΊΠΎΠ΄Π° Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Π² ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° code, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅ Π΄Π° Π³ΠΎ ΠΏΡΠ΅Π΄Π°Π΄Π΅ΠΌ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π°ΡΠ° ΠΌΠ°ΡΠΈΠ½Π°:
"TonUtil.fif" include
"Asm.fif" include
PROGRAM{
DECLPROC recv_internal
DECLPROC recv_external
recv_internal PROC:<{
\/\/ in_msg
DROP \/\/
}>
recv_external PROC:<{
\/\/ in_msg
DROP \/\/
}>
}END>s constant code
ΠΠ°ΡΠ΅Π³Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΠΎ, ΡΠ΅Π³Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΡΡΡΠΈΡ ΡΠ°ΠΉΠ» ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° TVM.
0 ΠΊΠΎΡΡΠ΅ΠΆ 0x076ef1ea , // ΠΌΠ°Π³ΠΈΡ
0 , 0 , // Π΄Π΅ΠΉΡΡΠ²ΠΈΡ msg_sents
1570998536 , // unix_time
1 , 1 , 3 , // block_lt, trans_lt, rand_seed
0 ΠΊΠΎΡΡΠ΅ΠΆ 100000000000000 , dictnew , , // ΠΎΡΡΠ°Π²ΡΠΈΠΉΡΡ Π±Π°Π»Π°Π½Ρ
0 , dictnew , // contract_address, global_config
1 ΠΊΠΎΡΡΠ΅ΠΆ // ΠΎΠ±Π΅ΡΠ½ΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΆ
ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° c7
0 ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° recv_internal // Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ recv_internal()
-1 ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° recv_external // Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° recv_external()Π c7 Π·Π°ΠΏΠΈΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, Ρ.Π΅. Π΄Π°Π½Π½ΠΈ Ρ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½ TVM (ΠΈΠ»ΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°). ΠΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠ½ΠΊΡΡΡΠ° Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π° ΠΊΠ°ΠΊ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° c7 ΠΈ Π°Π· ΠΊΠΎΠΏΠΈΡΠ°Ρ
. Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠΌΠ΅Π½ΠΈΠΌ rand_seed ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΎΡ Π½Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ ΡΠΈΡΠ»ΠΎ ΠΈ Π°ΠΊΠΎ Π½Π΅ Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΎ, ΠΏΡΠΈ Π²ΡΡΠΊΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΡΠ΅ ΡΠ΅ Π²ΡΡΡΠ° ΡΡΡΠΎΡΠΎ ΡΠΈΡΠ»ΠΎ.
recv_internal ΠΈ recv_external ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈΡΠ΅ ΡΡΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° 0 ΠΈ -1 ΡΠ΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠΌΠ°ΡΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ°.
Π‘Π΅Π³Π° ΡΠΌΠ΅ Π³ΠΎΡΠΎΠ²ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΡΠ²ΠΈΡ ΡΠ΅ΡΡ Π½Π° Π½Π°ΡΠΈΡ ΠΏΡΠ°Π·Π΅Π½ ΡΠΌΠ°ΡΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ. ΠΠ° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ° Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ, Π·Π°ΡΠ΅Π³Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΡΠΎΠ·ΠΈ ΡΠ°ΠΉΠ» lottery-test-suite.fif.
Π‘ΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΌ Π² Π½Π΅Ρ ΠΏΡΠ°Π·Π΅Π½ cell, ΡΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΡΠΌΠ°ΡΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ°.
message ΡΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π΄Π΅ΠΌ Π½Π° ΡΠΌΠ°ΡΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° ΠΎΡ Π²ΡΠ½. Π Π½Π΅Π³ΠΎ ΡΡΡΠΎ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π·Π°ΡΠ΅Π³Π° ΠΏΡΠ°Π·Π½ΠΎ.
ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅
<b b> ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ !
ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
<b b> ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ! Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΠΈΡ
ΠΌΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅, ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ TVM Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° runvmctx ΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°ΠΌΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° Π²Ρ
ΠΎΠ΄.
ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ @
recv_external
ΠΊΠΎΠ΄
ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ @
c7
runvmctx Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ Π½Π° Fift.
Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄.
export FIFTPATH=~\/TON\/ton\/crypto\/fift\/lib // ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ Π²Π΅Π΄Π½ΡΠΆ Π·Π° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ
~\/TON\/build\/crypto\/fift -s lottery-test-suite.fif ΠΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ Π±Π΅Π· Π³ΡΠ΅ΡΠΊΠΈ ΠΈ Π² ΠΈΠ·Ρ ΠΎΠ΄Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π»ΠΎΠ³ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ:
execute SETCP 0
execute DICTPUSHCONST 19 (xC_,1)
execute DICTIGETJMPZ
execute DROP
execute implicit RET
[ 3][t 0][1582281699.325381279][vm.cpp:479] steps: 5 gas: used=304, max=9223372036854775807, limit=9223372036854775807, credit=0ΠΡΠ»ΠΈΡΠ½ΠΎ, Π½Π°ΠΏΠΈΡΠ°Ρ ΠΌΠ΅ ΠΏΡΡΠ²Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ΅ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠΌΠ°ΡΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ°.
Π‘Π΅Π³Π° ΡΡΡΠ±Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ. ΠΡΡΠ²ΠΎ ΡΠ΅ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌ ΡΡΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΈΠ΄Π²Π°Ρ ΠΎΡ Π²ΡΠ½ΡΠ½ΠΈΡ ΡΠ²ΡΡ Π² recv_external()
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ ΡΠ°ΠΌ ΠΈΠ·Π±ΠΈΡΠ° ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ΅.
ΠΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ,
- ΠΏΡΡΠ²ΠΎ, ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° Π·Π°ΡΠΈΡΠΈΠΌ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° ΡΠΈ ΠΎΡ Π²ΡΠ½ΡΠ½ΠΈΡ ΡΠ²ΡΡ ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ°ΠΊΠ°, ΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΡΡ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ° Π²ΡΠ½ΡΠ½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΡΠΌ Π½Π΅Π³ΠΎ.
- Π²ΡΠΎΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ Π²Π°Π»ΠΈΠ΄Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² TON, ΠΈΡΠΊΠ°ΠΌΠ΅ ΡΠΎ Π΄Π° ΡΠ΅ ΡΠ»ΡΡΠΈ ΡΠΎΡΠ½ΠΎ Π²Π΅Π΄Π½ΡΠΆ ΠΈ ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΡΡΡΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠΌΠ°ΡΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΡΡ Π΄Π° Π³ΠΎ ΠΎΡΡ Π²ΡΡΠ»ΠΈ.
ΠΠ°ΡΠΎΠ²Π° ΠΏΠΎΡΡΠΈ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°Ρ ΡΠ΅Π·ΠΈ Π΄Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π½Π°ΡΠΈΡΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ ΠΏΡΠΈΠ΅ΠΌΠ° Π²ΡΠ½ΡΠ½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π½ΠΈΠ΅ ΡΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ³ΡΠΈΠΆΠΈΠΌ Π·Π° ΡΠΎΠ²Π°.
Π©Π΅ Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π² ΠΎΠ±ΡΠ°ΡΠ΅Π½ ΡΠ΅Π΄. ΠΡΡΠ²ΠΎ ΡΠ΅ ΡΠ΅ΡΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΏΠΎΠ²ΡΠ°ΡΡΠ½Π΅ΡΠΎ, Π°ΠΊΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΡΡ Π²Π΅ΡΠ΅ Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠ°ΠΊΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π³ΠΎ Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΠ», ΡΠΎ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΎ Π²ΡΠΎΡΠΈ ΠΏΡΡ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ΅ΡΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠΎΠ²Π°, ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΡΡΠ³ Π»ΠΈΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π΄ΠΎ ΡΠΌΠ°ΡΡ-Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ°.
ΠΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΏΠΎΠ²ΡΠ°ΡΡΡΠΈΡΠ΅ ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠΈΠ΅ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ. Π ΡΠΌΠ°ΡΡ-Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π±ΡΠΎΡΡ Π½Π° ΠΏΡΠΈΠ΅ΡΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ Π½Π°ΡΠ°Π»ΠΎ 0. ΠΠ° Π²ΡΡΠΊΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΡΠΌΠ°ΡΡ-Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° Π±ΡΠΎΡΡΠ°. ΠΠΊΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π±ΡΠΎΡΡΠ° Π² ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π΅ ΡΡΠ²ΠΏΠ°Π΄Π° ΡΡΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π² ΡΠΌΠ°ΡΡ-Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ°, ΡΠΎ Π½Π΅ Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΠΌΠ΅, Π°ΠΊΠΎ ΡΡΠ²ΠΏΠ°Π΄Π°, ΡΠΎ Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΠΌΠ΅ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°ΠΌΠ΅ Π±ΡΠΎΡΡΠ° Π² ΡΠΌΠ°ΡΡ-Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° Ρ 1.
ΠΡΡΡΠ°ΠΌΠ΅ ΡΠ΅ Π² lottery-test-suite.fif ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ Π²ΡΠΎΡΠΈΡ ΡΠ΅ΡΡ. Π©Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈΠΌ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π΅Π½ Π½ΠΎΠΌΠ΅Ρ, ΠΊΠΎΠ΄ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠ° Π² Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° Π΄Π° ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° 166, Π° Π½ΠΈΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΠΌ 165.
<b 166 32 u, b> ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ !
<b 165 32 u, b> ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ !
ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ @
recv_external
ΠΊΠΎΠ΄
sΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ @
c7
runvmctx
drop
exit_code !
."ΠΠΎΠ΄ Π½Π° ΠΈΠ·Ρ
ΠΎΠ΄Π° " exit_code @ . cr
exit_code @ 33 - abort"Π’Π΅ΡΡ #2 ΠΠ΅ Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Ρ"Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅.
~\/TON\/build\/crypto\/fift -s lottery-test-suite.fif Π ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ, ΡΠ΅ ΡΠ΅ΡΡΡΡ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Ρ Π³ΡΠ΅ΡΠΊΠ°.
[ 1][t 0][1582283084.210902214][words.cpp:3046] lottery-test-suite.fif:67: abort": Π’Π΅ΡΡ #2 Π½Π΅ Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π»
[ 1][t 0][1582283084.210941076][fift-main.cpp:196] ΠΡΠ΅ΡΠΊΠ° ΠΏΡΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ°ΠΉΠ»Π° `lottery-test-suite.fif`: Π³ΡΠ΅ΡΠΊΠ° ΠΏΡΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡΡΠ° Π½Π° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ» `lottery-test-suite.fif`: lottery-test-suite.fif:67: abort": Π’Π΅ΡΡ #2 Π½Π΅ Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π»ΠΠ° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ lottery-test-suite.fif ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°ΡΠΎ .
Π‘Π΅Π³Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° Π±ΡΠΎΡΡΠ° Π² ΡΠΌΠ°ΡΡ-Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° Π² lottery-code.fc.
() recv_internal(slice in_msg) impure {
;; TODO: implementation
}
() recv_external(slice in_msg) impure {
if (slice_empty?(in_msg)) {
return ();
}
int msg_seqno = in_msg~load_uint(32);
var ds = begin_parse(get_data());
int stored_seqno = ds~load_uint(32);
throw_unless(33, msg_seqno == stored_seqno);
}Π slice in_msg ΡΡΠ΄ΡΡΠΆΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅.
ΠΡΡΠ²ΠΎΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈΠΌ, Π΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ Π΄Π°Π»ΠΈ Π² ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠΌΠ° Π΄Π°Π½Π½ΠΈ, Π°ΠΊΠΎ Π½ΡΠΌΠ°, ΠΏΡΠΎΡΡΠΎ ΠΈΠ·Π»ΠΈΠ·Π°ΠΌΠ΅.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΠ°ΡΡΠ²Π°ΠΌΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ. in_msg~load_uint(32) Π·Π°ΡΠ΅ΠΆΠ΄Π° ΡΠΈΡΠ»ΠΎΡΠΎ 165, 32-Π±ΠΈΡΠΎΠ²ΠΎ unsigned int ΠΎΡ ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°ΠΌΠ΅ 32 Π±ΠΈΡΠ° ΠΎΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΡΠΌΠ°ΡΡ-Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ°. ΠΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅, ΡΠ΅ Π·Π°ΡΠ΅Π΄Π΅Π½ΠΎΡΠΎ ΡΠΈΡΠ»ΠΎ ΡΡΠ²ΠΏΠ°Π΄Π° Ρ ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ΠΎΡΠΎ, Π°ΠΊΠΎ Π½Π΅, Ρ Π²ΡΡΠ»ΡΠΌΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. Π Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ΄Π°Π²Π°ΠΌΠ΅ Π½Π΅ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°ΡΠΎ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Ρ Π²ΡΡΠ»ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
Π‘Π΅Π³Π° ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΠΌΠ΅.
~/TON/build/crypto/func -APSR -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fc ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π² lottery-test-suite.fif, Π½Π΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΠΊΠΈ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ΅Π΄.
ΠΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅, ΡΠ΅ ΡΠ΅ΡΡΡΡ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°:
~\/TON\/build\/crypto\/fift -s lottery-test-suite.fifΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ ΠΊΠΎΠΌΠΈΡ ΡΡΡ ΡΠ΅Π³Π°ΡΠ½ΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ.
ΠΠ°Π±Π΅Π»ΡΠ·Π²Π°ΠΌΠ΅, ΡΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΡΠΎ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Π² ΡΠ°ΠΉΠ» Ρ ΡΠ΅ΡΡΠΎΠ²Π΅ Π΅ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ, Π·Π°ΡΠΎΠ²Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Π²ΠΌΠ΅ΡΡΠΎ Π½Π°Ρ, Π° Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΠΌ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄ Π² Π½Π°ΡΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° "include".
Π ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠ°ΠΉΠ» build.sh ΡΡΡ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅.
#!/bin/bash
~/TON/build/crypto/func -SPA -R -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fcΠ©Π΅ Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ.
chmod +x ./build.shΠ‘Π΅Π³Π°, Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Π½Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡ, Π·Π° Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°ΠΌΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ°. ΠΠΎ ΠΎΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° code. ΠΠ°ΡΠΎΠ²Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π½ΠΎΠ² ΡΠ°ΠΉΠ» lotter-compiled-for-test.fif, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΠΌ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° lottery-test-suite.fif.
ΠΠΎΠ±Π°Π²ΡΠΌΠ΅ Π² sh ΡΠΊΡΠΈΠΏΡΠ° ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ Π΄ΡΠ±Π»ΠΈΡΠ° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡ ΡΠ°ΠΉΠ» Π² lotter-compiled-for-test.fif ΠΈ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ΅Π΄.
# copy and change for test
cp lottery-compiled.fif lottery-compiled-for-test.fif
sed '$d' lottery-compiled-for-test.fif > test.fif
rm lottery-compiled-for-test.fif
mv test.fif lottery-compiled-for-test.fif
echo -n "}END>s constant code" >> lottery-compiled-for-test.fifΠ‘Π΅Π³Π°, Π·Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΊΡΠΈΠΏΡ ΠΈ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΠΌΠ΅ ΡΠ°ΠΉΠ» lottery-compiled-for-test.fif, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΠΌ Π² Π½Π°ΡΠΈΡ lottery-test-suite.fif
Π lottery-test-suite.fif ΠΈΠ·ΡΡΠΈΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ΄Π° Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ ΡΠ΅Π΄Π° "lottery-compiled-for-test.fif" include.
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅, Π·Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΠ΅ ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Ρ.
~\/TON\/build\/crypto\/fift -s lottery-test-suite.fifΠΡΠ»ΠΈΡΠ½ΠΎ, ΡΠ΅Π³Π°, Π·Π° Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅, ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ°ΠΉΠ» test.sh, ΠΊΠΎΠΉΡΠΎ ΠΏΡΡΠ²ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈ build.sh, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅.
touch test.sh
chmod +x test.shΠΡΡΡΠ΅ ΠΏΠΈΡΠ΅ΠΌ
./build.sh
echo "nΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π·Π°Π²ΡΡΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎn"
export FIFTPATH=~/TON/ton/crypto/fift/lib
~/TON/build/crypto/fift -s lottery-test-suite.fifΠΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ test.sh ΠΈ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅, Π·Π° Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΠΌ, ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΡΡ.
chmod +x ./test.sh
./test.shΠΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅, ΡΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΡΡ ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ.
ΠΡΠ»ΠΈΡΠ½ΠΎ, ΡΠ΅Π³Π° ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ test.sh Π²Π΅Π΄Π½Π°Π³Π° ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅. ΠΡΠΎ Π»ΠΈΠ½ΠΊ Π½Π° .
ΠΠΊΠ΅ΠΉ, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ, Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΎΡΠ΅ Π½Π΅ΡΠΎ Π·Π° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ.
Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°ΠΏΠΊΠ° build ΠΊΡΠ΄Π΅ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ ΠΊΠ»ΠΎΠ½, Π·Π°ΠΏΠΈΡΠ°Π½ Π² ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° lottery-compiled.fif, lottery-compiled-for-test.fif. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°ΠΏΠΊΠ° test ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° ΡΠ°ΠΉΠ»ΡΡ Ρ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ lottery-test-suite.fif ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. .
ΠΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
ΠΠΎ-Π½Π°ΡΠ°ΡΡΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° ΡΠ΅ΡΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°, ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΈ Π±ΡΠΎΡΡΡΡ ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΡΠ²Π° Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΠΈΡΠ»ΠΎ. ΠΠΎ ΡΠ΅ Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ.
Π‘Π΅Π³Π° Π΄Π° ΠΏΠΎΠΌΠΈΡΠ»ΠΈΠΌ ΠΊΠ°ΠΊΠ²Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ Π΄Π°Π½Π½ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ Π² ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
Π©Π΅ ΠΎΠΏΠΈΡΠ° Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅.
`seqno` 32-Π±ΠΈΡΠΎΠ²o ΡΡΠ»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΠΈΡΠ»ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° Π±ΡΠΎΡΡΠ°.
`pubkey` 256-Π±ΠΈΡΠΎΠ²o ΡΡΠ»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΠΈΡΠ»ΠΎ, ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΊΠ»ΡΡ, Ρ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ° Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Π²ΡΠ½ΡΠ½Π°ΡΠ° ΡΡΡΠ°Π½Π°, Π·Π° ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΠΎ-Π΄ΠΎΠ»Ρ.
`order_seqno` 32-Π±ΠΈΡΠΎΠ²o ΡΡΠ»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΠΈΡΠ»ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π±ΡΠΎΡ Π½Π° Π·Π°Π»ΠΎΠ·ΠΈΡΠ΅.
`number_of_wins` 32-Π±ΠΈΡΠΎΠ²o ΡΡΠ»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΠΈΡΠ»ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π±ΡΠΎΡ Π½Π° ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅.
`incoming_amount` ΡΠΈΠΏ Π΄Π°Π½Π½ΠΈ Gram (ΠΏΡΡΠ²ΠΈΡΠ΅ 4 Π±ΠΈΡΠ° ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π·Π° Π΄ΡΠ»ΠΆΠΈΠ½Π°ΡΠ°), ΡΡΡ
ΡΠ°Π½ΡΠ²Π° ΠΎΠ±ΡΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³ΡΠ°ΠΌΠΎΠ²e, ΠΊΠΎΠΈΡΠΎ Π±ΡΡ
Π° ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
`outgoing_amount` ΠΎΠ±ΡΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³ΡΠ°ΠΌΠΎΠ²e, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΎ Π½Π° ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»ΠΈΡΠ΅.
`owner_wc` Π½ΠΎΠΌΠ΅Ρ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΡΠ΅ΠΉΠ½, 32-Π±ΠΈΡΠΎΠ²o (Π² Π½ΡΠΊΠΎΠΈ ΠΌΠ΅ΡΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ, ΡΠ΅ Π΅ 8-Π±ΠΈΡΠΎΠ²o) ΡΡΠ»ΠΎ ΡΠΈΡΠ»ΠΎ. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π΄Π²Π΅ -1 ΠΈ 0.
`owner_account_id` 256-Π±ΠΈΡΠΎΠ²o ΡΡΠ»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΠΈΡΠ»ΠΎ, Π°Π΄ΡΠ΅Ρ Π½Π° ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Π² ΡΠ΅ΠΊΡΡΠΈΡ ΡΠ°Π±ΠΎΡΠ΅Π½ ΡΠ΅ΠΉΠ½.
`orders` ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° ΠΎΡ ΡΠΈΠΏ ΡΠ΅ΡΠ½ΠΈΠΊ, ΡΡΡ
ΡΠ°Π½ΡΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π΄Π²Π°Π΄Π΅ΡΠ΅Ρ Π·Π°Π»ΠΎΠ³Π°. Π‘Π»Π΅Π΄Π²Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΡΠ²Π°ΡΠ° ΡΠ΅ Π½Π°ΡΠ΅ΡΠ΅ΠΌ pack_state(), ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ° Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΎ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°. ΠΡΠΎΡΠ°ΡΠ° ΡΠ΅ Π½Π°ΡΠ΅ΡΠ΅ΠΌ unpack_state() , ΠΊΠΎΡΡΠΎ ΡΠ΅ ΡΠ΅ΡΠ΅ ΠΈ Π²ΡΡΡΠ° Π΄Π°Π½Π½ΠΈ ΠΎΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ.
_ pack_state(int seqno, int pubkey, int order_seqno, int number_of_wins, int incoming_amount, int outgoing_amount, int owner_wc, int owner_account_id, cell orders) inline_ref {
return begin_cell()
.store_uint(seqno, 32)
.store_uint(pubkey, 256)
.store_uint(order_seqno, 32)
.store_uint(number_of_wins, 32)
.store_grams(incoming_amount)
.store_grams(outgoing_amount)
.store_int(owner_wc, 32)
.store_uint(owner_account_id, 256)
.store_dict(orders)
.end_cell();
}
_ unpack_state() inline_ref {
var ds = begin_parse(get_data());
var unpacked = (ds~load_uint(32), ds~load_uint(256), ds~load_uint(32), ds~load_uint(32), ds~load_grams(), ds~load_grams(), ds~load_int(32), ds~load_uint(256), ds~load_dict());
ds.end_parse();
return unpacked;
}ΠΠΎΠ±Π°Π²ΡΠΌΠ΅ ΡΠ΅Π·ΠΈ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°. ΠΠΎΠ»ΡΡΠ°Π²Π° ΡΠ΅ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ.
ΠΠ° Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΠΌ Π΄Π°Π½Π½ΠΈΡΠ΅, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΠΌΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ set_data() , ΠΈ ΡΡ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΎΡ pack_state() Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
cell packed_state = pack_state(arg_1, .., arg_n);
set_data(packed_state);Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ΄ΠΎΠ±Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π·Π°ΠΏΠΈΡ ΠΈ ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ Π½Π°ΠΏΡΠ΅Π΄.
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΠ΅ Π²Ρ ΠΎΠ΄ΡΡΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Π²ΡΠ½ΡΠ½Π°ΡΠ° ΡΡΡΠ°Π½Π° Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΎ ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° (ΠΈΠ»ΠΈ ΠΎΡ Π΄ΡΡΠ³ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π», ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°ΡΡΠ½ΠΈΡ ΠΊΠ»ΡΡ).
ΠΠΎΠ³Π°ΡΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΌΠ΅ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠ°Π·ΡΡ Π·Π° Π±ΡΠ΄Π΅ΡΠ° ΡΠΏΠΎΡΡΠ΅Π±Π°. Π©Π΅ Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ°ΠΌ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡ ΠΊΠ»ΡΡ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ Π½Π° Π²Ρ ΠΎΠ΄ΡΡΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ Ρ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡΠΈΡ ΠΏΡΠΈΠ²Π°ΡΠ΅Π½ ΠΊΠ»ΡΡ.
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ, Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΠΈΠ²Π°ΡΠ΅Π½ ΠΊΠ»ΡΡ ΠΈ Π΄Π° Π³ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΌ Π² test/keys/owner.pk. ΠΠ° ΡΠΎΠ²Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Fift Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ΅ΡΠΈΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ.
`newkeypair` Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ΅Π½ ΠΊΠ»ΡΡ ΠΈ Π³ΠΈ Π·Π°ΠΏΠΈΡΠ²Π° Π² ΡΡΠ΅ΠΊΠ°.
`drop` ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π° ΠΎΡ ΡΡΠ΅ΠΊΠ° Π½Π°ΠΉ-Π³ΠΎΡΠ½ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ (Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡ ΠΊΠ»ΡΡ)
`.s` ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΠΌΠ° Π² ΡΡΠ΅ΠΊΠ° Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°
`"owner.pk" B>file` Π·Π°ΠΏΠΈΡΠ²Π° ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈΡ ΠΊΠ»ΡΡ Π²ΡΠ² ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅ `owner.pk`.
`bye` Π·Π°Π²ΡΡΡΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ Fift. Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°ΠΏΠΊΠ° ΠΊΠ»ΡΡΠΎΠ²Π΅ Π²ΡΠ² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° test ΠΈ ΡΠ°ΠΌ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈΡ ΠΊΠ»ΡΡ.
mkdir test/keys
cd test/keys
~ /TON/build/crypto/fift -i
newkeypair
ok
.s
BYTES:128DB222CEB6CF5722021C3F21D4DF391CE6D5F70C874097E28D06FCE9FD6917 BYTES:DD0A81AAF5C07AAAA0C7772BB274E494E93BB0123AA1B29ECE7D42AE45184128
drop
ok
"owner.pk" B>file
ok
byeΠΠΈΠΆΠ΄Π°ΠΌΠ΅ Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΠΏΠ°ΠΏΠΊΠ° ΡΠ°ΠΉΠ»Π° owner.pk.
ΠΡΠ΅ΠΌΠ°Ρ Π²Π°ΠΌΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡ ΠΊΠ»ΡΡ ΠΎΡ ΡΡΠ΅ΠΊΠ°, ΠΊΠΎΠ³Π°ΡΠΎ Π½ΠΈ ΠΏΠΎΡΡΡΠ±Π²Π°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΎΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈΡ.
Π‘Π΅Π³Π° ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ°. ΠΠ΅ΠΊΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΡΠ΅ΡΡ. ΠΡΡΠ²ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈΡ ΠΊΠ»ΡΡ ΠΎΡ ΡΠ°ΠΉΠ»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° file>B ΠΈ Π³ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° owner_private_key, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° priv>pub ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈΡ ΠΊΠ»ΡΡ Π² ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°ΠΌΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° Π² owner_public_key.
variable owner_private_key
variable owner_public_key
"./keys/owner.pk" file>B owner_private_key !
owner_private_key @ priv>pub owner_public_key !Π Π΄Π²Π°ΡΠ° ΠΊΠ»ΡΡΠ° ΡΠ΅ Π½ΠΈ ΡΡΡΠ±Π²Π°Ρ.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Π² ΡΡΡΠ°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ, ΠΊΠ°ΠΊΠ²Π°ΡΠΎ Π΅ Π² ΡΡΠ½ΠΊΡΠΈΡΡΠ° pack_state()ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° owner_private_key
ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° owner_public_key
ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° orders
ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° owner_wc
ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° owner_account_id
".\/keys\/owner.pk" ΡΠ°ΠΉΠ»>B owner_private_key !
owner_private_key @ priv>pub owner_public_key !
dictnew orders !
0 owner_wc !
0 owner_account_id !
<b 0 32 u, owner_public_key @ b, gram, owner_wc i, owner_account_id 256 orders dict, b> ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ !Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΡΡΡΡΠ°Π²ΠΈΠΌ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡ ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π±ΡΠΎΡΡΠ°.
ΠΡΡΠ²ΠΎ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΡΠ΅Π΄Π°Π΄Π΅ΠΌ, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π°ΠΌΠ΅ Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΈΡ ΠΊΠ»ΡΡ ΠΈ Π½Π°ΠΊΡΠ°Ρ ΡΠΎΡΠΌΡΠ»ΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° message_to_sign
ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° message_to_send
ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° signature
<b 0 32 u, b> message_to_sign !
message_to_sign @ hashu owner_private_key @ ed25519_sign_uint signature !
<b signature @ b, 0 32 u, b> <s ! Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈΠΌ Π² ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°, Π΅ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° message_to_send, ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ hashu, ed25519_sign_uint ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ .
Π Π·Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΡΡΠ° ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅.
message_to_send @
recv_external
code
storage @
c7
runvmctxΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΉΠ»ΡΡ Ρ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ.
ΠΠ΅ΠΊΠ° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΡΡΠ° ΠΈ ΡΠΎΠΉ ΡΠ΅ ΠΏΠ°Π΄Π½Π΅, Π·Π°ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ ΡΠ°ΠΊΡΠ² ΡΠΎΡΠΌΠ°Ρ ΠΈ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ°.
ΠΡΡΠ²ΠΎ ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ΅ΠΌ 512 Π±ΠΈΡΠ° ΠΎΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠ° ΠΎΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΡΠ΅ Π³ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΌ Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ΅ΠΌ 32 Π±ΠΈΡΠ° ΠΎΡ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° Π±ΡΠΎΡΡΠ°.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°, ΡΠ΅ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅.
Π‘Π»Π΅Π΄Π²Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π±ΡΠΎΡΡΠ°, ΠΏΠΎΠ΄Π°Π΄Π΅Π½ ΠΎΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ°. ΠΠΊΠΎ Π½Π΅ΡΠΎ Π½Π΅ ΡΡΠ²ΠΏΠ°Π΄Π½Π΅, ΡΠ΅ Ρ Π²ΡΡΠ»ΠΈΠΌ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΊΠΎΠ΄.
var signature = in_msg~load_bits(512);
var message = in_msg;
int msg_seqno = message~load_uint(32);
(int stored_seqno, int pubkey, int order_seqno, int number_of_wins, int incoming_amount, int outgoing_amount, int owner_wc, int owner_account_id, cell orders) = unpack_state();
throw_unless(33, msg_seqno == stored_seqno);
throw_unless(34, check_signature(slice_hash(in_msg), signature, pubkey));Π‘ΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ ΠΊΠΎΠΌΠΈΡ .
Π©Π΅ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΈ ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ, ΡΠ΅ Π²ΡΠΎΡΠΈΡΡ ΡΠ΅ΡΡ ΠΏΠ°Π΄Π°. ΠΠΎ Π΄Π²Π΅ ΠΏΡΠΈΡΠΈΠ½ΠΈ: Π½Π΅Π΄ΠΎΡΡΠΈΠ³ Π½Π° Π±ΠΈΡΠΎΠ²Π΅ Π² ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Π½Π΅Π΄ΠΎΡΡΠΈΠ³ Π½Π° Π±ΠΈΡΠΎΠ²Π΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, Π·Π°ΡΠΎΠ²Π° ΠΊΠΎΠ΄ΡΡ ΠΏΠ°Π΄Π° ΠΏΡΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π°. Π’ΡΡΠ±Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ΄ΠΏΠΈΡΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅, ΠΈ Π΄Π° ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ΅ΡΡ.
ΠΡΠ² Π²ΡΠΎΡΠΈΡ ΡΠ΅ΡΡ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ΄ΠΏΠΈΡΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°. Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ°ΠΉΠ»ΡΡ Ρ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°.
ΠΠ΅ΠΊΠ° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ΅ΡΠ²ΡΡΡΠΈ ΡΠ΅ΡΡ, Π² ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈΠΌ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΎ Ρ ΡΡΠΆΠ΄ ΡΠ°ΡΡΠ΅Π½ ΠΊΠ»ΡΡ. Π©Π΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ ΡΠ°ΡΡΠ΅Π½ ΠΊΠ»ΡΡ ΠΈ ΡΠ΅ Π³ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΌ Π² ΡΠ°ΠΉΠ» not-owner.pk. Π‘ ΡΠΎΠ·ΠΈ ΡΠ°ΡΡΠ΅Π½ ΠΊΠ»ΡΡ ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΌ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ. Π©Π΅ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΈ ΡΠ΅ ΡΠ΅ ΡΠ²Π΅ΡΠΈΠΌ, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Ρ. Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°.
Π‘Π΅Π³Π° Π½Π°ΠΊΡΠ°Ρ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
Π recv_external() Π©Π΅ ΠΏΡΠΈΠ΅ΠΌΠ°ΠΌΠ΅ Π΄Π²Π° ΡΠΈΠΏΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π½Π°ΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΡΠ΅ Π°ΠΊΡΠΌΡΠ»ΠΈΡΠ° Π·Π°Π³ΡΠ±ΠΈ Π½Π° ΠΈΠ³ΡΠ°ΡΠΈΡΠ΅, ΡΠ΅Π·ΠΈ ΠΏΠ°ΡΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π°Π½ΠΈ Π½Π° ΡΡΠ·Π΄Π°ΡΠ΅Π»Ρ Π½Π° Π»ΠΎΡΠ°ΡΠΈΡΡΠ°. ΠΠ΄ΡΠ΅ΡΡΡ Π½Π° ΠΏΠΎΡΡΡΠ΅ΠΉΠ»Π° Π½Π° ΡΡΠ·Π΄Π°ΡΠ΅Π»Ρ Π½Π° Π»ΠΎΡΠ°ΡΠΈΡΡΠ° ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π° Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
ΠΠ° Π²ΡΠ΅ΠΊΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ Π°Π΄ΡΠ΅ΡΠ°, Π½Π° ΠΊΠΎΠΉΡΠΎ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ Π³ΡΠ°ΠΌΠΎΠ²Π΅ΡΠ΅ Π½Π° Π·Π°Π³ΡΠ±ΠΈΠ»ΠΈΡΠ΅. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ Π³ΡΠ°ΠΌΠΎΠ²Π΅ ΠΎΡ Π»ΠΎΡΠ°ΡΠΈΡΡΠ° Π½Π° Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΠ°.
ΠΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΠΏΡΡΠ²ΠΎΡΠΎ. ΠΡΡΠ²ΠΎ ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ΅ΡΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°, ΡΠ΅ ΡΠ»Π΅Π΄ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡΡ Π΅ Π·Π°ΠΏΠ°Π·ΠΈΠ» Π½ΠΎΠ²ΠΈΡ Π°Π΄ΡΠ΅Ρ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π² ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΎΡΠ²Π΅Π½ Π±ΡΠΎΡΡΠ° ΠΈ Π½ΠΎΠ²ΠΈΡ Π°Π΄ΡΠ΅Ρ, Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°ΠΌΠ΅ ΠΎΡΠ΅ action 7-Π±ΠΈΡΠΎΠ²ΠΎ Π½Π΅ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»Π½ΠΎ ΡΡΠ»ΠΎ ΡΠΈΡΠ»ΠΎ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π½Π΅Π³ΠΎ, ΡΠ΅ ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΠΌ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π² ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
<b 0 32 u, 1 @ 7 new_owner_wc i, new_owner_account_id 256 b> ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅_Π·Π°_ΠΏΠΎΠ΄ΠΏΠΈΡ !Π ΡΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π Fift. ΠΠ΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π΅ ΠΎΠΏΠΈΡΠ°Π½Π° Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° Fift.
Ρ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡ.
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΡΡΠ° ΠΈ ΡΠ΅ ΡΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅, ΡΠ΅ ΡΠΎΠΉ ΠΏΠ°Π΄Π°. Π‘Π΅Π³Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΠ° Π½Π° Π»ΠΎΡΠ°ΡΠΈΡΡΠ°.
Π ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π΄Π° ΠΏΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ message, ΡΠ΅ΡΠ΅ΠΌ Π² action. ΠΠ° ΠΏΡΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π° action: ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π°Π΄ΡΠ΅ΡΠ° ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π³ΡΠ°ΠΌΠΈ.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ΡΠ΅ΠΌ Π½ΠΎΠ²ΠΈΡ Π°Π΄ΡΠ΅Ρ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΈ Π³ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ.
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ ΡΡΠ΅ΡΠΈΡΡ ΡΠ΅ΡΡ ΠΏΠ°Π΄Π°. ΠΠ°Π΄Π° Π·Π°ΡΠ°Π΄ΠΈ ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡΡ ΡΠ΅Π³Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠ°ΡΡΠΈΡΠ° 7 Π±ΠΈΡΠ° ΠΎΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π°Ρ Π² ΡΠ΅ΡΡΠ°. Π©Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ action. Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΌΠΈΠ½Π°Π²Π°Ρ. ΠΊΠΎΠΌΠΈΡ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅. ΠΡΠ»ΠΈΡΠ½ΠΎ.
Π‘Π΅Π³Π° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°Π½ΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³ΡΠ°ΠΌΠΈ Π½Π° Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈΡ ΠΏΠΎ-ΡΠ°Π½ΠΎ Π°Π΄ΡΠ΅Ρ.
ΠΡΡΠ²ΠΎ ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠ΅ΡΡ. Π©Π΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π΄Π²Π° ΡΠ΅ΡΡΠ° - Π΅Π΄ΠΈΠ½, ΠΊΠΎΠ³Π°ΡΠΎ Π±Π°Π»Π°Π½ΡΡΡ Π½Π΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½, ΠΈ Π²ΡΠΎΡΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΈΠ½Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ. Π’Π΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΡΡ .
Π‘Π΅Π³Π° ΡΠ΅ Π΄ΠΎΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄Π°. ΠΡΡΠ²ΠΎ ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π΄Π²Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΡΡΠ²ΠΈΡΡ Π΅ get ΠΌΠ΅ΡΠΎΠ΄ Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠΈΡ Π±Π°Π»Π°Π½Ρ Π½Π° ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
int balance() inline_ref method_id {
return get_balance().pair_first();
}Π Π²ΡΠΎΡΠΈΡΡ Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π³ΡΠ°ΠΌΠΈ Π½Π° Π΄ΡΡΠ³ ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ. Π’ΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ·ΡΡΠ»ΠΎ ΠΊΠΎΠΏΠΈΡΠ°Ρ ΠΎΡ Π΄ΡΡΠ³ ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ.
() send_grams(int wc, int addr, int grams) impure {
;; int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool src:MsgAddress -> 011000
cell msg = begin_cell()
;; .store_uint(0, 1) ;; 0 <= ΡΠΎΡΠΌΠ°Ρ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ int_msg_info$0
;; .store_uint(1, 1) ;; 1 <= ihr Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½
;; .store_uint(1, 1) ;; 1 <= bounce = Π²ΡΡΠ½ΠΎ
;; .store_uint(0, 1) ;; 0 <= bounced = Π½Π΅Π²ΡΡΠ½ΠΎ
;; .store_uint(4, 5) ;; 00100 <= Π°Π΄ΡΠ΅ΡΠ½ΠΈ ΡΠ»Π°Π³ΠΎΠ²Π΅, anycast = Π½Π΅Π²ΡΡΠ½ΠΎ, 8-Π±ΠΈΡΠΎΠ² ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΊΠ»ΠΎΠ½
.store_uint (196, 9)
.store_int(wc, 8)
.store_uint(addr, 256)
.store_grams(grams)
.store_uint(0, 107); ;; 106 Π½ΡΠ»ΠΈ + 0 ΠΊΠ°ΡΠΎ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ, ΡΠ΅ Π½ΡΠΌΠ° ΠΊΠ»Π΅ΡΠΊΠ° Ρ Π΄Π°Π½Π½ΠΈ.
.end_cell();
send_raw_message(msg, 3); ;; ΡΠ΅ΠΆΠΈΠΌ, 2 Π·Π° ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅, 1 Π·Π° ΠΏΠ»Π°ΡΠ΅Ρ Π½Π° ΡΠ°ΠΊΡΠΈΡΠ΅, 64 Π·Π° Π²ΡΡΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π²Ρ
ΠΎΠ΄ΡΡΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅
}ΠΠΎΠ±Π°Π²ΡΠΌΠ΅ ΡΠ΅Π·ΠΈ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΈ ΠΏΠΈΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈΠΊΠ°. ΠΡΡΠ²ΠΎ ΠΏΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π³ΡΠ°ΠΌΠΈ ΠΎΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ Π±Π°Π»Π°Π½ΡΠ°, Π°ΠΊΠΎ Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π°, Ρ Π²ΡΡΠ»ΡΠΌΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΠΊΠΎ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄, ΡΠΎΠ³Π°Π²Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ Π³ΡΠ°ΠΌΠΈ Π½Π° Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈΡ Π°Π΄ΡΠ΅Ρ ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π±ΡΠΎΡΡΠ°.
int amount_to_send = message~load_grams();
throw_if(36, amount_to_send + 500000000 > balance());
accept_message();
send_grams(owner_wc, owner_account_id, amount_to_send);
set_data(pack_state(stored_seqno + 1, pubkey, order_seqno, number_of_wins, incoming_amount, outgoing_amount, owner_wc, owner_account_id, orders));ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°. Π©Π΅ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΈ ΡΠ΅ ΡΠ΅ ΡΠ²Π΅ΡΠΈΠΌ, ΡΠ΅ ΡΠ΅ ΠΌΠΈΠ½Π°Π²Π°Ρ.
ΠΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠΈΠΌ, Π·Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ Π²Π·ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠΈΡΡΠΈΡ. Π§ΡΠΎΠ±Ρ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ» Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠ»Π΅ Π±Π°Π·ΠΎΠ²ΡΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ accept_message().
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π³ΡΠ°ΠΌΡ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΠ³ΡΠΎΠΊΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΡΠΌΠΌΡ ΠΏΡΠΈ Π²ΡΠΈΠ³ΡΡΡΠ΅, ΠΈ ΡΡΠ΅ΡΡ Π²Π»Π°Π΄Π΅Π»ΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠΈΠ³ΡΡΡΠ΅.
Π‘Π½Π°ΡΠ°Π»Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ Π°Π΄ΡΠ΅Ρ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π³ΡΠ°ΠΌΡ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ.
ΠΠ΄ΡΠ΅Ρ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΠΈΡΠ΅Π»: 32-Π±ΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° workchain ΠΈ 256-Π±ΠΈΡΠ½ΠΎΠ΅ Π½Π΅ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ° Π² ΡΡΠΎΠΌ workchain. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, -1 ΠΈ 12345, ΡΡΠΎΡ Π°Π΄ΡΠ΅Ρ ΠΌΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ Π² ΡΠ°ΠΉΠ».
Π― ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π» ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° ΠΈΠ· .
// ( wc addr fname -- ) Save address to file in 36-byte format
{ -rot 256 u>B swap 32 i>B B+ swap B>file } : save-addressΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Fift. ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Fift Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
~\/TON\/build\/crypto\/fift -i Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π² ΡΡΠ΅ΠΊ -1, 12345 ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π° "sender.addr":
-1 12345 "sender.addr" Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ -rot, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΄Π²ΠΈΠ³Π°Π΅Ρ ΡΡΠ΅ΠΊ ΡΠ°ΠΊ, ΡΡΠΎ Π½Π° Π²Π΅ΡΡΠΈΠ½Π΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°:
"sender.addr" -1 12345256 u>B ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ 256-Π±ΠΈΡΠ½ΠΎΠ΅ Π½Π΅ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ Π² Π±Π°ΠΉΡΡ.
"sender.addr" -1 BYTES:0000000000000000000000000000000000000000000000000000000000003039swap ΠΌΠ΅Π½ΡΠ΅Ρ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π²Π° Π²Π΅ΡΡ
Π½ΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΠ΅ΠΊΠ°.
"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 -132 i>B ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ 32-Π±ΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ Π² Π±Π°ΠΉΡΡ.
"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 BYTES:FFFFFFFFB+ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π΄Π²Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±Π°ΠΉΡΠΎΠ².
"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039FFFFFFFFΠ‘Π½ΠΎΠ²Π° swap.
BYTES:0000000000000000000000000000000000000000000000000000000000003039FFFFFFFF "sender.addr" Π Π½Π°ΠΊΠΎΠ½Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π·Π°ΠΏΠΈΡΡ Π±Π°ΠΉΡΠΎΠ² Π² ΡΠ°ΠΉΠ» B>file. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π½Π°Ρ ΡΡΠ΅ΠΊ ΠΏΡΡΡ. ΠΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Fift. Π ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΡΠΎΠ·Π΄Π°Π½ ΡΠ°ΠΉΠ» sender.addr. ΠΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌ ΡΠ°ΠΉΠ» Π² ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ test\/addresses\/.
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π³ΡΠ°ΠΌΡ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ. .
Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΉΠΌΡΠΌΡΡ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Π»ΠΎΡΠ΅ΡΠ΅ΠΈ.
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ, ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ bounced ΠΈΠ»ΠΈ Π½Π΅Ρ, Π΅ΡΠ»ΠΈ bounced, ΡΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌ. bounced ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Π²Π΅ΡΠ½ΡΡ Π³ΡΠ°ΠΌΡ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ°. ΠΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π³ΡΠ°ΠΌΡ, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π±Π°Π»Π°Π½Ρ: Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΌ ΠΏΠΎΠ»Π³ΡΠ°ΠΌΠΌΠ°, ΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΠΌ.
Π‘Π»Π΅Π΄Π²Π° Π΄Π° ΠΏΠ°ΡΡΠ½Π΅ΠΌ Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΡΠΌΠ°ΡΡΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°, ΠΎΡ ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ.
Π§Π΅ΡΠ΅ΠΌ Π΄Π°Π½Π½ΠΈ ΠΎΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΡΡΠΈΠ²Π°ΠΌΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ Π·Π°Π»ΠΎΠ·ΠΈ ΠΎΡ ΠΈΡΡΠΎΡΠΈΡΡΠ°, Π°ΠΊΠΎ ΡΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π΄Π²Π°Π΄Π΅ΡΠ΅Ρ. ΠΠ° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ
ΡΡΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. pack_order(), unpack_order(), remove_old_orders().
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ Π΄Π°Π»ΠΈ Π±Π°Π»Π°Π½ΡΡΡ Π΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½ Π·Π° ΠΈΠ·ΠΏΠ»Π°ΡΠ°Π½Π΅, Π² ΡΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°ΠΉ ΡΠΌΠ΅ΡΠΊΠ°ΡΠ° ΡΠ΅ ΡΡΠΈΡΠ° Π·Π° Π½Π΅ Π·Π°Π»ΠΎΠ³, Π° Π·Π° ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ΡΠΎ Π² orders.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π°, Π²Π°ΠΆΠ½ΠΎΡΠΎ Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΡΠΎ Π½Π° ΡΠΌΠ°ΡΡΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
ΠΡΡΠ²ΠΎ, Π°ΠΊΠΎ ΠΈΠ³ΡΠ°ΡΡΡ Π·Π°Π³ΡΠ±ΠΈ, Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ Π³ΠΎ Π² ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° Π·Π°Π»ΠΎΠ·ΠΈΡΠ΅, ΠΈ Π°ΠΊΠΎ ΡΡΠΌΠ°ΡΠ° Π΅ Π½Π°Π΄ 3 Π³ΡΠ°ΠΌΠ°, ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ 1/3 Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΠ° Π½Π° ΡΠΌΠ°ΡΡΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
ΠΠΊΠΎ ΠΈΠ³ΡΠ°ΡΡΡ ΡΠΏΠ΅ΡΠ΅Π»ΠΈ, ΠΈΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ ΡΠ΄Π²ΠΎΠ΅Π½Π°ΡΠ° ΡΡΠΌΠ° Π½Π° Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΈΠ³ΡΠ°ΡΠ° ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° Π·Π°Π»ΠΎΠ³Π° Π² ΠΈΡΡΠΎΡΠΈΡΡΠ°.
() recv_internal(int order_amount, cell in_msg_cell, slice in_msg) impure {
var cs = in_msg_cell.begin_parse();
int flags = cs~load_uint(4); ;; int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool
if (flags & 1) { ;; ΠΈΠ³Π½ΠΎΡΠΈΡΠ°ΠΉ Π±ΠΎΠ½ΡΠΈΡΠ°Π½Π΅ΡΠΎ
return ();
}
if (order_amount < 500000000) { ;; ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π³ΡΠ°ΠΌΠΎΠ²Π΅ Π±Π΅Π· Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ
return ();
}
slice src_addr_slice = cs~load_msg_addr();
(int src_wc, int src_addr) = parse_std_addr(src_addr_slice);
(int stored_seqno, int pubkey, int order_seqno, int number_of_wins, int incoming_amount, int outgoing_amount, int owner_wc, int owner_account_id, cell orders) = unpack_state();
orders = remove_old_orders(orders, order_seqno);
if (balance() = 4) {
builder order = pack_order(order_seqno, 3, now(), order_amount, src_wc, src_addr);
orders~udict_set_builder(32, order_seqno, order);
set_data(pack_state(stored_seqno, pubkey, order_seqno + 1, number_of_wins, incoming_amount + order_amount, outgoing_amount, owner_wc, owner_account_id, orders));
if (order_amount > 3000000000) {
send_grams(owner_wc, owner_account_id, order_amount / 3);
}
return ();
}
send_grams(src_wc, src_addr, 2 * order_amount);
builder order = pack_order(order_seqno, 2, now(), order_amount, src_wc, src_addr);
orders~udict_set_builder(32, order_seqno, order);
set_data(pack_state(stored_seqno, pubkey, order_seqno + 1, number_of_wins + 1, incoming_amount, outgoing_amount + 2 * order_amount, owner_wc, owner_account_id, orders));
}Π ΡΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ. .
Π‘Π΅Π³Π° ΠΎΡΡΠ°Π²Π° ΡΠ°ΠΌΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ GET ΠΌΠ΅ΡΠΎΠ΄ΠΈ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠ²ΡΠ½ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° (ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ Π΄Π° ΠΈΠ·Π²Π»ΠΈΡΠ°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΡΠΌΠ°ΡΡΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°).
. ΠΠ° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΌΠ°ΡΡΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΠΎ-Π΄ΠΎΠ»Ρ.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π·Π°Π±ΡΠ°Π²ΠΈΡ Π΄Π° Π΄ΠΎΠ±Π°Π²Ρ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π°ΡΠ° Π·Π°ΡΠ²ΠΊΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ. . Π ΠΎΡΠ΅ Π±ΡΠ³ Ρ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ΡΠΎ Π½Π° 1/3 ΠΎΡ ΡΡΠΌΠ°ΡΠ° Π½Π° Π°ΠΊΠ°ΡΠ½ΡΠ° Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΠ°.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΡΡΠ°Π²Π° Π΄Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΌΠ΅ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°. ΠΠ΅ΠΊΠ° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΠ°ΠΏΠΊΠ° requests.
Π ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° ΡΠΈ Π²Π·Π΅Ρ ΠΊΠΎΠ΄Π° Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ ΠΊΠΎΠΉΡΠΎ Π² ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
ΠΡ ΡΠΎΠ²Π°, Π½Π° ΠΊΠΎΠ΅ΡΠΎ ΡΠΈ Π·Π°ΡΠ»ΡΠΆΠ°Π²Π° Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. ΠΠΈΠ΅ ΡΠΎΡΠΌΠΈΡΠ°ΠΌΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΈ Π²Ρ ΠΎΠ΄ΡΡΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π°Π΄ΡΠ΅Ρ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°, Ρ.Π΅. Π°Π΄ΡΠ΅ΡΡΡ Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΎΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ Π² TON. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π½Π° ΡΠΎΠ·ΠΈ Π°Π΄ΡΠ΅Ρ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΡΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΡΠ°ΠΌΠ° ΠΈ ΡΠ°ΠΌΠΎ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈ ΡΠ°ΠΉΠ»ΡΡ ΡΡΡ ΡΠ°ΠΌΠΈΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΡΠ°ΠΊΡΡΠ²Π° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π² Π½Π΅Π³ΠΎ (Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΈ). .
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ΄Π° Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ lottery-query.boc ΡΠ°ΠΉΠ»Π° ΠΈ Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
~\/TON\/build\/crypto\/fift -s requests\/new-lottery.fif 0ΠΠ΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅: lottery-query.boc, lottery.addr, lottery.pk.
Π‘ΡΠ΅Π΄ Π΄ΡΡΠ³ΠΎΡΠΎ, Π² Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
new wallet address = 0:044910149dbeaf8eadbb2b28722e7d6a2dc6e264ec2f1d9bebd6fb209079bc2a
(ΠΠ°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° Π°Π΄ΡΠ΅ΡΠ° Π² ΡΠ°ΠΉΠ» lottery.addr)
Non-bounceable address (for init): 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd
Bounceable address (for later access): kQAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8KpFYΠΠ° ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π·Π°ΡΠ²ΠΊΠ° Π² TON
$ .\/lite-client\/lite-client -C ton-lite-client-test1.config.json
getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8KsydΠ ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ, ΡΠ΅ Π°ΠΊΠ°ΡΠ½ΡΡΡ Ρ ΡΠ°ΠΊΡΠ² Π°Π΄ΡΠ΅Ρ Π΅ ΠΏΡΠ°Π·Π΅Π½.
account state is emptyΠΠ·ΠΏΡΠ°ΡΠ°ΠΌΠ΅ Π½Π° Π°Π΄ΡΠ΅Ρ 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd 2 Gram ΠΈ ΡΠ»Π΅Π΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΡΡΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°. ΠΠ° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π³ΡΠ°ΠΌΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ , Π° ΡΠ΅ΡΡΠΎΠ²ΠΈ Π³ΡΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ°ΡΠ΅ ΠΎΡ Π½ΡΠΊΠΎΠ³ΠΎ ΠΎΡ ΡΠ°ΡΠ°, Π·Π° ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π° Π² ΠΊΡΠ°Ρ Π½Π° ΡΡΠ°ΡΠΈΡΡΠ°.
> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8KsydΠΡΠΎΠ²Π΅ΡΡΠ²Π°, ΡΠ΅ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΡΠ΅ Π΅ ΠΏΠΎΡΠ²ΠΈΠ» Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ (state:account_uninit) ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Ρ ΡΠ°ΠΊΡΠ² Π°Π΄ΡΠ΅Ρ ΠΈ Π±Π°Π»Π°Π½Ρ 1 000 000 000 Π½Π°Π½ΠΎΠ³ΡΠ°ΠΌΠ°.
ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΌΠ΅ΡΠΊΠ°ΡΠ° Π΅ (ΡΠΌΠ΅ΡΠΊΠ°
Π°Π΄ΡΠ΅Ρ:(addr_std
anycast:Π½ΡΠΌΠ° workchain_id:0 Π°Π΄ΡΠ΅Ρ:x044910149DBEAF8EADBB2B28722E7D6A2DC6E264EC2F1D9BEBD6FB209079BC2A)
storage_stat:(storage_info
used:(storage_used
ΠΊΠ»Π΅ΡΠΊΠΈ:(var_uint len:1 ΡΡΠΎΠΉΠ½ΠΎΡΡ:1)
Π±ΠΈΡΠΎΠ²Π΅:(var_uint len:1 ΡΡΠΎΠΉΠ½ΠΎΡΡ:103)
ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ ΠΊΠ»Π΅ΡΠΊΠΈ:(var_uint len:0 ΡΡΠΎΠΉΠ½ΠΎΡΡ:0)) ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ ΠΏΠ»Π°ΡΠ΅Π½ΠΎ:1583257959
Π΄ΡΠ»ΠΆΠΈΠΌΠΎ ΠΏΠ»Π°ΡΠ°Π½Π΅:Π½ΡΠΌΠ°)
storage:(account_storage last_trans_lt:3825478000002
Π±Π°Π»Π°Π½Ρ:(Π²Π°Π»ΡΡΠΈ
Π³ΡΠ°ΠΌΠΎΠ²Π΅:(Π½Π°Π½ΠΎΠ³ΡΠ°ΠΌ
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ:(var_uint len:4 ΡΡΠΎΠΉΠ½ΠΎΡΡ:2000000000))
Π΄ΡΡΠ³ΠΈ:(Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²Π°Π»ΡΡΠΈ
dict:hme_empty))
ΡΡΡΡΠΎΡΠ½ΠΈΠ΅:account_uninit))
x{C00044910149DBEAF8EADBB2B28722E7D6A2DC6E264EC2F1D9BEBD6FB209079BC2A20259C2F2F4CB3800000DEAC10776091DCD650004_}
ΠΏΠΎΡΠ»Π΅Π΄Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ lt = 3825478000001 Ρ
Π°Ρ = B043616AE016682699477FFF01E6E903878CDFD6846042BA1BFC64775E7AC6C4
Π±Π°Π»Π°Π½ΡΡΡ Π½Π° ΡΠΌΠ΅ΡΠΊΠ°ΡΠ° Π΅ 2000000000ngΠ‘Π΅Π³Π° ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΌΠ΅ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°. Π©Π΅ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ lite-client ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ.
> ΠΈΠ·ΠΏΡΠ°ΡΠΈ ΡΠ°ΠΉΠ» lottery-query.boc
[ 1][t 2][1583008371.631410122][lite-client.cpp:966][!testnode] ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ ΠΎΡ ΡΠ°ΠΉΠ» lottery-query.boc
[ 3][t 1][1583008371.828550100][lite-client.cpp:976][!query] ΡΡΠ°ΡΡΡΡΡ Π½Π° Π²ΡΠ½ΡΠ½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΅ 1 ΠΠ΅ΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ Π΄Π°Π»ΠΈ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡΡ Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½.
> ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ
> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8KsydΠ‘ΡΠ΅Π΄ Π΄ΡΡΠ³ΠΎΡΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ.
storage:(account_storage last_trans_lt:3825499000002
Π±Π°Π»Π°Π½Ρ:(Π²Π°Π»ΡΡΠΈ
Π³ΡΠ°ΠΌΠΎΠ²Π΅:(Π½Π°Π½ΠΎΠ³ΡΠ°ΠΌ
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ:(var_uint len:4 ΡΡΠΎΠΉΠ½ΠΎΡΡ:1987150999))
Π΄ΡΡΠ³ΠΈ:(Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²Π°Π»ΡΡΠΈ
dict:hme_empty))
ΡΡΡΡΠΎΡΠ½ΠΈΠ΅:(account_activeΠΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ account_active.
Π‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΡ ΠΊΠΎΠΌΠΈΡ Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ .
Π‘Π΅Π³Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΡΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
ΠΠΎ ΡΠΎΡΠ½ΠΎ ΠΏΡΡΠ²Π°ΡΠ° Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π°Π΄ΡΠ΅ΡΠ° ΡΠ΅ Ρ ΠΎΡΡΠ°Π²ΠΈΠΌ Π·Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½Π° ΡΠ°Π±ΠΎΡΠ°, Π° Π²ΡΠΎΡΠ°ΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π³ΡΠ°ΠΌΠΎΠ²Π΅ Π½Π° Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΏΡΠΈΡΠ΅ΠΆΠ°ΡΠ΅Π»Ρ ΡΠ΅ Ρ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ. ΠΡΡΡΠ½ΠΎΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΡΡΠΎΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈ Π² ΡΠ΅ΡΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° Π³ΡΠ°ΠΌΠΎΠ²Π΅.
Π’Π°ΠΊΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈΠΌ Π½Π° ΡΠΌΠ°ΡΡΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°, ΠΊΡΠ΄Π΅ΡΠΎ msg_seqno 165, action 2 ΠΈ 9.5 Π³ΡΠ°ΠΌΠ° Π·Π° ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅.
<b 165 32 u, 2 7 9500000000 gram, b>ΠΠ΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π΄Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ ΡΠ°ΡΡΠ½ΠΈΡ ΠΊΠ»ΡΡ lottery.pk, ΠΊΠΎΠΉΡΠΎ Π±Π΅ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ ΠΏΠΎ-ΡΠ°Π½ΠΎ ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°. .
ΠΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° get-ΠΌΠ΅ΡΠΎΠ΄ΠΈ
Π‘Π΅Π³Π° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ get-ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π½Π° ΡΠΌΠ°ΡΡΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°.
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ lite-client ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ get-ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ
ΠΌΠ΅.
$ .\/lite-client\/lite-client -C ton-lite-client-test1.config.json
> runmethod 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd Π±Π°Π»Π°Π½Ρ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ: [ 104128 ]
ΡΠ΅Π·ΡΠ»ΡΠ°Ρ: [ 64633878952 ]
...Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΡΠ΄ΡΡΠΆΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ°, ΠΊΠΎΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π±Π°Π»Π°Π½Ρ() Π²ΡΡΠ½ΡΠ²Π° ΠΎΡ Π½Π°ΡΠΈΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ.
Π‘ΡΡΠΎΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΠΎΡΠ΅ Π·Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°.
> runmethod 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd get_seqno
...
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ: [ 77871 ]
ΡΠ΅Π·ΡΠ»ΡΠ°Ρ: [ 1 ] Π©Π΅ ΠΏΠΎΠΈΡΠΊΠ°ΠΌΠ΅ ΠΈΡΡΠΎΡΠΈΡ Π½Π° Π·Π°Π»ΠΎΠ·ΠΈΡΠ΅.
> runmethod 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd get_orders
...
arguments: [ 67442 ]
result: [ ([0 1 1583258284 10000000000 0 74649920601963823558742197308127565167945016780694342660493511643532213172308] [1 3 1583258347 4000000000 0 74649920601963823558742197308127565167945016780694342660493511643532213172308] [2 1 1583259901 50000000000 0 74649920601963823558742197308127565167945016780694342660493511643532213172308]) ] Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ lite-client ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅, Π·Π° Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Π½Π° ΡΠ°ΠΉΡΠ°.
ΠΠΎΠΊΠ°Π·Π²Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Π½Π° ΡΠ°ΠΉΡΠ°
ΠΠ°ΠΏΠΈΡΠ°Ρ ΠΏΡΠΎΡΡ ΡΠ΅Π±ΡΠ°ΠΉΡ Π½Π° Python, Π·Π° Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π°ΠΌ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° Π² ΡΠ΄ΠΎΠ±Π΅Π½ ΡΠΎΡΠΌΠ°Ρ. Π’ΡΠΊ Π½ΡΠΌΠ° Π΄Π° Π·Π°Π΄ΡΠ»Π±Π°Π²Π°ΠΌ ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΌ ΡΠ°ΠΉΡΠ°. .
ΠΠ°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΡΠ° ΠΊΡΠΌ TON ΡΠ΅ ΠΏΡΠ°Π²ΡΡ ΠΎΡ Python ΡΡΠ΅Π· lite-client. ΠΠ° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ, ΡΠ°ΠΉΡΡΡ Π΅ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈ Π² Docker ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π² Google Cloud. .
ΠΠΏΠΈΡΠ²Π°ΠΌΠ΅
Π‘Π΅Π³Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΠΌ Π³ΡΠ°ΠΌΠΎΠ²Π΅ Π·Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ ΠΎΡ . Π©Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈΠΌ 40 Π³ΡΠ°ΠΌΠ° ΠΈ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π°Π»ΠΎΠ³Π° Π·Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ ΡΠ°ΠΉΡΡΡ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΈΡΡΠΎΡΠΈΡ Π½Π° Π·Π°Π»ΠΎΠ·ΠΈΡΠ΅, ΡΠ΅ΠΊΡΡΠΈΡ ΠΏΡΠΎΡΠ΅Π½Ρ Π½Π° ΠΏΠ΅ΡΠ°Π»Π±Π° ΠΈ Π΄ΡΡΠ³Π° ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
, ΡΠ΅ ΠΏΡΡΠ²ΠΈΡΡ Π·Π°Π»ΠΎΠ³ ΡΠΏΠ΅ΡΠ΅Π»ΠΈΡ ΠΌΠ΅, Π° Π²ΡΠΎΡΠΈΡΡ Π·Π°Π³ΡΠ±ΠΈΡ ΠΌΠ΅.
Π‘Π»Π΅Π΄ΡΠ»ΠΎΠ²ΠΈΠ΅
Π‘ΡΠ°ΡΠΈΡΡΠ° ΡΡΠ°Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄ΡΠ»Π³Π°, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ , ΠΌΠΎΠΆΠ΅ Π±ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΅ ΠΈ ΠΏΠΎ-ΠΊΡΠ°ΡΠΊΠ°, Π° ΠΌΠΎΠΆΠ΅ Π±ΠΈ Π΅ ΡΠΎΡΠ½ΠΎ Π·Π° ΡΠΎΠ²Π΅ΠΊ, ΠΊΠΎΠΉΡΠΎ Π½ΠΈΡΠΎ Π½Π΅ Π·Π½Π°Π΅ Π·Π° TON ΠΈ ΠΈΡΠΊΠ° Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π½Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΡΠΎΡΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠΎΠΆΠ΅ Π±ΠΈ Π½ΡΠΊΠΎΠΈ Π½Π΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΠ±ΡΡΠ½Π΅Π½ΠΈ ΠΏΠΎ-ΠΏΡΠΎΡΡΠΎ.
ΠΠΎΠΆΠ΅ Π±ΠΈ Π½ΡΠΊΠΎΠΈ Π°ΡΠΏΠ΅ΠΊΡΠΈ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈ Π΅Π»Π΅Π³Π°Π½ΡΠ½ΠΎ, Π½ΠΎ ΠΈΠ½Π°ΡΠ΅ ΡΠ΅ΡΠ΅ Π΄Π° ΠΎΡΠ½Π΅ΠΌΠ΅ ΠΎΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° ΡΡΠ°ΡΠΈΡΡΠ°. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΡΠΌ Π½Π°ΠΏΡΠ°Π²ΠΈΠ» Π³ΡΠ΅ΡΠΊΠ° ΠΈΠ»ΠΈ Π½Π΅ΡΠΎ Π΄Π° Π½Π΅ ΡΡΠΌ ΡΠ°Π·Π±ΡΠ°Π», Π·Π°ΡΠΎΠ²Π° Π°ΠΊΠΎ ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Π΅ΡΠΎ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½Π°ΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈΠ»ΠΈ Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ ΠΊΠΎΠ΄ Π½Π° TON.
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠ°, ΡΠ΅ ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ°ΠΌΠΈΡΡ TON Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ Π² Π°ΠΊΡΠΈΠ²Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΌΠΎΠ³Π°Ρ Π΄Π° Π½Π°ΡΡΡΠΏΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄Π° ΡΡΡΠΏΡΡ Π½ΡΠΊΠΎΠΉ ΠΎΡ ΡΡΡΠΏΠΊΠΈΡΠ΅ Π² ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ (ΠΊΠ°ΠΊΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΏΠΈΡΠ΅Ρ , Π²Π΅ΡΠ΅ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡ ), Π½ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΅Π΄Π²Π° Π»ΠΈ ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ.
ΠΠ΅ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΡΠΏΠ΅ΠΊΡΠ»ΠΈΡΠ°ΠΌ ΠΎΡΠ½ΠΎΡΠ½ΠΎ Π±ΡΠ΄Π΅ΡΠ΅ΡΠΎ Π½Π° TON. ΠΠΎΠΆΠ΅ Π±ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ΡΠ΅ ΡΡΠ°Π½Π΅ Π½Π΅ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈ Π½ΠΈΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ΄Π΅Π»ΠΈΠΌ Π²ΡΠ΅ΠΌΠ΅ Π·Π° Π½Π΅ΠΉΠ½ΠΎΡΠΎ ΠΏΡΠΎΡΡΠ²Π°Π½Π΅ ΠΈ Π΄Π° Π·Π°Π΅ΠΌΠ΅ΠΌ Π½ΠΈΡΠ° Ρ Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ ΠΎΡΠ΅ ΡΠ΅Π³Π°.
ΠΠΌΠ° ΠΈ Libra ΠΎΡ Facebook, ΡΠΈΡΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½Π° Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ Π΅ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ° ΠΎΡ ΡΠ°Π·ΠΈ Π½Π° TON. ΠΠΎΡΡΠΈ Π½ΠΈΡΠΎ Π½Π΅ Π·Π½Π°ΠΌ Π·Π° Libra, Π½ΠΎ ΡΠΏΠΎΡΠ΅Π΄ ΡΠΎΡΡΠΌΠ°, Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° ΡΠ°ΠΌ Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ° ΠΎΡ ΡΠ°Π·ΠΈ Π² ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π½Π° TON. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΈ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π½Π° TON ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ°ΡΠΎ Π°Π½Π΄Π΅ΡΠ³ΡΠ°ΡΠ½Π΄, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠΎ Π΅ Π³ΠΎΡΠΈΠ½ΠΎ.
ΠΡΡΠ·ΠΊΠΈ
- ΠΡΠΈΡΠΈΠ°Π»Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π·Π° TON:
- ΠΡΠΈΡΠΈΠ°Π»Π΅Π½ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½Π° TON:
- ΠΡΠΈΡΠΈΠ°Π»Π΅Π½ ΠΏΠΎΡΡΡΠ΅ΠΉΠ» Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ:
- Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ° ΠΎΡ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ:
- ΠΡΡΠ·ΠΊΠ° ΠΊΡΠΌ ΡΠ°ΠΉΡΠ° Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°:
- Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π·Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π° Visual Studio Code Π·Π° FunC:
- Π§Π°Ρ Π·Π° TON Π² Telegram, ΠΊΠΎΠΉΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ° ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅. ΠΠΈΡΠ»Ρ, ΡΠ΅ Π½Π΅ Π³ΡΠ΅ΡΠ°, Π°ΠΊΠΎ ΠΊΠ°ΠΆΠ°, ΡΠ΅ ΡΠ°ΠΌ ΡΠ° Π²ΡΠΈΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΏΠΈΡΠ°Π»ΠΈ Π½Π΅ΡΠΎ Π·Π° TON. ΠΠΎΠΆΠ΅ ΡΡΡΠΎ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ°Ρ ΡΠ΅ΡΡΠΎΠ²ΠΈ Π³ΡΠ°ΠΌΠΎΠ²Π΅.
- ΠΡΠ΅ Π΅Π΄ΠΈΠ½ ΡΠ°Ρ Π·Π° TON, Π² ΠΊΠΎΠΉΡΠΎ Π½Π°ΠΌΠ΅ΡΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:
- ΠΡΡΠ²ΠΈ Π΅ΡΠ°ΠΏ Π½Π° ΠΊΠΎΠ½ΠΊΡΡΡΠ°:
- ΠΡΠΎΡΠΈ Π΅ΡΠ°ΠΏ Π½Π° ΠΊΠΎΠ½ΠΊΡΡΡΠ°:
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
