āĻŸā§‡āϞāĻŋāĻ—ā§āϰāĻžāĻŽ āĻ“āĻĒ⧇āύ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• (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 āĻāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒāϰāĻŋāĻŦ⧇āĻļ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āφāĻ°ā§āϟāĻŋāϕ⧇āϞ⧇ āϝāĻž āϝāĻž āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰāĻž āĻšāĻŦ⧇, āφāĻŽāĻŋ āĻŽā§āϝāĻžāĻ•āĻ“āĻāϏ-āĻ āϤāĻžāϰ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ•āϰ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ āϤāĻž āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āĻĻ⧇āϖ⧇āĻ›āĻŋāĨ¤ Ubuntu āĻĄāĻ•āĻžāϰ⧇ 18.04 LTSāĨ¤

āĻĒā§āϰāĻĨāĻŽā§‡ āφāĻĒāύāĻžāϕ⧇ āϝāĻž āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϤāĻž āĻšāϞ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻāĻŦāĻ‚ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ lite-client āϝāĻž āĻĻāĻŋāϝāĻŧ⧇ āφāĻĒāύāĻŋ TON āĻ āĻ…āύ⧁āϰ⧋āϧ āĻĒāĻžāĻ āĻžāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āĻ…āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāĻŸā§‡āϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀āϤ⧇ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϟāĻŋ āĻŦ⧇āĻļ āĻĒ⧁āĻ™ā§āĻ–āĻžāύ⧁āĻĒ⧁āĻ™ā§āĻ– āĻāĻŦāĻ‚ āĻ¸ā§āĻĒāĻˇā§āϟāĻ­āĻžāĻŦ⧇ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϤāĻŦ⧇ āĻ•āĻŋāϛ⧁ āĻŦāĻŋāĻŦāϰāĻŖ āĻŦāĻžāĻĻ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāĻ–āĻžāύ⧇ āφāĻŽāϰāĻž āϏ⧇āχ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āϏ⧇āχ āϏāĻžāĻĨ⧇ āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻĄāĻŋāĻĒ⧇āĻ¨ā§āĻĄā§‡āĻ¨ā§āϏāĻŋāϗ⧁āϞ⧋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧇ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋāĨ¤ āφāĻŽāĻŋ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āύāĻŋāĻœā§‡ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰāĻŋāύāĻŋ āĻāĻŦāĻ‚ āĻ…āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋ āĻĨ⧇āϕ⧇āχ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ Ubuntu (MacOS-āĻ āφāĻŽāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤāĻžāĻŽ) brew).

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

āĻāĻ•āĻŦāĻžāϰ āϏāĻŽāĻ¸ā§āϤ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āχāύāĻ¸ā§āϟāϞ āĻšāϝāĻŧ⧇ āϗ⧇āϞ⧇ āφāĻĒāύāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ lite-client, Fift, FunC.

āĻĒā§āϰāĻĨāĻŽāϤ, āφāĻŽāϰāĻž āϤāĻžāϰ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϏāĻš TON āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āĻ•ā§āϞ⧋āύ āĻ•āϰāĻŋāĨ¤ āϏ⧁āĻŦāĻŋāϧāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ•āϰāĻŦ ~/TON.

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

āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇ Fift и FunC.

āĻāĻ–āύ āφāĻŽāϰāĻž āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĨ¤ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āϕ⧋āĻĄ āĻāĻ•āϟāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āĻ•ā§āϞ⧋āύ āĻ•āϰāĻž āĻšāϝāĻŧ ~/TON/tonāĨ¤ āĻĻā§āϝ ~/TON āĻāĻ•āϟāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ build āĻāĻŦāĻ‚ āĻāϟāĻŋāϤ⧇ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰ⧁āύāĨ¤

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

āϝ⧇āĻšā§‡āϤ⧁ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āϟ āϚ⧁āĻ•ā§āϤāĻŋ āϞāĻŋāĻ–āϤ⧇ āϝāĻžāĻšā§āĻ›āĻŋ, āϤāĻžāχ āφāĻŽāĻžāĻĻ⧇āϰ āϕ⧇āĻŦāϞ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχ lite-clientāĻ•āĻŋāĻ¨ā§āϤ⧁ Fift ҁ FunC, āϤāĻžāχ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰāĻž āϝāĻžāĻ•. āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĻā§āϰ⧁āϤ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āύāϝāĻŧ, āϤāĻžāχ āφāĻŽāϰāĻž āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāĻ›āĻŋāĨ¤

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

āĻāϰ āĻĒāϰ⧇, āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞāϟāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āύ⧋āĻĄ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻĄā§‡āϟāĻž āϰāϝāĻŧ⧇āϛ⧇ lite-client āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāĻŦ⧇āĨ¤

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

TON āϕ⧇ āĻĒā§āϰāĻĨāĻŽ āĻ…āύ⧁āϰ⧋āϧ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āĻāĻ–āύ āϞāĻžā§āϚ āĻ•āϰāĻž āϝāĻžāĻ• lite-client.

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

āϝāĻĻāĻŋ āĻŦāĻŋāĻ˛ā§āĻĄāϟāĻŋ āϏāĻĢāϞ āĻšāϝāĻŧ, āϤāĻŦ⧇ āϞāĻžā§āĻšā§‡āϰ āĻĒāϰ⧇ āφāĻĒāύāĻŋ āύ⧋āĻĄā§‡āϰ āϏāĻžāĻĨ⧇ āĻšāĻžāϞāĻ•āĻž āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āϏāĻ‚āϝ⧋āϗ⧇āϰ āĻāĻ•āϟāĻŋ āϞāĻ— āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ⧇āύāĨ¤

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

āφāĻĒāύāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāϤ⧇ āĻĒāĻžāϰ⧇āύ help āĻāĻŦāĻ‚ āĻĻ⧇āϖ⧁āύ āĻ•āĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧāĨ¤

help

āφāϏ⧁āύ āφāĻŽāϰāĻž āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧ⧇ āϝ⧇ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ āϏ⧇āϗ⧁āϞāĻŋāϰ āϤāĻžāϞāĻŋāĻ•āĻž āĻ•āϰāĻŋāĨ¤

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

last ĐŋĐžĐģŅƒŅ‡Đ°ĐĩŅ‚ ĐŋĐžŅĐģĐĩĐ´ĐŊиК ŅĐžĐˇĐ´Đ°ĐŊĐŊŅ‹Đš ĐąĐģĐžĐē ҁ ҁĐĩŅ€Đ˛ĐĩŅ€Đ°. 

sendfile <filename> ĐžŅ‚ĐŋŅ€Đ°Đ˛ĐģŅĐĩŅ‚ в TON Ņ„Đ°ĐšĐģ ҁ ŅĐžĐžĐąŅ‰ĐĩĐŊиĐĩĐŧ, иĐŧĐĩĐŊĐŊĐž ҁ ĐŋĐžĐŧĐžŅ‰ŅŒŅŽ ŅŅ‚ĐžĐš ĐēĐžĐŧаĐŊĐ´Ņ‹ ĐŋŅƒĐąĐģиĐē҃ĐĩŅ‚ŅŅ ҁĐŧĐ°Ņ€Ņ‚-ĐēĐžĐŊŅ‚Ņ€Đ°ĐēŅ‚ и СаĐŋŅ€ŅĐžŅŅ‹ Đē ĐŊĐĩĐŧ҃. 

getaccount <addr> ĐˇĐ°ĐŗŅ€ŅƒĐļаĐĩŅ‚ Ņ‚ĐĩĐēŅƒŅ‰ĐĩĐĩ ŅĐžŅŅ‚ĐžŅĐŊиĐĩ ҁĐŧĐ°Ņ€Ņ‚-ĐēĐžĐŊŅ‚Ņ€Đ°ĐēŅ‚Đ° ҁ ҃ĐēаСаĐŊĐŊŅ‹Đŧ Đ°Đ´Ņ€ĐĩŅĐžĐŧ. 

runmethod <addr> [<block-id-ext>] <method-id> <params>  СаĐŋ҃ҁĐēаĐĩŅ‚ get-ĐŧĐĩŅ‚ĐžĐ´Ņ‹ ҁĐŧĐ°Ņ€Ņ‚ĐēĐžĐŊŅ‚Ņ€Đ°ĐēŅ‚Đ°. 

āĻāĻ–āύ āφāĻŽāϰāĻž āύāĻŋāĻœā§‡āχ āϚ⧁āĻ•ā§āϤāĻŋ āϞāĻŋāĻ–āϤ⧇ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĨ¤

āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ

āϧāĻžāϰāĻŖāĻž

āφāĻŽāĻŋ āωāĻĒāϰ⧇ āϝ⧇āĻŽāύ āϞāĻŋāϖ⧇āĻ›āĻŋ, āφāĻŽāϰāĻž āϝ⧇ āĻ¸ā§āĻŽāĻžāĻ°ā§āϟ āϚ⧁āĻ•ā§āϤāĻŋ āϞāĻŋāĻ–āĻ›āĻŋ āϤāĻž āĻāĻ•āϟāĻŋ āϞāϟāĻžāϰāĻŋāĨ¤

āϤāĻĻ⧁āĻĒāϰāĻŋ, āĻāϟāĻŋ āϕ⧋āύāĻ“ āϞāϟāĻžāϰāĻŋ āύāϝāĻŧ āϝ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āϟāĻŋāĻ•āĻŋāϟ āĻ•āĻŋāύāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻāĻ• āϘāĻ¨ā§āϟāĻž, āĻĻāĻŋāύ āĻŦāĻž āĻŽāĻžāϏ āĻ…āĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāϤ⧇ āĻšāĻŦ⧇, āϤāĻŦ⧇ āĻāĻ•āϟāĻŋ āϤāĻžāĻ¤ā§āĻ•ā§āώāĻŖāĻŋāĻ• āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āϚ⧁āĻ•ā§āϤāĻŋāϰ āĻ āĻŋāĻ•āĻžāύāĻžāϝāĻŧ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧇ N āĻ—ā§āϰāĻžāĻŽ, āĻāĻŦāĻ‚ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āĻāϟāĻŋ āĻĢāĻŋāϰ⧇ āĻĒāĻžāϝāĻŧ 2 * N āĻ—ā§āϰāĻžāĻŽ āĻŦāĻž āĻšāĻžāϰāĻžāϝāĻŧāĨ¤ āφāĻŽāϰāĻž āĻĒā§āϰāĻžāϝāĻŧ 40% āĻœā§‡āϤāĻžāϰ āϏāĻŽā§āĻ­āĻžāĻŦāύāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻŦāĨ¤ āϝāĻĻāĻŋ āĻĒ⧇āĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻĒāĻ°ā§āϝāĻžāĻĒā§āϤ āĻ—ā§āϰāĻžāĻŽ āύāĻž āĻĨāĻžāϕ⧇, āϤāĻžāĻšāϞ⧇ āφāĻŽāϰāĻž āϞ⧇āύāĻĻ⧇āύāϟāĻŋāϕ⧇ āϟāĻĒ-āφāĻĒ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāĻŦāĨ¤

āϤāĻžāĻ›āĻžāĻĄāĻŧāĻž, āĻāϟāĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āϝ⧇ āĻŦāĻžāϜāĻŋ āϰāĻŋāϝāĻŧ⧇āϞ āϟāĻžāχāĻŽā§‡ āĻāĻŦāĻ‚ āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ• āφāĻ•āĻžāϰ⧇ āĻĻ⧇āĻ–āĻž āϝāĻžāϝāĻŧ, āϝāĻžāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰ⧇ āϝ⧇ āϏ⧇ āϜāĻŋāϤ⧇āϛ⧇ āύāĻžāĻ•āĻŋ āĻšā§‡āϰ⧇āϛ⧇āĨ¤ āĻ…āϤāĻāĻŦ, āφāĻĒāύāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϝāĻž āϏāϰāĻžāϏāϰāĻŋ TON āĻĨ⧇āϕ⧇ āĻŦāĻžāϜāĻŋ āĻāĻŦāĻ‚ āĻĢāϞāĻžāĻĢāϞ āĻĻ⧇āĻ–āĻžāĻŦ⧇āĨ¤

āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āϟ āϚ⧁āĻ•ā§āϤāĻŋ āϞ⧇āĻ–āĻž

āϏ⧁āĻŦāĻŋāϧāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻŽāĻŋ FunC-āĻāϰ āϜāĻ¨ā§āϝ āϕ⧋āĻĄāϟāĻŋ āĻšāĻžāχāϞāĻžāχāϟ āĻ•āϰ⧇āĻ›āĻŋ; āĻĒā§āϞāĻžāĻ—āχāύāϟāĻŋ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞ āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āϕ⧋āĻĄ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻž āĻāĻŦāĻ‚ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇; āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻšāĻ āĻžā§Ž āĻ•āĻŋāϛ⧁ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āϚāĻžāύ, āφāĻŽāĻŋ āĻĒā§āϞāĻžāĻ—āχāύāϟāĻŋ āϏāĻ°ā§āĻŦāϜāύ⧀āύāĻ­āĻžāĻŦ⧇ āωāĻĒāϞāĻŦā§āϧ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, āϕ⧇āω āφāϗ⧇ āĻĢāĻŋāĻĢāĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒā§āϞāĻžāĻ—āχāύ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āϛ⧇, āφāĻĒāύāĻŋ āĻāϟāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻ­āĻŋāĻāϏāϏāĻŋāϤ⧇ āϖ⧁āρāĻœā§‡ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āφāϏ⧁āύ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ āϝ⧇āĻ–āĻžāύ⧇ āφāĻŽāϰāĻž āĻŽāĻ§ā§āϝāĻŦāĻ°ā§āϤ⧀ āĻĢāϞāĻžāĻĢāϞāϗ⧁āϞāĻŋ āĻ•āĻŽāĻŋāϟ āĻ•āϰāĻŦāĨ¤

āφāĻŽāĻžāĻĻ⧇āϰ āĻœā§€āĻŦāύ āϏāĻšāϜ āĻ•āϰāϤ⧇, āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āϟ āϚ⧁āĻ•ā§āϤāĻŋ āϞāĻŋāĻ–āĻŦ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻŦāĨ¤ āϤāĻžāϰ āĻĒāϰ⧇āχ āφāĻŽāϰāĻž āĻāϟāĻŋ 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-āĻ skirt code āϝ⧋āĻ— āĻ•āϰāĻž āϝāĻžāĻ•, āϝāĻž āĻ•āĻŽā§āĻĒāĻžāχāϞ āĻ•āϰāĻž āĻĢāĻžāχāϞ⧇āϰ āύāĻ•āϞ āĻ•āϰāĻŦ⧇ 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 āĻāϰ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ•āĻĨāĻž āĻŦāϞāĻŦ āύāĻžāĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽāϟāĻŋ āĻŦāĻĄāĻŧ āĻ•āĻŋāϛ⧁ āĻšāϝāĻŧ⧇ āωāĻ āĻŦ⧇ āĻāĻŦāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰ āĻāϟāĻŋ āĻ…āĻ§ā§āϝāϝāĻŧāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻŽāϝāĻŧ āĻŦā§āϝāϝāĻŧ āĻ•āϰāĻž āωāϚāĻŋāϤ āĻāĻŦāĻ‚ āĻāĻ–āύ āφāĻŽāĻžāĻĻ⧇āϰ āĻĒāĻŖā§āϝāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āϕ⧁āϞ⧁āĻ™ā§āĻ—āĻŋ āĻĒā§‚āϰāĻŖ āĻ•āϰāĻž āωāϚāĻŋāϤāĨ¤

āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ Facebook āĻĨ⧇āϕ⧇ āϞāĻŋāĻŦā§āϰāĻž āϰāϝāĻŧ⧇āϛ⧇, āϝāĻžāϰ āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āĻļā§āϰ⧋āϤāĻž 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

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster