เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เช“เชชเชจ เชจเซ‡เชŸเชตเชฐเซเช• (TON) เชฎเชพเช‚ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฒเช–เชตเซ‹ เช…เชจเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเซ‹ เชคเซ‡ เชตเชฟเชถเซ‡

TON เชฎเชพเช‚ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฒเช–เชตเซ‹ เช…เชจเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเซ‹ เชคเซ‡ เชตเชฟเชถเซ‡

เช† เชฒเซ‡เช– เชถเซ‡เชจเชพ เชตเชฟเชถเซ‡ เช›เซ‡?

เชฒเซ‡เช–เชฎเชพเช‚ เชนเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถ เช•เซ‡ เชฎเซ‡เช‚ เชชเซเชฐเชฅเชฎ (เชฌเซ‡เชฎเชพเช‚เชฅเซ€) เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เชธเซเชชเชฐเซเชงเชพเชฎเชพเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชญเชพเช— เชฒเซ€เชงเซ‹, เช‡เชจเชพเชฎ เชจ เชฒเซ€เชงเซเช‚, เช…เชจเซ‡ เชฎเชพเชฐเชพ เช…เชจเซเชญเชตเชจเซ‡ เชฒเซ‡เช–เชฎเชพเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เชœเซ‡เชฅเซ€ เชคเซ‡ เชตเชฟเชธเซเชฎเซƒเชคเชฟเชฎเชพเช‚ เชกเซ‚เชฌเซ€ เชจ เชœเชพเชฏ เช…เชจเซ‡, เช•เชฆเชพเชš, เชฎเชฆเชฆ เช•เชฐเซ€ เชถเช•เซ‡. เช•เซ‹เชˆ

เช•เชพเชฐเชฃ เช•เซ‡ เชนเซเช‚ เช…เชฎเซ‚เชฐเซเชค เช•เซ‹เชก เชฒเช–เชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชจ เชนเชคเซ‹, เชชเชฐเช‚เชคเซ เช•เช‚เชˆเช• เช•เชพเชฐเซเชฏ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชนเชคเซ‹, เชฒเซ‡เช– เชฎเชพเชŸเซ‡ เชฎเซ‡เช‚ เช‡เชจเซเชธเซเชŸเชจเซเชŸ เชฒเซ‹เชŸเชฐเซ€ เชฎเชพเชŸเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เช…เชจเซ‡ เชเชตเซ€ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชฒเช–เซ€ เช›เซ‡ เชœเซ‡ เชฎเชงเซเชฏเชตเชฐเซเชคเซ€ เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เชธเซ€เชงเชพ TON เชฅเซ€ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชกเซ‡เชŸเชพ เชฌเชคเชพเชตเซ‡ เช›เซ‡.

เช† เชฒเซ‡เช– เชคเซ‡ เชฒเซ‹เช•เซ‹ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชฅเชถเซ‡ เชœเซ‡เช“ TON เชฎเชพเช‚ เชคเซ‡เชฎเชจเซ‹ เชชเซเชฐเชฅเชฎ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เซเชฏเชพเช‚เชฅเซ€ เชถเชฐเซ‚ เช•เชฐเชตเซเช‚ เชคเซ‡ เชœเชพเชฃเชคเชพ เชจเชฅเซ€.

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เชฒเซ‹เชŸเชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชนเซเช‚ เชชเชฐเซเชฏเชพเชตเชฐเชฃเชจเซ‡ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเชพเชฅเซ€ เชฒเชˆเชจเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพ, เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เช…เชจเซ‡ เชกเซ‡เชŸเชพ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชฒเช–เชตเชพ เชธเซเชงเซ€ เชœเชˆเชถ.

เชธเซเชชเชฐเซเชงเชพเชฎเชพเช‚ เชญเชพเช— เชฒเซ‡เชตเชพ เชตเชฟเชถเซ‡

เช—เชฏเชพ เช“เช•เซเชŸเซ‹เชฌเชฐเชฎเชพเช‚, เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎเซ‡ เชจเชตเซ€ เชญเชพเชทเชพเช“ เชธเชพเชฅเซ‡ เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เชธเซเชชเชฐเซเชงเชพเชจเซ€ เชœเชพเชนเซ‡เชฐเชพเชค เช•เชฐเซ€ เชนเชคเซ€ Fift ะธ FunC. เชชเชพเช‚เชš เชธเซ‚เชšเชฟเชค เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚เชฅเซ€ เช•เซ‹เชˆเชชเชฃ เชฒเช–เชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เชนเชคเซเช‚. เชฎเชจเซ‡ เชฒเชพเช—เซเชฏเซเช‚ เช•เซ‡ เช•เช‚เชˆเช• เช…เชฒเช— เช•เชฐเชตเซเช‚, เช•เซ‹เชˆ เชญเชพเชทเชพ เชถเซ€เช–เชตเซ€ เช…เชจเซ‡ เช•เช‚เชˆเช• เชฌเชจเชพเชตเชตเซเช‚ เชธเชพเชฐเซเช‚ เชฐเชนเซ‡เชถเซ‡, เชชเช›เซ€ เชญเชฒเซ‡ เชฎเชพเชฐเซ‡ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชฌเซ€เชœเซเช‚ เช•เช‚เชˆ เชฒเช–เชตเซเช‚ เชจ เชชเชกเซ‡. เช‰เชชเชฐเชพเช‚เชค, เชตเชฟเชทเชฏ เชธเชคเชค เชนเซ‹เช  เชชเชฐ เช›เซ‡.

เชคเซ‡ เช•เชนเซ‡เชตเซเช‚ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เช•เซ‡ เชฎเชจเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชตเชฟเช•เชธเชพเชตเชตเชพเชจเซ‹ เช•เซ‹เชˆ เช…เชจเซเชญเชต เชจเชฅเซ€.

เชฎเซ‡เช‚ เช–เซ‚เชฌ เชœ เช…เช‚เชค เชธเซเชงเซ€ เชญเชพเช— เชฒเซ‡เชตเชพเชจเซเช‚ เช†เชฏเซ‹เชœเชจ เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ เชชเช›เซ€ เชเช• เชธเชฎเซ€เช•เซเชทเชพ เชฒเซ‡เช– เชฒเช–เซเชฏเซ‹, เชชเชฐเช‚เชคเซ เชนเซเช‚ เชคเชฐเชค เชœ เชชเซเชฐเชฅเชฎ เชฒเซ‡เช–เชฎเชพเช‚ เชจเชฟเชทเซเชซเชณ เช—เชฏเซ‹. เช†เชˆ เชเช• เชชเชพเช•เซ€เชŸ เชฒเช–เซเชฏเซเช‚ เชฎเชฒเซเชŸเซ€-เชธเชฟเช—เซเชจเซ‡เชšเชฐ เชšเชพเชฒเซ เชธเชพเชฅเซ‡ FunC เช…เชจเซ‡ เชคเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ เชเช• เช†เชงเชพเชฐ เชคเชฐเซ€เช•เซ‡ เชฒเซ€เชงเซ‹ เชธเซ‹เชฒเชฟเชกเชฟเชŸเซ€ เชชเชฐ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ.

เชคเซ‡ เชธเชฎเชฏเซ‡, เชฎเซ‡เช‚ เชตเชฟเชšเชพเชฐเซเชฏเซเช‚ เช•เซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เช•เซ‹เชˆ เช‡เชจเชพเชฎ เชธเซเชฅเชพเชจ เชฒเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เช† เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‡, 40 เชฎเชพเช‚เชฅเซ€ เชฒเช—เชญเช— 60 เชธเชนเชญเชพเช—เซ€เช“ เช‡เชจเชพเชฎ-เชตเชฟเชœเซ‡เชคเชพ เชฌเชจเซเชฏเชพ เช…เชจเซ‡ เชนเซเช‚ เชคเซ‡เชฎเชจเซ€ เชตเชšเซเชšเซ‡ เชจเชนเซ‹เชคเซ‹. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช†เชฎเชพเช‚ เช•เช‚เชˆ เช–เซ‹เชŸเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชเช• เชตเชธเซเชคเซ เชฎเชจเซ‡ เชชเชฐเซ‡เชถเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‹เชจเซ€ เช˜เซ‹เชทเชฃเชพ เชธเชฎเชฏเซ‡, เชฎเชพเชฐเชพ เช•เชฐเชพเชฐ เชฎเชพเชŸเซ‡เชจเชพ เชชเชฐเซ€เช•เซเชทเชฃเชจเซ€ เชธเชฎเซ€เช•เซเชทเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชจ เชนเชคเซ€, เชฎเซ‡เช‚ เชšเซ‡เชŸเชฎเชพเช‚ เชธเชนเชญเชพเช—เซ€เช“เชจเซ‡ เชชเซ‚เช›เซเชฏเซเช‚ เช•เซ‡ เชถเซเช‚ เชฌเซ€เชœเซเช‚ เช•เซ‹เชˆ เช›เซ‡ เชœเซ‡เชจเซ€ เชชเชพเชธเซ‡ เชคเซ‡ เชจเชฅเซ€, เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เชจเชฅเซ€.

เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡ เชฎเชพเชฐเชพ เชธเช‚เชฆเซ‡เชถเชพเช“ เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ€เชจเซ‡, เชฌเซ‡ เชฆเชฟเชตเชธ เชชเช›เซ€ เชจเซเชฏเชพเชฏเชพเชงเซ€เชถเซ‹เช เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ€ เช…เชจเซ‡ เชฎเชจเซ‡ เชนเชœเซ เชชเชฃ เช เชธเชฎเชœเชพเชคเซเช‚ เชจเชฅเซ€ เช•เซ‡ เชถเซเช‚ เชคเซ‡เช“ เชญเซ‚เชฒเชฅเซ€ เชœเชœเชฟเช‚เช— เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฎเชพเชฐเซ‹ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชšเซ‚เช•เซ€ เช—เชฏเชพ เช…เชฅเชตเชพ เชซเช•เซเชค เชตเชฟเชšเชพเชฐเซเชฏเซเช‚ เช•เซ‡ เชคเซ‡ เชเชŸเชฒเซเช‚ เช–เชฐเชพเชฌ เช›เซ‡ เช•เซ‡ เชคเซ‡เชจเซ‡ เชŸเชฟเชชเซเชชเชฃเซ€เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เชฎเซ‡เช‚ เชชเซƒเชทเซเช  เชชเชฐ เชเช• เชชเซเชฐเชถเซเชจ เชชเซ‚เช›เซเชฏเซ‹, เชชเชฐเช‚เชคเซ เชœเชตเชพเชฌ เชฎเชณเซเชฏเซ‹ เชจเชนเซ€เช‚. เชœเซ‹ เช•เซ‡ เชคเซ‡ เช•เซ‹เชˆ เชฐเชนเชธเซเชฏ เชจเชฅเซ€ เช•เซ‡ เช•เซ‹เชฃเซ‡ เชจเชฟเชฐเซเชฃเชฏ เช•เชฐเซเชฏเซ‹, เชฎเซ‡เช‚ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชธเช‚เชฆเซ‡เชถเชพเช“ เชฒเช–เชตเชพเชจเซเช‚ เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เชฎเชพเชจเซเชฏเซเช‚.

เชธเชฎเชœเชตเชพเชฎเชพเช‚ เช˜เชฃเซ‹ เชธเชฎเชฏ เชตเซ€เชคเซ€ เช—เชฏเซ‹, เชคเซ‡เชฅเซ€ เชฒเซ‡เช– เชฒเช–เชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เชนเชœเซ เชธเซเชงเซ€ เช˜เชฃเซ€ เชฌเชงเซ€ เชฎเชพเชนเชฟเชคเซ€ เชจ เชนเซ‹เชตเชพเชฅเซ€, เช† เชฒเซ‡เช– เชฐเชธ เชงเชฐเชพเชตเชคเชพ เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เชธเชฎเชฏ เชฌเชšเชพเชตเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเชถเซ‡.

TON เชฎเชพเช‚ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเซ‹ เช–เซเชฏเชพเชฒ

เชคเชฎเซ‡ เช•เช‚เชˆเชชเชฃ เชฒเช–เซ‹ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เชคเชฎเชพเชฐเซ‡ เช† เชตเชธเซเชคเซเชจเซ‡ เช•เชˆ เชฌเชพเชœเซเชฅเซ€ เชธเช‚เชชเชฐเซเช• เช•เชฐเชตเซ‹ เชคเซ‡ เชถเซ‹เชงเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเซ‡เชฅเซ€, เชนเชตเซ‡ เชนเซเช‚ เชคเชฎเชจเซ‡ เช•เชนเซ€เชถ เช•เซ‡ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เช•เชฏเชพ เชญเชพเช—เซ‹ เชถเชพเชฎเซ‡เชฒ เช›เซ‡. เชตเชงเซ เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡, เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเชพ เชตเชฐเซเช•เชฟเช‚เช— เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เช•เชฏเชพ เชญเชพเช—เซ‹ เชœเชพเชฃเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เช…เชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชฒเช–เชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซ€เชถเซเช‚ TON Virtual Machine (TVM), Fift ะธ FunC, เชคเซ‡เชฅเซ€ เชฒเซ‡เช– เชจเชฟเชฏเชฎเชฟเชค เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเชพ เชตเชฟเช•เชพเชธเชจเชพ เชตเชฐเซเชฃเชจ เชœเซ‡เชตเซ‹ เช›เซ‡. เช…เชฎเซ‡ เช…เชนเซ€เช‚ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชชเซ‹เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ€เชถเซเช‚ เชจเชนเซ€เช‚.

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ TVM เช…เชจเซ‡ เชญเชพเชทเชพ Fift เชธเชพเชฐเชพ เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เช›เซ‡. เชธเซเชชเชฐเซเชงเชพเชฎเชพเช‚ เชญเชพเช— เชฒเซ‡เชคเซ€ เชตเช–เชคเซ‡ เช…เชจเซ‡ เชนเชตเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เช•เชฐเชพเชฐ เชฒเช–เชคเซ€ เชตเช–เชคเซ‡, เชนเซเช‚ เช˜เชฃเซ€เชตเชพเชฐ เชคเซ‡เชฃเซ€ เชคเชฐเชซ เชตเชณเซเชฏเซ‹.

เชฎเซเช–เซเชฏ เชญเชพเชทเชพ เช•เซ‡ เชœเซ‡เชฎเชพเช‚ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡ เช›เซ‡ FunC. เช† เช•เซเชทเชฃเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เช•เซ‹เชˆ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เช•เช‚เชˆเช• เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เชญเช‚เชกเชพเชฐเชฎเชพเช‚เชฅเซ€ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช…เชจเซ‡ เชคเซเชฏเชพเช‚เชจเซ€ เชญเชพเชทเชพเชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ‹ เช…เชญเซเชฏเชพเชธ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช‰เชชเชฐเชพเช‚เชค เชคเชฎเซ‡ เชญเซ‚เชคเช•เชพเชณเชจเชพ เชฌเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹. เชธเซเชชเชฐเซเชงเชพเช“ เชฒเซ‡เช–เชจเชพ เช…เช‚เชคเซ‡ เชฒเชฟเช‚เช•เซเชธ.

เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เช…เชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชเช• เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชฒเช–เซเชฏเซ‹ เช›เซ‡ FunC, เชคเซ‡ เชชเช›เซ€ เช…เชฎเซ‡ เช•เซ‹เชกเชจเซ‡ เชซเชฟเชซเซเชŸ เชเชธเซ‡เชฎเซเชฌเชฒเชฐเชฎเชพเช‚ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเซ€เช เช›เซ€เช.

เชธเช‚เช•เชฒเชฟเชค เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชจเซเช‚ เชฌเชพเช•เซ€ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เชฎเชพเช‚ เชซเช‚เช•เซเชถเชจ เชฒเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ Fift, เชœเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เช•เซ‹เชก เช…เชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เช…เชจเซเชฏ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ‡ เช‡เชจเชชเซเชŸ เชคเชฐเซ€เช•เซ‡ เชฒเซ‡เชถเซ‡, เช…เชจเซ‡ เช†เช‰เชŸเชชเซเชŸ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เชธเชพเชฅเซ‡เชจเซ€ เชซเชพเช‡เชฒ เชนเชถเซ‡. .boc (เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เชฅเชพเชฏ เช›เซ‡ "เช•เซ‹เชทเซ‹เชจเซ€ เชฅเซ‡เชฒเซ€"), เช…เชจเซ‡, เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฒเช–เซ€เช เช›เซ€เช เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡, เชเช• เช–เชพเชจเช—เซ€ เช•เซ€ เช…เชจเซ‡ เชธเชฐเชจเชพเชฎเซเช‚, เชœเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เช•เซ‹เชกเชจเชพ เช†เชงเชพเชฐเซ‡ เชœเชจเชฐเซ‡เชŸ เชฅเชพเชฏ เช›เซ‡. เชคเชฎเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเชพ เชธเชฐเชจเชพเชฎเชพ เชชเชฐ เช—เซเชฐเชพเชฎ เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‡ เชนเชœเซ เชธเซเชงเซ€ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชจเชฅเซ€.

