เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฝเบ™เปเบฅเบฐเป€เบœเบตเบเปเบœเปˆเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เปƒเบ™ Telegram Open Network (TON)

เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฝเบ™เปเบฅเบฐเป€เบœเบตเบเปเบœเปˆเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เปƒเบ™ TON

เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบเปˆเบฝเบงเบเบฑเบšเบซเบเบฑเบ‡?

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ” (เบชเบญเบ‡) เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™ Telegram blockchain, เบšเปเปˆเป„เบ”เป‰เป€เบญเบปเบฒเบฅเบฒเบ‡เบงเบฑเบ™, เปเบฅเบฐเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบšเบฑเบ™เบ—เบถเบเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบกเบฑเบ™เบˆเบปเบกเบฅเบปเบ‡เปƒเบ™ oblivion เปเบฅเบฐ, เบšเบฒเบ‡เบ—เบตเบญเบฒเบ”, เบŠเปˆเบงเบ. เบ„เบปเบ™.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ‚เป‰เบญเบเบšเปเปˆเบขเบฒเบเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™, เปเบ•เปˆเป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบ, เบชเปเบฒเบฅเบฑเบšเบšเบปเบ”เบ„เบงเบฒเบกเบ—เบตเปˆเบ‚เป‰เบญเบเบ‚เบฝเบ™เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบšเบชเบฐเบซเบฅเบฒเบเบ—เบฑเบ™เบ—เบตเปเบฅเบฐเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบกเบนเบ™เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เป‚เบ”เบเบเบปเบ‡เบˆเบฒเบ TON เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบฅเบฐเบ”เบฑเบšเบเบฒเบ‡.

เบšเบปเบ”เบ„เบงเบฒเบกเบˆเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ•เปเปˆเบœเบนเป‰เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปƒเบ™ TON, เปเบ•เปˆเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเปƒเบช.

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ lottery เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเป„เบ›เบˆเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเป€เบžเบทเปˆเบญเป€เบœเบตเบเปเบœเปˆเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”, เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบกเบฑเบ™, เปเบฅเบฐเบ‚เบฝเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฎเบฑเบšเปเบฅเบฐเป€เบœเบตเบเปเบœเปˆเบ‚เปเป‰เบกเบนเบ™.

เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™

เป€เบ”เบทเบญเบ™เบ•เบธเบฅเบฒเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, Telegram เป„เบ”เป‰เบ›เบฐเบเบฒเบ”เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™ blockchain เบ”เป‰เบงเบเบžเบฒเบชเบฒเปƒเบซเบกเปˆ Fift ะธ FunC. เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฅเบทเบญเบเบˆเบฒเบเบเบฒเบ™เบ‚เบฝเบ™เปƒเบ”เป†เปƒเบ™เบซเป‰เบฒเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบต. เบ‚เป‰เบญเบเบ„เบดเบ”เบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบ”เบตเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบฎเบฝเบ™เบฎเบนเป‰เบžเบฒเบชเบฒเปเบฅเบฐเป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ‚เป‰เบญเบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบซเบเบฑเบ‡เบญเบตเบเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบซเบปเบงเบ‚เปเป‰เปเบกเปˆเบ™เบขเบนเปˆเบชเบฐเป€เบซเบกเบตเบขเบนเปˆเปƒเบ™เบ›เบฒเบ.

เบกเบฑเบ™เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบšเบญเบเบงเปˆเบฒเบ‚เป‰เบญเบเบšเปเปˆเบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบˆเบปเบ™เบเปˆเบงเบฒเบ—เบตเปˆเบชเบธเบ”เบˆเบปเบ™เบเปˆเบงเบฒเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เบฝเบ™เบšเบปเบ”เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™, เปเบ•เปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบฅเบปเป‰เบกเป€เบซเบฅเบงเบ—เบฑเบ™เบ—เบตเปƒเบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ”. I เบ‚เบฝเบ™เบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™ เบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™เบซเบผเบฒเบเบญเบฑเบ™ FunC เปเบฅเบฐเป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบกเบฑเบ™เป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบ. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบญเบปเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™ เบชเบฑเบ™เบเบฒเบชเบฐเบซเบฅเบฒเบ”เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบชเบฒเบกเบฑเบเบ„เบต.

เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบ™เบตเป‰เปเบ™เปˆเบ™เบญเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเป€เบญเบปเบฒเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบšเบฒเบ‡เบฅเบฒเบ‡เบงเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบœเบนเป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบ›เบฐเบกเบฒเบ™ 40 เปƒเบ™ 60 เบ„เบปเบ™เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบœเบนเป‰เบŠเบฐเบ™เบฐเบฅเบฒเบ‡เบงเบฑเบ™เปเบฅเบฐเบ‚เป‰เบญเบเบšเปเปˆเป„เบ”เป‰เบขเบนเปˆเปƒเบ™เบ™เบฑเป‰เบ™. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบœเบดเบ”เบ›เบปเบเบเบฐเบ•เบดเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, เปเบ•เปˆเบกเบตเบชเบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบฅเบปเบšเบเบงเบ™เบ‚เป‰เบญเบ. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ›เบฐเบเบฒเบ”เบœเบปเบ™, เบเบฒเบ™เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเปเบฒเบฅเบฑเบšเบชเบฑเบ™เบเบฒเบ‚เบญเบ‡เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบฒเบกเบœเบนเป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบงเปˆเบฒเบกเบตเบ„เบปเบ™เบญเบทเปˆเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบกเบฑเบ™, เบšเปเปˆเบกเบต.

เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป„เบ”เป‰เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบ‚เบญเบ‡เบ‚เป‰เบญเบ, เบชเบญเบ‡เบกเบทเป‰เบ•เปเปˆเบกเบฒเบœเบนเป‰เบžเบดเบžเบฒเบเบชเบฒเป„เบ”เป‰เบžเบดเบกเบ„เปเบฒเบ„เบดเบ”เบ„เปเบฒเป€เบซเบฑเบ™เปเบฅเบฐเบ‚เป‰เบญเบเบเบฑเบ‡เบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบžเบฒเบ”เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเป‚เบ”เบเบšเบฑเบ‡เป€เบญเบตเบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เบซเบผเบทเบžเบฝเบ‡เปเบ•เปˆเบ„เบดเบ”เบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบ”เบตเบซเบผเบฒเบเบ—เบตเปˆเบกเบฑเบ™เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เปเบฒเบ„เบดเบ”เบ„เปเบฒเป€เบซเบฑเบ™. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ–เบฒเบกเบ„เปเบฒเบ–เบฒเบกเบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒ, เปเบ•เปˆเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบ„เปเบฒเบ•เบญเบš. เป€เบ–เบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบฅเบฑเบšโ€‹เบ—เบตเปˆโ€‹เบ•เบฑเบ”โ€‹เบชเบดเบ™, เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ–เบทโ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบšเปเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ‚เบฝเบ™โ€‹เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบชเปˆเบงเบ™โ€‹เบšเบธเบโ€‹เบ„เบปเบ™.

เป€เบงเบฅเบฒเบซเบผเบฒเบเปเบกเปˆเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเปƒเบ™เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆ, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ‚เบฝเบ™เบšเบปเบ”เบ„เบงเบฒเบก. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบšเปเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบ, เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเบ›เบฐเบซเบเบฑเบ”เป€เบงเบฅเบฒเบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบ„เบปเบ™เบ—เบตเปˆเบชเบปเบ™เปƒเบˆ.

เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เปƒเบ™ TON

เบเปˆเบญเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเบ‚เบฝเบ™เบซเบเบฑเบ‡, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ„เบดเบ”เบญเบญเบเบงเปˆเบฒเบ‚เป‰เบฒเบ‡เปƒเบ”เบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเบซเบฒเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เบˆเบฒเบ. เป€เบžเบฒเบฐเบชเบฐเบ™เบฑเป‰เบ™, เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบงเปˆเบฒเบžเบฒเบเบชเปˆเบงเบ™เปƒเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ›เบฐเบเบญเบšเบ”เป‰เบงเบ. เบซเบผเบฒเบเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™, เบžเบฒเบเบชเปˆเบงเบ™เปƒเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฎเบนเป‰เป€เบžเบทเปˆเบญเบ‚เบฝเบ™เบชเบฑเบ™เบเบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบšเบฒเบ‡เบ›เบฐเป€เบžเบ”.

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เบ‚เบฝเบ™เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เปเบฅเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš TON Virtual Machine (TVM), Fift ะธ FunC, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบšเบปเบ”เบ„เบงเบฒเบกเปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ„เบ‡เบเบฒเบ™เบ›เบปเบเบเบฐเบ•เบด. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบšเปเปˆโ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เป€เบงโ€‹เบ—เบตโ€‹เบ•เบปเบงโ€‹เบกเบฑเบ™โ€‹เป€เบญเบ‡โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบขเบนเปˆโ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰โ€‹.

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ TVM เปเบฅเบฐเบžเบฒเบชเบฒ Fift เบกเบตเป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบ—เบตเปˆเบ”เบต. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ‚เบฝเบ™เบชเบฑเบ™เบเบฒเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™, เบ‚เป‰เบญเบเบกเบฑเบเบˆเบฐเบซเบฑเบ™เป„เบ›เบซเบฒเบ™เบฒเบ‡.

เบžเบฒเบชเบฒเบ•เบปเป‰เบ™เบ•เปเบ—เบตเปˆเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เปเบกเปˆเบ™เบ‚เบฝเบ™ FunC. เบšเปเปˆเบกเบตเป€เบญเบเบฐเบชเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบกเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบžเบทเปˆเบญเบ‚เบฝเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบชเบถเบเบชเบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบˆเบฒเบเบ„เบฑเบ‡เป€เบเบฑเบšเบกเป‰เบฝเบ™เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบฒเบชเบฒเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบˆเบฒเบเบชเบญเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™. เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบก.

เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ‚เบฝเบ™เปเบฅเป‰เบงเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบชเปเบฒเบฅเบฑเบš FunC, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ Fift assembler.

เบชเบฑเบ™เบเบฒเบญเบฑเบ”เบชเบฐเบฅเบดเบเบฐเบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเบเบฑเบ‡เบ„เบปเบ‡เบ–เบทเบเป€เบœเบตเบเปเบœเปˆ. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบ™ Fift, เป€เบŠเบดเปˆเบ‡เบˆเบฐเป€เบญเบปเบฒเบฅเบฐเบซเบฑเบ”เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เปเบฅเบฐเบšเบฒเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบญเบทเปˆเบ™เป†เป€เบ›เบฑเบ™ input, เปเบฅเบฐเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบˆเบฐเป€เบ›เบฑเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบ™เบฒเบกเบชเบฐเบเบธเบ™. .boc (เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒ "เบ–เบปเบ‡เบ‚เบญเบ‡เบˆเบธเบฅเบฑเบ‡"), เปเบฅเบฐ, เบ‚เบถเป‰เบ™เบเบฑเบšเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบกเบฑเบ™, เบฅเบฐเบซเบฑเบ”เบชเปˆเบงเบ™เบ•เบปเบงเปเบฅเบฐเบ—เบตเปˆเบขเบนเปˆ, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบฅเบฐเบซเบฑเบ”เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”. เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบเบผเบฒเบกเป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ—เบตเปˆเบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เป€เบœเบตเบเปเบœเปˆ.

เป€เบžเบทเปˆเบญเป€เบœเบตเบเปเบœเปˆเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เปƒเบ™ TON เป„เบ”เป‰เบฎเบฑเบš .boc เป„เบŸเบฅเปŒเบˆเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒ blockchain เป‚เบ”เบเปƒเบŠเป‰เบฅเบนเบเบ„เป‰เบฒเปเบชเบ‡เบชเบฐเบซเบงเปˆเบฒเบ‡ (เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบงเปˆเบฒเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰). เปเบ•เปˆเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบœเบตเบเปเบœเปˆ, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป‚เบญเบ™เบเบผเบฒเบกเป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™, เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบˆเบฐเบšเปเปˆเบ–เบทเบเป€เบœเบตเบเปเบœเปˆ. เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบžเบดเบกเป€เบœเบตเบเปเบœเปˆ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เป‚เบ”เบเบเบฒเบ™เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบˆเบฒเบเบžเบฒเบเบ™เบญเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบฅเบนเบเบ„เป‰เบฒเปเบชเบ‡เบชเบฐเบซเบงเปˆเบฒเบ‡) เบซเบผเบทเบˆเบฒเบเบžเบฒเบเปƒเบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบซเบ™เบถเปˆเบ‡เบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบžเบฒเบเปƒเบ™ TON).

เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเบดเบ—เบตเบเบฒเบ™เป€เบœเบตเบเปเบœเปˆเบฅเบฐเบซเบฑเบ”, เบกเบฑเบ™เบˆเบฐเบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ›เบฐโ€‹เบกเบฒเบ™โ€‹เบฎเบนเป‰โ€‹เบงเปˆเบฒโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบ‚เบฝเบ™โ€‹เปเบฅเบฐโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹. เปเบฅเบฐเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบ‚เบฝเบ™, เบžเบงเบเป€เบฎเบปเบฒเบŠเบญเบเบซเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปเบฅเป‰เบงเปƒเบ™เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆ, เบซเบผเบทเบžเบงเบเป€เบฎเบปเบฒเป€เบšเบดเปˆเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” Fift ะธ FunC เปƒเบ™ repository เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™, เบซเบผเบทเป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™.

เป€เบฅเบทเป‰เบญเบเป†เบ‚เป‰เบญเบเป„เบ”เป‰เบ„เบปเป‰เบ™เบซเบฒเบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™เปƒเบ™เบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒ Telegram เบšเปˆเบญเบ™เบ—เบตเปˆเบœเบนเป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เปเบฅเบฐเบžเบฐเบ™เบฑเบเบ‡เบฒเบ™ Telegram เบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบฅเบงเบšเบฅเบงเบก, เปเบฅเบฐเบกเบฑเบ™เบเปเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบงเปˆเบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เบ—เบธเบเป†เบ„เบปเบ™เป„เบ”เป‰เป€เบ•เบปเป‰เบฒเป‚เบฎเบกเบเบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เปเบฅเบฐเป€เบฅเบตเปˆเบกเบชเบปเบ™เบ—เบฐเบ™เบฒ Fift เปเบฅเบฐ FunC. เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบก.

เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบเป‰เบฒเบเบญเบญเบเบˆเบฒเบเบ—เบดเบ”เบชเบฐเบ”เบตเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”.

เบเบฒเบ™เบเบฐเบเบฝเบกเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš TON

เบ‚เป‰เบญเบเป„เบ”เป‰เป€เบฎเบฑเบ”เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเปƒเบ™ MacOS เปเบฅเบฐเบเบงเบ”เบชเบญเบšเบกเบฑเบ™เบชเบญเบ‡เป€เบ—เบทเปˆเบญเปƒเบ™เบชเบฐเบžเบฒเบšเบ—เบตเปˆเบชเบฐเบญเบฒเบ” Ubuntu 18.04 LTS เปƒเบ™ Docker.

เบชเบดเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปเบกเปˆเบ™เบ”เบฒเบงเป‚เบซเบฅเบ”เปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡ lite-client เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰ TON.

เบ„เบณเปเบ™เบฐเบ™เบณเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบฒเบ‡เบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเปˆเบฒเบ‡เบฅเบฐเบญเบฝเบ” เปเบฅเบฐ เบŠเบฑเบ”เป€เบˆเบ™, เป‚เบ”เบเบšเปเปˆเบฅเบฐเบšเบธเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบ„เบณเปเบ™เบฐเบ™เบณ, เบ•เบดเบ”เบ•เบฑเป‰เบ‡ dependencies เบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›เบ•เบฒเบกเบ—เบฒเบ‡. เบ‚เป‰เบญเบเบšเปเปˆเป„เบ”เป‰เบฅเบงเบšเบฅเบงเบกเปเบ•เปˆเบฅเบฐเป‚เบ„เบ‡เบเบฒเบ™เบ”เป‰เบงเบเบ•เบปเบงเป€เบญเบ‡ เปเบฅเบฐ เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบˆเบฒเบเบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบฒเบ‡เบเบฒเบ™. 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.

เบ—เปเบฒเบญเบดเบ”, เบžเบงเบเป€เบฎเบปเบฒ clone repository TON เบžเป‰เบญเบกเบเบฑเบšเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ‚เบญเบ‡เบกเบฑเบ™. เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เบ—เบธเบเบขเปˆเบฒเบ‡เปƒเบ™เป‚เบŸเบ™เป€เบ”เบต ~/TON.

cd ~/TON
git clone https://github.com/ton-blockchain/ton.git
cd ./ton
git submodule update --init --recursive

