αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŸαžšαžŸαŸαžš αž“αž·αž„αž”αŸ„αŸ‡αž•αŸ’αžŸαžΆαž™αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž€αŸ’αž“αž»αž„ Telegram Open Network (TON)

αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŸαžšαžŸαŸαžš αž“αž·αž„αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž“αŸ…αž€αŸ’αž“αž»αž„ TON

αžαžΎαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈ?

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž…αžΌαž›αžšαž½αž˜αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαž€αž½αžαž”αŸ’αžšαž‡αŸ‚αž„ Telegram blockchain αžŠαŸ†αž”αžΌαž„ (αž–αžΈαžš) αž˜αž·αž“αž”αžΆαž“αž™αž€αžšαž„αŸ’αžœαžΆαž“αŸ‹αž‘αŸαž αžΎαž™αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž€αžαŸ‹αžαŸ’αžšαžΆαž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž˜αž½αž™αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αžœαžΆαž’αŸ’αž›αžΆαž€αŸ‹αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž—αŸ’αž›αŸαž…αž—αŸ’αž›αžΆαŸ†αž„αž αžΎαž™αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž‡αž½αž™αŸ” αž’αŸ’αž“αž€αžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αŸ”

αžŠαŸ„αž™αžŸαžΆαžšαžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž…αž„αŸ‹αžŸαžšαžŸαŸαžšαž€αžΌαžŠαž’αžšαžΌαž”αžΈ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž˜αž½αž™αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžαŸ’αžαž”αž‘αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαžšαžŸαŸαžšαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž†αŸ’αž“αŸ„αžαž—αŸ’αž›αžΆαž˜αŸ— αž“αž·αž„αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž–αžΈ TON αžŠαŸ„αž™αž˜αž·αž“αž”αŸ’αžšαžΎαž€αžΆαžšαž•αŸ’αž‘αž»αž€αž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜αŸ”

αž’αžαŸ’αžαž”αž‘αž“αžΉαž„αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž…αž„αŸ‹αž’αŸ’αžœαžΎαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžŠαŸ†αž”αžΌαž„αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αž€αŸ’αž“αž»αž„ TON αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αžŠαžΉαž„αžαžΆαžαŸ’αžšαžΌαžœαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαžŽαžΆαŸ”

αžŠαŸ„αž™αž”αŸ’αžšαžΎαž†αŸ’αž“αŸ„αžαž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž‘αŸ…αž–αžΈαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž”αžšαž·αžŸαŸ’αžαžΆαž“αž‘αŸ…αž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒ αž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αžœαžΆ αž“αž·αž„αžŸαžšαžŸαŸαžšαž‚αŸαž αž‘αŸ†αž–αŸαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αž‘αž½αž› αž“αž·αž„αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”

αž’αŸ†αž–αžΈαž€αžΆαžšαž…αžΌαž›αžšαž½αž˜αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαž€αž½αžαž”αŸ’αžšαž‡αŸ‚αž„

αž€αžΆαž›αž–αžΈαžαŸ‚αžαž»αž›αžΆαž†αŸ’αž“αžΆαŸ†αž˜αž»αž“ Telegram αž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸαž€αžΆαžšαž”αŸ’αžšαž€αž½αžαž”αŸ’αžšαž‡αŸ‚αž„ blockchain αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž—αžΆαžŸαžΆαžαŸ’αž˜αžΈαŸ” Fift ΠΈ FunC. αžœαžΆαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž–αžΈαž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„αž‘αžΆαŸ†αž„αž”αŸ’αžšαžΆαŸ†αŸ” αžαŸ’αž‰αž»αŸ†β€‹αž‚αž·αžβ€‹αžαžΆβ€‹αžœαžΆβ€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž›αŸ’αž’β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž”αŸ’αž›αŸ‚αž€β€‹αž–αžΈβ€‹αž‚αŸ αžšαŸ€αž“β€‹αž—αžΆαžŸαžΆ αž“αž·αž„β€‹αž’αŸ’αžœαžΎβ€‹αž’αŸ’αžœαžΈβ€‹αž˜αž½αž™ αž‘αŸ„αŸ‡β€‹αž”αžΈβ€‹αž‡αžΆβ€‹αžαŸ’αž‰αž»αŸ†β€‹αž˜αž·αž“β€‹αžαŸ’αžšαžΌαžœβ€‹αžŸαžšαžŸαŸαžšβ€‹αž’αŸ’αžœαžΈβ€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αŸ€αžβ€‹αž“αŸ…β€‹αž–αŸαž›β€‹αž’αž“αžΆαž‚αžαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž”αŸ’αžšαž’αžΆαž“αž”αž‘αž‚αžΊαž‡αžΆαž”αŸ‹αž‡αžΆαž“αž·αž…αŸ’αž…αž“αŸ…αž›αžΎαž”αž”αžΌαžšαž˜αžΆαžαŸ‹αŸ”

αžœαžΆαžŸαž˜αž“αžΉαž„αž“αž·αž™αžΆαž™αžαžΆαžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž˜αžΆαž“αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž‘αŸαŸ”

αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž‚αŸ’αžšαŸ„αž„αž“αžΉαž„αž…αžΌαž›αžšαž½αž˜αžšαž αžΌαžαžŠαž›αŸ‹αž‘αžΈαž”αž‰αŸ’αž…αž”αŸ‹αžšαž αžΌαžαžŠαž›αŸ‹αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŸαžšαžŸαŸαžšαž’αžαŸ’αžαž”αž‘αž–αž·αž“αž·αžαŸ’αž™αž‘αžΎαž„αžœαž·αž‰ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αžšαžΆαž‡αŸαž™αž—αŸ’αž›αžΆαž˜αŸ—αž“αŸ…αžœαž‚αŸ’αž‚αž‘αžΈαž˜αž½αž™αŸ” αžαŸ’αž‰αž»αŸ† αž”αžΆαž“αžŸαžšαžŸαŸαžšαž€αžΆαž”αžΌαž”αž˜αž½αž™αŸ” αžŠαŸ„αž™αž˜αžΆαž“αž αžαŸ’αžαž›αŸαžαžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž›αžΎ FunC αž αžΎαž™αž‡αžΆαž‘αžΌαž‘αŸ…αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž™αž€αžœαžΆαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž›αžΎαž—αžΆαž–αžšαžΉαž„αž˜αžΆαŸ†.

αž“αŸ…β€‹αž–αŸαž›β€‹αž“αŸ„αŸ‡ αžαŸ’αž‰αž»αŸ†β€‹αž‚αž·αžβ€‹αžαžΆβ€‹αž“αŸαŸ‡β€‹αž‚αžΊβ€‹αž–αž·αžβ€‹αž‡αžΆβ€‹αž‚αŸ’αžšαž”αŸ‹β€‹αž‚αŸ’αžšαžΆαž“αŸ‹β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž™αž€β€‹αž™αŸ‰αžΆαž„β€‹αž αŸ„αž…β€‹αžŽαžΆαžŸαŸ‹β€‹αž€αž“αŸ’αž›αŸ‚αž„β€‹αž‘αž‘αž½αž›β€‹αžšαž„αŸ’αžœαžΆαž“αŸ‹αŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž’αŸ’αž“αž€αž…αžΌαž›αžšαž½αž˜αž”αŸ’αžšαž αŸ‚αž› 40 αž“αžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜ 60 αž“αžΆαž€αŸ‹αž”αžΆαž“αž€αŸ’αž›αžΆαž™αž‡αžΆαž’αŸ’αž“αž€αžˆαŸ’αž“αŸ‡αžšαž„αŸ’αžœαžΆαž“αŸ‹ αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž€αŸαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž–αž½αž€αž‚αŸαžŠαŸ‚αžšαŸ” αž‡αžΆαž‘αžΌαž‘αŸ… αž˜αž·αž“αž˜αžΆαž“αž’αŸ’αžœαžΈαžαž»αžŸαž‡αžΆαž˜αž½αž™αžšαžΏαž„αž“αŸαŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αžšαžΏαž„αž˜αž½αž™αžšαŸ†αžαžΆαž“αžαŸ’αž‰αž»αŸ†αŸ” αž“αŸ…αž–αŸαž›αž”αŸ’αžšαž€αžΆαžŸαž›αž‘αŸ’αž’αž•αž› αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž‘αžΎαž„αžœαž·αž‰αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž‘αžΆαž“αŸ‹αž”αžΆαž“αž’αŸ’αžœαžΎαž‘αŸ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž½αžšαž’αŸ’αž“αž€αž…αžΌαž›αžšαž½αž˜αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‡αž‡αŸ‚αž€αžαžΆαžαžΎαž˜αžΆαž“αž’αŸ’αž“αž€αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αžœαžΆαž‘αŸ αž‚αžΊαž˜αž·αž“αž˜αžΆαž“αž‘αŸαŸ”

αžαžΆαž˜αž˜αžΎαž›αž‘αŸ…αžŠαŸ„αž™αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž…αŸ†αž–αŸ„αŸ‡αžŸαžΆαžšαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž–αžΈαžšαžαŸ’αž„αŸƒαž€αŸ’αžšαŸ„αž™αž˜αž€αž…αŸ…αž€αŸ’αžšαž˜αž”αžΆαž“αž”αž‰αŸ’αž…αŸαž‰αž˜αžαž·αž˜αž½αž™ αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž“αŸ…αžαŸ‚αž˜αž·αž“αž™αž›αŸ‹αžαžΆαžαžΎαž–αž½αž€αž‚αŸαžαž€αžαžΆαž“αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αžŠαŸ„αž™αž…αŸƒαžŠαž“αŸ’αž™αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžœαž·αž“αž·αž…αŸ’αž†αŸαž™ αž¬αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‚αž·αžαžαžΆαžœαžΆαž’αžΆαž€αŸ’αžšαž€αŸ‹αžαŸ’αž›αžΆαŸ†αž„αžŠαŸ‚αž›αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž€αžΆαžšαž˜αžαž·αž™αŸ„αž”αž›αŸ‹αŸ” αžαŸ’αž‰αž»αŸ†β€‹αž”αžΆαž“β€‹αžŸαž½αžšβ€‹αžŸαŸ†αžŽαž½αžšβ€‹αž˜αž½αž™β€‹αž“αŸ…β€‹αž›αžΎβ€‹αž‘αŸ†αž–αŸαžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž˜αž·αž“β€‹αž”αžΆαž“β€‹αž‘αž‘αž½αž›β€‹αž…αž˜αŸ’αž›αžΎαž™αŸ” αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαžœαžΆαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαžšαžΏαž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŠαŸ‚αž›αž‡αžΆαž’αŸ’αž“αž€αžœαž·αž“αž·αž…αŸ’αž†αŸαž™αž€αŸαžŠαŸ„αž™ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαžœαžΆαž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαžŸαžΆαžšαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αž‘αŸαŸ”

αž–αŸαž›αžœαŸαž›αžΆαž‡αžΆαž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž›αžΎαž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžŸαžšαžŸαŸαžšαž’αžαŸ’αžαž”αž‘αž˜αž½αž™αŸ” αžŠαŸ„αž™αžŸαžΆαžšαž˜αž·αž“αž‘αžΆαž“αŸ‹αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž…αŸ’αžšαžΎαž“ αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž“αžΉαž„αž‡αž½αž™αžŸαž“αŸ’αžŸαŸ†αžŸαŸ†αž…αŸƒαž–αŸαž›αžœαŸαž›αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αž“αžΆαŸ”

αž‚αŸ†αž“αž·αžαž“αŸƒαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž“αŸ…αž€αŸ’αž“αž»αž„ TON

αž˜αž»αž“αž–αŸαž›αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž’αŸ’αžœαžΈ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αžαžΆαžαžΎαž•αŸ’αž“αŸ‚αž€αžŽαžΆαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž…αžΌαž›αž‘αŸ…αž‡αž·αžαžšαžΏαž„αž“αŸαŸ‡αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž₯αž‘αžΌαžœαž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž–αžΈαž•αŸ’αž“αŸ‚αž€αžŽαžΆαžŠαŸ‚αž›αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αžΆαž“αŸ” αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αžαžΎαž•αŸ’αž“αŸ‚αž€αžŽαžΆαžαŸ’αž›αŸ‡αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŠαžΉαž„ αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžšαžŸαŸαžšαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž€αžΆαžšαž„αžΆαžšαž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αžαŸ’αž›αŸ‡αŸ”

αž™αžΎαž„αž“αžΉαž„αž•αŸ’αžαŸ„αžαž›αžΎαž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒ αž“αž·αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ TON Virtual Machine (TVM), Fift ΠΈ FunCαžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αžαŸ’αžαž”αž‘αž‚αžΊαžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αž˜αŸ’αž˜αžαžΆαŸ” αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαŸαž‘αž·αž€αžΆαžαŸ’αž›αž½αž“αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‘αŸαŸ”

αž‡αžΆαž‘αžΌαž‘αŸ…αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš TVM αž“αž·αž„αž—αžΆαžŸαžΆ Fift αž˜αžΆαž“αž―αž€αžŸαžΆαžšαž•αŸ’αž›αžΌαžœαž€αžΆαžšαž›αŸ’αž’αŸ” αž–αŸαž›β€‹αž…αžΌαž›β€‹αžšαž½αž˜β€‹αž€αŸ’αž“αž»αž„β€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαž€αž½αžβ€‹αž”αŸ’αžšαž‡αŸ‚αž„ αž αžΎαž™β€‹αž₯αž‘αžΌαžœβ€‹αž–αŸαž›β€‹αž€αŸ†αž–αž»αž„β€‹αžŸαžšαžŸαŸαžšβ€‹αž€αž·αž…αŸ’αž…β€‹αžŸαž“αŸ’αž™αžΆβ€‹αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ αžαŸ’αž‰αž»αŸ†β€‹αžαŸ‚αž„β€‹αž„αžΆαž€β€‹αž‘αŸ…β€‹αžšαž€β€‹αž“αžΆαž„αŸ”

αž—αžΆαžŸαžΆαžŸαŸ†αžαžΆαž“αŸ‹αžŠαŸ‚αž›αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžš FunC. αž˜αž·αž“αž˜αžΆαž“αž―αž€αžŸαžΆαžšαž“αŸ…αž›αžΎαžœαžΆαž“αŸ…αž–αŸαž›αž“αŸαŸ‡αž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžšαžŸαŸαžšαž’αŸ’αžœαžΈαž˜αž½αž™ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŸαž·αž€αŸ’αžŸαžΆαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„αž•αŸ’αž›αžΌαžœαž€αžΆαžš αž“αž·αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž—αžΆαžŸαžΆαžαŸ’αž›αž½αž“αž―αž„αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡ αž”αžΌαž€αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž–αžΈαž’αžαžΈαžαž€αžΆαž›αž–αžΈαžšαŸ” αž€αžΆαžšαž”αŸ’αžšαž€αž½αžαž”αŸ’αžšαž‡αŸ‚αž„αŸ” αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž“αŸ…αž…αž»αž„αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž’αžαŸ’αžαž”αž‘αŸ”

αž…αžΌαžšαž“αž·αž™αžΆαž™αžαžΆαž™αžΎαž„αž”αžΆαž“αžŸαžšαžŸαŸαžšαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžšαž½αž…αž αžΎαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ FunCαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αž™αžΎαž„αž…αž„αž€αŸ’αžšαž„αž€αžΌαžŠαž‘αŸ…αž‡αžΆ Fift assemblerαŸ”

αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžŠαŸ‚αž›αž”αžΆαž“αž…αž„αž€αŸ’αžšαž„αž“αŸ…αžαŸ‚αžαŸ’αžšαžΌαžœαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŸαžšαžŸαŸαžšαž˜αž»αžαž„αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ FiftαžŠαŸ‚αž›αž“αžΉαž„αž™αž€αž›αŸαžαž€αžΌαžŠαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒ αž“αž·αž„αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž˜αž½αž™αž…αŸ†αž“αž½αž“αž‡αžΆαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž› αž αžΎαž™αž›αž‘αŸ’αž’αž•αž›αž“αžΉαž„αž‡αžΆαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜ .boc (αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸαž™αžαžΆ "αžαž„αŸ‹αž€αŸ’αžšαž‘αžΆ") αž αžΎαž™αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαžšαž”αŸ€αž”αžŠαŸ‚αž›αž™αžΎαž„αžŸαžšαžŸαŸαžšαžœαžΆ αžŸαŸ„αž―αž€αž‡αž“ αž“αž·αž„αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž›αŸαžαž€αžΌαžŠαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž‰αžΎαž€αŸ’αžšαžΆαž˜αž‘αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžŠαŸ‚αž›αž˜αž·αž“αž‘αžΆαž“αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™αžšαž½αž…αž αžΎαž™αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž“αŸ…αž€αŸ’αž“αž»αž„ TON αž”αžΆαž“αž‘αž‘αž½αž› .boc αž―αž€αžŸαžΆαžšαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ… blockchain αžŠαŸ„αž™αž”αŸ’αžšαžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž–αž“αŸ’αž›αžΊ (αž”αž“αŸ’αžαŸ‚αž˜αž›αžΎαžœαžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜) αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž»αž“αž–αŸαž›αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž– αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž•αŸ’αž‘αŸαžšαž€αŸ’αžšαžΆαž˜αž‘αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž“αžΉαž„αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž‘αŸαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™ αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžŠαŸ„αž™αž•αŸ’αž‰αžΎαžŸαžΆαžšαž–αžΈαžαžΆαž„αž€αŸ’αžšαŸ… (αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž–αž“αŸ’αž›αžΊ) αž¬αž–αžΈαžαžΆαž„αž€αŸ’αž“αž»αž„ (αž§αž‘αžΆαž αžšαžŽαŸ αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž˜αž½αž™αž•αŸ’αž‰αžΎαžŸαžΆαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸ…αž€αŸ’αž“αž»αž„ 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

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆαž”αžΆαž“αž‡αŸ„αž‚αž‡αŸαž™ αž“αŸ„αŸ‡αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž’αŸ’αž“αž€αž“αžΉαž„αžƒαžΎαž‰αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž“αŸƒαž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž—αŸ’αž‰αŸ€αžœαž–αž“αŸ’αž›αžΊαž‘αŸ…αž€αžΆαž“αŸ‹αžαŸ’αž“αžΆαŸ†αž„αŸ”

[ 1][t 2][1582054822.963129282][lite-client.h:201][!testnode]   conn ready
[ 2][t 2][1582054823.085654020][lite-client.cpp:277][!testnode] server version is 1.1, capabilities 7
[ 3][t 2][1582054823.085725069][lite-client.cpp:286][!testnode] server time is 1582054823 (delta 0)
...

αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ help αž αžΎαž™αž˜αžΎαž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŽαžΆαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αŸ”

help

αž…αžΌαžšαžšαžΆαž™αž”αž‰αŸ’αž‡αžΈαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αŸ”

list of available commands:
last    Get last block and state info from server
sendfile <filename> Load a serialized message from <filename> and send it to server
getaccount <addr> [<block-id-ext>]  Loads the most recent state of specified account; <addr> is in [<workchain>:]<hex-or-base64-addr> format
runmethod <addr> [<block-id-ext>] <method-id> <params>...   Runs GET method <method-id> of account <addr> with specified parameters

last ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ послСдний созданный Π±Π»ΠΎΠΊ с сСрвСра. 

sendfile <filename> отправляСт Π² TON Ρ„Π°ΠΉΠ» с сообщСниСм, ΠΈΠΌΠ΅Π½Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ публикуСтся смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ ΠΈ запрсосы ΠΊ Π½Π΅ΠΌΡƒ. 

getaccount <addr> Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ адрСсом. 

runmethod <addr> [<block-id-ext>] <method-id> <params>  запускаСт get-ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ смартконтракта. 

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αžαŸ’αžšαŸ€αž˜αžαŸ’αž›αž½αž“αžšαž½αž…αžšαžΆαž›αŸ‹αž αžΎαž™αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžšαžŸαŸαžšαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ”

РСализация

αž‚αŸ†αž“αž·αž

αžŠαžΌαž…αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαžšαžŸαŸαžšαžαžΆαž„αž›αžΎαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžŠαŸ‚αž›αž™αžΎαž„αž€αŸ†αž–αž»αž„αžŸαžšαžŸαŸαžšαž‚αžΊαž‡αžΆαž†αŸ’αž“αŸ„αžαŸ”

αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž†αŸ’αž“αŸ„αžαžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‘αž·αž‰αžŸαŸ†αž”αž»αžαŸ’αžš αž αžΎαž™αžšαž„αŸ‹αž…αžΆαŸ†αž˜αž½αž™αž˜αŸ‰αŸ„αž„ αžαŸ’αž„αŸƒ αž¬αžαŸ‚αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž—αŸ’αž›αžΆαž˜αŸ—αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž•αŸ’αž‘αŸαžšαž‘αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαŸ” N αž€αŸ’αžšαžΆαž˜ αž αžΎαž™αž™αž€αžœαžΆαž˜αž€αžœαž·αž‰αž—αŸ’αž›αžΆαž˜αŸ— 2 * N αž€αŸ’αžšαžΆαž˜αž¬αž…αžΆαž‰αŸ‹αŸ” αž™αžΎαž„αž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αžšαžΌαž”αžΆαž”αŸŠαžΈαž›αžΈαžαŸαž“αŸƒαž€αžΆαžšαžˆαŸ’αž“αŸ‡αž”αŸ’αžšαž αŸ‚αž› 40% αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž·αž“αž˜αžΆαž“αž€αŸ’αžšαžΆαž˜αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‘αžΌαž‘αžΆαžαŸ‹αž‘αŸ αž“αŸ„αŸ‡αž™αžΎαž„αž“αžΉαž„αž–αž·αž…αžΆαžšαžŽαžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‡αžΆαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž‘αžΉαž€αž”αŸ’αžšαžΆαž€αŸ‹αŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αžœαžΆαž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αžŠαŸ‚αž›αž€αžΆαžšαž—αŸ’αž“αžΆαž›αŸ‹αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž˜αžΎαž›αžƒαžΎαž‰αž€αŸ’αž“αž»αž„αž–αŸαž›αžœαŸαž›αžΆαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„ αž“αž·αž„αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž„αžΆαž™αžŸαŸ’αžšαž½αž› αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αžΆαž…αž™αž›αŸ‹αž”αžΆαž“αž—αŸ’αž›αžΆαž˜αŸ—αžαžΆαžαžΎαž‚αžΆαžαŸ‹αžˆαŸ’αž“αŸ‡ αž¬αž…αžΆαž‰αŸ‹αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž€αžΎαžαž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž€αžΆαžšαž—αŸ’αž“αžΆαž›αŸ‹ αž“αž·αž„αž›αž‘αŸ’αž’αž•αž›αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž–αžΈ TONαŸ”

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒ

αžŠαžΎαž˜αŸ’αž”αžΈαž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž› αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ†αž›αŸαž…αž€αžΌαžŠαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ FunC αž αžΎαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰ αž“αž·αž„αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€ Visual Studio Code αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž—αŸ’αž›αžΆαž˜αŸ—αž…αž„αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ’αžœαžΈαž˜αž½αž™ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž“αŸαŸ‡αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αž‡αžΆαžŸαžΆαž’αžΆαžšαžŽαŸˆαŸ” αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžš αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž–αžΈαž˜αž»αž“αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ Fift αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αžŠαŸ†αž‘αžΎαž„αžœαžΆ αž“αž·αž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ VSC αž•αž„αžŠαŸ‚αžšαŸ”

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαžαžƒαŸ’αž›αžΆαŸ†αž„αž˜αž½αž™αž—αŸ’αž›αžΆαž˜αŸ— αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αžŸαž˜αŸ’αžšαŸαž…αž›αž‘αŸ’αž’αž•αž›αž€αž˜αŸ’αžšαž·αžαž˜αž’αŸ’αž™αž˜αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™αž‡αžΈαžœαž·αžαžšαž”αžŸαŸ‹αž™αžΎαž„αž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž› αž™αžΎαž„αž“αžΉαž„αžŸαžšαžŸαŸαžšαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒ αž αžΎαž™αžŸαžΆαž€αž›αŸ’αž”αž„αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžšαž αžΌαžαžŠαž›αŸ‹αžœαžΆαžšαž½αž…αžšαžΆαž›αŸ‹αŸ” αž˜αžΆαž“αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸ„αŸ‡αž™αžΎαž„αž“αžΉαž„αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ TON αŸ”

αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžαžΆαž„αž€αŸ’αžšαŸ…αž–αžΈαžšαžŠαŸ‚αž›αž’αžΆαž…αž…αžΌαž›αž”αžΆαž“αŸ” αž‘αžΈαž˜αž½αž™ recv_external() αž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžŸαŸ†αžŽαžΎαž‘αŸ…αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž˜αž€αž–αžΈαž–αž·αž—αž–αžαžΆαž„αž€αŸ’αžšαŸ… αž–αŸ„αž›αž‚αžΊαž˜αž·αž“αž˜αŸ‚αž“αž˜αž€αž–αžΈ TON αž§αž‘αžΆαž αžšαžŽαŸ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαžŸαžΆαžšαž˜αž½αž™ αž αžΎαž™αž•αŸ’αž‰αžΎαžœαžΆαžαžΆαž˜αžšαž™αŸˆαž’αžαž·αžαž·αž‡αž“αžαž·αž…αžαž½αž…αŸ” αž‘αžΈαž–αžΈαžš recv_internal() αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž–αŸαž›αžŠαŸ‚αž›αž“αŸ…αž€αŸ’αž“αž»αž„ TON αžαŸ’αž›αž½αž“αžœαžΆ αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαžŽαžΆαž˜αž½αž™αžŸαŸ†αžŠαŸ…αž‘αŸ…αž›αžΎαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž‘αžΆαŸ†αž„αž–αžΈαžšαž’αŸ’αž“αž€αž’αžΆαž…αž†αŸ’αž›αž„αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž‘αŸ…αž˜αž»αžαž„αžΆαžšαŸ”

αž…αžΌαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸαžŸαžΆαž˜αž‰αŸ’αž‰αž˜αž½αž™αžŠαŸ‚αž›αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž– αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž˜αž»αžαž„αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαž‘αŸαŸ”

() recv_internal(slice in_msg) impure {
    ;; TODO: implementation 
}

() recv_external(slice in_msg) impure {
    ;; TODO: implementation  
}

αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž™αžΎαž„αžαŸ’αžšαžΌαžœαž–αž“αŸ’αž™αž›αŸ‹αžαžΆαžœαžΆαž‡αžΆαž’αŸ’αžœαžΈ 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 assembler code αž“αŸ…αž€αŸ’αž“αž»αž„ 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 for the Fift assemblerαŸ”

αžŠαŸ„αž™αžŸαžΆαžšαž™αžΎαž„αž…αž„αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αž·αž„αžŸαžΆαž€αž›αŸ’αž”αž„αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž€αŸ’αž“αž»αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαž˜αž½αž™αŸ” 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 tuple 0x076ef1ea , // magic
0 , 0 , // actions msg_sents
1570998536 , // unix_time
1 , 1 , 3 , // block_lt, trans_lt, rand_seed
0 tuple 100000000000000 , dictnew , , // remaining balance
0 , dictnew , // contract_address, global_config
1 tuple // wrap to another tuple
constant c7

0 constant recv_internal // to run recv_internal() 
-1 constant recv_external // to invoke recv_external()

Π’ c7 αž™αžΎαž„αž€αžαŸ‹αžαŸ’αžšαžΆαž”αžšαž·αž”αž‘ αž“αŸ„αŸ‡αž‚αžΊαž‡αžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž› TVM (αž¬αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αžŽαŸ’αžαžΆαž‰) αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž”αŸ’αžšαž€αž½αžαž”αŸ’αžšαž‡αŸ‚αž„αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž˜αŸ’αž“αžΆαž€αŸ‹αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž–αžΈαžšαž”αŸ€αž”αž”αž„αŸ’αž€αžΎαž c7 αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž…αž˜αŸ’αž›αž„αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αž™αžΎαž„αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžαŸ’αžšαžΌαžœαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš rand_seed αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž‡αŸ†αž“αžΆαž“αŸ‹αž“αŸƒαž›αŸαžαž…αŸƒαžŠαž“αŸ’αž™αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαžœαžΆ αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ αž›αŸαžαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αžšαžΆαž›αŸ‹αž–αŸαž›αŸ”

recv_internal ΠΈ recv_external αžαŸαžšαžŠαŸ‚αž›αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒ 0 αž“αž·αž„ -1 αž“αžΉαž„αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αžαŸ’αžšαŸ€αž˜αžαŸ’αž›αž½αž“αž‡αžΆαžŸαŸ’αžšαŸαž…αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αžŠαŸ†αž”αžΌαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž‘αž‘αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‘αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” lottery-test-suite.fif.

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαžαž’αžαŸαžš storage αž αžΎαž™αžŸαžšαžŸαŸαžšαž‘αž‘αŸαž‘αŸ…αž€αŸ’αž“αž»αž„αž“αŸ„αŸ‡αŸ” cellαž“αŸαŸ‡αž“αžΉαž„αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αž‘αž»αž€αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαŸ”

message αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαžΆαžšαžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αž€αžΆαž“αŸ‹αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž†αŸ’αž›αžΆαžαžœαŸƒαž–αžΈαžαžΆαž„αž€αŸ’αžšαŸ…αŸ” αž™αžΎαž„αž€αŸαž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž‘αž‘αŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡αžŠαŸ‚αžšαŸ”

variable storage 
<b b> storage ! 

variable message 
<b b> message ! 

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž™αžΎαž„αžšαŸ€αž”αž…αŸ†αžαŸαžš αž“αž·αž„αž’αžαŸαžš αž™αžΎαž„αž”αžΎαž€ TVM αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ runvmctx αž“αž·αž„αž”αž‰αŸ’αž‡αžΌαž“αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αŸ…αž’αžΆαžαž»αž”αž‰αŸ’αž…αžΌαž›αŸ”

message @ 
recv_external 
code 
storage @ 
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> storage !
<b 165 32 u, b> message !

message @ 
recv_external 
code 
storage @ 
c7 
runvmctx

drop 
exit_code ! 
."Exit code " exit_code @ . cr 
exit_code @ 33 - abort"Test #2 Not passed"

αžαŸ„αŸ‡αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αŸ”

 ~/TON/build/crypto/fift -s lottery-test-suite.fif 

αž αžΎαž™αž™αžΎαž„αž“αžΉαž„αžƒαžΎαž‰αžαžΆαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž˜αžΆαž“αž€αŸ†αž αž»αžŸαŸ”

[ 1][t 0][1582283084.210902214][words.cpp:3046] lottery-test-suite.fif:67: abort": Test #2 Not passed
[ 1][t 0][1582283084.210941076][fift-main.cpp:196]      Error interpreting file `lottery-test-suite.fif`: error interpreting included file `lottery-test-suite.fif` : lottery-test-suite.fif:67: abort": Test #2 Not passed

αž“αŸ…β€‹αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›β€‹αž“αŸαŸ‡ 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.

αžαŸ„αŸ‡αž”αž“αŸ’αžαŸ‚αž˜ skirt code αž‘αŸ… 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 "nCompilation completedn"

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-Ρ… Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число счСтчик. 

`pubkey` 256-Ρ‚ΠΈ Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ подпись ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ·Π²Π½Π΅ сообщСния, ΠΎ Ρ‡Π΅ΠΌ Π½ΠΈΠΆΠ΅. 

`order_seqno` 32-Ρ… Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число Ρ…Ρ€Π°Π½ΠΈΡ‚ счСтчик количСства ставок. 

`number_of_wins` 32-Ρ… Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число Ρ…Ρ€Π°Π½ΠΈΡ‚  количСство ΠΏΠΎΠ±Π΅Π΄. 

`incoming_amount` Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Gram (ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 4 Π±ΠΈΡ‚Π° ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π΄Π»ΠΈΠ½Ρƒ), Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΎΠ±Ρ‰Π΅Π΅ количСство Π³Ρ€Π°ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€Ρ‚Π°ΠΊΡ‚. 

`outgoing_amount` ΠΎΠ±Ρ‰Π΅Π΅ количСство Π³Ρ€Π°ΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ побСдитСлям. 

`owner_wc` Π½ΠΎΠΌΠ΅Ρ€ Π²ΠΎΡ€ΠΊΡ‡Π΅ΠΉΠ½Π°, 32-Ρ… Π±ΠΈΡ‚Π½ΠΎΠ΅ (Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мСстах написано, Ρ‡Ρ‚ΠΎ 8-ΠΌΠΈ Π±ΠΈΡ‚Π½ΠΎΠ΅) Ρ†Π΅Π»ΠΎΠ΅ число. Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ всСго Π΄Π²Π° -1 ΠΈ 0. 

`owner_account_id` 256-Ρ‚ΠΈ Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число, адрСс ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π²ΠΎΡ€ΠΊΡ‡Π΅ΠΉΠ½Π΅. 

`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. 

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαžαžαžαž―αž€αžŸαžΆαžš keys αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αžαž 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()αž αžΎαž™αžŸαžšαžŸαŸαžšαžœαžΆαž‘αŸ…αž‡αžΆαž’αžαŸαžš storage.

variable owner_private_key
variable owner_public_key 
variable orders
variable owner_wc
variable owner_account_id

"./keys/owner.pk" file>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, 0 32 u, 0 32 u, 0 Gram, 0 Gram, owner_wc @ 32 i, owner_account_id @ 256 u,  orders @ dict, b> storage !

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž™αžΎαž„αž“αžΉαž„αžŸαžšαžŸαŸαžšαžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž αžαŸ’αžαž›αŸαžαžΆ αžœαžΆαž“αžΉαž„αž˜αžΆαž“αžαŸ‚αž αžαŸ’αžαž›αŸαžαžΆ αž“αž·αž„αžαž˜αŸ’αž›αŸƒαžšαžΆαž”αŸ‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αžŠαŸ†αž”αžΌαž„ αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αž”αž‰αŸ’αž‡αžΌαž“ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αžΎαž„αž…αž»αŸ‡αž αžαŸ’αžαž›αŸαžαžΆαžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ„αž―αž€αž‡αž“ αž αžΎαž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž…αž»αŸ‡αž αžαŸ’αžαž›αŸαžαžΆαŸ”

variable message_to_sign
variable message_to_send
variable 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 !  

αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αžŸαžΆαžšαžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž•αŸ’αž‰αžΎαž‘αŸ…αž€αžΆαž“αŸ‹αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžαŸ’αžšαžΆαž€αŸ’αž“αž»αž„αž’αžαŸαžšαž˜αž½αž™αŸ” message_to_send, αž’αŸ†αž–αžΈαž˜αž»αžαž„αžΆαžš hashu, ed25519_sign_uint αž’αŸ’αž“αž€αž’αžΆαž…αž’αžΆαž“ αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš Fift.

αž αžΎαž™αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ αž™αžΎαž„αž αŸ…αž˜αŸ’αžαž„αž‘αŸ€αžαŸ”

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 u, new_owner_wc @  32 i, new_owner_account_id @ 256 u, b> message_to_sign !

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžαŸ’αžšαžΌαžœαž”αžΆαž“ deserialized storage αž“αŸ…αž€αŸ’αž“αž»αž„ Fift αŸ” Deserialization αž“αŸƒαž’αžαŸαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš Fift αŸ”

αžαŸ†αžŽβ€‹αž—αŸ’αž‡αžΆαž”αŸ‹ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜ dough αŸ”

αž…αžΌαžšβ€‹αžšαžαŸ‹β€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αžαŸβ€‹αžŸαŸ’αžβ€‹αž αžΎαž™β€‹αž’αŸ’αžœαžΎβ€‹αž±αŸ’αž™β€‹αž”αŸ’αžšαžΆαž€αžŠβ€‹αžαžΆβ€‹αžœαžΆβ€‹αž”αžšαžΆαž‡αŸαž™β€‹αŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡ αžŸαžΌαž˜αž”αž“αŸ’αžαŸ‚αž˜αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžšαž”αžŸαŸ‹αž˜αŸ’αž…αžΆαžŸαŸ‹αž†αŸ’αž“αŸ„αžαŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒ αž™αžΎαž„αž”αž“αŸ’αžαž‰αŸ‚αž€ message, αž’αžΆαž“ action. αž…αžΌαžšαž™αžΎαž„αžšαŸ†αž›αžΉαž€αž’αŸ’αž“αž€αžαžΆαž™αžΎαž„αž“αžΉαž„αž˜αžΆαž“αž–αžΈαžš actionαŸ– αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αž•αŸ’αž‰αžΎαž€αŸ’αžšαžΆαž˜αŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž™αžΎαž„αž’αžΆαž“αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžαŸ’αž˜αžΈαžšαž”αžŸαŸ‹αž˜αŸ’αž…αžΆαžŸαŸ‹αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž αžΎαž™αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αž‘αž»αž€αŸ”
αž™αžΎαž„β€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αžαŸαžŸαŸ’αžβ€‹αž αžΎαž™β€‹αžƒαžΎαž‰β€‹αžαžΆβ€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αžαŸαžŸαŸ’αžβ€‹αž‘αžΈβ€‹αž”αžΈβ€‹αž”αžšαžΆαž‡αŸαž™αŸ” αžœαžΆαž‚αžΆαŸ†αž„αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž₯αž‘αžΌαžœαž“αŸαŸ‡αž”αž“αŸ’αžαŸ‚αž˜ 7 αž”αŸŠαžΈαžαž–αžΈαžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αŸ” αž”αž“αŸ’αžαŸ‚αž˜αž’αžΆαžαž»αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž‘αŸ…αžŸαžΆαžš action. αž…αžΌαžšβ€‹αž™αžΎαž„β€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αžαŸβ€‹αžŸαŸ’αžβ€‹αž αžΎαž™β€‹αž˜αžΎαž›β€‹αžαžΆβ€‹αž’αŸ’αžœαžΈβ€‹αž‚αŸ’αžšαž”αŸ‹β€‹αž™αŸ‰αžΆαž„β€‹αž”αžΆαž“β€‹αž€αž“αŸ’αž›αž„β€‹αž•αž»αžβ€‹αž‘αŸ…β€‹αŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ” αž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž…αžΌαžšαž™αžΎαž„αžŸαžšαžŸαŸαžšαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‰αžΎαž…αŸ†αž“αž½αž“αž€αŸ’αžšαžΆαž˜αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž‘αŸ…αž€αžΆαž“αŸ‹αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž–αžΈαž˜αž»αž“αŸ”

αž‡αžΆαžŠαŸ†αž”αžΌαž„ αž…αžΌαžšαž™αžΎαž„αžŸαžšαžŸαŸαžšαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αŸ” αž™αžΎαž„β€‹αž“αžΉαž„β€‹αžŸαžšαžŸαŸαžšβ€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αžαŸβ€‹αžŸαŸ’αžβ€‹αž…αŸ†αž“αž½αž“β€‹αž–αžΈαžš αžŠαŸ‚αž›β€‹αž˜αž½αž™β€‹αž“αŸ…β€‹αž–αŸαž›β€‹αžŠαŸ‚αž›β€‹αž˜αž·αž“β€‹αž˜αžΆαž“β€‹αžŸαž˜αžαž»αž›αŸ’αž™β€‹αž‚αŸ’αžšαž”αŸ‹β€‹αž‚αŸ’αžšαžΆαž“αŸ‹ αž αžΎαž™β€‹αž‘αžΈβ€‹αž–αžΈαžšβ€‹αž“αŸ…β€‹αž–αŸαž›β€‹αžŠαŸ‚αž›β€‹αž‚αŸ’αžšαž”αŸ‹β€‹αž™αŸ‰αžΆαž„β€‹αž‚αž½αžšβ€‹αžαŸ‚β€‹αž€αž“αŸ’αž›αž„β€‹αž•αž»αžβ€‹αž‘αŸ…β€‹αžŠαŸ„αž™β€‹αž‡αŸ„αž‚αž‡αŸαž™αŸ” αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž˜αžΎαž› αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαž“αŸαŸ‡αŸ”.

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž”αž“αŸ’αžαŸ‚αž˜αž›αŸαžαž€αžΌαžŠαŸ” αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αžŸαžšαžŸαŸαžšαžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αž–αžΈαžšαŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αž‘αž½αž›αž”αžΆαž“αžŠαŸ†αž”αžΌαž„αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αžŸαž˜αžαž»αž›αŸ’αž™αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž“αŸƒαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαŸ”

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 <= format indicator int_msg_info$0 
    ;;  .store_uint(1, 1) ;; 1 <= ihr disabled
    ;;  .store_uint(1, 1) ;; 1 <= bounce = true
    ;;  .store_uint(0, 1) ;; 0 <= bounced = false
    ;;  .store_uint(4, 5)  ;; 00100 <= address flags, anycast = false, 8-bit workchain
        .store_uint (196, 9)
        .store_int(wc, 8)
        .store_uint(addr, 256)
        .store_grams(grams)
        .store_uint(0, 107) ;; 106 zeroes +  0 as an indicator that there is no cell with the data.
        .end_cell(); 
    send_raw_message(msg, 3); ;; mode, 2 for ignoring errors, 1 for sender pays fees, 64 for returning inbound message value
}

αž…αžΌαžšαž”αž“αŸ’αžαŸ‚αž˜αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸαŸ‡αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒ αž αžΎαž™αžŸαžšαžŸαŸαžšαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαŸ” αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αž‰αŸ‚αž€αž…αŸ†αž“αž½αž“αž€αŸ’αžšαžΆαž˜αž–αžΈαžŸαžΆαžšαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž˜αž€β€‹αž™αžΎαž„β€‹αž–αž·αž“αž·αžαŸ’αž™β€‹αžŸαž˜αžαž»αž›αŸ’αž™ αž”αŸ’αžšαžŸαž·αž“β€‹αž”αžΎβ€‹αžœαžΆβ€‹αž˜αž·αž“β€‹αž‚αŸ’αžšαž”αŸ‹β€‹αž‚αŸ’αžšαžΆαž“αŸ‹ αž™αžΎαž„β€‹αž“αžΉαž„β€‹αž›αžΎαž€β€‹αž›αŸ‚αž„β€‹αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž›αŸ’αž’ αž“αŸ„αŸ‡αž™αžΎαž„αž•αŸ’αž‰αžΎαž€αŸ’αžšαžΆαž˜αž‘αŸ…αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€ αž αžΎαž™αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž”αž‰αŸ’αž‡αžšαŸ”

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 αž”αŸŠαžΈαžαžŠαŸ‚αž›αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αžŸαž„αŸ’αžœαžΆαž€αŸ‹αž€αžΆαžšαž„αžΆαžš αž“αž·αž„αž›αŸαžαž‚αžŽαž“αžΈαžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž…αŸ†αž“αž½αž“αž‚αžαŸ‹αžŠαŸ‚αž›αž˜αž·αž“αž’αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“ 256 αž”αŸŠαžΈαžαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž„αŸ’αžœαžΆαž€αŸ‹αž€αžΆαžšαž„αžΆαžšαž“αŸαŸ‡αŸ” αž§αž‘αžΆαž αžšαžŽαŸ -1 αž“αž·αž„ 12345 αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž˜αž½αž™αŸ”

αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž…αž˜αŸ’αž›αž„αž˜αž»αžαž„αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž–αžΈ TonUtil.fif.

// ( 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 12345

256 u>B αž”αŸ†αž”αŸ’αž›αŸ‚αž„αž…αŸ†αž“αž½αž“αž‚αžαŸ‹αž˜αž·αž“αž’αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“ 256 αž”αŸŠαžΈαžαž‘αŸ…αž‡αžΆαž”αŸƒαŸ”

"sender.addr" -1 BYTES:0000000000000000000000000000000000000000000000000000000000003039

swap αž”αŸ’αžαžΌαžšαž’αžΆαžαž»αž‘αžΆαŸ†αž„αž–αžΈαžšαžαžΆαž„αž›αžΎαž“αŸƒαž‡αž„αŸ‹αŸ”

"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 -1

32 i>B αž”αŸ†αž”αŸ’αž›αŸ‚αž„αž…αŸ†αž“αž½αž“αž‚αžαŸ‹ 32 αž”αŸŠαžΈαžαž‘αŸ…αž‡αžΆαž”αŸƒαŸ”

"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 BYTES:FFFFFFFF

B+ αž—αŸ’αž‡αžΆαž”αŸ‹β€‹αž›αŸ†αžŠαžΆαž”αŸ‹β€‹αž”αŸƒβ€‹αž–αžΈαžšαŸ”

 "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) { ;; ignore bounced
        return ();
    }
    if (order_amount < 500000000) { ;; just receive grams without changing state 
        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() < 2 * order_amount + 500000000) { ;; not enough grams to pay the bet back, so this is re-fill
        builder order = pack_order(order_seqno, 1, 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));
        return ();
    }
    if (rand(10) >= 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));
}

αž“αŸ„αŸ‡αž‡αžΆαž’αŸ’αžœαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž€αžΆαžšαž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαŸ”.

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αžœαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž“αŸ…αžŸαŸαžŸαžŸαž›αŸ‹αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰ αžŸαžΌαž˜αž”αž„αŸ’αž€αžΎαžαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αž‘αž½αž›αž”αžΆαž“ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž–αžΈαž–αž·αž—αž–αžαžΆαž„αž€αŸ’αžšαŸ… (αžαžΆαž˜αž–αž·αž αž’αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈαž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αž‘αž»αž€αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ)αŸ”

αžαŸ„αŸ‡αž”αž“αŸ’αžαŸ‚αž˜αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž. αž™αžΎαž„αž“αžΉαž„αžŸαžšαžŸαŸαžšαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž‘αž‘αž½αž›αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαŸ”

αžαŸ’αž‰αž»αŸ†αž€αŸαž—αŸ’αž›αŸαž…αž”αž“αŸ’αžαŸ‚αž˜αž›αŸαžαž€αžΌαžŠαžŠαŸ‚αž›αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαŸ†αžŽαžΎαžŠαŸ†αž”αžΌαž„αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž–αŸαž›αž”αŸ„αŸ‡αž•αŸ’αžŸαžΆαž™αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαŸ” αž€αžΆαžšαž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαŸ”. αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž αž€αŸ‚ αž€αŸ†αž αž»αžŸαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž•αŸ’αž‰αžΎ 1/3 αž“αŸƒαž…αŸ†αž“αž½αž“αž‘αžΉαž€αž”αŸ’αžšαžΆαž€αŸ‹αž‘αŸ…αž‚αžŽαž“αžΈαžšαž”αžŸαŸ‹αž˜αŸ’αž…αžΆαžŸαŸ‹αŸ”

αž‡αŸ†αž αžΆαž“αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž‚αžΊαž”αŸ„αŸ‡αž•αŸ’αžŸαžΆαž™αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαŸ” αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαžαžαžαž―αž€αžŸαžΆαžš requests.

αžαŸ’αž‰αž»αŸ†β€‹αž™αž€β€‹αž€αžΌαžŠβ€‹αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–β€‹αž‡αžΆβ€‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ simple-wallet-code.fc αžŠαŸ‚αž› αž’αžΆαž…αžšαž€αž”αžΆαž“ αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αž•αŸ’αž›αžΌαžœαž€αžΆαžšαŸ”

αž’αŸ’αžœαžΈαž˜αž½αž™αžŠαŸ‚αž›αž‚αž½αžšαž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αŸ” αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αž‘αž»αž€αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒ αž“αž·αž„αžŸαžΆαžšαž”αž‰αŸ’αž…αžΌαž›αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸαŸ‡ αž’αžΆαžŸαŸαž™αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαž αž“αŸ„αŸ‡αž‚αžΊαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž˜αž»αž“αž–αŸαž›αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž“αŸ…αž€αŸ’αž“αž»αž„ 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 
(Saving address to file 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 αž€αŸ’αžšαžΆαž˜αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž–αžΈαžšαž”αžΈαžœαž·αž“αžΆαž‘αžΈαž™αžΎαž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž‰αžΎαž€αŸ’αžšαžΆαž˜αžαŸ’αž‰αž»αŸ†αž”αŸ’αžšαžΎ αž€αžΆαž”αžΌαž”αž•αŸ’αž›αžΌαžœαž€αžΆαžšαž αžΎαž™β€‹αž’αŸ’αž“αž€β€‹αž’αžΆαž…β€‹αžŸαž½αžšβ€‹αž’αŸ’αž“αž€β€‹αžŽαžΆβ€‹αž˜αŸ’αž“αžΆαž€αŸ‹β€‹αž–αžΈβ€‹αž€αžΆαžšβ€‹αž‡αž‡αŸ‚αž€β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αžαŸαžŸαŸ’αžαž€αŸ’αžšαžΆαž˜ αžŠαŸ‚αž›β€‹αžαŸ’αž‰αž»αŸ†β€‹αž“αžΉαž„β€‹αž“αž·αž™αžΆαž™β€‹αž“αŸ…β€‹αž…αž»αž„β€‹αž’αžαŸ’αžαž”αž‘αŸ”

> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd

αž˜αžΎαž›β€‹αž‘αŸ…β€‹αžŠαžΌαž…β€‹αž‡αžΆβ€‹αž˜αž·αž“β€‹αž‘αžΆαž“αŸ‹β€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž‘αžΎαž„ (state:account_uninit) αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžŠαŸ‚αž›αž˜αžΆαž“αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžŠαžΌαž…αž‚αŸ’αž“αžΆ αž“αž·αž„αžŸαž˜αžαž»αž›αŸ’αž™αž“αŸƒ 1 nanograms αŸ”

account state is (account
  addr:(addr_std
    anycast:nothing workchain_id:0 address:x044910149DBEAF8EADBB2B28722E7D6A2DC6E264EC2F1D9BEBD6FB209079BC2A)
  storage_stat:(storage_info
    used:(storage_used
      cells:(var_uint len:1 value:1)
      bits:(var_uint len:1 value:103)
      public_cells:(var_uint len:0 value:0)) last_paid:1583257959
    due_payment:nothing)
  storage:(account_storage last_trans_lt:3825478000002
    balance:(currencies
      grams:(nanograms
        amount:(var_uint len:4 value:2000000000))
      other:(extra_currencies
        dict:hme_empty))
    state:account_uninit))
x{C00044910149DBEAF8EADBB2B28722E7D6A2DC6E264EC2F1D9BEBD6FB209079BC2A20259C2F2F4CB3800000DEAC10776091DCD650004_}
last transaction lt = 3825478000001 hash = B043616AE016682699477FFF01E6E903878CDFD6846042BA1BFC64775E7AC6C4
account balance is 2000000000ng

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž…αžΌαžšαž™αžΎαž„αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαŸ” αžαŸ„αŸ‡αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αžαž·αžαž·αž‡αž“ Lite αž“αž·αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αŸ”

> sendfile lottery-query.boc
[ 1][t 2][1583008371.631410122][lite-client.cpp:966][!testnode] sending query from file lottery-query.boc
[ 3][t 1][1583008371.828550100][lite-client.cpp:976][!query]    external message status is 1 

αžŸαžΌαž˜αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–

> last
> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd

αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αžšαž”αžŸαŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αŸ”

  storage:(account_storage last_trans_lt:3825499000002
    balance:(currencies
      grams:(nanograms
        amount:(var_uint len:4 value:1987150999))
      other:(extra_currencies
        dict:hme_empty))
    state:(account_active

αž™αžΎαž„αžƒαžΎαž‰αž“αŸ„αŸ‡αŸ” account_active.

αž€αžΆαžšαž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš αž“αŸ…αž‘αžΈαž“αŸαŸ‡.

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž…αžΌαžšαž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαžŸαŸ†αžŽαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαŸ”

αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αž”αžΆαžŸαŸ‹αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αž™αžΎαž„αž“αžΉαž„αž‘αž»αž€αž€αž“αŸ’αž›αŸ‚αž„αž‘αžΈαž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž‡αžΆαž€αžΆαžšαž„αžΆαžšαž―αž€αžšαžΆαž‡αŸ’αž™ αž αžΎαž™αž™αžΎαž„αž“αžΉαž„αž’αŸ’αžœαžΎαž‘αžΈαž–αžΈαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‰αžΎαž€αŸ’αžšαžΆαž˜αž‘αŸ…αž€αžΆαž“αŸ‹αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αžšαž”αžŸαŸ‹αž˜αŸ’αž…αžΆαžŸαŸ‹αŸ” αž‡αžΆαž€αžΆαžšαž–αž·αž αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž‡αžΌαž“αž€αŸ’αžšαžΆαž˜αžŠαŸ‚αžšαŸ”

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαžΆαžšαžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž•αŸ’αž‰αžΎαž‘αŸ…αž€αžΆαž“αŸ‹αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž› msg_seqno 165, action 2 αž“αž·αž„ 9.5 αž€αŸ’αžšαžΆαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‰αžΎαŸ”

<b 165 32 u, 2 7 u, 9500000000 Gram, b>

αž€αž»αŸ†αž—αŸ’αž›αŸαž…αž…αž»αŸ‡αž αžαŸ’αžαž›αŸαžαžΆαž›αžΎαžŸαžΆαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαžŸαŸ„αž―αž€αž‡αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” lottery.pkαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž˜αž»αž“αž“αŸαŸ‡ αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαŸ”.

αž€αžΆαžšαž‘αž‘αž½αž›αž–αŸαžαŸŒαž˜αžΆαž“αž–αžΈαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αž‘αž½αž›αž”αžΆαž“

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž›αžœαž·αž’αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαŸ”

αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš lite-client αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αž‘αž½αž›αž”αžΆαž“αžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αžŸαžšαžŸαŸαžšαŸ”

$ ./lite-client/lite-client -C ton-lite-client-test1.config.json
> runmethod 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd balance
arguments:  [ 104128 ] 
result:  [ 64633878952 ] 
...

Π’ result αž˜αžΆαž“β€‹αžαž˜αŸ’αž›αŸƒβ€‹αžŠαŸ‚αž›β€‹αž’αž“αž»αž‚αž˜αž“αŸβ€‹αžαŸ’αžšαž‘αž”αŸ‹ balance() αž–αžΈαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”
αž™αžΎαž„αž“αžΉαž„αž’αŸ’αžœαžΎαžŠαžΌαž…αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‡αžΆαž…αŸ’αžšαžΎαž“αž‘αŸ€αžαŸ”

> runmethod 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd get_seqno
...
arguments:  [ 77871 ] 
result:  [ 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 αž€αŸ’αžšαžΆαž˜αŸ” αž αžΎαž™αžŸαžΌαž˜αž’αŸ’αžœαžΎαž€αžΆαžšαž—αŸ’αž“αžΆαž›αŸ‹αž–αžΈαžšαž”αžΈαžŠαžΎαž˜αŸ’αž”αžΈαž—αžΆαž–αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αŸ” αž™αžΎαž„αžƒαžΎαž‰αžαžΆαž‚αŸαž αž‘αŸ†αž–αŸαžšαž”αž„αŸ’αž αžΆαž‰αž–αžΈαž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸƒαž€αžΆαžšαž—αŸ’αž“αžΆαž›αŸ‹ αž—αžΆαž‚αžšαž™αžŠαŸ‚αž›αžˆαŸ’αž“αŸ‡αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“ αž“αž·αž„αž–αŸαžαŸŒαž˜αžΆαž“αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

αž™αžΎαž„β€‹αžƒαžΎαž‰αžαžΆαž™αžΎαž„αžˆαŸ’αž“αŸ‡αž›αžΎαž€αž‘αžΈαž˜αž½αž™ αž…αžΆαž‰αŸ‹αž‘αžΈαž–αžΈαžšαŸ”

Afterword

αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž”αžΆαž“αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαžœαŸ‚αž„αž‡αžΆαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αžšαŸ†αž–αžΉαž„αž‘αž»αž€ αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžœαžΆαžαŸ’αž›αžΈαž‡αžΆαž„ αž¬αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ‚αž˜αž“αž»αžŸαŸ’αžŸαž˜αŸ’αž“αžΆαž€αŸ‹αžŠαŸ‚αž›αž˜αž·αž“αžŠαžΉαž„αž’αŸ’αžœαžΈαž’αŸ†αž–αžΈ TON αž αžΎαž™αž…αž„αŸ‹αžŸαžšαžŸαŸαžš αž“αž·αž„αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαžŠαŸ‚αž›αž˜αž·αž“αžŸαžΆαž˜αž‰αŸ’αž‰ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™ αžœαžΆαŸ” αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžšαžΏαž„αžαŸ’αž›αŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž“αŸ’αž™αž›αŸ‹αž€αžΆαž“αŸ‹αžαŸ‚αžŸαžΆαž˜αž‰αŸ’αž‰αŸ”

αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž€αžΆαž“αŸ‹αžαŸ‚αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– αž“αž·αž„αž†αžΎαžαž†αžΆαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž–αŸαž›αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž˜αž»αž“αžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ€αž”αž…αŸ†αž’αžαŸ’αžαž”αž‘αŸ” αžœαžΆαž€αŸαž’αžΆαž…αž‘αŸ…αžšαž½αž…αžŠαŸ‚αž›αžαžΆαžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž’αŸ’αžœαžΎαžαž»αžŸαž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž˜αž½αž™ αž¬αž˜αž·αž“αž™αž›αŸ‹αž’αŸ’αžœαžΈαž˜αž½αž™ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžš αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž―αž€αžŸαžΆαžšαž•αŸ’αž›αžΌαžœαž€αžΆαžš αž¬αžƒαŸ’αž›αžΆαŸ†αž„αž•αŸ’αž›αžΌαžœαž€αžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž›αŸαžαž€αžΌαžŠ TON αŸ”

αžœαžΆαž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈ TON αžαŸ’αž›αž½αž“αžœαžΆαž“αŸ…αžαŸ‚αžŸαŸ’αžαž·αžαž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŸαž€αž˜αŸ’αž˜αž“αŸƒαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αžΆαž…αž€αžΎαžαž‘αžΎαž„αžŠαŸ‚αž›αž“αžΉαž„αž”αŸ†αž”αŸ‚αž€αž‡αŸ†αž αžΆαž“αžŽαžΆαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ (αžŠαŸ‚αž›αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž€αŸ†αž–αž»αž„αžŸαžšαžŸαŸαžšαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαžšαž½αž…αž αžΎαž™) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΌαž‘αŸ…αž‚αžΊ αž‘αŸ†αž“αž„αž‡αžΆαž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ”

αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž˜αž·αž“αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž’αž“αžΆαž‚αžαžšαž”αžŸαŸ‹ TON αž‘αŸαŸ” αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžœαŸαž‘αž·αž€αžΆαž“αŸαŸ‡αž“αžΉαž„αž€αŸ’αž›αžΆαž™αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ† αž αžΎαž™αž™αžΎαž„αž‚αž½αžšαžαŸ‚αž…αŸ†αžŽαžΆαž™αž–αŸαž›αžŸαž·αž€αŸ’αžŸαžΆαžœαžΆ αž αžΎαž™αž”αŸ†αž–αŸαž‰αž‘αžΈαž•αŸ’αžŸαžΆαžšαž–αž·αžŸαŸαžŸαž‡αžΆαž˜αž½αž™αž•αž›αž·αžαž•αž›αžšαž”αžŸαŸ‹αž™αžΎαž„αž₯αž‘αžΌαžœαž“αŸαŸ‡αŸ”

αžœαžΆαž€αŸαž˜αžΆαž“ Libra αž˜αž€αž–αžΈ Facebook αžŠαŸ‚αž›αž˜αžΆαž“αž‘αžŸαŸ’αžŸαž“αž·αž€αž‡αž“αžŸαž€αŸ’αžαžΆαž“αž»αž–αž›αž“αŸƒαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αŸ†αž‡αžΆαž„ TON αŸ” αžαŸ’αž‰αž»αŸ†αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž˜αž·αž“αžŠαžΉαž„αž’αŸ’αžœαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž’αŸ†αž–αžΈ Libra αžŠαŸ„αž™αžœαž·αž“αž·αž…αŸ’αž†αŸαž™αžŠαŸ„αž™αžœαŸαž‘αž·αž€αžΆαž˜αžΆαž“αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž αž‚αž˜αž“αŸ TON αŸ” αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„αžŸαž αž‚αž˜αž“αŸαžšαž”αžŸαŸ‹ TON αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαžŠαžΌαž…αž“αŸ…αž€αŸ’αžšαŸ„αž˜αžŠαžΈαž€αŸαžŠαŸ„αž™ αžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαž‡αžΆαž€αŸ‹αž•αž„αžŠαŸ‚αžšαŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαž™αŸ„αž„

  1. αž―αž€αžŸαžΆαžš TON αž•αŸ’αž›αžΌαžœαž€αžΆαžšαŸ– https://test.ton.org
  2. αžƒαŸ’αž›αžΆαŸ†αž„ TON αž•αŸ’αž›αžΌαžœαž€αžΆαžšαŸ– https://github.com/ton-blockchain/ton
  3. αž€αžΆαž”αžΌαž”αž•αŸ’αž›αžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαŸαž‘αž·αž€αžΆαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ– https://wallet.ton.org
  4. αžƒαŸ’αž›αžΆαŸ†αž„αž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαž–αžΈαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αŸ– https://github.com/raiym/astonished
  5. αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž‚αŸαž αž‘αŸ†αž–αŸαžšαž€αž·αž…αŸ’αž…αžŸαž“αŸ’αž™αžΆαž†αŸ’αž›αžΆαžαžœαŸƒαŸ– https://ton-lottery.appspot.com
  6. αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Visual Studio Code αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ FunCαŸ– https://github.com/raiym/func-visual-studio-plugin
  7. αž‡αž‡αŸ‚αž€αž’αŸ†αž–αžΈ TON αž“αŸ…αž€αŸ’αž“αž»αž„ Telegram αžŠαŸ‚αž›αž–αž·αžαž‡αžΆαž”αžΆαž“αž‡αž½αž™αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαžΆαž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž”αžΌαž„αŸ” αžαŸ’αž‰αž»αŸ†β€‹αž‚αž·αžβ€‹αžαžΆβ€‹αžœαžΆβ€‹αž“αžΉαž„β€‹αž˜αž·αž“β€‹αž˜αžΆαž“β€‹αž€αŸ†αž αž»αžŸβ€‹αž‘αŸβ€‹αž”αŸ’αžšαžŸαž·αž“β€‹αž”αžΎβ€‹αžαŸ’αž‰αž»αŸ†β€‹αž“αž·αž™αžΆαž™β€‹αžαžΆβ€‹αž’αŸ’αž“αž€β€‹αžšαžΆαž›αŸ‹β€‹αž‚αŸ’αž“αžΆβ€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αžŸαžšαžŸαŸαžšβ€‹αž’αŸ’αžœαžΈβ€‹αž˜αž½αž™β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ TON αž‚αžΊβ€‹αž“αŸ…β€‹αž‘αžΈαž“αŸ„αŸ‡αŸ” αž’αŸ’αž“αž€αž€αŸαž’αžΆαž…αžŸαž½αžšαžšαž€αž€αŸ’αžšαžΆαž˜αžαŸαžŸαŸ’αžαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αŸ” https://t.me/tondev_ru
  8. αž€αžΆαžšαž‡αž‡αŸ‚αž€αž˜αž½αž™αž‘αŸ€αžαž’αŸ†αž–αžΈ TON αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž–αŸαžαŸŒαž˜αžΆαž“αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαŸ– https://t.me/TONgramDev
  9. αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αžŠαŸ†αž”αžΌαž„αž“αŸƒαž€αžΆαžšαž”αŸ’αžšαž€αž½αžαž”αŸ’αžšαž‡αŸ‚αž„αŸ– https://contest.com/blockchain
  10. αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž‘αžΈαž–αžΈαžšαž“αŸƒαž€αžΆαžšαž”αŸ’αžšαž€αž½αžαŸ– https://contest.com/blockchain-2

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