เชชเซเชฐเชพเชชเซเชค TON เชฎเชพเช‚ เชธเซเชฎเชพเชฐเซเชŸ เช•เชฐเชพเชฐ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ .boc เชซเชพเช‡เชฒเชจเซ‡ เชฒเชพเช‡เชŸ เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ (เชจเซ€เชšเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชตเชงเซ). เชชเชฐเช‚เชคเซ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ, เชคเชฎเชพเชฐเซ‡ เช—เซเชฐเชพเชฎเชจเซ‡ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡เชฒเชพ เชธเชฐเชจเชพเชฎเชพ เชชเชฐ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซเชฏเชฅเชพ เชธเซเชฎเชพเชฐเซเชŸ เช•เชฐเชพเชฐ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชจเชนเซ€เช‚. เชชเซเชฐเช•เชพเชถเชจ เชชเช›เซ€, เชคเชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเซ‡ เชฌเชนเชพเชฐเชฅเซ€ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฒเชพเช‡เชŸ เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡) เช…เชฅเชตเชพ เช…เช‚เชฆเชฐเชฅเซ€ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชเช• เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชฌเซ€เชœเชพเชจเซ‡ TON เชจเซ€ เช…เช‚เชฆเชฐ เชธเช‚เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡) เชฎเซ‹เช•เชฒเซ€เชจเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชเช•เชตเชพเชฐ เช…เชฎเซ‡ เชธเชฎเชœเซ€เช เช•เซ‡ เช•เซ‹เชก เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เชฅเชพเชฏ เช›เซ‡, เชคเซ‡ เชธเชฐเชณ เชฌเชจเซ‡ เช›เซ‡. เช…เชฎเซ‡ เชฒเช—เชญเช— เชœเชพเชฃเซ€เช เช›เซ€เช เช•เซ‡ เช…เชฎเซ‡ เชถเซเช‚ เชฒเช–เชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช เช…เชจเซ‡ เช…เชฎเชพเชฐเซ‹ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเชถเซ‡. เช…เชจเซ‡ เชฒเช–เชคเซ€ เชตเช–เชคเซ‡, เช…เชฎเซ‡ เชนเชพเชฒเชจเชพ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเซ‡เช•เซเชŸเซเชธเชฎเชพเช‚ เช† เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเซ€เช เช›เซ€เช, เช…เชฅเชตเชพ เช…เชฎเซ‡ เช…เชฎเชฒเซ€เช•เชฐเชฃ เช•เซ‹เชกเชจเซ€ เชคเชชเชพเชธ เช•เชฐเซ€เช เช›เซ€เช Fift ะธ FunC เชธเชคเซเชคเชพเชตเชพเชฐ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚, เช…เชฅเชตเชพ เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชฎเชพเช‚ เชœเซเช“.

เช˜เชฃเซ€ เชตเชพเชฐ เชฎเซ‡เช‚ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชšเซ‡เชŸเชฎเชพเช‚ เช•เซ€เชตเชฐเซเชกเซเชธ เชถเซ‹เชงเซเชฏเชพ เชœเซเชฏเชพเช‚ เชคเชฎเชพเชฎ เชธเซเชชเชฐเซเชงเชพเชจเชพ เชธเชนเชญเชพเช—เซ€เช“ เช…เชจเซ‡ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เช•เชฐเซเชฎเชšเชพเชฐเซ€เช“ เชญเซ‡เช—เชพ เชฅเชฏเชพ, เช…เชจเซ‡ เชเชตเซเช‚ เชฌเชจเซเชฏเซเช‚ เช•เซ‡ เชธเซเชชเชฐเซเชงเชพ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฆเชฐเซ‡เช• เชคเซเชฏเชพเช‚ เชเช•เช เชพ เชฅเชฏเชพ เช…เชจเซ‡ เชซเชฟเชซเซเชŸ เช…เชจเซ‡ เชซเชจเชธเซ€ เชชเชฐ เชšเชฐเซเชšเชพ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚. เชฒเซ‡เช–เชจเชพ เช…เช‚เชคเซ‡ เชฒเชฟเช‚เช•.

เชธเชฟเชฆเซเชงเชพเช‚เชคเชฎเชพเช‚เชฅเซ€ เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธ เชคเชฐเชซ เชœเชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡.

TON เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชพเชคเชพเชตเชฐเชฃ เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเซเช‚

เชฎเซ‡เช‚ เชฎเซ‡เช•เช“เชเชธ เชชเชฐเชจเชพ เชฒเซ‡เช–เชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เชฌเชงเซเช‚ เชœ เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชกเซ‹เช•เชฐ เชชเชฐ เชธเซเชตเชšเซเช› เช‰เชฌเซเชจเซเชŸเซ 18.04 เชเชฒเชŸเซ€เชเชธเชฎเชพเช‚ เชฌเซ‡ เชตเชพเชฐ เชšเซ‡เช• เช•เชฐเซเชฏเซเช‚.

เชคเชฎเชพเชฐเซ‡ เชชเซเชฐเชฅเชฎ เชตเชธเซเชคเซ เชกเชพเช‰เชจเชฒเซ‹เชก เช…เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ lite-client เชœเซ‡เชจเซ€ เชฎเชฆเชฆเชฅเซ€ เชคเชฎเซ‡ TON เชจเซ‡ เชตเชฟเชจเช‚เชคเซ€เช“ เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ‹ เช›เซ‹.

เช…เชงเชฟเช•เซƒเชค เชตเซ‡เชฌเชธเชพเช‡เชŸ เชชเชฐเชจเซ€ เชธเซ‚เชšเชจเชพเช“ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เช–เซ‚เชฌ เชตเชฟเช—เชคเชตเชพเชฐ เช…เชจเซ‡ เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡ เชตเชฐเซเชฃเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เชตเชฟเช—เชคเซ‹เชจเซ‡ เช›เซ‹เชกเซ€ เชฆเซ‡ เช›เซ‡. เช…เชนเซ€เช‚ เช…เชฎเซ‡ เชธเซ‚เชšเชจเชพเช“เชจเซเช‚ เชชเชพเชฒเชจ เช•เชฐเซ€เช เช›เซ€เช, เชฐเชธเซเชคเชพเชฎเชพเช‚ เช–เซ‚เชŸเชคเซ€ เช…เชตเชฒเช‚เชฌเชจเชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เช เช›เซ€เช. เชฎเซ‡เช‚ เชฆเชฐเซ‡เช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชœเชพเชคเซ‡ เช•เชฎเซเชชเชพเชˆเชฒ เช•เชฐเซเชฏเซ‹ เชจเชฅเซ€ เช…เชจเซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เช‰เชฌเซเชจเซเชŸเซ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚เชฅเซ€ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเชฏเซเช‚ เชจเชฅเซ€ (เชฎเซ‡เช•เช“เชเชธ เชชเชฐ เชฎเซ‡เช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เชนเชคเซ‹ brew).

apt -y install git 
apt -y install wget 
apt -y install cmake 
apt -y install g++ 
apt -y install zlib1g-dev 
apt -y install libssl-dev 

เชเช•เชตเชพเชฐ เชฌเชงเซ€ เชจเชฟเชฐเซเชญเชฐเชคเชพเช“ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เชฅเชˆ เชœเชพเชฏ เชชเช›เซ€ เชคเชฎเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ lite-client, Fift, FunC.

เชชเซเชฐเชฅเชฎ, เช…เชฎเซ‡ TON เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชจเซ‡ เชคเซ‡เชจเซ€ เชจเชฟเชฐเซเชญเชฐเชคเชพ เชธเชพเชฅเซ‡ เช•เซเชฒเซ‹เชจ เช•เชฐเซ€เช เช›เซ€เช. เชธเช—เชตเชก เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชฌเชงเซเช‚ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เช•เชฐเซ€เชถเซเช‚ ~/TON.

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

เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€ เช…เชฎเชฒเซ€เช•เชฐเชฃเซ‹เชจเซ‡ เชชเชฃ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ‡ เช›เซ‡ Fift ะธ FunC.

เชนเชตเซ‡ เช…เชฎเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช›เซ€เช. เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เช•เซ‹เชก เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เช•เซเชฒเซ‹เชจ เชฅเชฏเซ‡เชฒ เช›เซ‡ ~/TON/ton. เช† ~/TON เชซเซ‹เชฒเซเชกเชฐ เชฌเชจเชพเชตเซ‹ build เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ‹.

mkdir ~/TON/build 
cd ~/TON/build
cmake ../ton

เช…เชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชฒเช–เชตเชพ เชœเชˆ เชฐเชนเซเชฏเชพ เชนเซ‹เชตเชพเชฅเซ€, เช…เชฎเชพเชฐเซ‡ เชฎเชพเชคเซเชฐ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ lite-clientเชชเชฐเช‚เชคเซ Fift ั FunC, เชคเซ‹ เชšเชพเชฒเซ‹ เชฌเชงเซเช‚ เช•เชฎเซเชชเชพเชˆเชฒ เช•เชฐเซ€เช. เชคเซ‡ เชเชกเชชเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชฐเชพเชน เชœเซ‹เชˆ เชฐเชนเซเชฏเชพ เช›เซ€เช.

cmake --build . --target lite-client
cmake --build . --target fift
cmake --build . --target func

เช†เช—เชณ, เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‹ เชœเซ‡เชฎเชพเช‚ เชจเซ‹เชก เชตเชฟเชถเซ‡เชจเซ‹ เชกเซ‡เชŸเชพ เช›เซ‡ lite-client เชœเซ‹เชกเชพเชถเซ‡.

wget https://test.ton.org/ton-lite-client-test1.config.json

TON เชจเซ‡ เชชเซเชฐเชฅเชฎ เชตเชฟเชจเช‚เชคเซ€เช“ เช•เชฐเชตเซ€

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชฒเซ‹เชจเซเชš เช•เชฐเซ€เช lite-client.

cd ~/TON/build
./lite-client/lite-client -C ton-lite-client-test1.config.json

เชœเซ‹ เชฌเชฟเชฒเซเชก เชธเชซเชณ เชนเชคเซเช‚, เชคเซ‹ เชชเช›เซ€ เชฒเซ‹เชจเซเชš เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชคเชฎเซ‡ เชจเซ‹เชก เชธเชพเชฅเซ‡ เชฒเชพเช‡เชŸ เช•เซเชฒเชพเชฏเช‚เชŸเชจเชพ เช•เชจเซ‡เช•เซเชถเชจเชจเซ‹ เชฒเซ‹เช— เชœเซ‹เชถเซ‹.

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

เชคเชฎเซ‡ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ help เช…เชจเซ‡ เชœเซเช“ เช•เซ‡ เช•เชฏเชพ เช†เชฆเซ‡เชถเซ‹ เช‰เชชเชฒเชฌเซเชง เช›เซ‡.

help

เชšเชพเชฒเซ‹ เช†เชฆเซ‡เชถเซ‹เชจเซ€ เชธเซ‚เชšเชฟ เชฌเชจเชพเชตเซ€เช เชœเซ‡เชจเซ‹ เช†เชชเชฃเซ‡ เช† เชฒเซ‡เช–เชฎเชพเช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚.

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

last ะฟะพะปัƒั‡ะฐะตั‚ ะฟะพัะปะตะดะฝะธะน ัะพะทะดะฐะฝะฝั‹ะน ะฑะปะพะบ ั ัะตั€ะฒะตั€ะฐ. 

sendfile <filename> ะพั‚ะฟั€ะฐะฒะปัะตั‚ ะฒ TON ั„ะฐะนะป ั ัะพะพะฑั‰ะตะฝะธะตะผ, ะธะผะตะฝะฝะพ ั ะฟะพะผะพั‰ัŒัŽ ัั‚ะพะน ะบะพะผะฐะฝะดั‹ ะฟัƒะฑะปะธะบัƒะตั‚ัั ัะผะฐั€ั‚-ะบะพะฝั‚ั€ะฐะบั‚ ะธ ะทะฐะฟั€ัะพัั‹ ะบ ะฝะตะผัƒ. 

getaccount <addr> ะทะฐะณั€ัƒะถะฐะตั‚ ั‚ะตะบัƒั‰ะตะต ัะพัั‚ะพัะฝะธะต ัะผะฐั€ั‚-ะบะพะฝั‚ั€ะฐะบั‚ะฐ ั ัƒะบะฐะทะฐะฝะฝั‹ะผ ะฐะดั€ะตัะพะผ. 

runmethod <addr> [<block-id-ext>] <method-id> <params>  ะทะฐะฟัƒัะบะฐะตั‚ get-ะผะตั‚ะพะดั‹ ัะผะฐั€ั‚ะบะพะฝั‚ั€ะฐะบั‚ะฐ. 

เชนเชตเซ‡ เช…เชฎเซ‡ เชชเซ‹เชคเซ‡ เช•เชฐเชพเชฐ เชฒเช–เชตเชพ เชคเซˆเชฏเชพเชฐ เช›เซ€เช.

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

เช†เชˆเชกเชฟเชฏเชพ

เชฎเซ‡เช‚ เช‰เชชเชฐ เชฒเช–เซเชฏเซเช‚ เชคเซ‡เชฎ, เช†เชชเชฃเซ‡ เชœเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชฒเช–เซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช เชคเซ‡ เชฒเซ‹เชŸเชฐเซ€ เช›เซ‡.

เชคเชฆเซเชชเชฐเชพเช‚เชค, เช† เช•เซ‹เชˆ เชฒเซ‹เชŸเชฐเซ€ เชจเชฅเซ€ เชœเซ‡เชฎเชพเช‚ เชคเชฎเชพเชฐเซ‡ เชŸเชฟเช•เชฟเชŸ เช–เชฐเซ€เชฆเชตเชพเชจเซ€ เช…เชจเซ‡ เชเช• เช•เชฒเชพเช•, เชฆเชฟเชตเชธ เช…เชฅเชตเชพ เชฎเชนเชฟเชจเซ‹ เชฐเชพเชน เชœเซ‹เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชชเชฐเช‚เชคเซ เชเช• เชคเซเชตเชฐเชฟเชค เชœเซ‡เชฎเชพเช‚ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช•เชฐเชพเชฐเชจเชพ เชธเชฐเชจเชพเชฎเชพ เชชเชฐ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡. N เช—เซเชฐเชพเชฎ, เช…เชจเซ‡ เชคเชฐเชค เชœ เชคเซ‡ เชชเชพเช›เซเช‚ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡ 2 * N เช—เซเชฐเชพเชฎ เช…เชฅเชตเชพ เช—เซเชฎเชพเชตเซ‡ เช›เซ‡. เช…เชฎเซ‡ เชฒเช—เชญเช— 40% เชœเซ€เชคเชตเชพเชจเซ€ เชธเช‚เชญเชพเชตเชจเชพ เชฌเชจเชพเชตเซ€เชถเซเช‚. เชœเซ‹ เชšเซเช•เชตเชฃเซ€ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเชพ เช—เซเชฐเชพเชฎ เชจ เชนเซ‹เชฏ, เชคเซ‹ เช…เชฎเซ‡ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจเชจเซ‡ เชŸเซ‹เชช-เช…เชช เชคเชฐเซ€เช•เซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเชถเซเช‚.

เชตเชงเซเชฎเชพเช‚, เชคเซ‡ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡ เช•เซ‡ เชฌเซ‡เชŸเซเชธ เชตเชพเชธเซเชคเชตเชฟเช• เชธเชฎเชฏเชฎเชพเช‚ เช…เชจเซ‡ เช…เชจเซเช•เซ‚เชณ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เชœเซ‹เชˆ เชถเช•เชพเชฏ, เชœเซ‡เชฅเซ€ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชคเชฐเชค เชœ เชธเชฎเชœเซ€ เชถเช•เซ‡ เช•เซ‡ เชคเซ‡ เชœเซ€เชคเซเชฏเซ‹ เช•เซ‡ เชนเชพเชฐเซ€ เช—เชฏเซ‹. เชคเซ‡เชฅเซ€, เชคเชฎเชพเชฐเซ‡ เชเช• เชตเซ‡เชฌเชธเชพเช‡เชŸ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡ TON เชฅเซ€ เชธเซ€เชงเชพ เชœ เชฌเซ‡เชŸเซเชธ เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฌเชคเชพเชตเชถเซ‡.

เชธเซเชฎเชพเชฐเซเชŸ เช•เชฐเชพเชฐ เชฒเช–เซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชธเช—เชตเชก เชฎเชพเชŸเซ‡, เชฎเซ‡เช‚ FunC เชฎเชพเชŸเซ‡ เช•เซ‹เชก เชนเชพเช‡เชฒเชพเช‡เชŸ เช•เชฐเซเชฏเซ‹ เช›เซ‡; เชชเซเชฒเช—เช‡เชจ เชตเชฟเชเซเชฏเซเช…เชฒ เชธเซเชŸเซเชกเชฟเชฏเซ‹ เช•เซ‹เชก เชถเซ‹เชงเชฎเชพเช‚ เชถเซ‹เชงเซ€ เช…เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡; เชœเซ‹ เชคเชฎเซ‡ เช…เชšเชพเชจเช• เช•เช‚เชˆเช• เช‰เชฎเซ‡เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เชฎเซ‡เช‚ เชชเซเชฒเช—เช‡เชจเชจเซ‡ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชฐเซ‚เชชเซ‡ เช‰เชชเชฒเชฌเซเชง เช•เชฐเชพเชตเซเชฏเซเช‚ เช›เซ‡. เช‰เชชเชฐเชพเช‚เชค, เช•เซ‹เชˆเช เช…เช—เชพเช‰ เชซเชฟเชซเซเชŸ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฒเช—เช‡เชจ เชฌเชจเชพเชตเซเชฏเซเช‚ เชนเชคเซเช‚, เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เชชเชฃ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ VSC เชฎเชพเช‚ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹.

เชšเชพเชฒเซ‹ เชคเชฐเชค เชœ เชเช• เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เชฌเชจเชพเชตเซ€เช เชœเซเชฏเชพเช‚ เช†เชชเชฃเซ‡ เชฎเชงเซเชฏเชตเชฐเซเชคเซ€ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช†เชชเซ€เชถเซเช‚.

เช†เชชเชฃเซเช‚ เชœเซ€เชตเชจ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชฒเช–เซ€เชถเซเช‚ เช…เชจเซ‡ เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเซ‡ เชคเซˆเชฏเชพเชฐ เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชธเซเชฅเชพเชจเชฟเช• เชธเซเชคเชฐเซ‡ เชคเซ‡เชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ€เชถเซเช‚. เชคเซ‡ เชชเช›เซ€ เชœ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ TON เชฎเชพเช‚ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ€เชถเซเช‚.

เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚ เชฌเซ‡ เชฌเชพเชนเซเชฏ เชชเชฆเซเชงเชคเชฟเช“ เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชชเซเชฐเชฅเชฎ, recv_external() เช† เช•เชพเชฐเซเชฏ เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เช•เชฐเชพเชฐเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เชฌเชนเชพเชฐเชจเซ€ เชฆเซเชจเชฟเชฏเชพเชฎเชพเช‚เชฅเซ€ เช†เชตเซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡, TON เชคเชฐเชซเชฅเซ€ เชจเชนเซ€เช‚, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซเชฏเชพเชฐเซ‡ เช†เชชเชฃเซ‡ เชชเซ‹เชคเซ‡ เชธเช‚เชฆเซ‡เชถ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฒเชพเช‡เชŸ-เช•เซเชฒเชพเชฏเชจเซเชŸ เชฆเซเชตเชพเชฐเชพ เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช. เชฌเซ€เชœเซเช‚, recv_internal() เช† เชคเซเชฏเชพเชฐเซ‡ เชฅเชพเชฏ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡, TON เชจเซ€ เช…เช‚เชฆเชฐ เชœ, เช•เซ‹เชˆเชชเชฃ เช•เชฐเชพเชฐ เช†เชชเชฃเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ‡ เช›เซ‡. เชฌเช‚เชจเซ‡ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚, เชคเชฎเซ‡ เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชชเชธเชพเชฐ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชšเชพเชฒเซ‹ เชเช• เชธเชฐเชณ เช‰เชฆเชพเชนเชฐเชฃเชฅเซ€ เชถเชฐเซ‚เช†เชค เช•เชฐเซ€เช เชœเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เชฅเชพเชฏ เชคเซ‹ เช•เชพเชฎ เช•เชฐเชถเซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชพเช‚ เช•เซ‹เชˆ เช•เชพเชฐเซเชฏเชพเชคเซเชฎเช• เชญเชพเชฐ เชจเชฅเซ€.

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

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

เช…เชนเซ€เช‚ เช†เชชเชฃเซ‡ เชคเซ‡ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ slice. TON เชฌเซเชฒเซ‹เช•เชšเซ‡เชจเชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพ เชเช• เชธเช‚เช—เซเชฐเชน เช›เซ‡ TVM cell เช…เชฅเชตเชพ เชฎเชพเชคเซเชฐ cell, เช†เชตเชพ เชธเซ‡เชฒเชฎเชพเช‚ เชคเชฎเซ‡ 1023 เชฌเชฟเชŸเซเชธ เชธเซเชงเซ€เชจเซ‹ เชกเซ‡เชŸเชพ เช…เชจเซ‡ เช…เชจเซเชฏ เช•เซ‹เชทเซ‹เชจเซ€ 4 เชฒเชฟเช‚เช•เซเชธ เชธเซเชงเซ€ เชธเซเชŸเซ‹เชฐ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

TVM cell slice เช…เชฅเชตเชพ slice เช† เชนเชพเชฒเชจเชพ เชเช• เชญเชพเช— เช›เซ‡ cell เชคเซ‡เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชฏ เช›เซ‡, เชคเซ‡ เชชเช›เซ€เชฅเซ€ เชธเซเชชเชทเซเชŸ เชฅเชถเซ‡. เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชฎเซเช–เซเชฏ เชตเชธเซเชคเซ เช เช›เซ‡ เช•เซ‡ เช…เชฎเซ‡ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช slice เช…เชจเซ‡ เชธเช‚เชฆเซ‡เชถเชจเชพ เชชเซเชฐเช•เชพเชฐ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ€เชจเซ‡, เชกเซ‡เชŸเชพ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‹ recv_external() เช…เชฅเชตเชพ recv_internal().

impure โ€” เชเช• เช•เซ€เชตเชฐเซเชก เชœเซ‡ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เช•เซ‡ เชซเช‚เช•เซเชถเชจ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชกเซ‡เชŸเชพเชจเซ‡ เชธเซเชงเชพเชฐเซ‡ เช›เซ‡.

เชšเชพเชฒเซ‹ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เช•เซ‹เชกเชจเซ‡ เชธเชพเชšเชตเซ€เช lottery-code.fc เช…เชจเซ‡ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเซ‹.

~/TON/build/crypto/func -APSR -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fc 

เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชซเซเชฒเซ‡เช—เซเชธเชจเซ‹ เช…เชฐเซเชฅ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡

~/TON/build/crypto/func -help

เช…เชฎเซ‡ เชฎเชพเช‚ เชซเชฟเชซเซเชŸ เชเชธเซ‡เชฎเซเชฌเชฒเชฐ เช•เซ‹เชก เช•เชฎเซเชชเชพเชˆเชฒ เช•เชฐเซเชฏเซ‹ เช›เซ‡ 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, เช† เชซเซ€เชซเซเชŸ เชเชธเซ‡เชฎเซเชฌเชฒเชฐ เชฎเชพเชŸเซ‡ เชซเซ€เชซเซเชŸเชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒ เช•เซ‹เชก เช›เซ‡.

เช…เชฎเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชšเชฒเชพเชตเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชเช• เชซเชพเช‡เชฒ เชฌเชจเชพเชตเซ€เชถเซเช‚ lottery-test-suite.fif เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เชธเช‚เช•เชฒเชฟเชค เช•เซ‹เชกเชจเซ€ เชจเช•เชฒ เช•เชฐเซ‹, เชคเซ‡เชฎเชพเช‚ เช›เซ‡เชฒเซเชฒเซ€ เชฒเชพเช‡เชจเชจเซ‡ เชฌเชฆเชฒเซ€เชจเซ‡, เชœเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเซ‡เช•เซเชŸ เช•เซ‹เชกเชจเซ‡ เชธเชคเชค เชฒเช–เซ‡ เช›เซ‡ codeเชชเช›เซ€ เชคเซ‡เชจเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ เชชเชฐ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡:

"TonUtil.fif" include
"Asm.fif" include

PROGRAM{
  DECLPROC recv_internal
  DECLPROC recv_external
  recv_internal PROC:<{
    //  in_msg
    DROP    // 
  }>
  recv_external PROC:<{
    //  in_msg
    DROP    // 
  }>
}END>s constant code

เช…เชคเซเชฏเชพเชฐ เชธเซเชงเซ€ เชคเซ‡ เชธเซเชชเชทเซเชŸ เชœเชฃเชพเชฏ เช›เซ‡, เชนเชตเซ‡ เชšเชพเชฒเซ‹ เช เชœ เชซเชพเช‡เชฒเชฎเชพเช‚ เช•เซ‹เชก เช‰เชฎเซ‡เชฐเซ€เช เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช†เชชเชฃเซ‡ TVM เชฒเซ‹เชจเซเชš เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฐเซ€เชถเซเช‚.

0 tuple 0x076ef1ea , // magic
0 , 0 , // actions msg_sents
1570998536 , // unix_time
1 , 1 , 3 , // block_lt, trans_lt, rand_seed
0 tuple 100000000000000 , dictnew , , // remaining balance
0 , dictnew , // contract_address, global_config
1 tuple // wrap to another tuple
constant c7

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

ะ’ c7 เช…เชฎเซ‡ เชธเช‚เชฆเชฐเซเชญ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเซ€เช เช›เซ€เช, เชเชŸเชฒเซ‡ เช•เซ‡, เชกเซ‡เชŸเชพ เช•เซ‡ เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ TVM (เช…เชฅเชตเชพ เชจเซ‡เชŸเชตเชฐเซเช• เชธเซเชฅเชฟเชคเชฟ) เชฒเซ‹เชจเซเชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชธเซเชชเชฐเซเชงเชพ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชชเชฃ, เชเช• เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซเช‚ เชคเซ‡ เชฌเชคเชพเชตเซเชฏเซเช‚ c7 เช…เชจเซ‡ เชฎเซ‡เช‚ เชจเช•เชฒ เช•เชฐเซ€. เช† เชฒเซ‡เช–เชฎเชพเช‚ เช†เชชเชฃเซ‡ เชฌเชฆเชฒเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ€ เชถเช•เซ‡ เช›เซ‡ rand_seed เช•เชพเชฐเชฃ เช•เซ‡ เชฐเซ‡เชจเซเชกเชฎ เชจเช‚เชฌเชฐเชจเซ€ เชœเชจเชฐเซ‡เชถเชจ เชคเซ‡เชจเชพ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡ เช…เชจเซ‡ เชœเซ‹ เชฌเชฆเชฒเชพเชˆ เชจ เชนเซ‹เชฏ, เชคเซ‹ เชฆเชฐ เชตเช–เชคเซ‡ เชคเซ‡ เชœ เชจเช‚เชฌเชฐ เชชเชฐเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

recv_internal ะธ recv_external เชฎเซ‚เชฒเซเชฏเซ‹ 0 เช…เชจเซ‡ -1 เชธเชพเชฅเซ‡เชจเชพ เชธเซเชฅเชฟเชฐเชพเช‚เช•เซ‹ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚ เชธเช‚เชฌเช‚เชงเชฟเชค เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เชฐเชนเซ‡เชถเซ‡.

เชนเชตเซ‡ เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เช–เชพเชฒเซ€ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฅเชฎ เชŸเซ‡เชธเซเชŸ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช›เซ€เช. เชธเซเชชเชทเซเชŸเชคเชพ เชฎเชพเชŸเซ‡, เชนเชฎเชฃเชพเช‚ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เชเช• เชœ เชซเชพเช‡เชฒเชฎเชพเช‚ เชคเชฎเชพเชฎ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เช‰เชฎเซ‡เชฐเซ€เชถเซเช‚ lottery-test-suite.fif.

เชšเชพเชฒเซ‹ เชเช• เชšเชฒ เชฌเชจเชพเชตเซ€เช storage เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชเช• เช–เชพเชฒเซ€ เชฒเช–เซ‹ cell, เช† เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชนเชถเซ‡.

message เช† เชคเซ‡ เชธเช‚เชฆเซ‡เชถ เช›เซ‡ เชœเซ‡ เช†เชชเชฃเซ‡ เชฌเชนเชพเชฐเชฅเซ€ เชธเซเชฎเชพเชฐเซเชŸ เชธเช‚เชชเชฐเซเช•เชฎเชพเช‚ เชชเซเชฐเชธเชพเชฐเชฟเชค เช•เชฐเซ€เชถเซเช‚. เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชนเชฎเชฃเชพเช‚ เชฎเชพเชŸเซ‡ เช–เชพเชฒเซ€ เชชเชฃ เช•เชฐเซ€เชถเซเช‚.

variable storage 
<b b> storage ! 

variable message 
<b b> message ! 

เช…เชฎเซ‡ เชธเซเชฅเชฟเชฐเชพเช‚เช•เซ‹ เช…เชจเซ‡ เชšเชฒเซ‹ เชคเซˆเชฏเชพเชฐ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเซ‡ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ TVM เชถเชฐเซ‚ เช•เชฐเซ€เช เช›เซ€เช runvmctx เช…เชจเซ‡ เชฌเชจเชพเชตเซ‡เชฒ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ‡ เช‡เชจเชชเซเชŸเชฎเชพเช‚ เชชเชพเชธ เช•เชฐเซ‹.

message @ 
recv_external 
code 
storage @ 
c7 
runvmctx 

เช…เช‚เชคเซ‡ เช†เชชเชฃเซ‡ เชธเชซเชณ เชฅเชˆเชถเซเช‚ เชคเซ‡เชตเซเช‚ เชฎเชพเชŸเซ‡ เชฎเชงเซเชฏเชตเชฐเซเชคเซ€ เช•เซ‹เชก Fift.

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ€ เช•เซ‹เชก เชšเชฒเชพเชตเซ€ เชถเช•เซ€เช เช›เซ€เช.

export FIFTPATH=~/TON/ton/crypto/fift/lib // ะฒั‹ะฟะพะปะฝัะตะผ ะพะดะธะฝ ั€ะฐะท ะดะปั ัƒะดะพะฑัั‚ะฒะฐ 
~/TON/build/crypto/fift -s lottery-test-suite.fif 

เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชญเซ‚เชฒเซ‹ เชตเชฟเชจเชพ เชšเชพเชฒเชตเซ‹ เชœเซ‹เชˆเช เช…เชจเซ‡ เช†เช‰เชŸเชชเซเชŸเชฎเชพเช‚ เช†เชชเชฃเซ‡ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชฒเซ‹เช— เชœเซ‹เชถเซเช‚:

execute SETCP 0
execute DICTPUSHCONST 19 (xC_,1)
execute DICTIGETJMPZ
execute DROP
execute implicit RET
[ 3][t 0][1582281699.325381279][vm.cpp:479]     steps: 5 gas: used=304, max=9223372036854775807, limit=9223372036854775807, credit=0

เชธเชฐเชธ, เช…เชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเซเช‚ เชชเซเชฐเชฅเชฎ เชตเชฐเซเช•เชฟเช‚เช— เชตเชฐเซเชเชจ เชฒเช–เซเชฏเซเช‚ เช›เซ‡.

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชชเชนเซ‡เชฒเชพ เช†เชชเชฃเซ‡ เชเชตเชพ เชธเช‚เชฆเซ‡เชถเชพเช“ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเซ€เช เชœเซ‡ เชฌเชนเชพเชฐเชจเซ€ เชฆเซเชจเชฟเชฏเชพเชฅเซ€ เช†เชตเซ‡ เช›เซ‡ recv_external()

เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ เชชเซ‹เชคเซ‡ เชธเช‚เชฆเซ‡เชถ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เช•เชฐเชพเชฐ เชธเซเชตเซ€เช•เชพเชฐเซ€ เชถเช•เซ‡ เช›เซ‡.

เชชเชฐเช‚เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡

  • เชธเซŒเชชเซเชฐเชฅเชฎ, เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เช•เชฐเชพเชฐเชจเซ‡ เชฌเชนเชพเชฐเชจเซ€ เชฆเซเชจเชฟเชฏเชพเชฅเซ€ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฌเชจเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช เชœเซ‡เชฅเซ€ เช•เชฐเชพเชฐเชจเชพ เชฎเชพเชฒเชฟเช• เชœ เชคเซ‡เชจเซ‡ เชฌเชพเชนเซเชฏ เชธเช‚เชฆเซ‡เชถเชพ เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ‡.
  • เชฌเซ€เชœเซเช‚, เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ TON เชจเซ‡ เชฎเชพเชจเซเชฏ เชธเช‚เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช, เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เช‡เชšเซเช›เซ€เช เช›เซ€เช เช•เซ‡ เช† เชฌเชฐเชพเชฌเชฐ เชเช•เชตเชพเชฐ เชฅเชพเชฏ เช…เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เชคเซ‡ เชœ เชธเช‚เชฆเซ‡เชถ เชซเชฐเซ€เชฅเซ€ เชฎเซ‹เช•เชฒเซ€เช, เชคเซเชฏเชพเชฐเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เชฐเชพเชฐ เชคเซ‡เชจเซ‡ เชจเช•เชพเชฐเซ‡ เช›เซ‡.

เชคเซ‡เชฅเซ€ เชฒเช—เชญเช— เชฆเชฐเซ‡เช• เช•เชฐเชพเชฐ เช† เชฌเซ‡ เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เชจเชฟเชฐเชพเช•เชฐเชฃ เช•เชฐเซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเชพเชฐเซ‹ เช•เชฐเชพเชฐ เชฌเชพเชนเซเชฏ เชธเช‚เชฆเซ‡เชถเชพเช“ เชธเซเชตเซ€เช•เชพเชฐเซ‡ เช›เซ‡, เช†เชชเชฃเซ‡ เชคเซ‡เชจเซ€ เชชเชฃ เช•เชพเชณเชœเซ€ เชฒเซ‡เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชตเชฟเชชเชฐเซ€เชค เช•เซเชฐเชฎเชฎเชพเช‚ เช•เชฐเซ€เชถเซเช‚. เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เชธเชพเชฅเซ‡ เชธเชฎเชธเซเชฏเชพ เชนเชฒ เช•เชฐเซ€เช; เชœเซ‹ เช•เชฐเชพเชฐ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เช†เชตเชพ เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชคเซ‡ เชคเซ‡เชจเซ‡ เชฌเซ€เชœเซ€ เชตเช–เชค เชšเชฒเชพเชตเชถเซ‡ เชจเชนเซ€เช‚. เช…เชจเซ‡ เชชเช›เซ€ เช…เชฎเซ‡ เชธเชฎเชธเซเชฏเชพเชจเซเช‚ เชจเชฟเชฐเชพเช•เชฐเชฃ เช•เชฐเซ€เชถเซเช‚ เชœเซ‡เชฅเซ€ เชฒเซ‹เช•เซ‹เชจเชพ เชšเซ‹เช•เซเช•เชธ เชตเชฐเซเชคเซเชณ เชœ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชชเชฐ เชธเช‚เชฆเซ‡เชถเชพ เชฎเซ‹เช•เชฒเซ€ เชถเช•เซ‡.

เชกเซเชชเซเชฒเชฟเช•เซ‡เชŸ เชธเช‚เชฆเซ‡เชถเชพเช“ เชธเชพเชฅเซ‡ เชธเชฎเชธเซเชฏเชพ เชนเชฒ เช•เชฐเชตเชพเชจเซ€ เชตเชฟเชตเชฟเชง เชฐเซ€เชคเซ‹ เช›เซ‡. เช…เชฎเซ‡ เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ€เชถเซเช‚ เชคเซ‡ เช…เชนเซ€เช‚ เช›เซ‡. เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚, เช…เชฎเซ‡ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชฎเซ‚เชฒเซเชฏ 0 เชธเชพเชฅเซ‡ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‡เชฒเชพ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเชพ เช•เชพเช‰เชจเซเชŸเชฐเชจเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ€เช เช›เซ€เช. เชธเซเชฎเชพเชฐเซเชŸ เช•เชฐเชพเชฐเชจเชพ เชฆเชฐเซ‡เช• เชธเช‚เชฆเซ‡เชถเชพเชฎเชพเช‚, เช…เชฎเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เช•เชพเช‰เชจเซเชŸเชฐ เชฎเซ‚เชฒเซเชฏ เช‰เชฎเซ‡เชฐเซ€เชถเซเช‚. เชœเซ‹ เชธเช‚เชฆเซ‡เชถเชฎเชพเช‚เชจเซ€ เช•เชพเช‰เชจเซเชŸเชฐ เชตเซ‡เชฒเซเชฏเซ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเซ€ เช•เชฟเช‚เชฎเชค เชธเชพเชฅเซ‡ เชฎเซ‡เชณ เช–เชพเชคเซ€ เชจเชฅเซ€, เชคเซ‹ เช…เชฎเซ‡ เชคเซ‡เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชคเชพ เชจเชฅเซ€; เชœเซ‹ เชคเซ‡ เชฅเชพเชฏ, เชคเซ‹ เช…เชฎเซ‡ เชคเซ‡เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚ เช•เชพเช‰เชจเซเชŸเชฐ 1 เชฅเซ€ เชตเชงเชพเชฐเซ€เช เช›เซ€เช.

เชšเชพเชฒเซ‹ เชชเชฐ เชชเชพเช›เชพ เช†เชตเซ€เช lottery-test-suite.fif เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชฌเซ€เชœเซ€ เชŸเซ‡เชธเซเชŸ เช‰เชฎเซ‡เชฐเซ‹. เชœเซ‹ เช†เชชเชฃเซ‡ เช–เซ‹เชŸเซ‹ เชจเช‚เชฌเชฐ เชฎเซ‹เช•เชฒเซ€เช, เชคเซ‹ เช•เซ‹เชกเชจเซ‡ เช…เชชเชตเชพเชฆ เชฅเชตเซ‹ เชœเซ‹เชˆเช. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชกเซ‡เชŸเชพเชจเซ‡ 166 เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เชฆเซ‹, เช…เชจเซ‡ เช…เชฎเซ‡ 165 เชฎเซ‹เช•เชฒเซ€เชถเซเช‚.

<b 166 32 u, b> storage !
<b 165 32 u, b> message !

message @ 
recv_external 
code 
storage @ 
c7 
runvmctx

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

เชšเชพเชฒเซ‹ เชฒเซ‹เชจเซเชš เช•เชฐเซ€เช.

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

เช…เชจเซ‡ เช†เชชเชฃเซ‡ เชœเซ‹เชˆเชถเซเช‚ เช•เซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เชญเซ‚เชฒ เชธเชพเชฅเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เชฅเชฏเซเช‚ เช›เซ‡.

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

เช† เชคเชฌเช•เซเช•เซ‡ lottery-test-suite.fif เชœเซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชตเซเช‚ เชœเซ‹เชˆเช เชฒเชฟเช‚เช•.

เชนเชตเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚ เช•เชพเช‰เชจเซเชŸเชฐ เชฒเซ‹เชœเซ€เช• เช‰เชฎเซ‡เชฐเซ€เช lottery-code.fc.

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

() recv_external(slice in_msg) impure {
    if (slice_empty?(in_msg)) {
        return (); 
    }
    int msg_seqno = in_msg~load_uint(32);
    var ds = begin_parse(get_data());
    int stored_seqno = ds~load_uint(32);
    throw_unless(33, msg_seqno == stored_seqno);
}

ะ’ slice in_msg เช…เชฎเซ‡ เชœเซ‡ เชธเช‚เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช เชคเซ‡ เช†เชตเซ‡เชฒเซเช‚ เช›เซ‡.

เช…เชฎเซ‡ เชชเซเชฐเชฅเชฎ เชตเชธเซเชคเซ เช เชคเชชเชพเชธเซ€เช เช›เซ€เช เช•เซ‡ เชธเช‚เชฆเซ‡เชถเชฎเชพเช‚ เชกเซ‡เชŸเชพ เช›เซ‡ เช•เซ‡ เชจเชนเซ€เช‚, เชœเซ‹ เชจเชนเซ€เช‚, เชคเซ‹ เช…เชฎเซ‡ เช–เชพเชฒเซ€ เชฌเชนเชพเชฐ เชจเซ€เช•เชณเซ€เช เช›เซ€เช.

เช†เช—เชณ เช†เชชเชฃเซ‡ เชธเช‚เชฆเซ‡เชถเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€เช เช›เซ€เช. in_msg~load_uint(32) เชจเช‚เชฌเชฐ 165, 32-เชฌเซ€เชŸ เชฒเซ‹เชก เช•เชฐเซ‡ เช›เซ‡ unsigned int เชชเซเชฐเชธเชพเชฐเชฟเชค เชธเช‚เชฆเซ‡เชถเชฎเชพเช‚เชฅเซ€.

เช†เช—เชณ เช†เชชเชฃเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚เชฅเซ€ 32 เชฌเชฟเชŸเซเชธ เชฒเซ‹เชก เช•เชฐเซ€เช เช›เซ€เช. เช…เชฎเซ‡ เชคเชชเชพเชธเซ€เช เช›เซ€เช เช•เซ‡ เชฒเซ‹เชก เช•เชฐเซ‡เชฒ เชจเช‚เชฌเชฐ เชชเชพเชธ เช•เชฐเซ‡เชฒ เชจเช‚เชฌเชฐ เชธเชพเชฅเซ‡ เชฎเซ‡เชณ เช–เชพเชฏ เช›เซ‡; เชœเซ‹ เชจเชนเซ€เช‚, เชคเซ‹ เช…เชฎเซ‡ เช…เชชเชตเชพเชฆ เช•เชฐเซ€เช เช›เซ€เช. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช…เชฎเซ‡ เชฌเชฟเชจ-เชฎเซ‡เชš เชชเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เชนเซ‹เชตเชพเชฅเซ€, เช…เชชเชตเชพเชฆ เชฅเชตเซ‹ เชœเซ‹เชˆเช.

เชนเชตเซ‡ เช•เชฎเซเชชเชพเชˆเชฒ เช•เชฐเซ€เช.

~/TON/build/crypto/func -APSR -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fc 

เชชเชฐเชฟเชฃเชพเชฎเซ€ เช•เซ‹เชกเชจเซ€ เชจเช•เชฒ เช•เชฐเซ‹ lottery-test-suite.fif, เช›เซ‡เชฒเซเชฒเซ€ เชฒเชพเช‡เชจ เชฌเชฆเชฒเชตเชพเชจเซเช‚ เชญเซ‚เชฒเชถเซ‹ เชจเชนเซ€เช‚.

เช…เชฎเซ‡ เชคเชชเชพเชธเซ€เช เช›เซ€เช เช•เซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เชชเชพเชธ เชฅเชพเชฏ เช›เซ‡:

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

เช…เชนเซ€เช‚เชฅเซ€ เชคเชฎเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชธเชพเชฅเซ‡ เช…เชจเซเชฐเซ‚เชช เช•เชฎเชฟเชŸ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹.

เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเชพ เชธเช‚เช•เชฒเชฟเชค เช•เซ‹เชกเชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชธเชพเชฅเซ‡เชจเซ€ เชซเชพเช‡เชฒเชฎเชพเช‚ เชธเชคเชค เช•เซ‰เชชเชฟ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชธเซเชตเชฟเชงเชพเชœเชจเช• เช›เซ‡, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเช–เซ€เชถเซเช‚ เชœเซ‡ เช•เซ‹เชกเชจเซ‡ เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชธเซเชฅเชฟเชฐเชพเช‚เช•เชฎเชพเช‚ เชฒเช–เชถเซ‡, เช…เชจเซ‡ เช…เชฎเซ‡ เชธเช‚เช•เชฒเชฟเชค เช•เซ‹เชกเชจเซ‡ เชซเช•เซเชค เช…เชฎเชพเชฐเชพ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชธเชพเชฅเซ‡ เชœเซ‹เชกเซ€เชถเซเช‚. "include".

เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชซเชพเช‡เชฒ เชฌเชจเชพเชตเซ‹ build.sh เชจเซ€เชšเซ‡เชจเซ€ เชธเชพเชฎเช—เซเชฐเซ€ เชธเชพเชฅเซ‡.

#!/bin/bash

~/TON/build/crypto/func -SPA -R -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fc

เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เชเช•เซเชเซ‡เช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชฌเชจเชพเชตเซ€เช.

chmod +x ./build.sh

เชนเชตเซ‡, เชซเช•เซเชค เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เช•เชฎเซเชชเชพเชˆเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชšเชฒเชพเชตเซ‹. เชชเชฐเช‚เชคเซ เช† เช‰เชชเชฐเชพเช‚เชค, เช†เชชเชฃเซ‡ เชคเซ‡เชจเซ‡ เชธเชคเชคเชฎเชพเช‚ เชฒเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ code. เชคเซ‹ เช†เชชเชฃเซ‡ เชจเชตเซ€ เชซเชพเชˆเชฒ เชฌเชจเชพเชตเซ€เชถเซเช‚ lotter-compiled-for-test.fif, เชœเซ‡เชจเซ‡ เช†เชชเชฃเซ‡ เชซเชพเช‡เชฒเชฎเชพเช‚ เชธเชฎเชพเชตเซ€เชถเซเช‚ lottery-test-suite.fif.

เชšเชพเชฒเซ‹ เชธเซเช•เชฟเชฐเซเชชเซเชŸ เช•เซ‹เชกเชจเซ‡ sh เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ€เช, เชœเซ‡ เชธเช‚เช•เชฒเชฟเชค เชซเชพเช‡เชฒเชจเซ‡ เชธเชฐเชณ เชฐเซ€เชคเซ‡ เชกเซเชชเซเชฒเชฟเช•เซ‡เชŸ เช•เชฐเชถเซ‡ lotter-compiled-for-test.fif เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เช›เซ‡เชฒเซเชฒเซ€ เชฒเซ€เชŸเซ€ เชฌเชฆเชฒเซ‹.

# copy and change for test 
cp lottery-compiled.fif lottery-compiled-for-test.fif
sed '$d' lottery-compiled-for-test.fif > test.fif
rm lottery-compiled-for-test.fif
mv test.fif lottery-compiled-for-test.fif
echo -n "}END>s constant code" >> lottery-compiled-for-test.fif

เชนเชตเซ‡, เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เชชเชฐเชฟเชฃเชพเชฎเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชšเชฒเชพเชตเซ€เช เช…เชจเซ‡ เชเช• เชซเชพเช‡เชฒ เชœเชจเชฐเซ‡เชŸ เชฅเชถเซ‡ lottery-compiled-for-test.fif, เชœเซ‡เชจเซ‡ เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพเชฎเชพเช‚ เชธเชพเชฎเซ‡เชฒ เช•เชฐเซ€เชถเซเช‚ lottery-test-suite.fif

ะ’ lottery-test-suite.fif เช•เชฐเชพเชฐ เช•เซ‹เชก เช•เชพเชขเซ€ เชจเชพเช–เซ‹ เช…เชจเซ‡ เชฒเซ€เชŸเซ€ เช‰เชฎเซ‡เชฐเซ‹ "lottery-compiled-for-test.fif" include.

เช…เชฎเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเซ€เช เช›เซ€เช เช•เซ‡ เชคเซ‡เช“ เชชเชพเชธ เชฅเชพเชฏ เช›เซ‡.

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

เชธเชฐเชธ, เชนเชตเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹เชจเชพ เชชเซเชฐเชพเชฐเช‚เชญเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เชเช• เชซเชพเช‡เชฒ เชฌเชจเชพเชตเซ€เช test.sh, เชœเซ‡ เชชเซเชฐเชฅเชฎ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชถเซ‡ build.sh, เช…เชจเซ‡ เชชเช›เซ€ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเซ‹.

touch test.sh
chmod +x test.sh

เช…เชฎเซ‡ เช…เช‚เชฆเชฐ เชฒเช–เซ€เช เช›เซ€เช

./build.sh 

echo "nCompilation completedn"

export FIFTPATH=~/TON/ton/crypto/fift/lib
~/TON/build/crypto/fift -s lottery-test-suite.fif

เชšเชพเชฒเซ‹ เชคเซ‡ เช•เชฐเซ€เช test.sh เช…เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‡ เชšเชฒเชพเชตเซ‹.

chmod +x ./test.sh
./test.sh

เช…เชฎเซ‡ เชคเชชเชพเชธ เช•เชฐเซ€เช เช›เซ€เช เช•เซ‡ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เช…เชฎเชฒเชฎเชพเช‚ เช›เซ‡.

เชธเชฐเชธ, เชนเชตเซ‡ เชธเซเชŸเชพเชฐเซเชŸเช…เชช เชชเชฐ test.sh เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชธเช‚เช•เชฒเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เช…เชจเซ‡ เชคเชฐเชค เชœ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เช…เชนเซ€เช‚ เชคเซ‡เชจเซ€ เชฒเชฟเช‚เช• เช›เซ‡ เชชเซเชฐเชคเชฟเชฌเชฆเซเชง.

เช เซ€เช• เช›เซ‡, เช†เชชเชฃเซ‡ เช†เช—เชณ เชตเชงเซ€เช เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เชšเชพเชฒเซ‹ เชธเช—เชตเชก เชฎเชพเชŸเซ‡ เชตเชงเซ เชเช• เชตเชธเซเชคเซ เช•เชฐเซ€เช.

เชšเชพเชฒเซ‹ เชเช• เชซเซ‹เชฒเซเชกเชฐ เชฌเชจเชพเชตเซ€เช build เชœเซเชฏเชพเช‚ เช…เชฎเซ‡ เช•เซ‰เชชเชฟ เช•เชฐเซ‡เชฒ เช•เซ‹เชจเซเชŸเซเชฐเซ‡เช•เซเชŸ เช…เชจเซ‡ เชคเซ‡เชจเชพ เช•เซเชฒเซ‹เชจเชจเซ‡ เชธเซเชฅเชฟเชฐเชฎเชพเช‚ เชฒเช–เซ‡เชฒเชพ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ€เชถเซเช‚ lottery-compiled.fif, lottery-compiled-for-test.fif. เชšเชพเชฒเซ‹ เชเช• เชซเซ‹เชฒเซเชกเชฐ เชชเชฃ เชฌเชจเชพเชตเซ€เช test เชŸเซ‡เชธเซเชŸ เชซเชพเช‡เชฒ เช•เซเชฏเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡? lottery-test-suite.fif เช…เชจเซ‡ เชธเช‚เชญเชตเชฟเชค เช…เชจเซเชฏ เชธเชนเชพเชฏเช• เชซเชพเช‡เชฒเซ‹. เชธเช‚เชฌเช‚เชงเชฟเชค เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ€ เชฒเชฟเช‚เช•.

เชšเชพเชฒเซ‹ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชตเชฟเช•เชธเชพเชตเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เซ€เช.

เช†เช—เชณ เชเช• เชชเชฐเซ€เช•เซเชทเชฃ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช เชœเซ‡ เชคเชชเชพเชธเซ‡ เช›เซ‡ เช•เซ‡ เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‹ เช›เซ‡ เช…เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เชธเชพเชšเซ‹ เชจเช‚เชฌเชฐ เชฎเซ‹เช•เชฒเซ€เช เชคเซเชฏเชพเชฐเซ‡ เชธเซเชŸเซ‹เชฐเชฎเชพเช‚ เช•เชพเช‰เชจเซเชŸเชฐ เช…เชชเชกเซ‡เชŸ เชฅเชพเชฏ เช›เซ‡. เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ เชคเซ‡ เชชเช›เซ€เชฅเซ€ เช•เชฐเซ€เชถเซเช‚.

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชตเชฟเชšเชพเชฐเซ€เช เช•เซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚ เช•เชฏเชพ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐ เช…เชจเซ‡ เช•เชฏเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เช…เชฎเซ‡ เชธเช‚เช—เซเชฐเชน เช•เชฐเซ€เช เช›เซ€เช เชคเซ‡ เชฌเชงเซเช‚ เชนเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเซ€เชถ.

`seqno` 32-ั… ะฑะธั‚ะฝะพะต ั†ะตะปะพะต ะฟะพะปะพะถะธั‚ะตะปัŒะฝะพะต ั‡ะธัะปะพ ัั‡ะตั‚ั‡ะธะบ. 

`pubkey` 256-ั‚ะธ ะฑะธั‚ะฝะพะต ั†ะตะปะพะต ะฟะพะปะพะถะธั‚ะตะปัŒะฝะพะต ั‡ะธัะปะพ ะฟัƒะฑะปะธั‡ะฝั‹ะน ะบะปัŽั‡, ั ะฟะพะผะพั‰ัŒัŽ ะบะพั‚ะพั€ะพะณะพ, ะผั‹ ะฑัƒะดะตะผ ะฟั€ะพะฒะตั€ัั‚ัŒ ะฟะพะดะฟะธััŒ ะพั‚ะฟั€ะฐะฒะปะตะฝะฝะพะณะพ ะธะทะฒะฝะต ัะพะพะฑั‰ะตะฝะธั, ะพ ั‡ะตะผ ะฝะธะถะต. 

`order_seqno` 32-ั… ะฑะธั‚ะฝะพะต ั†ะตะปะพะต ะฟะพะปะพะถะธั‚ะตะปัŒะฝะพะต ั‡ะธัะปะพ ั…ั€ะฐะฝะธั‚ ัั‡ะตั‚ั‡ะธะบ ะบะพะปะธั‡ะตัั‚ะฒะฐ ัั‚ะฐะฒะพะบ. 

`number_of_wins` 32-ั… ะฑะธั‚ะฝะพะต ั†ะตะปะพะต ะฟะพะปะพะถะธั‚ะตะปัŒะฝะพะต ั‡ะธัะปะพ ั…ั€ะฐะฝะธั‚  ะบะพะปะธั‡ะตัั‚ะฒะพ ะฟะพะฑะตะด. 

`incoming_amount` ั‚ะธะฟ ะดะฐะฝะฝั‹ั… Gram (ะฟะตั€ะฒั‹ะต 4 ะฑะธั‚ะฐ ะพั‚ะฒะตั‡ะฐะตั‚ ะทะฐ ะดะปะธะฝัƒ), ั…ั€ะฐะฝะธั‚ ะพะฑั‰ะตะต ะบะพะปะธั‡ะตัั‚ะฒะพ ะณั€ะฐะผะพะฒ, ะบะพั‚ะพั€ั‹ะต ะฑั‹ะปะธ ะพั‚ะฟั€ะฐะฒะปะตะฝั‹ ะฝะฐ ะบะพะฝั‚ั€ั‚ะฐะบั‚. 

`outgoing_amount` ะพะฑั‰ะตะต ะบะพะปะธั‡ะตัั‚ะฒะพ ะณั€ะฐะผะพะฒ, ะบะพั‚ะพั€ะพะต ะฑั‹ะปะพ ะพั‚ะฟั€ะฐะฒะปะตะฝะพ ะฟะพะฑะตะดะธั‚ะตะปัะผ. 

`owner_wc` ะฝะพะผะตั€ ะฒะพั€ะบั‡ะตะนะฝะฐ, 32-ั… ะฑะธั‚ะฝะพะต (ะฒ ะฝะตะบะพั‚ะพั€ั‹ั… ะผะตัั‚ะฐั… ะฝะฐะฟะธัะฐะฝะพ, ั‡ั‚ะพ 8-ะผะธ ะฑะธั‚ะฝะพะต) ั†ะตะปะพะต ั‡ะธัะปะพ. ะ’ ะดะฐะฝะฝั‹ะน ะผะพะผะตะฝั‚ ะฒัะตะณะพ ะดะฒะฐ -1 ะธ 0. 

`owner_account_id` 256-ั‚ะธ ะฑะธั‚ะฝะพะต ั†ะตะปะพะต ะฟะพะปะพะถะธั‚ะตะปัŒะฝะพะต ั‡ะธัะปะพ, ะฐะดั€ะตั ะบะพะฝั‚ั€ะฐะบั‚ะฐ ะฒ ั‚ะตะบัƒั‰ะตะผ ะฒะพั€ะบั‡ะตะนะฝะต. 

`orders` ะฟะตั€ะตะผะตะฝะฝะฐั ั‚ะธะฟะฐ ัะปะพะฒะฐั€ัŒ, ั…ั€ะฐะฝะธั‚ ะฟะพัะปะตะดะฝะธะต ะดะฒะฐะดั†ะฐั‚ัŒ ัั‚ะฐะฒะพะบ. 

เช†เช—เชณ เชคเชฎเชพเชฐเซ‡ เชฌเซ‡ เช•เชพเชฐเซเชฏเซ‹ เชฒเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชšเชพเชฒเซ‹ เชชเชนเซ‡เชฒเชพ เชซเซ‹เชจ เช•เชฐเซ€เช pack_state(), เชœเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚ เช…เชจเซเช—เชพเชฎเซ€ เชฌเชšเชค เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพเชจเซ‡ เชชเซ‡เช• เช•เชฐเชถเซ‡. เชšเชพเชฒเซ‹ เชฌเซ€เชœเชพเชจเซ‡ เชฌเซ‹เชฒเชพเชตเซ€เช unpack_state() เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชตเชพเช‚เชšเชถเซ‡ เช…เชจเซ‡ เชชเชฐเชค เช•เชฐเชถเซ‡.

_ pack_state(int seqno, int pubkey, int order_seqno, int number_of_wins, int incoming_amount, int outgoing_amount, int owner_wc, int owner_account_id, cell orders) inline_ref {
    return begin_cell()
            .store_uint(seqno, 32)
            .store_uint(pubkey, 256)
            .store_uint(order_seqno, 32)
            .store_uint(number_of_wins, 32)
            .store_grams(incoming_amount)
            .store_grams(outgoing_amount)
            .store_int(owner_wc, 32)
            .store_uint(owner_account_id, 256)
            .store_dict(orders)
            .end_cell();
}

_ unpack_state() inline_ref {
    var ds = begin_parse(get_data());
    var unpacked = (ds~load_uint(32), ds~load_uint(256), ds~load_uint(32), ds~load_uint(32), ds~load_grams(), ds~load_grams(), ds~load_int(32), ds~load_uint(256), ds~load_dict());
    ds.end_parse();
    return unpacked;
}

เช…เชฎเซ‡ เช† เชฌเซ‡ เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช. เชคเซ‡ เช•เชพเชฎ เช•เชฐเชถเซ‡ เชคเซ‡เชตเซเช‚ เชฎเชงเซเชฏเชตเชฐเซเชคเซ€ เชชเชฐเชฟเชฃเชพเชฎ.

เชกเซ‡เชŸเชพ เชฌเชšเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ set_data() เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชฒเช–เชถเซ‡ pack_state() เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚.

cell packed_state = pack_state(arg_1, .., arg_n); 
set_data(packed_state);

เชนเชตเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชกเซ‡เชŸเชพ เชฒเช–เชตเชพ เช…เชจเซ‡ เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ เช…เชจเซเช•เซ‚เชณ เช•เชพเชฐเซเชฏเซ‹ เช›เซ‡, เช…เชฎเซ‡ เช†เช—เชณ เชตเชงเซ€ เชถเช•เซ€เช เช›เซ€เช.

เช…เชฎเชพเชฐเซ‡ เชคเชชเชพเชธ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เชฌเชนเชพเชฐเชฅเซ€ เช†เชตเชคเชพ เชธเช‚เชฆเซ‡เชถ เชชเชฐ เช•เชฐเชพเชฐเชจเชพ เชฎเชพเชฒเชฟเช• (เช…เชฅเชตเชพ เช–เชพเชจเช—เซ€ เช•เซ€เชจเซ€ เชเช•เซเชธเซ‡เชธ เชงเชฐเชพเชตเชคเชพ เช…เชจเซเชฏ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ) เชฆเซเชตเชพเชฐเชพ เชธเชนเซ€ เชฅเชฏเซ‡เชฒ เช›เซ‡.

เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ€เช เช›เซ€เช, เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚ เชœเซ‹เชˆเชคเชพ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช, เชœเซ‡ เชญเชตเชฟเชทเซเชฏเชจเชพ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชธเชพเชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เช…เชฎเซ‡ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€เชจเซ‡ เชคเซเชฏเชพเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเซ€เชถเซเช‚ เชœเซ‡เชฅเซ€ เช•เชฐเซ€เชจเซ‡ เช…เชฎเซ‡ เชšเช•เชพเชธเซ€ เชถเช•เซ€เช เช•เซ‡ เช†เชตเชจเชพเชฐเชพ เชธเช‚เชฆเซ‡เชถเชจเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เช–เชพเชจเช—เซ€ เช•เซ€ เชตเชกเซ‡ เชธเชนเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€.

เชšเชพเชฒเซ เชฐเชพเช–เชคเชพ เชชเชนเซ‡เชฒเชพ, เชšเชพเชฒเซ‹ เชเช• เช–เชพเชจเช—เซ€ เช•เซ€ เชฌเชจเชพเชตเซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฒเช–เซ€เช test/keys/owner.pk. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ Fift เชจเซ‡ เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชต เชฎเซ‹เชกเชฎเชพเช‚ เชฒเซ‹เช‚เชš เช•เชฐเซ€เช เช…เชจเซ‡ เชšเชพเชฐ เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเซ€เช.

`newkeypair` ะณะตะฝะตั€ะฐั†ะธั ะฟัƒะฑะปะธั‡ะฝะพะณะพ ะธ ะฟั€ะธะฒะฐั‚ะฝะพะณะพ ะบะปัŽั‡ะฐ ะธ ะทะฐะฟะธััŒ ะธั… ะฒ ัั‚ะตะบ. 

`drop` ัƒะดะฐะปะตะฝะธั ะธะท ัั‚ะตะบะฐ ะฒะตั€ั…ะฝะตะณะพ ัะปะตะผะตะฝั‚ะฐ (ะฒ ะดะฐะฝะฝะพะผ ัะปัƒั‡ะฐะต ะฟัƒะฑะปะธั‡ะฝั‹ะน ะบะปัŽั‡)  

`.s` ะฟั€ะพัั‚ะพ ะฟะพัะผะพั‚ั€ะตั‚ัŒ ั‡ั‚ะพ ะปะตะถะธั‚ ะฒ ัั‚ะตะบะต ะฒ ะดะฐะฝะฝั‹ะน ะผะพะผะตะฝั‚ 

`"owner.pk" B>file` ะทะฐะฟะธััŒ ะฟั€ะธะฒะฐั‚ะฝะพะณะพ ะบะปัŽั‡ะฐ ะฒ ั„ะฐะนะป ั ะธะผะตะฝะตะผ `owner.pk`. 

`bye` ะทะฐะฒะตั€ัˆะฐะตั‚ ั€ะฐะฑะพั‚ัƒ ั Fift. 

เชšเชพเชฒเซ‹ เชเช• เชซเซ‹เชฒเซเชกเชฐ เชฌเชจเชพเชตเซ€เช keys เชซเซ‹เชฒเซเชกเชฐเชจเซ€ เช…เช‚เชฆเชฐ test เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เช–เชพเชจเช—เซ€ เช•เซ€ เชฒเช–เซ‹.

mkdir test/keys
cd test/keys
~/TON/build/crypto/fift -i 
newkeypair
 ok
.s 
BYTES:128DB222CEB6CF5722021C3F21D4DF391CE6D5F70C874097E28D06FCE9FD6917 BYTES:DD0A81AAF5C07AAAA0C7772BB274E494E93BB0123AA1B29ECE7D42AE45184128 
drop 
 ok
"owner.pk" B>file
 ok
bye

เช†เชชเชฃเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชซเชพเชˆเชฒ เชœเซ‹เชˆเช เช›เซ€เช owner.pk.

เช…เชฎเซ‡ เชธเซเชŸเซ‡เช•เชฎเชพเช‚เชฅเซ€ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€ เชฆเซ‚เชฐ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชœเชฐเซ‚เชฐ เชชเชกเซ‡ เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช–เชพเชจเช—เซ€เชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ€เช เช›เซ€เช.

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เชธเชนเซ€ เชšเช•เชพเชธเชฃเซ€ เชฒเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชšเชพเชฒเซ‹ เชŸเซ‡เชธเซเชŸเชฅเซ€ เชถเชฐเซ‚เช†เชค เช•เชฐเซ€เช. เชชเซเชฐเชฅเชฎ เช†เชชเชฃเซ‡ เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชซเชพเช‡เชฒเชฎเชพเช‚เชฅเซ€ เช–เชพเชจเช—เซ€ เช•เซ€ เชตเชพเช‚เชšเซ€เช เช›เซ€เช file>B เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชšเชฒ เชชเชฐ เชฒเช–เซ‹ owner_private_key, เชชเช›เซ€ เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ priv>pub เช–เชพเชจเช—เซ€ เช•เซ€เชจเซ‡ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เช•เซ€เชฎเชพเช‚ เช•เชจเซเชตเชฐเซเชŸ เช•เชฐเซ‹ เช…เชจเซ‡ เชชเชฐเชฟเชฃเชพเชฎ เชฒเช–เซ‹ owner_public_key.

variable owner_private_key
variable owner_public_key 

"./keys/owner.pk" file>B owner_private_key !
owner_private_key @ priv>pub owner_public_key !

เช…เชฎเชจเซ‡ เชฌเช‚เชจเซ‡ เช•เซ€เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เช…เชฎเซ‡ เชซเช‚เช•เซเชถเชจเชจเซ€ เชœเซ‡เชฎ เชœ เช•เซเชฐเชฎเชฎเชพเช‚ เชฎเชจเชธเซเชตเซ€ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชถเชฐเซ‚ เช•เชฐเซ€เช เช›เซ€เช pack_state()เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชšเชฒเชฎเชพเช‚ เชฒเช–เซ‹ storage.

variable owner_private_key
variable owner_public_key 
variable orders
variable owner_wc
variable owner_account_id

"./keys/owner.pk" file>B owner_private_key !
owner_private_key @ priv>pub owner_public_key !
dictnew orders !
0 owner_wc !
0 owner_account_id !

<b 0 32 u, owner_public_key @ B, 0 32 u, 0 32 u, 0 Gram, 0 Gram, owner_wc @ 32 i, owner_account_id @ 256 u,  orders @ dict, b> storage !

เช†เช—เชณ, เช…เชฎเซ‡ เชเช• เชธเชนเซ€ เช•เชฐเซ‡เชฒ เชธเช‚เชฆเซ‡เชถ เช•เช‚เชชเซ‹เช เช•เชฐเซ€เชถเซเช‚, เชคเซ‡เชฎเชพเช‚ เชซเช•เซเชค เชธเชนเซ€ เช…เชจเซ‡ เช•เชพเช‰เชจเซเชŸเชฐ เชตเซ‡เชฒเซเชฏเซ เชนเชถเซ‡.

เชชเซเชฐเชฅเชฎ, เช…เชฎเซ‡ เชคเซ‡ เชกเซ‡เชŸเชพ เชฌเชจเชพเชตเซ€เช เช›เซ€เช เชœเซ‡ เช…เชฎเซ‡ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชŸ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช, เชชเช›เซ€ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช–เชพเชจเช—เซ€ เช•เซ€ เชตเชกเซ‡ เชธเชนเซ€ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เช…เช‚เชคเซ‡ เช…เชฎเซ‡ เชเช• เชธเชนเซ€ เช•เชฐเซ‡เชฒ เชธเช‚เชฆเซ‡เชถ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช.

variable message_to_sign
variable message_to_send
variable signature
<b 0 32 u, b> message_to_sign !
message_to_sign @ hashu owner_private_key @ ed25519_sign_uint signature !
<b signature @ B, 0 32 u, b> <s  message_to_send !  

เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช…เชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชชเชฐ เชœเซ‡ เชธเช‚เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเซ€เชถเซเช‚ เชคเซ‡ เชšเชฒเชฎเชพเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ message_to_send, เช•เชพเชฐเซเชฏเซ‹ เชตเชฟเชถเซ‡ hashu, ed25519_sign_uint เชคเชฎเซ‡ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ เชชเชพเช‚เชš เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชฎเชพเช‚.

เช…เชจเซ‡ เชชเชฐเซ€เช•เซเชทเชฃ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เชซเชฐเซ€เชฅเซ€ เช•เซ‰เชฒ เช•เชฐเซ€เช เช›เซ€เช.

message_to_send @ 
recv_external 
code 
storage @
c7
runvmctx

เช†เชจเซ€ เชœเซ‡เชฎ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชธเชพเชฅเซ‡เชจเซ€ เชซเชพเช‡เชฒ เช† เชคเชฌเช•เซเช•เซ‡ เช†เชจเชพ เชœเซ‡เชตเซ€ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช.

เชšเชพเชฒเซ‹ เชชเชฐเซ€เช•เซเชทเชฃ เชšเชฒเชพเชตเซ€เช เช…เชจเซ‡ เชคเซ‡ เชจเชฟเชทเซเชซเชณ เชœเชถเซ‡, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เชฐเชพเชฐเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซ€เชถเซเช‚ เชœเซ‡เชฅเซ€ เชคเซ‡ เช† เชซเซ‹เชฐเซเชฎเซ‡เชŸเชจเชพ เชธเช‚เชฆเซ‡เชถเชพ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€ เชถเช•เซ‡ เช…เชจเซ‡ เชนเชธเซเชคเชพเช•เซเชทเชฐ เชšเช•เชพเชธเซ€ เชถเช•เซ‡.

เชชเซเชฐเชฅเชฎ, เช…เชฎเซ‡ เชธเช‚เชฆเซ‡เชถเชฎเชพเช‚เชฅเซ€ เชนเชธเซเชคเชพเช•เซเชทเชฐเชจเชพ 512 เชฌเชฟเชŸเซเชธ เช—เชฃเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชตเซ‡เชฐเซ€เชเชฌเชฒเชฎเชพเช‚ เชฒเช–เซ€เช เช›เซ€เช, เชชเช›เซ€ เช…เชฎเซ‡ เช•เชพเช‰เชจเซเชŸเชฐ เชตเซ‡เชฐเซ€เชเชฌเชฒเชจเชพ 32 เชฌเชฟเชŸเซเชธ เช—เชฃเซ€เช เช›เซ€เช.

เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชตเชพเช‚เชšเชตเชพเชจเซเช‚ เชซเช‚เช•เซเชถเชจ เชนเซ‹เชตเชพเชฅเซ€, เช…เชฎเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚.

เช†เช—เชณ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเชพเชฅเซ‡ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชพเช‰เชจเซเชŸเชฐ เชคเชชเชพเชธเชตเซเช‚ เช…เชจเซ‡ เชนเชธเซเชคเชพเช•เซเชทเชฐ เชคเชชเชพเชธเชตเซเช‚. เชœเซ‹ เช•เช‚เชˆเช• เชฎเซ‡เชณ เช–เชพเชคเซเช‚ เชจเชฅเซ€, เชคเซ‹ เช…เชฎเซ‡ เชฏเซ‹เช—เซเชฏ เช•เซ‹เชก เชธเชพเชฅเซ‡ เช…เชชเชตเชพเชฆ เชซเซ‡เช‚เช•เซ€เช เช›เซ€เช.

var signature = in_msg~load_bits(512);
var message = in_msg;
int msg_seqno = message~load_uint(32);
(int stored_seqno, int pubkey, int order_seqno, int number_of_wins, int incoming_amount, int outgoing_amount, int owner_wc, int owner_account_id, cell orders) = unpack_state();
throw_unless(33, msg_seqno == stored_seqno);
throw_unless(34, check_signature(slice_hash(in_msg), signature, pubkey));

เชธเช‚เชฌเช‚เชงเชฟเชค เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพ เช…เชนเซ€เช‚ เชœ.

เชšเชพเชฒเซ‹ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเซ€เช เช…เชจเซ‡ เชœเซเช“ เช•เซ‡ เชฌเซ€เชœเซ€ เช•เชธเซ‹เชŸเซ€ เชจเชฟเชทเซเชซเชณ เชœเชพเชฏ เช›เซ‡. เชฌเซ‡ เช•เชพเชฐเชฃเซ‹เชธเชฐ, เชธเช‚เชฆเซ‡เชถเชฎเชพเช‚ เชชเชฐเซเชฏเชพเชชเซเชค เชฌเชฟเชŸเซเชธ เชจเชฅเซ€ เช…เชจเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚ เชชเชฐเซเชฏเชพเชชเซเชค เชฌเชฟเชŸเซเชธ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เชชเชพเชฐเซเชธเชฟเช‚เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช•เซ‹เชก เช•เซเชฐเซ‡เชถ เชฅเชพเชฏ เช›เซ‡. เช…เชฎเซ‡ เชœเซ‡ เชธเช‚เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช เชคเซ‡เชจเชพ เชชเชฐ เช…เชฎเชพเชฐเซ‡ เชนเชธเซเชคเชพเช•เซเชทเชฐ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เช›เซ‡เชฒเซเชฒเซ€ เช•เชธเซ‹เชŸเซ€เชฎเชพเช‚เชฅเซ€ เชธเช‚เช—เซเชฐเชนเชจเซ€ เชจเช•เชฒ เช•เชฐเชตเซ€ เชชเชกเชถเซ‡.

เชฌเซ€เชœเชพ เชŸเซ‡เชธเซเชŸเชฎเชพเช‚, เช…เชฎเซ‡ เชเช• เชธเช‚เชฆเซ‡เชถ เชธเชนเซ€ เช‰เชฎเซ‡เชฐเซ€เชถเซเช‚ เช…เชจเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชฌเชฆเชฒเซ€เชถเซเช‚. เช†เชจเซ€ เชœเซ‡เชฎ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชธเชพเชฅเซ‡เชจเซ€ เชซเชพเช‡เชฒ เช† เช•เซเชทเชฃเซ‡ เชœเซ‡เชตเซ€ เชฒเชพเช—เซ‡ เช›เซ‡.

เชšเชพเชฒเซ‹ เชšเซ‹เชฅเซ‹ เชŸเซ‡เชธเซเชŸ เชฒเช–เซ€เช, เชœเซ‡เชฎเชพเช‚ เช†เชชเชฃเซ‡ เช•เซ‹เชˆ เชฌเซ€เชœเชพเชจเซ€ เชชเซเชฐเชพเชˆเชตเซ‡เชŸ เช•เซ€ เชตเชกเซ‡ เชธเชนเซ€ เช•เชฐเซ‡เชฒ เชฎเซ‡เชธเซ‡เชœ เชฎเซ‹เช•เชฒเซ€เชถเซเช‚. เชšเชพเชฒเซ‹ เชฌเซ€เชœเซ€ เช–เชพเชจเช—เซ€ เช•เซ€ เชฌเชจเชพเชตเซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชซเชพเช‡เชฒเชฎเชพเช‚ เชธเซ‡เชต เช•เชฐเซ€เช not-owner.pk. เช…เชฎเซ‡ เช† เช–เชพเชจเช—เซ€ เช•เซ€ เชตเชกเซ‡ เชธเช‚เชฆเซ‡เชถ เชชเชฐ เชธเชนเซ€ เช•เชฐเซ€เชถเซเช‚. เชšเชพเชฒเซ‹ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเซ€เช เช…เชจเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเซ€เช เช•เซ‡ เชคเชฎเชพเชฎ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชชเชพเชธ เชฅเชพเชฏ เช›เซ‡. เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เช† เช•เซเชทเชฃเซ‡.

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เช†เช–เชฐเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชฒเซ‹เชœเชฟเช•เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เช†เช—เชณ เชตเชงเซ€ เชถเช•เซ€เช เช›เซ€เช.
ะ’ recv_external() เช…เชฎเซ‡ เชฌเซ‡ เชชเซเชฐเช•เชพเชฐเชจเชพ เชธเช‚เชฆเซ‡เชถเชพเช“ เชธเซเชตเซ€เช•เชพเชฐเซ€เชถเซเช‚.

เช…เชฎเชพเชฐเซ‹ เช•เชฐเชพเชฐ เช–เซ‡เชฒเชพเชกเซ€เช“เชจเซ€ เช–เซ‹เชŸ เชเช•เช เชพ เช•เชฐเชถเซ‡, เชคเซ‡เชฅเซ€ เช† เชจเชพเชฃเชพเช‚ เชฒเซ‹เชŸเชฐเซ€เชจเชพ เชธเชฐเซเชœเช•เชจเซ‡ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเชตเชพ เช†เชตเชถเซเชฏเช• เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เช•เชฐเชพเชฐ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชฒเซ‹เชŸเชฐเซ€ เชฌเชจเชพเชตเชจเชพเชฐเชจเซเช‚ เชตเซ‰เชฒเซ‡เชŸ เชธเชฐเชจเชพเชฎเซเช‚ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชฎเชพเชคเซเชฐ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช…เชฎเชจเซ‡ เชธเชฐเชจเชพเชฎเซเช‚ เชฌเชฆเชฒเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เช…เชฎเซ‡ เช—เซเชฎเชพเชตเชจเชพเชฐเชพเช“เชจเชพ เช—เซเชฐเชพเชฎ เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช. เช…เชฎเซ‡ เชฒเซ‹เชŸเชฐเซ€เชฎเชพเช‚เชฅเซ€ เช—เซเชฐเชพเชฎ เชชเชฃ เชฎเชพเชฒเชฟเช•เชจเชพ เชธเชฐเชจเชพเชฎเซ‡ เชฎเซ‹เช•เชฒเชตเชพ เชธเช•เซเชทเชฎ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช.

เชšเชพเชฒเซ‹ เชชเซเชฐเชฅเชฎ เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เช•เชฐเซ€เช. เชšเชพเชฒเซ‹ เชชเชนเซ‡เชฒเชพ เชเช• เชŸเซ‡เชธเซเชŸ เชฒเช–เซ€เช เชœเซ‡ เชšเซ‡เช• เช•เชฐเชถเซ‡ เช•เซ‡ เชฎเซ‡เชธเซ‡เชœ เชฎเซ‹เช•เชฒเซเชฏเชพ เชชเช›เซ€ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚ เชจเชตเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชธเซ‡เชต เช•เชฐเซเชฏเซเช‚ เช›เซ‡. เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เชธเช‚เชฆเซ‡เชถเชฎเชพเช‚, เช•เชพเช‰เชจเซเชŸเชฐ เช…เชจเซ‡ เชจเชตเชพ เชธเชฐเชจเชพเชฎเชพเช‚ เช‰เชชเชฐเชพเช‚เชค, เช…เชฎเซ‡ เชชเชฃ เชชเซเชฐเชธเชพเชฐเชฟเชค เช•เชฐเซ€เช เช›เซ€เช action 7-เชฌเซ€เชŸ เชชเซ‚เชฐเซเชฃเชพเช‚เช• เชฌเชฟเชจ-เชจเซ‡เช—เซ‡เชŸเชฟเชต เชจเช‚เชฌเชฐ, เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡, เช…เชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚ เชธเช‚เชฆเซ‡เชถเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ€ เชคเซ‡ เชชเชธเช‚เชฆ เช•เชฐเซ€เชถเซเช‚.

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

เชชเชฐเซ€เช•เซเชทเชฃเชฎเชพเช‚ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชกเซ€เชธเซ€เชฐเชฟเชฏเชฒเชพเชˆเช เชฅเชพเชฏ เช›เซ‡ storage เชชเชพเช‚เชšเชฎเชพเช‚. เชšเชฒเซ‹เชจเซเช‚ เชกเซ€เชธเซ€เชฐเชฟเชฏเชฒเชพเชˆเชเซ‡เชถเชจ เชซเชฟเชซเซเชŸ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เช›เซ‡.

เช•เชฎเชฟเชŸ เชฒเชฟเช‚เช• เช‰เชฎเซ‡เชฐเชพเชฏเซ‡เชฒ เช•เชฃเช• เชธเชพเชฅเซ‡.

เชšเชพเชฒเซ‹ เชชเชฐเซ€เช•เซเชทเชฃ เชšเชฒเชพเชตเซ€เช เช…เชจเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเซ€เช เช•เซ‡ เชคเซ‡ เชจเชฟเชทเซเชซเชณ เชœเชพเชฏ เช›เซ‡. เชนเชตเซ‡ เชฒเซ‹เชŸเชฐเซ€ เชฎเชพเชฒเชฟเช•เชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡ เชฒเซ‹เชœเชฟเช• เช‰เชฎเซ‡เชฐเซ€เช.

เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚ เช…เชฎเซ‡ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เซ€เช เช›เซ€เช message, เชฎเชพเช‚ เชตเชพเช‚เชšเซ‹ action. เชšเชพเชฒเซ‹ เชคเชฎเชจเซ‡ เชฏเชพเชฆ เช…เชชเชพเชตเซ€เช เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฌเซ‡ เชนเชถเซ‡ action: เชธเชฐเชจเชพเชฎเซเช‚ เชฌเชฆเชฒเซ‹ เช…เชจเซ‡ เช—เซเชฐเชพเชฎ เชฎเซ‹เช•เชฒเซ‹.

เชชเช›เซ€ เช…เชฎเซ‡ เช•เชฐเชพเชฐเชจเชพ เชฎเชพเชฒเชฟเช•เชจเซเช‚ เชจเชตเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชตเชพเช‚เชšเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚ เชธเชพเชšเชตเซ€เช เช›เซ€เช.
เช…เชฎเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเซ€เช เช›เซ€เช เช…เชจเซ‡ เชœเซ‹เชˆเช เช›เซ€เช เช•เซ‡ เชคเซเชฐเซ€เชœเซ€ เช•เชธเซ‹เชŸเซ€ เชจเชฟเชทเซเชซเชณ เชœเชพเชฏ เช›เซ‡. เชคเซ‡ เช เชนเช•เซ€เช•เชคเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช•เซเชฐเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ เช•เซ‡ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชนเชตเซ‡ เชฎเซ‡เชธเซ‡เชœเชฎเชพเช‚เชฅเซ€ 7 เชฌเชฟเชŸเซเชธเชจเซเช‚ เชชเชฃ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเชฎเชพเช‚ เช–เซ‚เชŸเซ‡ เช›เซ‡. เชธเช‚เชฆเซ‡เชถเชฎเชพเช‚ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชจเชฅเซ€ เชคเซ‡ เช‰เชฎเซ‡เชฐเซ‹ action. เชšเชพเชฒเซ‹ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเซ€เช เช…เชจเซ‡ เชœเซเช“ เช•เซ‡ เชฌเชงเซเช‚ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡. เช…เชนเซ€เช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เชชเซเชฐเชคเชฟเชฌเชฆเซเชง. เชฎเชนเชพเชจ.

เชนเชตเซ‡ เชชเชนเซ‡เชฒเชพ เชธเซ‡เชต เช•เชฐเซ‡เชฒเชพ เชเชกเซเชฐเซ‡เชธ เชชเชฐ เช—เซเชฐเชพเชฎเชจเซ€ เชธเซเชชเชทเซเชŸ เชธเช‚เช–เซเชฏเชพ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชคเชฐเซเช• เชฒเช–เซ€เช.

เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ เชเช• เชชเชฐเซ€เช•เซเชทเชฃ เชฒเช–เซ€เช. เช…เชฎเซ‡ เชฌเซ‡ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชฒเช–เซ€เชถเซเช‚, เชเช• เชœเซเชฏเชพเชฐเซ‡ เชชเชฐเซเชฏเชพเชชเซเชค เชธเช‚เชคเซเชฒเชจ เชจ เชนเซ‹เชฏ, เชฌเซ€เชœเซเช‚ เชœเซเชฏเชพเชฐเซ‡ เชฌเชงเซเช‚ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชชเชพเชธ เชฅเชตเซเช‚ เชœเซ‹เชˆเช. เชŸเซ‡เชธเซเชŸ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡ เช† เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพเชฎเชพเช‚.

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เช•เซ‹เชก เช‰เชฎเซ‡เชฐเซ€เช. เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ เชฌเซ‡ เชธเชนเชพเชฏเช• เชชเชฆเซเชงเชคเชฟเช“ เชฒเช–เซ€เช. เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเซ€ เชตเชฐเซเชคเชฎเชพเชจ เชฌเซ‡เชฒเซ‡เชจเซเชธ เชถเซ‹เชงเชตเชพเชจเซ€ เชชเซเชฐเชฅเชฎ เชชเชฆเซเชงเชคเชฟ เช›เซ‡.

int balance() inline_ref method_id {
    return get_balance().pair_first();
}

เช…เชจเซ‡ เชฌเซ€เชœเซ‹ เชเช• เช…เชจเซเชฏ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชชเชฐ เช—เซเชฐเชพเชฎ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เช›เซ‡. เชฎเซ‡เช‚ เช† เชชเชฆเซเชงเชคเชฟเชจเซ‡ เชฌเซ€เชœเชพ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚เชฅเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช•เซ‰เชชเชฟ เช•เชฐเซ€ เช›เซ‡.

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

เชšเชพเชฒเซ‹ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚ เช† เชฌเซ‡ เชชเชฆเซเชงเชคเชฟเช“ เช‰เชฎเซ‡เชฐเซ€เช เช…เชจเซ‡ เชคเชฐเซเช• เชฒเช–เซ€เช. เชชเซเชฐเชฅเชฎ, เช…เชฎเซ‡ เชธเช‚เชฆเซ‡เชถเชฎเชพเช‚เชฅเซ€ เช—เซเชฐเชพเชฎเชจเซ€ เชธเช‚เช–เซเชฏเชพเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€เช เช›เซ€เช. เช†เช—เชณ เช†เชชเชฃเซ‡ เชธเช‚เชคเซเชฒเชจ เชคเชชเชพเชธเซ€เช เช›เซ€เช, เชœเซ‹ เชคเซ‡ เชชเซ‚เชฐเชคเซเช‚ เชจ เชนเซ‹เชฏ เชคเซ‹ เช…เชฎเซ‡ เช…เชชเชตเชพเชฆ เชซเซ‡เช‚เช•เซ€เช เช›เซ€เช. เชœเซ‹ เชฌเชงเซเช‚ เชฌเชฐเชพเชฌเชฐ เช›เซ‡, เชคเซ‹ เช…เชฎเซ‡ เช—เซเชฐเชพเชฎเชจเซ‡ เชธเชพเชšเชตเซ‡เชฒเชพ เชธเชฐเชจเชพเชฎเชพเช‚ เชชเชฐ เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช เช…เชจเซ‡ เช•เชพเช‰เชจเซเชŸเชฐเชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช.

int amount_to_send = message~load_grams();
throw_if(36, amount_to_send + 500000000 > balance());
accept_message();
send_grams(owner_wc, owner_account_id, amount_to_send);
set_data(pack_state(stored_seqno + 1, pubkey, order_seqno, number_of_wins, incoming_amount, outgoing_amount, owner_wc, owner_account_id, orders));

เช†เชจเซ€ เชœเซ‡เชฎ เช† เช•เซเชทเชฃเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡. เชšเชพเชฒเซ‹ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเซ€เช เช…เชจเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเซ€เช เช•เซ‡ เชคเซ‡เช“ เชชเชพเชธ เชฅเชพเชฏ.

เชฌเชพเชฏ เชง เชตเซ‡, เชชเซเชฐเซ‹เชธเซ‡เชธเซเชก เชฎเซ‡เชธเซ‡เชœ เชฎเชพเชŸเซ‡ เชฆเชฐ เชตเช–เชคเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚เชฅเซ€ เช•เชฎเชฟเชถเชจ เช•เชพเชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชธเช‚เชฆเซ‡เชถเชพเช“ เชตเชฟเชจเช‚เชคเซ€เชจเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฎเซ‚เชณเชญเซ‚เชค เชคเชชเชพเชธ เชชเช›เซ€ เชคเชฎเชพเชฐเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ accept_message().

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เช†เช‚เชคเชฐเชฟเช• เชธเช‚เชฆเซ‡เชถเชพเช“ เชคเชฐเชซ เช†เช—เชณ เชตเชงเซ€เช. เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เช…เชฎเซ‡ เชฎเชพเชคเซเชฐ เช—เซเชฐเชพเชฎ เชœ เชธเซเชตเซ€เช•เชพเชฐเซ€เชถเซเช‚ เช…เชจเซ‡ เชœเซ‹ เช–เซ‡เชฒเชพเชกเซ€ เชœเซ€เชคเซ‡ เชคเซ‹ เชฌเชฎเชฃเซ€ เชฐเช•เชฎ เช…เชจเซ‡ เชฎเชพเชฒเชฟเช•เชจเซ‡ เชคเซเชฐเซ€เชœเซ€ เชฐเช•เชฎ เชœเซ‹ เชคเซ‡ เชนเชพเชฐเซ€ เชœเชพเชฏ เชคเซ‹ เชคเซ‡เชจเซ‡ เชชเชฐเชค เชฎเซ‹เช•เชฒเซ€เชถเซเช‚.

เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ เชเช• เชธเชฐเชณ เช•เชธเซ‹เชŸเซ€ เชฒเช–เซ€เช. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเชจเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเซ‡เช•เซเชŸเชจเชพ เชŸเซ‡เชธเซเชŸ เชเชกเซเชฐเซ‡เชธเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡เชฎเชพเช‚เชฅเซ€ เช…เชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚ เช—เซเชฐเชพเชฎ เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช.

เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชเชกเซเชฐเซ‡เชธเชฎเชพเช‚ เชฌเซ‡ เชจเช‚เชฌเชฐเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡, เชตเชฐเซเช•เชšเซ‡เชจ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ 32-เชฌเซ€เชŸ เชชเซ‚เชฐเซเชฃเชพเช‚เช• เช…เชจเซ‡ เช† เชตเชฐเซเช•เชšเซ‡เชจเชฎเชพเช‚ 256-เชฌเซ€เชŸ เชจเซ‹เชจ-เชจเซ‡เช—เซ‡เชŸเชฟเชต เชชเซ‚เชฐเซเชฃเชพเช‚เช• เช…เชจเชจเซเชฏ เชเช•เชพเช‰เชจเซเชŸ เชจเช‚เชฌเชฐ. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, -1 เช…เชจเซ‡ 12345, เช† เช เชธเชฐเชจเชพเชฎเซเช‚ เช›เซ‡ เชœเซ‡เชจเซ‡ เช†เชชเชฃเซ‡ เชซเชพเช‡เชฒเชฎเชพเช‚ เชธเซ‡เชต เช•เชฐเซ€เชถเซเช‚.

เชฎเซ‡เช‚ เชเชกเซเชฐเซ‡เชธ เชธเซ‡เชต เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชซเช‚เช•เซเชถเชจ เช•เซ‹เชชเซ€ เช•เชฐเซเชฏเซเช‚ TonUtil.fif.

// ( wc addr fname -- )  Save address to file in 36-byte format
{ -rot 256 u>B swap 32 i>B B+ swap B>file } : save-address

เชšเชพเชฒเซ‹ เชœเซ‹เชˆเช เช•เซ‡ เชซเช‚เช•เซเชถเชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เช† เชซเชฟเชซเซเชŸ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเซ€ เชธเชฎเชœ เช†เชชเชถเซ‡. เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชต เชฎเซ‹เชกเชฎเชพเช‚ เชซเชฟเชซเซเชŸ เชฒเซ‹เช‚เชš เช•เชฐเซ‹.

~/TON/build/crypto/fift -i 

เชชเชนเซ‡เชฒเชพ เช†เชชเชฃเซ‡ เชธเซเชŸเซ‡เช• เชชเชฐ -1, 12345 เช…เชจเซ‡ เชญเชพเชตเชฟ เชซเชพเช‡เชฒ "sender.addr" เชจเซเช‚ เชจเชพเชฎ เชฆเชฌเชพเชตเซ€เช เช›เซ€เช:

-1 12345 "sender.addr" 

เช†เช—เชณเชจเซเช‚ เชชเช—เชฒเซเช‚ เชซเช‚เช•เซเชถเชจ เชšเชฒเชพเชตเชตเชพเชจเซเช‚ เช›เซ‡ -rot, เชœเซ‡ เชธเซเชŸเซ‡เช•เชจเซ‡ เชเชตเซ€ เชฐเซ€เชคเซ‡ เชถเชฟเชซเซเชŸ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชธเซเชŸเซ‡เช•เชจเซ€ เชŸเซ‹เชš เชชเชฐ เชเช• เช…เชจเชจเซเชฏ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชจเช‚เชฌเชฐ เช›เซ‡:

"sender.addr" -1 12345

256 u>B 256-เชฌเซ€เชŸ เชฌเชฟเชจ-เชจเช•เชพเชฐเชพเชคเซเชฎเช• เชชเซ‚เชฐเซเชฃเชพเช‚เช•เชจเซ‡ เชฌเชพเชˆเชŸเชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡.

"sender.addr" -1 BYTES:0000000000000000000000000000000000000000000000000000000000003039

swap เชธเซเชŸเซ‡เช•เชจเชพ เชŸเซ‹เชšเชจเชพ เชฌเซ‡ เช˜เชŸเช•เซ‹เชจเซ‡ เชธเซเชตเซ‡เชช เช•เชฐเซ‡ เช›เซ‡.

"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 -1

32 i>B 32-เชฌเซ€เชŸ เชชเซ‚เชฐเซเชฃเชพเช‚เช•เชจเซ‡ เชฌเชพเชˆเชŸเชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡.

"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 BYTES:FFFFFFFF

B+ เชฌเชพเชˆเชŸเชจเชพ เชฌเซ‡ เชธเชฟเช•เซเชตเชจเซเชธเชจเซ‡ เชœเซ‹เชกเซ‡ เช›เซ‡.

 "sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039FFFFFFFF

เชซเชฐเซ€ swap.

BYTES:0000000000000000000000000000000000000000000000000000000000003039FFFFFFFF "sender.addr" 

เช…เชจเซ‡ เช›เซ‡เชฒเซเชฒเซ‡ เชซเชพเชˆเชฒ เชชเชฐ เชฌเชพเชˆเชŸ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ B>file. เช† เชชเช›เซ€ เช†เชชเชฃเซ‹ เชธเซเชŸเซ‡เช• เช–เชพเชฒเซ€ เช›เซ‡. เช…เชฎเซ‡ เชฌเช‚เชง Fift. เชตเชฐเซเชคเชฎเชพเชจ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชเช• เชซเชพเช‡เชฒ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡ sender.addr. เชšเชพเชฒเซ‹ เชซเชพเชˆเชฒเชจเซ‡ เชฌเชจเชพเชตเซ‡เชฒ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เช–เชธเซ‡เชกเซ€เช test/addresses/.

เชšเชพเชฒเซ‹ เชเช• เชธเชฐเชณ เช•เชธเซ‹เชŸเซ€ เชฒเช–เซ€เช เชœเซ‡ เช—เซเชฐเชพเชฎเชจเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚ เชฎเซ‹เช•เชฒเชถเซ‡. เช…เชนเซ€เช‚ เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพ เช›เซ‡.

เชนเชตเซ‡ เชฒเซ‹เชŸเชฐเซ€เชจเซเช‚ เชคเชฐเซเช• เชœเซ‹เชˆเช.

เช…เชฎเซ‡ เชœเซ‡ เช•เชฐเซ€เช เช›เซ€เช เชคเซ‡ เชชเซเชฐเชฅเชฎ เชตเชธเซเชคเซ เชธเช‚เชฆเซ‡เชถเชจเซ‡ เชคเชชเชพเชธเซ‡ เช›เซ‡ bounced เช…เชฅเชตเชพ เชœเซ‹ เชจเชนเซ€เช‚ bounced, เชชเช›เซ€ เช†เชชเชฃเซ‡ เชคเซ‡เชจเซ‡ เช…เชตเช—เชฃเซ€เช เช›เซ€เช. bounced เชฎเชคเชฒเชฌ เช•เซ‡ เชœเซ‹ เช•เซ‹เชˆ เชญเซ‚เชฒ เชฅเชพเชฏ เชคเซ‹ เช•เชฐเชพเชฐ เช—เซเชฐเชพเชฎ เชชเชฐเชค เช•เชฐเชถเซ‡. เชœเซ‹ เช…เชšเชพเชจเช• เชญเซ‚เชฒ เชฅเชพเชฏ เชคเซ‹ เช…เชฎเซ‡ เช—เซเชฐเชพเชฎ เชชเชฐเชค เช•เชฐเซ€เชถเซเช‚ เชจเชนเซ€เช‚.

เช…เชฎเซ‡ เชคเชชเชพเชธ เช•เชฐเซ€เช เช›เซ€เช, เชœเซ‹ เชธเช‚เชคเซเชฒเชจ เช…เชกเชงเชพ เช—เซเชฐเชพเชฎ เช•เชฐเชคเชพเช‚ เช“เช›เซเช‚ เช›เซ‡, เชคเซ‹ เช…เชฎเซ‡ เชซเช•เซเชค เชธเช‚เชฆเซ‡เชถ เชธเซเชตเซ€เช•เชพเชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช…เชตเช—เชฃเซ€เช เช›เซ€เช.

เช†เช—เชณ, เช…เชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชชเชพเชฐเซเชธ เช•เชฐเซ€เช เช›เซ€เช เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชธเช‚เชฆเซ‡เชถ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹.

เช…เชฎเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชตเชพเช‚เชšเซ€เช เช›เซ€เช เช…เชจเซ‡ เชชเช›เซ€ เชœเซ‹ เชคเซ‡เชฎเชพเช‚ เชตเซ€เชธเชฅเซ€ เชตเชงเซ เชนเซ‹เชฏ เชคเซ‹ เช‡เชคเชฟเชนเชพเชธเชฎเชพเช‚เชฅเซ€ เชœเซ‚เชจเชพ เชฌเซ‡เชŸเซเชธ เช•เชพเชขเซ€ เชจเชพเช–เซ€เช เช›เซ€เช. เชธเช—เชตเชก เชฎเชพเชŸเซ‡, เชฎเซ‡เช‚ เชคเซเชฐเชฃ เชตเชงเชพเชฐเชพเชจเชพ เช•เชพเชฐเซเชฏเซ‹ เชฒเช–เซเชฏเชพ pack_order(), unpack_order(), remove_old_orders().

เช†เช—เชณ, เช…เชฎเซ‡ เชœเซ‹เชˆเช เช›เซ€เช เช•เซ‡ เชœเซ‹ เชฌเซ‡เชฒเซ‡เชจเซเชธ เชšเซ‚เช•เชตเชฃเซ€ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เชจเชฅเซ€, เชคเซ‹ เช…เชฎเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเช เช›เซ€เช เช•เซ‡ เช† เช•เซ‹เชˆ เชถเชฐเชค เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชซเชฐเซ€ เชญเชฐเชชเชพเชˆ เช›เซ‡ เช…เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชญเชฐเชชเชพเชˆเชจเซ‡ เชธเชพเชšเชตเซ‹. orders.

เชชเช›เซ€ เช›เซ‡เชฒเซเชฒเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเซ‹ เชธเชพเชฐ.

เชชเซเชฐเชฅเชฎ, เชœเซ‹ เช–เซ‡เชฒเชพเชกเซ€ เชนเชพเชฐเซ€ เชœเชพเชฏ, เชคเซ‹ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชธเชŸเซเชŸเชพเชฌเชพเชœเซ€เชจเชพ เช‡เชคเชฟเชนเชพเชธเชฎเชพเช‚ เชธเชพเชšเชตเซ€เช เช›เซ€เช เช…เชจเซ‡ เชœเซ‹ เชฐเช•เชฎ 3 เช—เซเชฐเชพเชฎเชฅเซ€ เชตเชงเซ เชนเซ‹เชฏ, เชคเซ‹ เช…เชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เชฐเชพเชฐเชจเชพ เชฎเชพเชฒเชฟเช•เชจเซ‡ 1/3 เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช.

เชœเซ‹ เช–เซ‡เชฒเชพเชกเซ€ เชœเซ€เชคเซ‡ เช›เซ‡, เชคเซ‹ เช…เชฎเซ‡ เช–เซ‡เชฒเชพเชกเซ€เชจเชพ เชธเชฐเชจเชพเชฎเชพ เชชเชฐ เชฌเชฎเชฃเซ€ เชฐเช•เชฎ เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช เช…เชจเซ‡ เชชเช›เซ€ เชถเชฐเชค เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เช‡เชคเชฟเชนเชพเชธเชฎเชพเช‚ เชธเชพเชšเชตเซ€เช เช›เซ€เช.

() recv_internal(int order_amount, cell in_msg_cell, slice in_msg) impure {
    var cs = in_msg_cell.begin_parse();
    int flags = cs~load_uint(4);  ;; int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool
    if (flags & 1) { ;; ignore bounced
        return ();
    }
    if (order_amount < 500000000) { ;; just receive grams without changing state 
        return ();
    }
    slice src_addr_slice = cs~load_msg_addr();
    (int src_wc, int src_addr) = parse_std_addr(src_addr_slice);
    (int stored_seqno, int pubkey, int order_seqno, int number_of_wins, int incoming_amount, int outgoing_amount, int owner_wc, int owner_account_id, cell orders) = unpack_state();
    orders = remove_old_orders(orders, order_seqno);
    if (balance() < 2 * order_amount + 500000000) { ;; not enough grams to pay the bet back, so this is re-fill
        builder order = pack_order(order_seqno, 1, now(), order_amount, src_wc, src_addr);
        orders~udict_set_builder(32, order_seqno, order);
        set_data(pack_state(stored_seqno, pubkey, order_seqno + 1, number_of_wins, incoming_amount + order_amount, outgoing_amount, owner_wc, owner_account_id, orders));
        return ();
    }
    if (rand(10) >= 4) {
        builder order = pack_order(order_seqno, 3, now(), order_amount, src_wc, src_addr);
        orders~udict_set_builder(32, order_seqno, order);
        set_data(pack_state(stored_seqno, pubkey, order_seqno + 1, number_of_wins, incoming_amount + order_amount, outgoing_amount, owner_wc, owner_account_id, orders));
        if (order_amount > 3000000000) {
            send_grams(owner_wc, owner_account_id, order_amount / 3);
        }
        return ();
    }
    send_grams(src_wc, src_addr, 2 * order_amount);
    builder order = pack_order(order_seqno, 2, now(), order_amount, src_wc, src_addr);
    orders~udict_set_builder(32, order_seqno, order);
    set_data(pack_state(stored_seqno, pubkey, order_seqno + 1, number_of_wins + 1, incoming_amount, outgoing_amount + 2 * order_amount, owner_wc, owner_account_id, orders));
}

เชคเซ‡ เชฌเชงเซเช‚ เช›เซ‡. เช…เชจเซเชฐเซ‚เชช เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพ.

เชนเชตเซ‡ เชœเซ‡ เชฌเชพเช•เซ€ เช›เซ‡ เชคเซ‡ เชธเชฐเชณ เช›เซ‡, เชšเชพเชฒเซ‹ เช—เซ‡เชŸ-เชฎเซ‡เชฅเชก เชฌเชจเชพเชตเซ€เช เชœเซ‡เชฅเซ€ เช•เชฐเซ€เชจเซ‡ เช†เชชเชฃเซ‡ เชฌเชนเชพเชฐเชจเซ€ เชฆเซเชจเชฟเชฏเชพเชฎเชพเช‚เชฅเซ€ เช•เชฐเชพเชฐเชจเซ€ เชธเซเชฅเชฟเชคเชฟ เชตเชฟเชถเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ€เช (เชนเช•เซ€เช•เชคเชฎเชพเช‚, เชคเซ‡เชฎเชจเชพ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชตเชพเช‚เชšเซ‹).

เชšเชพเชฒเซ‹ เช—เซ‡เชŸ เชชเชฆเซเชงเชคเชฟเช“ เช‰เชฎเซ‡เชฐเซ€เช. เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชตเชฟเชถเซ‡ เชฎเชพเชนเชฟเชคเซ€ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเซ€ เชคเซ‡ เชตเชฟเชถเซ‡ เช…เชฎเซ‡ เชจเซ€เชšเซ‡ เชฒเช–เซ€เชถเซเช‚.

เชนเซเช‚ เช•เซ‹เชก เช‰เชฎเซ‡เชฐเชตเชพเชจเซเช‚ เชชเชฃ เชญเซ‚เชฒเซ€ เช—เชฏเซ‹ เช›เซเช‚ เชœเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชฅเชคเซ€ เชชเซเชฐเชฅเชฎ เชตเชฟเชจเช‚เชคเซ€ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชถเซ‡. เช…เชจเซเชฐเซ‚เชช เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพ. เช…เชจเซ‡ เช†เช—เชณ เชธเซเชงเชพเชฐเซ‡เชฒ เชฎเชพเชฒเชฟเช•เชจเชพ เช–เชพเชคเชพเชฎเชพเช‚ 1/3 เชฐเช•เชฎ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เชญเซ‚เชฒ.

เช†เช—เชณเชจเซเช‚ เชชเช—เชฒเซเช‚ เช เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡. เชšเชพเชฒเซ‹ เชเช• เชซเซ‹เชฒเซเชกเชฐ เชฌเชจเชพเชตเซ€เช requests.

เชฎเซ‡เช‚ เชชเซเชฐเช•เชพเชถเชจ เช•เซ‹เชกเชจเซ‡ เช†เชงเชพเชฐ เชคเชฐเซ€เช•เซ‡ เชฒเซ€เชงเซ‹ simple-wallet-code.fc เชœเซ‡ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹ เชธเชคเซเชคเชพเชตเชพเชฐ เชญเช‚เชกเชพเชฐเชฎเชพเช‚.

เชงเซเชฏเชพเชจ เช†เชชเชตเชพ เชฏเซ‹เช—เซเชฏ เช•เช‚เชˆเช•. เช…เชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช…เชจเซ‡ เช‡เชจเชชเซเชŸ เชฎเซ‡เชธเซ‡เชœ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช. เช† เชชเช›เซ€, เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชœเชจเชฐเซ‡เชŸ เชฅเชพเชฏ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡, TON เชฎเชพเช‚ เชชเซเชฐเช•เชพเชถเชจ เชชเชนเซ‡เชฒเชพเช‚ เชœ เชธเชฐเชจเชพเชฎเซเช‚ เชœเชพเชฃเซ€เชคเซเช‚ เชนเซ‹เชฏ เช›เซ‡. เช†เช—เชณ, เชคเชฎเชพเชฐเซ‡ เช† เชธเชฐเชจเชพเชฎเชพเช‚ เชชเชฐ เช˜เชฃเชพ เช—เซเชฐเชพเชฎ เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชชเช›เซ€ เชœ เชคเชฎเชพเชฐเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชธเชพเชฅเซ‡เชจเซ€ เชซเชพเช‡เชฒ เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชคเซ‡เชฎเชพเช‚ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเซ‡เช•เซเชŸ เช…เชจเซ‡ เช“เชชเชฐเซ‡เชถเชจเซเชธ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฎเชฟเชถเชจ เชฒเซ‡ เช›เซ‡ (เชฎเชพเชจเซเชฏเช•เชฐเซเชคเชพเช“ เชœเซ‡เช“ เชธเซเชฎเชพเชฐเซเชŸ เชธเซเชŸเซ‹เชฐ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเซ‡ เช›เซ‡. เช•เชฐเชพเชฐ). เช•เซ‹เชก เช…เชนเซ€เช‚ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡.

เช†เช—เชณ เช†เชชเชฃเซ‡ เชชเซเชฐเช•เชพเชถเชจ เช•เซ‹เชก เชšเชฒเชพเชตเซ€เช เช›เซ€เช เช…เชจเซ‡ เชฎเซ‡เชณเชตเซ€เช เช›เซ€เช lottery-query.boc เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชซเชพเช‡เชฒ เช…เชจเซ‡ เชธเชฐเชจเชพเชฎเซเช‚.

~/TON/build/crypto/fift -s requests/new-lottery.fif 0

เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชธเชพเชšเชตเชตเชพเชจเซเช‚ เชญเซ‚เชฒเชถเซ‹ เชจเชนเซ€เช‚: lottery-query.boc, lottery.addr, lottery.pk.

เช…เชจเซเชฏ เชตเชธเซเชคเซเช“เชฎเชพเช‚, เช…เชฎเซ‡ เช…เชฎเชฒเชจเชพ เชฒเซ‹เช—เชฎเชพเช‚ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชœเซ‹เชˆเชถเซเช‚.

new wallet address = 0:044910149dbeaf8eadbb2b28722e7d6a2dc6e264ec2f1d9bebd6fb209079bc2a 
(Saving address to file lottery.addr)
Non-bounceable address (for init): 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd
Bounceable address (for later access): kQAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8KpFY

เชฎเชพเชคเซเชฐ เชฎเชจเซ‹เชฐเช‚เชœเชจ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ TON เชจเซ‡ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ€เช

$ ./lite-client/lite-client -C ton-lite-client-test1.config.json 
getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd

เช…เชจเซ‡ เช†เชชเชฃเซ‡ เชœเซ‹เชˆเชถเซเช‚ เช•เซ‡ เช† เชธเชฐเชจเชพเชฎเซเช‚ เชงเชฐเชพเชตเชคเซเช‚ เช–เชพเชคเซเช‚ เช–เชพเชฒเซ€ เช›เซ‡.

account state is empty

เช…เชฎเซ‡ เชธเชฐเชจเชพเชฎเซ‡ เชฎเซ‹เช•เชฒเซ€เช เช›เซ€เช 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd 2 เช—เซเชฐเชพเชฎ เช…เชจเซ‡ เชฅเซ‹เชกเซ€เช• เชธเซ‡เช•เช‚เชก เชชเช›เซ€ เช†เชชเชฃเซ‡ เชคเซ‡ เชœ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ€เช เช›เซ€เช. เช—เซเชฐเชพเชฎ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชนเซเช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚ เชธเชคเซเชคเชพเชตเชพเชฐ เชตเซ‰เชฒเซ‡เชŸ, เช…เชจเซ‡ เชคเชฎเซ‡ เชšเซ‡เชŸเชฎเชพเช‚เชฅเซ€ เช•เซ‹เชˆเชจเซ‡ เชŸเซ‡เชธเซเชŸ เช—เซเชฐเชพเชฎ เชฎเชพเชŸเซ‡ เชชเซ‚เช›เซ€ เชถเช•เซ‹ เช›เซ‹, เชœเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชนเซเช‚ เชฒเซ‡เช–เชจเชพ เช…เช‚เชคเซ‡ เชตเชพเชค เช•เชฐเซ€เชถ.

> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd

เช…เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ (state:account_uninit) เชธเชฎเชพเชจ เชธเชฐเชจเชพเชฎเชพ เชธเชพเชฅเซ‡เชจเซ‹ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เช…เชจเซ‡ 1 เชจเซ‡เชจเซ‹เช—เซเชฐเชพเชฎเชจเซเช‚ เชธเช‚เชคเซเชฒเชจ.

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

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ€เช. เชšเชพเชฒเซ‹ เชฒเชพเช‡เชŸ-เช•เซเชฒเชพเชฏเชจเซเชŸ เชฒเซ‹เชจเซเชš เช•เชฐเซ€เช เช…เชจเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเซ€เช.

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

เชšเชพเชฒเซ‹ เชคเชชเชพเชธเซ€เช เช•เซ‡ เช•เชฐเชพเชฐ เชชเซเชฐเช•เชพเชถเชฟเชค เชฅเชฏเซ‹ เช›เซ‡.

> last
> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd

เช…เชจเซเชฏ เชตเชธเซเชคเซเช“ เชตเชšเซเชšเซ‡ เช…เชฎเซ‡ เชตเชฟเชšเชพเชฐ.

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

เชคเซ‡ เช†เชชเชฃเซ‡ เชœเซ‹เชˆเช เช›เซ€เช account_active.

เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชธเชพเชฅเซ‡ เช…เชจเซเชฐเซ‚เชช เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพ เช…เชนเซ€เช‚ เชœ.

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชตเชฟเชจเช‚เชคเซ€เช“ เชฌเชจเชพเชตเซ€เช.

เชตเชงเซ เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡, เช…เชฎเซ‡ เชชเซเชฐเชฅเชฎ เชเช• เชธเซเชตเชคเช‚เชคเซเชฐ เช•เชพเชฐเซเชฏ เชคเชฐเซ€เช•เซ‡ เชธเชฐเชจเชพเชฎเซเช‚ เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡ เช›เซ‹เชกเซ€เชถเซเช‚, เช…เชจเซ‡ เช…เชฎเซ‡ เชฎเชพเชฒเชฟเช•เชจเชพ เชธเชฐเชจเชพเชฎเชพ เชชเชฐ เช—เซเชฐเชพเชฎ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชฌเซ€เชœเซเช‚ เช•เชฐเซ€เชถเซเช‚. เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เช†เชชเชฃเซ‡ เช—เซเชฐเชพเชฎ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชชเชฐเซ€เช•เซเชทเชฃเชจเซ€ เชœเซ‡เชฎ เชœ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡.

เช† เชคเซ‡ เชธเช‚เชฆเซ‡เชถ เช›เซ‡ เชœเซ‡ เช…เชฎเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชชเชฐ เชฎเซ‹เช•เชฒเซ€เชถเซเช‚, เชœเซเชฏเชพเช‚ msg_seqno 165, action เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ 2 เช…เชจเซ‡ 9.5 เช—เซเชฐเชพเชฎ.

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

เชคเชฎเชพเชฐเซ€ เช–เชพเชจเช—เซ€ เช•เซ€ เชตเชกเซ‡ เชธเช‚เชฆเซ‡เชถ เชชเชฐ เชธเชนเซ€ เช•เชฐเชตเชพเชจเซเช‚ เชญเซ‚เชฒเชถเซ‹ เชจเชนเซ€เช‚ lottery.pk, เชœเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชฌเชจเชพเชตเชคเซ€ เชตเช–เชคเซ‡ เช…เช—เชพเช‰ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เช…เชนเซ€เช‚ เช…เชจเซเชฐเซ‚เชช เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพ เช›เซ‡.

เชฎเซ‡เชณเชตเซ‹ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚เชฅเซ€ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเชตเซ€

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เชœเซ‹เชˆเช เช•เซ‡ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เช—เซ‡เชŸ เชชเชฆเซเชงเชคเชฟเช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชšเชฒเชพเชตเชตเซ€.

เชฒเซ‹เช‚เชš เช•เชฐเซ‹ lite-client เช…เชจเซ‡ เช…เชฎเซ‡ เชฒเช–เซ‡เชฒเซ€ เช—เซ‡เชŸ เชชเชฆเซเชงเชคเชฟเช“ เชšเชฒเชพเชตเซ‹.

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

ะ’ result เชซเช‚เช•เซเชถเชจ เชชเชฐเชค เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชฎเซ‚เชฒเซเชฏ เชงเชฐเชพเชตเซ‡ เช›เซ‡ balance() เช…เชฎเชพเชฐเชพ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚เชฅเซ€.
เช…เชฎเซ‡ เช˜เชฃเซ€ เชตเชงเซ เชชเชฆเซเชงเชคเชฟเช“ เชฎเชพเชŸเซ‡ เชคเซ‡ เชœ เช•เชฐเซ€เชถเซเช‚.

> runmethod 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd get_seqno
...
arguments:  [ 77871 ] 
result:  [ 1 ] 

เชšเชพเชฒเซ‹ เชคเชฎเชพเชฐเชพ เชถเชฐเชค เช‡เชคเชฟเชนเชพเชธ เชฎเชพเชŸเซ‡ เชชเซ‚เช›เซ‹.

> runmethod 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd get_orders
...
arguments:  [ 67442 ] 
result:  [ ([0 1 1583258284 10000000000 0 74649920601963823558742197308127565167945016780694342660493511643532213172308] [1 3 1583258347 4000000000 0 74649920601963823558742197308127565167945016780694342660493511643532213172308] [2 1 1583259901 50000000000 0 74649920601963823558742197308127565167945016780694342660493511643532213172308]) ] 

เช…เชฎเซ‡ เชฒเชพเช‡เชŸ-เช•เซเชฒเชพเชฏเชจเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚ เช…เชจเซ‡ เชธเชพเช‡เชŸ เชชเชฐ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฆเซเชงเชคเชฟเช“ เชฎเซ‡เชณเชตเซ€เชถเซเช‚.

เชตเซ‡เชฌเชธเชพเช‡เชŸ เชชเชฐ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชกเซ‡เชŸเชพ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‡

เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพเชจเซ‡ เช…เชจเซเช•เซ‚เชณ เชฐเซ€เชคเซ‡ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‡เช‚ เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เชเช• เชธเชฐเชณ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชฒเช–เซ€ เช›เซ‡. เช…เชนเซ€เช‚ เชนเซเช‚ เชคเซ‡เชจเชพ เชชเชฐ เชตเชฟเช—เชคเชตเชพเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ€เชถ เชจเชนเซ€เช‚ เช…เชจเซ‡ เชธเชพเช‡เชŸ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ€เชถ เชเช• เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพเชฎเชพเช‚.

TON เชฎเชพเชŸเซ‡ เชตเชฟเชจเช‚เชคเซ€เช“ เชคเชฐเชซเชฅเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ Python เชจเซ€ เชฎเชฆเชฆ เชธเชพเชฅเซ‡ lite-client. เช…เชจเซเช•เซ‚เชณเชคเชพ เชฎเชพเชŸเซ‡, เชธเชพเช‡เชŸเชจเซ‡ เชกเซ‹เช•เชฐเชฎเชพเช‚ เชชเซ‡เช• เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡ เช…เชจเซ‡ Google เช•เซเชฒเชพเช‰เชก เชชเชฐ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡. เชฒเชฟเช‚เช•.

เชชเซเชฐเชฏเชคเซเชจ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เชคเซเชฏเชพเช‚เชฅเซ€ เชซเชฐเซ€ เชญเชฐเชตเชพ เชฎเชพเชŸเซ‡ เช—เซเชฐเชพเชฎ เชฎเซ‹เช•เชฒเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เช เชตเซ‰เชฒเซ‡เชŸ. เช…เชฎเซ‡ 40 เช—เซเชฐเชพเชฎ เชฎเซ‹เช•เชฒเซ€เชถเซเช‚. เช…เชจเซ‡ เชšเชพเชฒเซ‹ เชธเซเชชเชทเซเชŸเชคเชพ เชฎเชพเชŸเซ‡ เชฌเซ‡ เชฌเซ‡เชŸเซเชธ เชฌเชจเชพเชตเซ€เช. เช…เชฎเซ‡ เชœเซ‹เชˆเช เช›เซ€เช เช•เซ‡ เชธเชพเช‡เชŸ เชฌเซ‡เชŸเซเชธเชจเซ‹ เช‡เชคเชฟเชนเชพเชธ, เชตเชฐเซเชคเชฎเชพเชจ เชœเซ€เชคเชจเซ€ เชŸเช•เชพเชตเชพเชฐเซ€ เช…เชจเซ‡ เช…เชจเซเชฏ เช‰เชชเชฏเซ‹เช—เซ€ เชฎเชพเชนเชฟเชคเซ€ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡.

เช†เชชเชฃเซ‡ เชœเซ‹เชˆเช เช›เซ€เชเช•เซ‡ เช…เชฎเซ‡ เชชเชนเซ‡เชฒเซ‹ เชœเซ€เชคเซเชฏเซ‹, เชฌเซ€เชœเซ‹ เชนเชพเชฐเซ€ เช—เชฏเซ‹.

เช‰เชšเซเชšเชพเชฐเชฃ

เชฒเซ‡เช– เชฎเชพเชฐเซ€ เชงเชพเชฐเชฃเชพ เช•เชฐเชคเชพเช‚ เช˜เชฃเซ‹ เชฒเชพเช‚เชฌเซ‹ เชจเซ€เช•เชณเซเชฏเซ‹, เช•เชฆเชพเชš เชคเซ‡ เชŸเซ‚เช‚เช•เซ‹ เชนเซ‹เชˆ เชถเช•เซ‡, เช…เชฅเชตเชพ เช•เชฆเชพเชš เชฎเชพเชคเซเชฐ เชเชตเซ€ เชตเซเชฏเช•เซเชคเชฟ เชฎเชพเชŸเซ‡ เช•เซ‡ เชœเซ‡ TON เชตเชฟเชถเซ‡ เช•เชถเซเช‚ เชœ เชœเชพเชฃเชคเชพ เชจเชฅเซ€ เช…เชจเซ‡ เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชธเชพเชฅเซ‡เชจเซ‹-เชเชŸเชฒเซ‹ เชธเชฐเชณ เชธเซเชฎเชพเชฐเซเชŸ เช•เชฐเชพเชฐ เชฒเช–เชตเชพ เช…เชจเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡. เชคเซ‡ เช•เชฆเชพเชš เช•เซ‡เชŸเชฒเซ€เช• เชฌเชพเชฌเชคเซ‹ เชตเชงเซ เชธเชฐเชณ เชฐเซ€เชคเซ‡ เชธเชฎเชœเชพเชตเซ€ เชถเช•เชพเชˆ เชนเซ‹เชค.

เช•เชฆเชพเชš เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเชพ เช•เซ‡เชŸเชฒเชพเช• เชชเชพเชธเชพเช“ เชตเชงเซ เช•เชพเชฐเซเชฏเช•เซเชทเชฎ เช…เชจเซ‡ เชธเซเช‚เชฆเชฐ เชฐเซ€เชคเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเซ‹เชค, เชชเชฐเช‚เชคเซ เชคเซ‡ เชชเช›เซ€ เชฒเซ‡เช– เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เชตเชงเซ เชธเชฎเชฏ เชฒเชพเช—เซเชฏเซ‹ เชนเซ‹เชค. เชคเซ‡ เชชเชฃ เชถเช•เซเชฏ เช›เซ‡ เช•เซ‡ เชฎเซ‡เช‚ เช•เซเชฏเชพเช‚เช• เชญเซ‚เชฒ เช•เชฐเซ€ เชนเซ‹เชฏ เช…เชฅเชตเชพ เช•เช‚เชˆเช• เชธเชฎเชœเชพเชฏเซเช‚ เชจ เชนเซ‹เชฏ, เชคเซ‡เชฅเซ€ เชœเซ‹ เชคเชฎเซ‡ เช•เช‚เชˆเช• เช—เช‚เชญเซ€เชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‹, เชคเซ‹ เชคเชฎเชพเชฐเซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เช…เชฅเชตเชพ TON เช•เซ‹เชก เชธเชพเชฅเซ‡เชจเชพ เชธเชคเซเชคเชพเชตเชพเชฐ เชญเช‚เชกเชพเชฐ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เช เชจเซ‹เช‚เชงเชตเซเช‚ เชœเซ‹เช‡เช เช•เซ‡ TON เชชเซ‹เชคเซ‡ เชนเชœเซ€ เชตเชฟเช•เชพเชธเชจเชพ เชธเช•เซเชฐเชฟเชฏ เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เช›เซ‡, เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช†เชตเซ€ เชถเช•เซ‡ เช›เซ‡ เชœเซ‡ เช† เชฒเซ‡เช–เชจเชพ เช•เซ‹เชˆเชชเชฃ เชชเช—เชฒเชพเชจเซ‡ เชคเซ‹เชกเซ€ เชจเชพเช–เชถเซ‡ (เชœเซ‡ เชนเซเช‚ เชฒเช–เชคเซ‹ เชนเชคเซ‹ เชคเซเชฏเชพเชฐเซ‡ เชฅเชฏเซเช‚ เชนเชคเซเช‚, เชคเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชธเซเชงเชพเชฐเซ‡เชฒ เช›เซ‡), เชชเชฐเช‚เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เช…เชญเชฟเช—เชฎ เช›เซ‡. เชซเซ‡เชฐเชซเชพเชฐ เชฅเชตเชพเชจเซ€ เชถเช•เซเชฏเชคเชพ เชจเชฅเซ€.

เชนเซเช‚ TON เชจเชพ เชญเชตเชฟเชทเซเชฏ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถ เชจเชนเซ€เช‚. เช•เชฆเชพเชš เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เช•เช‚เชˆเช• เชฎเซ‹เชŸเซเช‚ เชฌเชจเชถเซ‡ เช…เชจเซ‡ เช†เชชเชฃเซ‡ เชคเซ‡เชจเซ‹ เช…เชญเซเชฏเชพเชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฏ เชชเชธเชพเชฐ เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช เช…เชจเซ‡ เชนเชตเซ‡ เช…เชฎเชพเชฐเชพ เช‰เชคเซเชชเชพเชฆเชจเซ‹ เชธเชพเชฅเซ‡ เชตเชฟเชถเชฟเชทเซเชŸ เชธเซเชฅเชพเชจ เชญเชฐเชตเซเช‚ เชœเซ‹เชˆเช.

เชซเซ‡เชธเชฌเซเช• เชคเชฐเชซเชฅเซ€ เชคเซเชฒเชพ เชฐเชพเชถเชฟ เชชเชฃ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ TON เช•เชฐเชคเชพ เชฎเซ‹เชŸเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเชพ เชธเช‚เชญเชตเชฟเชค เชชเซเชฐเซ‡เช•เซเชทเช•เซ‹ เช›เซ‡. เชนเซเช‚ เชคเซเชฒเชพ เชฐเชพเชถเชฟ เชตเชฟเชถเซ‡ เชฒเช—เชญเช— เช•เช‚เชˆ เชœเชพเชฃเชคเซ‹ เชจเชฅเซ€, เชซเซ‹เชฐเชฎ เชฆเซเชตเชพเชฐเชพ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เซ‡ เชคเซเชฏเชพเช‚ TON เชธเชฎเซเชฆเชพเชฏ เช•เชฐเชคเชพเช‚ เช˜เชฃเซ€ เชตเชงเซ เชชเซเชฐเชตเซƒเชคเซเชคเชฟ เช›เซ‡. เชœเซ‹เช•เซ‡ TON เชจเชพ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เช…เชจเซ‡ เชธเชฎเซเชฆเชพเชฏ เชตเชงเซ เชญเซ‚เช—เชฐเซเชญ เชœเซ‡เชตเชพ เช›เซ‡, เชœเซ‡ เชธเชฐเชธ เชชเชฃ เช›เซ‡.

เชธเช‚เชฆเชฐเซเชญเซ‹

  1. เชธเชคเซเชคเชพเชตเชพเชฐ TON เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ: https://test.ton.org
  2. เชธเชคเซเชคเชพเชตเชพเชฐ TON เชญเช‚เชกเชพเชฐ: https://github.com/ton-blockchain/ton
  3. เชตเชฟเชตเชฟเชง เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎเซเชธ เชฎเชพเชŸเซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เชตเซ‰เชฒเซ‡เชŸ: https://wallet.ton.org
  4. เช† เชฒเซ‡เช–เชฎเชพเช‚เชฅเซ€ เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€: https://github.com/raiym/astonished
  5. เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชตเซ‡เชฌเชธเชพเช‡เชŸเชจเซ€ เชฒเชฟเช‚เช•: https://ton-lottery.appspot.com
  6. FunC เชฎเชพเชŸเซ‡ เชตเชฟเชเซเชฏเซเช…เชฒ เชธเซเชŸเซเชกเชฟเชฏเซ‹ เช•เซ‹เชก เชฎเชพเชŸเซ‡ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เชฎเชพเชŸเซ‡ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€: https://github.com/raiym/func-visual-studio-plugin
  7. เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎเชฎเชพเช‚ TON เชตเชฟเชถเซ‡ เชšเซ‡เชŸ เช•เชฐเซ‹, เชœเซ‡เชฃเซ‡ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชคเชฌเช•เซเช•เซ‡ เชคเซ‡เชจเซ‡ เชธเชฎเชœเชตเชพเชฎเชพเช‚ เช–เชฐเซ‡เช–เชฐ เชฎเชฆเชฆ เช•เชฐเซ€. เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เชœเซ‹ เชนเซเช‚ เช•เชนเซเช‚ เช•เซ‡ 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

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