เบ›เปˆเบฝเบ™ FunC เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ FunCtional เบเบฑเบš Haskell: เบงเบดเบ—เบตเบเบฒเบ™ Serokell เบŠเบฐเบ™เบฐเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™ Telegram Blockchain

เป€เบˆเบปเป‰เบฒเบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบเบดเบ™เบงเปˆเบฒ Telegram เบเปเบฒเบฅเบฑเบ‡เบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Ton blockchain. เปเบ•เปˆเบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบžเบฒเบ”เบ‚เปˆเบฒเบงเบงเปˆเบฒเบšเปเปˆเบ”เบปเบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰ Telegram เบ›เบฐเบเบฒเบ”เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™ เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบตเบ™เบตเป‰.

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

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

เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เปเบฅเบฐเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ‚เบญเบ‡เบกเบฑเบ™

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบงเบฝเบเบ‡เบฒเบ™เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบœเบนเป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เบถเปˆเบ‡เบซเบผเบทเบซเบผเบฒเบเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบต, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เปเป‰เบชเบฐเป€เบซเบ™เบตเป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบฅเบฐเบšเบปเบšเบ™เบดเป€เบงเบ” TON. เบเบฒเบ™โ€‹เปเบ‚เปˆเบ‡เบ‚เบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบ”เบณโ€‹เป€เบ™เบตเบ™โ€‹เป„เบ›โ€‹เปเบ•เปˆโ€‹เบงเบฑเบ™โ€‹เบ—เบต 24 เบเบฑเบ™เบเบฒโ€‹เบซเบฒโ€‹เบงเบฑเบ™โ€‹เบ—เบต 15 เบ•เบธเบฅเบฒโ€‹เบ™เบตเป‰, โ€‹เปเบฅเบฐโ€‹เบœเบปเบ™โ€‹เบเบฒเบ™โ€‹เปเบ‚เปˆเบ‡เบ‚เบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบ›เบฐเบเบฒเบ”โ€‹เปƒเบ™โ€‹เบงเบฑเบ™โ€‹เบ—เบต 15 เบžเบฐเบˆเบดเบโ€‹เป€เบ—เบปเปˆเบฒโ€‹เบ™เบฑเป‰เบ™. เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบเบฒเบง, เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒเปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ™เบตเป‰ Telegram เบˆเบฑเบ”เบเบฒเบ™เปเบฅเบฐเบ›เบฐเบเบฒเบ”เบœเบปเบ™เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบญเบญเบเปเบšเบšเปเบฅเบฐเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ™ C ++ เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบฅเบฐเบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™เป‚เบ— VoIP เปƒเบ™ Telegram.

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

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

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบถเปˆเบ‡เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก?

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

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

TON เบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒ blockchain

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

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

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

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

Nix: เบเบฒเบ™เบงเบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบฎเปˆเบงเบกเบเบฑเบ™

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

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป‚เบ”เบเบเบฒเบ™เบชเป‰เบฒเบ‡ Nix เบŠเป‰เบญเบ™เบ—เบฑเบšเบเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบเบญเบš 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 Virtual Machine (TVM). TVM เบกเบตเบ„เบงเบฒเบกเบŠเบฑเบšเบŠเป‰เบญเบ™เบซเบผเบฒเบเบเปˆเบงเบฒเป€เบ„เบทเปˆเบญเบ‡ virtual เบญเบทเปˆเบ™เป†, เปเบฅเบฐเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเบซเบผเบฒเบ, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบš เบชเบทเบšเบ•เปเปˆ ะธ เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เบเบฑเบšโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹.

เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, guys เบˆเบฒเบ TON เป„เบ”เป‰เบชเป‰เบฒเบ‡เบชเบฒเบกเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเปƒเบซเบกเปˆ:

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

FunC เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบชเบฑเบ™เบเบฒเบชเบฐเบซเบกเบฒเบ”เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบš C เปเบฅเบฐเบ–เบทเบเบฅเบงเบšเบฅเบงเบกเป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบญเบทเปˆเบ™ - Fift Assembler.

เบเบญเบ‡โ€‹เบ›เบฐโ€‹เบŠเบธเบกโ€‹เบ—เบตโ€‹เบซเป‰เบฒโ€‹ โ€” เบซเป‰เบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ” binary executable เบชเปเบฒเบฅเบฑเบš TVM. Fifth Assembler เบšเปเปˆเบกเบต compiler. เบ™เบตเป‰ เบžเบฒเบชเบฒเบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เป‚เบ”เป€เบกเบ™เบ—เบตเปˆเบเบฑเบ‡เบขเบนเปˆ (eDSL).

เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบ

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

เบŠเปˆเบญเบ‡โ€‹เบ—เบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบŠเปเบฒโ€‹เบฅเบฐ asynchronousโ€‹

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

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

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

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

  1. เบฅเบฒเบโ€‹เบฅเบฐโ€‹เบญเบฝเบ” เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบŠเปˆเบญเบ‡เบ—เบฒเบ‡ unidirectional.
  2. เบเบฒเบ™เบชเบญเบ™, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ—เบดเบšเบฒเบเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ, เปเบ•เปˆเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบปเปˆเบงเป„เบ›เปเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบ‚เปเป‰เบ‚เบฑเบ”เปเบเปˆเบ‡.

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

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบฑเบ™เบเบฒเปƒเบ™ FunC, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ‚เบฝเบ™ utility line เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบชเบฑเบ™เบเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ Fift, เบ•เบฒเบกเบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบฅเบทเบญเบโ€‹เบžเบฒโ€‹เบชเบฒโ€‹เบญเบทเปˆเบ™โ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบชเปเบฒโ€‹เบฅเบฑเบš CLI เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒ, เปเบ•เปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบชเบปเบ™โ€‹เปƒเบˆโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบก Fit เป€เบžเบทเปˆเบญโ€‹เป€เบšเบดเปˆเบ‡โ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”.

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

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

TVM Haskell eDSL

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

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

เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เบปเบงเบ›เบฐเบเบญเบš TVM เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ–เบทเบเบเบฑเบ‡เบขเบนเปˆเปƒเบ™ Haskell, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฐเป€เบ›เบปเบฒเป€เบ‡เบดเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปƒเบชเปˆเบกเบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบ„เบงเบ™เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆ:

  • เบชเบฑเบ™เบเบฒเบ™เบตเป‰เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบซเบ™เบถเปˆเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆ, เปเบ•เปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™. เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เบเปเบฒเบ™เบปเบ”เบŸเบฑเบ‡เบŠเบฑเบ™เปƒเบซเบกเปˆเปƒเบ™เบžเบฒเบชเบฒเป€เบˆเบปเป‰เบฒเบžเบฒเบš (i.e. Haskell), eDSL เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฅเบทเบญเบเบงเปˆเบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบกเบฑเบ™เบเบฒเบเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบดเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปƒเบ™ TVM เบซเบผเบทเบžเบฝเบ‡เปเบ•เปˆ inlined เบขเบนเปˆเบˆเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ—.
  • เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš Haskell, เบซเบ™เป‰เบฒเบ—เบตเปˆเบกเบตเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบ–เบทเบเบเบงเบ”เบชเบญเบšเปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบก. เปƒเบ™ eDSL เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบŸเบฑเบ‡เบŠเบฑเบ™เปเบกเปˆเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ stack เบ—เบตเปˆเบŸเบฑเบ‡เบŠเบฑเบ™เบ„เบฒเบ”เบซเบงเบฑเบ‡, เปเบฅเบฐเบ›เบฐเป€เบžเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ stack เบ—เบตเปˆเบˆเบฐเบœเบฐเบฅเบดเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เป‚เบ—.
  • เบกเบตเบ„เปเบฒเบšเบฑเบ™เบเบฒเบเปƒเบ™เบฅเบฐเบซเบฑเบ” stacktype, เบญเบฐเบ—เบดเบšเบฒเบเบ›เบฐเป€เบžเบ” stack เบ„เบฒเบ”เบงเปˆเบฒเบˆเบฐเบขเบนเปˆเปƒเบ™เบˆเบธเบ”เป‚เบ—. เปƒเบ™เบชเบฑเบ™เบเบฒ wallet เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบ„เปเบฒเป€เบซเบฑเบ™, เปเบ•เปˆเปƒเบ™ eDSL เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบ–เบทเบเบเบงเบ”เบชเบญเบšเปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบก. เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบฎเบฑเบšเปƒเบŠเป‰เป€เบ›เบฑเบ™เป€เบญเบเบฐเบชเบฒเบ™เบซเบผเบทเบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบเบซเบฒเบšเบฑเบ™เบซเบฒเบ–เป‰เบฒเบฅเบฐเบซเบฑเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเบ›เบฐเป€เบžเบ” stack เบ›เปˆเบฝเบ™เปเบ›เบ‡. เปเบ™เปˆเบ™เบญเบ™, เบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบงเบฅเบฒเปเบฅเปˆเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒเบšเปเปˆเบกเบตเบฅเบฐเบซเบฑเบ” TVM เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบžเบงเบเบกเบฑเบ™.
  • เบ™เบตเป‰เบเบฑเบ‡เป€เบ›เบฑเบ™เบ•เบปเบงเปเบšเบšเบ—เบตเปˆเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™เบชเบญเบ‡เบญเบฒเบ—เบดเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฑเบ‡เบกเบตเบซเบผเบฒเบเบงเบฝเบเบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เบธเบเป†เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบŠเบฑเป‰เบ™เบฎเบฝเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เปƒเบ™เบฅเบฐเบซเบฑเบ”เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.

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

เบšเบปเบ”เบชเบฐเบซเบผเบธเบšเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™เปเบฅเบฐ TON

เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เป€เบงเบฅเบฒ 380 เบŠเบปเปˆเบงเป‚เบกเบ‡ (เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเป€เบญเบเบฐเบชเบฒเบ™, เบเบญเบ‡เบ›เบฐเบŠเบธเบกเปเบฅเบฐเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เบปเบงเบˆเบดเบ‡). เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเป‰เบฒเบ„เบปเบ™เป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเป‚เบ„เบ‡เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™: CTO, เบซเบปเบงเบซเบ™เป‰เบฒเบ—เบตเบก, เบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™เป€เบงเบ—เบต blockchain เปเบฅเบฐเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบง Haskell.

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

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

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

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™