เชนเชพเชธเซเช•เซ‡เชฒ เชธเชพเชฅเซ‡ FunC เชจเซ‡ FunCtional เชฎเชพเช‚ เชซเซ‡เชฐเชตเชตเซเช‚: เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซ‡เชฐเซ‹เช•เซ‡เชฒเซ‡ เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เชธเซเชชเชฐเซเชงเชพ เชœเซ€เชคเซ€

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

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

เชชเชฐเช‚เชคเซ เชšเชพเชฒเซ‹ เชฅเซ‹เชกเชพ เชธเช‚เชฆเชฐเซเชญเชฅเซ€ เชถเชฐเซ‚เช†เชค เช•เชฐเซ€เช.

เชธเซเชชเชฐเซเชงเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชถเชฐเชคเซ‹

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

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

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

เชถเชพ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เชญเชพเช— เชฒเซ‡เชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚?

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

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

TON เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เชธเช‚เชถเซ‹เชงเชจ

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

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

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

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

เชจเชฟเช•เซเชธ: เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‡ เชเช•เชธเชพเชฅเซ‡ เชฎเซ‚เช•เชตเซ‹

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

เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชฌเชจเชพเชตเซ€เชจเซ‡ เชถเชฐเซ‚เช†เชค เช•เชฐเซ€ TON เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชฎเชพเชŸเซ‡ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟ เชธเชพเชฅเซ‡ เชจเชฟเช•เซเชธ เช“เชตเชฐเชฒเซ‡. เชคเซ‡เชจเซ€ เชธเชนเชพเชฏเชฅเซ€, TON เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเชตเซเช‚ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซเช‚ เชธเชฐเชณ เช›เซ‡:

$ cd ~/.config/nixpkgs/overlays && git clone https://github.com/serokell/ton.nix
$ cd /path/to/ton/repo && nix-shell
[nix-shell]$ cmakeConfigurePhase && make

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

TON เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช—

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

เชคเชฆเซเชชเชฐเชพเช‚เชค, TON เชจเชพ เชฒเซ‹เช•เซ‹เช เชคเซเชฐเชฃ เชจเชตเซ€ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพเช“ เชฌเชจเชพเชตเซ€:

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

เชซเชจ เชธเซ€ เชเช• เชธเซเชฎเชพเชฐเซเชŸ เช•เซ‹เชจเซเชŸเซเชฐเชพเช•เซเชŸ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพ เช›เซ‡ เชœเซ‡ เชธเชฎเชพเชจ เช›เซ‡ C เช…เชจเซ‡ เชฌเซ€เชœเซ€ เชญเชพเชทเชพเชฎเชพเช‚ เชธเช‚เช•เชฒเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ - เชซเชฟเชซเซเชŸ เชเชธเซ‡เชฎเซเชฌเชฒเชฐ.

เชชเชพเช‚เชšเชฎเซ‹ เชเชธเซ‡เชฎเซเชฌเชฒเชฐ - TVM เชฎเชพเชŸเซ‡ เชฌเชพเชˆเชจเชฐเซ€ เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเชพเช‚เชš เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€. เชซเชฟเชซเซเชฅ เชเชธเซ‡เชฎเซเชฌเชฒเชฐ เชชเชพเชธเซ‡ เช•เชฎเซเชชเชพเชˆเชฒเชฐ เชจเชฅเซ€. เช† เชเชฎเซเชฌเซ‡เชกเซ‡เชก เชกเซ‹เชฎเซ‡เชจ เชตเชฟเชถเชฟเชทเซเชŸ เชญเชพเชทเชพ (eDSL).

เช…เชฎเชพเชฐเซ€ เชธเซเชชเชฐเซเชงเชพ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡

เช›เซ‡เชตเชŸเซ‡, เช…เชฎเชพเชฐเชพ เชชเซเชฐเชฏเชคเซเชจเซ‹เชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชœเซ‹เชตเชพเชจเซ‹ เชธเชฎเชฏ เช†เชตเซ€ เช—เชฏเซ‹ เช›เซ‡.

เช…เชธเซเชฎเซ‡เชณ เชšเซเช•เชตเชฃเซ€ เชšเซ‡เชจเชฒ

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

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

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

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

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

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

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

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

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

TVM Haskell eDSL

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

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

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

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

เช…เชฎเชพเชฐเชพ eDSL เชชเชฐ เชฎเชฒเซเชŸเชฟเชธเชฟเช— เชตเซ‰เชฒเซ‡เชŸเชจเซเช‚ เช…เชฎเชฒเซ€เช•เชฐเชฃ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฆเซ‡เช–เชพเชฏ เช›เซ‡:

main :: IO ()
main = putText $ pretty $ declProgram procedures methods
  where
    procedures =
      [ ("recv_external", decl recvExternal)
      , ("recv_internal", decl recvInternal)
      ]
    methods =
      [ ("seqno", declMethod getSeqno)
      ]

data Storage = Storage
  { sCnt :: Word32
  , sPubKey :: PublicKey
  }

instance DecodeSlice Storage where
  type DecodeSliceFields Storage = [PublicKey, Word32]
  decodeFromSliceImpl = do
    decodeFromSliceImpl @Word32
    decodeFromSliceImpl @PublicKey

instance EncodeBuilder Storage where
  encodeToBuilder = do
    encodeToBuilder @Word32
    encodeToBuilder @PublicKey

data WalletError
  = SeqNoMismatch
  | SignatureMismatch
  deriving (Eq, Ord, Show, Generic)

instance Exception WalletError

instance Enum WalletError where
  toEnum 33 = SeqNoMismatch
  toEnum 34 = SignatureMismatch
  toEnum _ = error "Uknown MultiSigError id"

  fromEnum SeqNoMismatch = 33
  fromEnum SignatureMismatch = 34

recvInternal :: '[Slice] :-> '[]
recvInternal = drop

recvExternal :: '[Slice] :-> '[]
recvExternal = do
  decodeFromSlice @Signature
  dup
  preloadFromSlice @Word32
  stacktype @[Word32, Slice, Signature]
  -- cnt cs sign

  pushRoot
  decodeFromCell @Storage
  stacktype @[PublicKey, Word32, Word32, Slice, Signature]
  -- pk cnt' cnt cs sign

  xcpu @1 @2
  stacktype @[Word32, Word32, PublicKey, Word32, Slice, Signature]
  -- cnt cnt' pk cnt cs sign

  equalInt >> throwIfNot SeqNoMismatch

  push @2
  sliceHash
  stacktype @[Hash Slice, PublicKey, Word32, Slice, Signature]
  -- hash pk cnt cs sign

  xc2pu @0 @4 @4
  stacktype @[PublicKey, Signature, Hash Slice, Word32, Slice, PublicKey]
  -- pubk sign hash cnt cs pubk

  chkSignU
  stacktype @[Bool, Word32, Slice, PublicKey]
  -- ? cnt cs pubk

  throwIfNot SignatureMismatch
  accept

  swap
  decodeFromSlice @Word32
  nip

  dup
  srefs @Word8

  pushInt 0
  if IsEq
  then ignore
  else do
    decodeFromSlice @Word8
    decodeFromSlice @(Cell MessageObject)
    stacktype @[Slice, Cell MessageObject, Word8, Word32, PublicKey]
    xchg @2
    sendRawMsg
    stacktype @[Slice, Word32, PublicKey]

  endS
  inc

  encodeToCell @Storage
  popRoot

getSeqno :: '[] :-> '[Word32]
getSeqno = do
  pushRoot
  cToS
  preloadFromSlice @Word32

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

เชธเซเชชเชฐเซเชงเชพ เช…เชจเซ‡ TON เชตเชฟเชถเซ‡ เชคเชพเชฐเชฃเซ‹

เช•เซเชฒ เชฎเชณเซ€เชจเซ‡, เช…เชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชฎเชพเช‚ 380 เช•เชฒเชพเช• เชฒเชพเช—เซเชฏเชพ (เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ, เชฎเซ€เชŸเชฟเช‚เช—เซเชธ เช…เชจเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชตเชฟเช•เชพเชธ เชธเชพเชฅเซ‡ เชชเชฐเชฟเชšเชฟเชคเชคเชพ เชธเชนเชฟเชค). เชธเซเชชเชฐเซเชงเชพเชจเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชชเชพเช‚เชš เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เช เชญเชพเช— เชฒเซ€เชงเซ‹: CTO, เชŸเซ€เชฎ เชฒเซ€เชก, เชฌเซเชฒเซ‹เช•เชšเซ‡เชจ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชจเชฟเชทเซเชฃเชพเชคเซ‹ เช…เชจเซ‡ เชนเชพเชธเซเช•เซ‡เชฒ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชกเซ‡เชตเชฒเชชเชฐเซเชธ.

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

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

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

เชธเซ‹เชฐเซเชธ: www.habr.com

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