เบ„เบฑเบ‡เป€เบเบฑเบšเบกเป‰เบฝเบ™เบเบฑเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” Fift ะธ FunC.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบ›เบฐเบเบญเบšเป‚เบ„เบ‡เบเบฒเบ™. เบฅเบฐเบซเบฑเบ” repository เปเบกเปˆเบ™ cloned เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป‚เบŸเบ™เป€เบ”เบต ~/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

เบ•เปเปˆเป„เบ›, เบ”เบฒเบงเป‚เบซเบฅเบ”เป„เบŸเบฅเปŒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบš node เบ—เบตเปˆ 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

เบ–เป‰เบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ—เปˆเบฒเบ™เบˆเบฐเป€เบซเบฑเบ™เบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเปเบชเบ‡เบชเบฐเบซเบงเปˆเบฒเบ‡เบเบฑเบš node.

[ 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-ะผะตั‚ะพะดั‹ ัะผะฐั€ั‚ะบะพะฝั‚ั€ะฐะบั‚ะฐ. 

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบชเบฑเบ™เบเบฒเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡.

ะ ะตะฐะปะธะทะฐั†ะธั

Idea

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ‚เบฝเบ™เป„เบงเป‰เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบ‚เบฝเบ™เปเบกเปˆเบ™ lottery.

เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบซเบงเบเบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบŠเบทเป‰เบ›เบตเป‰เปเบฅเบฐเบฅเปเบ–เป‰เบฒเบซเบ™เบถเปˆเบ‡เบŠเบปเปˆเบงเป‚เบกเบ‡, เบกเบทเป‰เบซเบผเบทเป€เบ”เบทเบญเบ™, เปเบ•เปˆเบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เป‚เบญเบ™เป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆเบชเบฑเบ™เบเบฒ. N เบเบฃเบฒเบก, เปเบฅเบฐเบ—เบฑเบ™เบ—เบตเป„เบ”เป‰เบฎเบฑเบšเบกเบฑเบ™เบเบฑเบšเบ„เบทเบ™เบกเบฒ 2 * N เบเบผเบฒเบกเบซเบผเบทเบชเบนเบ™เป€เบชเบ. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบŠเบฐเบ™เบฐเบ›เบฐเบกเบฒเบ™ 40%. เบ–เป‰เบฒเบšเปเปˆเบกเบตเบเบผเบฒเบกเบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเปˆเบฒเบเป€เบ‡เบดเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒเป€เบ›เบฑเบ™เบเบฒเบ™เบ•เบทเปˆเบกเป€เบ‡เบดเบ™.

เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบเบฒเบ™เป€เบ”เบตเบกเบžเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เปเบฅเบฐเปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบ, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบœเบนเป‰เปƒเบŠเป‰เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเปƒเบˆเป„เบ”เป‰เบ—เบฑเบ™เบ—เบตเบงเปˆเบฒเบฅเบฒเบงเบŠเบฐเบ™เบฐเบซเบผเบทเบชเบนเบ™เป€เบชเบ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบˆเบฐเบชเบฐเปเบ”เบ‡เบเบฒเบ™เป€เบ”เบตเบกเบžเบฑเบ™เปเบฅเบฐเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบเบเบปเบ‡เบˆเบฒเบ TON.

เบเบฒเบ™เบ‚เบฝเบ™เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”

เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเบชเบฐเบšเบฒเบ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบš FunC; plugin เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™ Visual Studio Code เบŠเบญเบเบซเบฒ; เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ plugin เป€เบ›เบตเบ”เป€เบœเบตเบเบ•เปเปˆเบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ. เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰, เบœเบนเป‰เปƒเบ”เบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เป„เบ”เป‰เป€เบฎเบฑเบ” plugin เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Fift, เบ—เปˆเบฒเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบกเบฑเบ™เปเบฅเบฐเบŠเบญเบเบซเบฒเบกเบฑเบ™เบขเบนเปˆเปƒเบ™ VSC.

เปƒเบซเป‰เบชเป‰เบฒเบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เปƒเบ™เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบฅเบฐเบ”เบฑเบšเบ›เบฒเบ™เบเบฒเบ‡.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ‚เบฝเบ™เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เปเบฅเบฐเบ—เบปเบ”เบชเบญเบšเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบˆเบปเบ™เบเบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเบเบฝเบกเบžเป‰เบญเบก. เบžเบฝเบ‡เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบœเบตเบเปเบœเปˆเปƒเบ™ TON.

เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบกเบตเบชเบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบžเบฒเบเบ™เบญเบเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰. เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”, recv_external() เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเบชเบฑเบ™เบเบฒเบกเบฒเบˆเบฒเบเป‚เบฅเบเบžเบฒเบเบ™เบญเบ, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบšเปเปˆเปเบกเปˆเบ™เบกเบฒเบˆเบฒเบ TON, เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเปเบฅเบฐเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เบฅเบนเบเบ„เป‰เบฒ lite. เบญเบฑเบ™เบ—เบตเบชเบญเบ‡, 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 bits เปเบฅเบฐเบชเบนเบ‡เป€เบ–เบดเบ‡ 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 เปƒเบ™ lottery-compiled.fif:

// lottery-compiled.fif

"Asm.fif" include
// automatically generated from `/Users/rajymbekkapisev/TON/ton/crypto/smartcont/stdlib.fc` `./lottery-code.fc` 
PROGRAM{
  DECLPROC recv_internal
  DECLPROC recv_external
  recv_internal PROC:<{
    //  in_msg
    DROP    // 
  }>
  recv_external PROC:<{
    //  in_msg
    DROP    // 
  }>
}END>c

เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เบ•เบปเบงเบขเบนเปˆเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบฐเบเบฝเบกเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบชเบฒเบเบ—เปเบฒเบญเบดเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ Asm.fif, เบ™เบตเป‰เปเบกเปˆเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ Fift เบชเปเบฒเบฅเบฑเบš Fift assembler.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบฅเบฐเบ—เบปเบ”เบชเบญเบšเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบขเบนเปˆเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒ lottery-test-suite.fif เปเบฅเบฐเบ„เบฑเบ”เบฅเบญเบเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เปเบ—เบ™เบ—เบตเปˆเปเบ–เบงเบชเบธเบ”เบ—เป‰เบฒเบเปƒเบ™เบกเบฑเบ™, เป€เบŠเบดเปˆเบ‡เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เป€เบ›เบฑเบ™เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ. codeเบˆเบฒเบเบ™เบฑเป‰เบ™เป‚เบญเบ™เบกเบฑเบ™เป„เบ›เปƒเบชเปˆเป€เบ„เบทเปˆเบญเบ‡ virtual:

"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 constants เบ—เบตเปˆเบกเบตเบ„เปˆเบฒ 0 เปเบฅเบฐ -1 เบˆเบฐเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เปƒเบ™เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบชเปเบฒเบฅเบฑเบšเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ—เบตเปˆเบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เป€เบžเบทเปˆเบญเบ„เบงเบฒเบกเบŠเบฑเบ”เป€เบˆเบ™, เบชเปเบฒเบฅเบฑเบšเบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ‚เบปเป‰เบฒเปƒเบ™เป„เบŸเบฅเปŒเบ”เบฝเบงเบเบฑเบ™ lottery-test-suite.fif.

เบกเบฒเบชเป‰เบฒเบ‡เบ•เบปเบงเปเบ› storage เปเบฅเบฐเบ‚เบฝเบ™เบญเบฑเบ™เป€เบ›เบปเปˆเบฒเปƒเบชเปˆเปƒเบ™เบกเบฑเบ™ cell, เบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”.

message เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบœเบนเป‰เบ•เบดเบ”เบ•เปเปˆ smart เบˆเบฒเบเบžเบฒเบเบ™เบญเบ. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒเบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.

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. เปƒเบ™เปเบ•เปˆเบฅเบฐเบ‚เปเป‰เบ„เบงเบฒเบกเป„เบ›เบซเบฒเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบžเบตเปˆเบกเบกเบนเบ™เบ„เปˆเบฒ counter เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™. เบ–เป‰เบฒเบกเบนเบ™เบ„เปˆเบฒ counter เปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบšเปเปˆเบเบปเบ‡เบเบฑเบšเบกเบนเบ™เบ„เปˆเบฒเปƒเบ™เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบกเบฑเบ™; เบ–เป‰เบฒเบกเบฑเบ™เป€เบฎเบฑเบ”, เบžเบงเบเป€เบฎเบปเบฒเบ›เบธเบ‡เปเบ•เปˆเบ‡เบกเบฑเบ™เปเบฅเบฐเป€เบžเบตเปˆเบกเบ•เบปเบงเบ™เบฑเบšเปƒเบ™เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เป‚เบ”เบ 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-bit unsigned int เบˆเบฒเบโ€‹เบ‚เปเป‰โ€‹เบ„เบงเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบชเบปเปˆเบ‡โ€‹เบญเบญเบโ€‹.

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเป‚เบซเบฅเบ” 32 bits เบˆเบฒเบเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”. เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเป‚เบซเบฅเบ”เบเบปเบ‡เบเบฑเบšเป€เบฅเบเบ—เบตเปˆเบœเปˆเบฒเบ™; เบ–เป‰เบฒเบšเปเปˆเปเบกเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบเบปเบเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบœเปˆเบฒเบ™เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™, เบเบฒเบ™เบเบปเบเป€เบงเบฑเป‰เบ™เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบ–เบดเป‰เบก.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปƒเบซเป‰เป€เบฎเบปเบฒเบฅเบงเบšเบฅเบงเบก.

~/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

เบขเบนเปˆโ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰ เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปƒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™.

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบกเบฑเบ™เบšเปเปˆเบชเบฐเบ”เบงเบเบ—เบตเปˆเบˆเบฐเบ„เบฑเบ”เบฅเบญเบเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™ script เบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เป€เบ›เบฑเบ™เบ„เบปเบ‡เบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบฅเบงเบšเบฅเบงเบกเบเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป‚เบ”เบเปƒเบŠเป‰ "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

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบžเบฝเบ‡เปเบ•เปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ script เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเบชเบฑเบ™เบเบฒ. เปเบ•เปˆเบ™เบญเบเบˆเบฒเบเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เบปเบ‡เบ—เบตเปˆ code. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเปƒเบซเบกเปˆ lotter-compiled-for-test.fif, เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบฅเบงเบกเบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ lottery-test-suite.fif.

เปƒเบซเป‰เป€เบžเบตเปˆเบกเบฅเบฐเบซเบฑเบ” skirt เบเบฑเบš sh, เป€เบŠเบดเปˆเบ‡เบžเบฝเบ‡เปเบ•เปˆเบˆเบฐ duplicate เป„เบŸเบฅเปŒเบฅเบงเบšเบฅเบงเบกเปƒเบ™ 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 เบšเปˆเบญเบ™โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เป€เบเบฑเบšโ€‹เบฎเบฑเบโ€‹เบชเบฒโ€‹เบชเบฑเบ™โ€‹เบเบฒโ€‹เบชเปเบฒโ€‹เป€เบ™เบปเบฒโ€‹เปเบฅเบฐ clone เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹เบ‚เบฝเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบ„เบปเบ‡โ€‹เบ—เบตเปˆโ€‹ 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.

เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเบเบฐเปเบˆเบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบญเบญเบเบˆเบฒเบ stack เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบกเบฑเบ™เบˆเบฒเบเป€เบญเบเบฐเบŠเบปเบ™เป„เบ”เป‰.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบเบฒเบ™เบขเบฑเป‰เบ‡เบขเบทเบ™เบฅเบฒเบเป€เบŠเบฑเบ™. เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš. เบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเบญเปˆเบฒเบ™เบฅเบฐเบซเบฑเบ”เบชเปˆเบงเบ™เบ•เบปเบงเบˆเบฒเบเป„เบŸเบฅเปŒเป‚เบ”เบเปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™ 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 !

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบตเบ—เบฑเบ‡เบชเบญเบ‡.

เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™ arbitrary เปƒเบ™เบฅเปเบฒเบ”เบฑเบšเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆ 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 !

เบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ‚เบฝเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบกเบตเบฅเบฒเบเป€เบŠเบฑเบ™, เบกเบฑเบ™เบˆเบฐเบกเบตเบžเบฝเบ‡เปเบ•เปˆเบฅเบฒเบเป€เบŠเบฑเบ™เปเบฅเบฐเบกเบนเบ™เบ„เปˆเบฒ counter.

เบ—เปเบฒเบญเบดเบ”, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบปเปˆเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบฑเบ™เบกเบฑเบ™เบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เบชเปˆเบงเบ™เบ•เบปเบงเปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบฅเบปเบ‡เบ™เบฒเบก.

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 bits เบ‚เบญเบ‡เบฅเบฒเบเป€เบŠเบฑเบ™เบˆเบฒเบเบ‚เปเป‰เบ„เบงเบฒเบกเปเบฅเบฐเบ‚เบฝเบ™เบกเบฑเบ™เบเบฑเบšเบ•เบปเบงเปเบ›, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ™เบฑเบš 32 bits เบ‚เบญเบ‡เบ•เบปเบงเบ›เปˆเบฝเบ™เปเบ›เบ‡ counter.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เบกเบฑเบ™.

เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบ„เบปเบฒเป€เบ•เบตเบ—เบตเปˆเป‚เบญเบ™เบเบฑเบšเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เปเบฅเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบฅเบฒเบเป€เบŠเบฑเบ™. เบ–เป‰เบฒเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบšเปเปˆเบเบปเบ‡เบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ–เบดเป‰เบกเบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก.

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));

เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡ right here.

เปƒเบซเป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเบชเบญเบ‡เบฅเบปเป‰เบกเป€เบซเบฅเบง. เบชเปเบฒเบฅเบฑเบšเบชเบญเบ‡เป€เบซเบ”เบœเบปเบ™, เบšเปเปˆเบกเบต bits เบžเบฝเบ‡เบžเปเปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเปเบฅเบฐเบšเปเปˆเบกเบต bits เบžเบฝเบ‡เบžเปเปƒเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ, เบชเบฐเบ™เบฑเป‰เบ™เบฅเบฐเบซเบฑเบ” crash เปƒเบ™เป€เบงเบฅเบฒ parsing. เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบžเบตเปˆเบกเบฅเบฒเบเป€เบŠเบฑเบ™เปƒเบซเป‰เบเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบชเบปเปˆเบ‡เปเบฅเบฐเบ„เบฑเบ”เบฅเบญเบเบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบฑเป‰เบ‡เบชเบธเบ”เบ—เป‰เบฒเบ.

เปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบฑเป‰เบ‡เบ—เบตเบชเบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบžเบตเปˆเบกเบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเปเบฅเบฐเบ›เปˆเบฝเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”. เบ™เบตเป‰เบ„เบทเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™.

เบ‚เปเปƒเบซเป‰เบ‚เบฝเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบฑเป‰เบ‡เบ—เบตเบชเบตเปˆ, เปƒเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเป€เบŠเบฑเบ™เบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เบชเปˆเบงเบ™เบ•เบปเบงเบ‚เบญเบ‡เบ„เบปเบ™เบญเบทเปˆเบ™. เบกเบฒเบชเป‰เบฒเบ‡เบเบฐเปเบˆเบชเปˆเบงเบ™เบ•เบปเบงเบญเบทเปˆเบ™ เปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบกเบฑเบ™เปƒเบชเปˆเป„เบŸเบฅเปŒ not-owner.pk. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบŠเบฑเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ”เป‰เบงเบเบเบฐเปเบˆเบชเปˆเบงเบ™เบ•เบปเบงเบ™เบตเป‰. เบ‚เปเปƒเบซเป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบœเปˆเบฒเบ™. เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒ เปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰.

เบ”เบฝเบงเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเป€เบซเบ”เบœเบปเบ™เบชเบฑเบ™เบเบฒเบชเบฐเบซเบผเบฒเบ”.
ะ’ recv_external() เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบญเบกเบฎเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบกเบชเบญเบ‡เบ›เบฐเป€เบžเบ”.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบชเบฑเบ™เบเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฐเบชเบปเบกเบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ‚เบญเบ‡เบœเบนเป‰เบ™, เป€เบ‡เบดเบ™เบ™เบตเป‰เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป‚เบญเบ™เปƒเบซเป‰เบเบฑเบšเบœเบนเป‰เบชเป‰เบฒเบ‡ lottery เป„เบ”เป‰. เบ—เบตเปˆเบขเบนเปˆเบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เบ‚เบญเบ‡เบœเบนเป‰เบชเป‰เบฒเบ‡เบซเบงเบเบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เป€เบกเบทเปˆเบญเบชเบฑเบ™เบเบฒเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™.

เบžเบฝเบ‡เปเบ•เปˆเปƒเบ™เบเปเบฅเบฐเบ™เบต, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เบ—เบตเปˆเบขเบนเปˆเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบปเปˆเบ‡เบเบผเบฒเบกเบ‚เบญเบ‡เบœเบนเป‰เบชเบนเบ™เป€เบชเบ. เบžเบงเบเป€เบฎเบปเบฒเบ„เบงเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เปเบเบกเบˆเบฒเบเบซเบงเบเป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡.

เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”. เบ—เปเบฒเบญเบดเบ”เปƒเบซเป‰เบ‚เบฝเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเบˆเบฐเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบชเบปเปˆเบ‡เบ‚เปเป‰เบ„เบงเบฒเบก, เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เป„เบ”เป‰เบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบขเบนเปˆเปƒเบซเบกเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™. เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบก, เบ™เบญเบเบˆเบฒเบ counter เปเบฅเบฐเบ—เบตเปˆเบขเบนเปˆเปƒเบซเบกเปˆ, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบชเบปเปˆเบ‡ action เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบก 7-bit เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบเบฅเบปเบš, เบ‚เบถเป‰เบ™เบเบฑเบšเบกเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฅเบทเบญเบเบงเบดเบ—เบตเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเปƒเบ™เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”.

<b 0 32 u, 1 @ 7 u, new_owner_wc @  32 i, new_owner_account_id @ 256 u, b> message_to_sign !

เปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ smartcontract เปเบกเปˆเบ™ deserialized storage เปƒเบ™ Fift. Deserialization เบ‚เบญเบ‡เบ•เบปเบงเปเบ›เปเบกเปˆเบ™เป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™ Fift.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒ เบกเบต dough เป€เบžเบตเปˆเบก.

เปƒเบซเป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบกเบฑเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง. เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบžเบตเปˆเบกเป€เบซเบ”เบœเบปเบ™เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบซเบงเบ.

เปƒเบ™เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบžเบงเบเป€เบฎเบปเบฒเบชเบทเบšเบ•เปเปˆเบงเบดเป€เบ„เบฒเบฐ message, เบญเปˆเบฒเบ™เปƒเบ™ action. เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบ•เบทเบญเบ™เบ—เปˆเบฒเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบกเบตเบชเบญเบ‡ action: เบ›เปˆเบฝเบ™เบ—เบตเปˆเบขเบนเปˆเปเบฅเบฐเบชเบปเปˆเบ‡เบเบผเบฒเบก.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบญเปˆเบฒเบ™เบ—เบตเปˆเบขเบนเปˆเปƒเบซเบกเปˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบกเบฑเบ™เป„เบงเป‰เปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™.
เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเบชเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบง. เบกเบฑเบ™ crashed เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบชเบฑเบ™เบเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก parses 7 bits เบˆเบฒเบเบ‚เปเป‰เบ„เบงเบฒเบก, เบ—เบตเปˆเบ‚เบฒเบ”เบซเบฒเบเป„เบ›เปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš. เป€เบžเบตเปˆเบกเบญเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเปƒเบชเปˆเบ‚เปเป‰เบ„เบงเบฒเบก 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-bit เบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบš workchain เปเบฅเบฐ 256-bit เบ•เบปเบงเป€เบฅเบเบšเบฑเบ™เบŠเบตเบ—เบตเปˆเบšเปเปˆเบŠเป‰เปเบฒเบเบฑเบ™ integer integer เบ™เบตเป‰. เบ•เบปเบงเบขเปˆเบฒเบ‡, -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" เปƒเบชเปˆ stack เป„เบ”เป‰:

-1 12345 "sender.addr" 

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆ -rot, เป€เบŠเบดเปˆเบ‡เบ›เปˆเบฝเบ™ stack เปƒเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡ stack เบกเบตเบ•เบปเบงเป€เบฅเบเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ:

"sender.addr" -1 12345

256 u>B เบ›เปˆเบฝเบ™เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบฅเบปเบš 256-bit เป€เบ›เบฑเบ™ bytes.

"sender.addr" -1 BYTES:0000000000000000000000000000000000000000000000000000000000003039

swap เปเบฅเบเบ›เปˆเบฝเบ™เบชเบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡ stack.

"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 -1

32 i>B เบ›เปˆเบฝเบ™เบˆเบณเบ™เบงเบ™เป€เบ•เบฑเบก 32-bit เป€เบ›เบฑเบ™ bytes.

"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 BYTES:FFFFFFFF

B+ เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบชเบญเบ‡เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡ bytes.

 "sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039FFFFFFFF

เบญเบตเบเป€เบ—เบทเปˆเบญ เปœเบถเปˆเบ‡ swap.

BYTES:0000000000000000000000000000000000000000000000000000000000003039FFFFFFFF "sender.addr" 

เปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบ bytes เบ–เบทเบเบ‚เบฝเบ™เปƒเบชเปˆเป„เบŸเบฅเปŒ B>file. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบตเป‰ stack เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ. เบžเบงเบเป€เบฎเบปเบฒเบขเบธเบ”เป€เบŠเบปเบฒ 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));
}

เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™.

เบ”เบฝเบงเบ™เบตเป‰เบชเบดเปˆเบ‡เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ, เปƒเบซเป‰เบชเป‰เบฒเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบฎเบฑเบšเป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบˆเบฒเบเป‚เบฅเบเบžเบฒเบเบ™เบญเบ (เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบญเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ).

เบกเบฒเป€เบžเบตเปˆเบกเบงเบดเบ—เบตเบเบฒเบ™. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ‚เบฝเบ™เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”.

เบ‚เป‰เบญเบเบเบฑเบ‡เบฅเบทเบกเป€เบžเบตเปˆเบกเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ—เปเบฒเบญเบดเบ”เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบœเบตเบเปเบœเปˆเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”. เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™. เปเบฅเบฐเบ•เปเปˆเป„เบ› เปเบเป‰เป„เบ‚ bug เบเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡ 1/3 เบ‚เบญเบ‡เบˆเปเบฒเบ™เบงเบ™เป€เบ‡เบดเบ™เป„เบ›เบเบฑเบ‡เบšเบฑเบ™เบŠเบตเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡.

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบเบฒเบ™เป€เบœเบตเบเปเบœเปˆเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”. เบกเบฒเบชเป‰เบฒเบ‡เป‚เบŸเบ™เป€เบ”เบต requests.

เบ‚เป‰เบญเบเป€เบญเบปเบฒเบฅเบฐเบซเบฑเบ”เบชเบดเปˆเบ‡เบžเบดเบกเป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™ simple-wallet-code.fc เบ—เบตเปˆ เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒ เปƒเบ™ repository เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™.

เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบ„เบงเบ™เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆ. เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบชเบฑเบ™เบเบฒเบญเบฑเบ”เบชเบฐเบฅเบดเบเบฐ เปเบฅเบฐเบ‚เปเป‰เบ„เบงเบฒเบกเบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบตเป‰, เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ—เบตเปˆเบขเบนเปˆเปเบกเปˆเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบžเบดเบกเป€เบœเบตเบเปเบœเปˆเปƒเบ™ TON. เบ•เปเปˆเป„เบ›, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเบปเปˆเบ‡เบซเบผเบฒเบเบเบผเบฒเบกเป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆเบ™เบตเป‰, เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเบปเปˆเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบŠเป‰เป€เบงเบฅเบฒเบ„เบฐเบ™เบฐเบเปเบฒเบกเบฐเบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เปเบฅเบฐเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบขเบนเปˆเปƒเบ™เบกเบฑเบ™ (เบœเบนเป‰เบเบงเบ”เบชเบญเบšเบ—เบตเปˆเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ” smart. เบชเบฑเบ™เบเบฒ). เบฅเบฐเบซเบฑเบ”เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป„เบ”เป‰เบ—เบตเปˆเบ™เบตเป‰.

เบ•เปเปˆเป„เบ›เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เป€เบœเบตเบเปเบœเปˆเปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบš 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 Gram เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบชเบญเบ‡เบชเบฒเบกเบงเบดเบ™เบฒเบ—เบตเบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฝเบงเบเบฑเบ™. เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เบเบผเบฒเบกเบ‚เป‰เบญเบเปƒเบŠเป‰ เบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™, เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบœเบนเป‰เปƒเบ”เบœเบนเป‰เบซเบ™เบถเปˆเบ‡เบˆเบฒเบเบเบฒเบ™เบชเบปเบ™เบ—เบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบš g, เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบšเบปเบ”เบ„เบงเบฒเบก.

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

เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ right here.

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เบชเป‰เบฒเบ‡เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป€เบžเบทเปˆเบญเบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”.

เบซเบผเบฒเบเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบญเบญเบเบˆเบฒเบเบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เบ—เบตเปˆเบขเบนเปˆเป€เบ›เบฑเบ™เบงเบฝเบเป€เบญเบเบฐเบฅเบฒเบ”, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เบญเบฑเบ™เบ—เบตเบชเบญเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบเบผเบฒเบกเป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡. เปƒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เป€เบ›เบฑเบ™โ€‹เบˆเบดเบ‡, we will need to do the same as in the test for sending grams .

เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”, เบšเปˆเบญเบ™เบ—เบตเปˆ msg_seqno 165, action 2 เปเบฅเบฐ 9.5 เบเบผเบฒเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡.

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

เบขเปˆเบฒเบฅเบทเบกเป€เบŠเบฑเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ”เป‰เบงเบเบเบฐเปเบˆเบชเปˆเบงเบ™เบ•เบปเบงเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ lottery.pk, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เปƒเบ™เป€เบงเบฅเบฒเบชเป‰เบฒเบ‡เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™.

เบเบฒเบ™โ€‹เบฎเบฑเบšโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบˆเบฒเบโ€‹เบชเบฑเบ™โ€‹เบเบฒ smart เป‚เบ”เบโ€‹เปƒเบŠเป‰โ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบฑเบ™เบเบฒ smart เป„เบ”เป‰เบฎเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™.

เป€เบ›เบตเบ”เบ•เบปเบง 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 เบˆเบฒเบเป€เบŸเบชเบšเบธเบ, เป€เบŠเบดเปˆเบ‡เบกเบตเบœเบนเป‰เบŠเบปเบกเบ—เบตเปˆเบกเบตเบ—เปˆเบฒเปเบฎเบ‡เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒ TON. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบฎเบนเป‰เป€เบเบทเบญเบšเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบเปˆเบฝเบงเบเบฑเบš Libra, เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เป‚เบ”เบเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบกเบตเบเบดเบ”เบˆเบฐเบเปเบฒเบซเบผเบฒเบเบเปˆเบงเบฒเบขเบนเปˆเปƒเบ™เบŠเบธเบกเบŠเบปเบ™ TON. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบŠเบธเบกเบŠเบปเบ™เบ‚เบญเบ‡ TON เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบขเบนเปˆเปƒเบ•เป‰เบ”เบดเบ™, เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เป€เบขเบฑเบ™.

เป€เบญเบเบฐเบชเบฒเบ™

  1. เป€เบญเบเบฐเบชเบฒเบ™ TON เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™: https://test.ton.org
  2. TON repository เบขเปˆเบฒเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เบ—เบฒเบ‡โ€‹เบเบฒเบ™โ€‹: https://github.com/ton-blockchain/ton
  3. เบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™: https://wallet.ton.org
  4. เบ„เบฑเบ‡เบชเบฑเบ™เบเบฒเบญเบฑเบ”เบชเบฐเบฅเบดเบเบฐเบˆเบฒเบเบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰: https://github.com/raiym/astonished
  5. เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”: https://ton-lottery.appspot.com
  6. Repository เบชเปเบฒเบฅเบฑเบšเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบเบชเปเบฒเบฅเบฑเบš 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

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster