TON-āĻ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻ˛āĻŋāĻāĻ¤ā§ āĻāĻŦāĻ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ āĻ¸ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§?
āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻŽāĻŋ āĻā§āĻāĻžāĻŦā§ āĻĒā§āĻ°āĻĨāĻŽ (āĻĻā§āĻāĻāĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§) āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽ āĻŦā§āĻ˛āĻāĻā§āĻāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻžāĻ¯āĻŧ āĻ āĻāĻļ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ, āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¸ā§āĻāĻžāĻ° āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻŋāĻ¨āĻŋ, āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻŽāĻžāĻ° āĻ āĻāĻŋāĻā§āĻāĻ¤āĻž āĻ°ā§āĻāĻ°ā§āĻĄ āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ āĻ¯āĻžāĻ¤ā§ āĻāĻāĻŋ āĻŦāĻŋāĻ¸ā§āĻŽā§āĻ¤āĻŋāĻ¤ā§ āĻĄā§āĻŦā§ āĻ¨āĻž āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤ āĻā§āĻ
āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻŋ āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤ āĻā§āĻĄ āĻ˛āĻŋāĻāĻ¤ā§ āĻāĻžāĻāĻ¨āĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŋāĻā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻ¤āĻžāĻ¤ā§āĻā§āĻˇāĻŖāĻŋāĻ āĻ˛āĻāĻžāĻ°āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻ˛āĻŋāĻā§āĻāĻŋ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻ āĻ¯āĻž āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§ āĻ¸ā§āĻā§āĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¨āĻž āĻāĻ°ā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ TON āĻĨā§āĻā§ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋāĻ° āĻĄā§āĻāĻž āĻĻā§āĻāĻžāĻ¯āĻŧāĨ¤
āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻ¤āĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻšāĻŦā§ āĻ¯āĻžāĻ°āĻž TON-āĻ āĻ¤āĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻĨāĻžāĻ¯āĻŧ āĻļā§āĻ°ā§ āĻāĻ°āĻŦā§āĻ¨ āĻ¤āĻž āĻāĻžāĻ¨ā§āĻ¨ āĻ¨āĻžāĨ¤
āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ˛āĻāĻžāĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻŽāĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻĨā§āĻā§ āĻļā§āĻ°ā§ āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻĒā§āĻ°āĻāĻžāĻļ, āĻāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨ā§āĻāĻžāĻ°āĻ ā§āĻ¯āĻžāĻā§āĻ āĻāĻŦāĻ āĻĄā§āĻāĻž āĻā§āĻ°āĻšāĻŖ āĻāĻŦāĻ āĻĒā§āĻ°āĻāĻžāĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻ āĻ˛āĻŋāĻāĻ¤ā§ āĻ¯āĻžāĻŦāĨ¤
āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻžāĻ¯āĻŧ āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§
āĻāĻ¤ āĻ
āĻā§āĻā§āĻŦāĻ°ā§, āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽ āĻ¨āĻ¤ā§āĻ¨ āĻāĻžāĻˇāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻŦā§āĻ˛āĻāĻā§āĻāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻžāĻ° āĻā§āĻˇāĻŖāĻž āĻĻāĻŋāĻ¯āĻŧā§āĻā§ Fift
и FunC
. āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻŋāĻ¤ āĻĒāĻžāĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋāĻ° āĻ¯ā§āĻā§āĻ¨ā§ āĻāĻāĻāĻŋ āĻ˛ā§āĻāĻž āĻĨā§āĻā§ āĻŦā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻŋāĻ˛āĨ¤ āĻāĻŽāĻŋ āĻā§āĻŦā§āĻāĻŋāĻ˛āĻžāĻŽ āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻŋāĻā§ āĻāĻ°āĻž, āĻāĻāĻāĻŋ āĻāĻžāĻˇāĻž āĻļāĻŋāĻāĻ¤ā§ āĻāĻŦāĻ āĻāĻŋāĻā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻžāĻ˛ āĻšāĻŦā§, āĻāĻŽāĻ¨āĻāĻŋ āĻ¯āĻĻāĻŋ āĻāĻŽāĻžāĻā§ āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§ āĻ
āĻ¨ā§āĻ¯ āĻāĻŋāĻā§ āĻ˛āĻŋāĻāĻ¤ā§ āĻ¨āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ˛āĻžāĻ¸, āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻ ā§āĻāĻ āĻāĻĒāĻ° āĻšāĻ¯āĻŧ.
āĻāĻāĻž āĻŦāĻ˛āĻžāĻ° āĻ āĻĒā§āĻā§āĻˇāĻž āĻ°āĻžāĻā§ āĻ¨āĻž āĻ¯ā§ āĻāĻŽāĻžāĻ° āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻāĻ¨ā§āĻā§āĻ°āĻžāĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻā§āĻ¨ā§ āĻ āĻāĻŋāĻā§āĻāĻ¤āĻž āĻāĻŋāĻ˛ āĻ¨āĻžāĨ¤
āĻāĻŽāĻŋ āĻā§āĻŦ āĻļā§āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ
āĻāĻļāĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°ā§āĻāĻŋ āĻ¯āĻ¤āĻā§āĻˇāĻŖ āĻ¨āĻž āĻāĻŽāĻŋ āĻĒāĻžāĻ°āĻ¤āĻžāĻŽ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻāĻāĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻž āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻŋ āĻĒā§āĻ°āĻĨāĻŽāĻāĻŋāĻ¤ā§āĻ āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤ āĻāĻŽāĻŋ FunC
āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻāĻŽāĻŋ āĻāĻāĻžāĻā§ āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ
āĻ¸ā§āĻ āĻ¸āĻŽāĻ¯āĻŧā§, āĻāĻŽāĻŋ āĻā§āĻŦā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¯ā§ āĻāĻāĻŋ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ āĻ¨ā§āĻ¤āĻ¤ āĻāĻŋāĻā§ āĻĒā§āĻ°āĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻāĻžāĻ¯āĻŧāĻāĻž āĻ¨āĻŋāĻ¤ā§ āĻ¯āĻĨā§āĻˇā§āĻ āĻāĻŋāĻ˛āĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, 40 āĻāĻ¨ āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖāĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 60 āĻāĻ¨ āĻĒā§āĻ°āĻ¸ā§āĻāĻžāĻ° āĻŦāĻŋāĻāĻ¯āĻŧā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ā§āĻ¨ āĻāĻŦāĻ āĻāĻŽāĻŋ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻŋāĻ˛āĻžāĻŽ āĻ¨āĻžāĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻāĻ¤ā§ āĻā§āĻ¨āĻ āĻā§āĻ˛ āĻ¨ā§āĻ, āĻ¤āĻŦā§ āĻāĻāĻāĻŋ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻāĻŽāĻžāĻā§ āĻŦāĻŋāĻ°āĻā§āĻ¤ āĻāĻ°ā§āĻāĻŋāĻ˛āĨ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻā§āĻˇāĻŖāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŽāĻžāĻ° āĻā§āĻā§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋ, āĻāĻŽāĻŋ āĻā§āĻ¯āĻžāĻā§ āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°ā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¯ā§ āĻāĻāĻŋ āĻāĻŋāĻ˛ āĻ¨āĻž āĻāĻŽāĻ¨ āĻ āĻ¨ā§āĻ¯ āĻā§āĻ āĻāĻā§ āĻāĻŋāĻ¨āĻž, āĻ¸ā§āĻāĻžāĻ¨ā§ āĻā§āĻ āĻ¨ā§āĻāĨ¤
āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻ āĻāĻŽāĻžāĻ° āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋāĻ¤ā§ āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻĻāĻŋāĻ¯āĻŧā§, āĻĻā§āĻ āĻĻāĻŋāĻ¨ āĻĒāĻ°ā§ āĻŦāĻŋāĻāĻžāĻ°āĻāĻ°āĻž āĻāĻāĻāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°ā§āĻā§āĻ¨ āĻāĻŦāĻ āĻāĻŽāĻŋ āĻāĻāĻ¨āĻ āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻāĻŋ āĻ¨āĻž āĻ¯ā§ āĻ¤āĻžāĻ°āĻž āĻŦāĻŋāĻāĻžāĻ°ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻā§āĻ˛āĻŦāĻļāĻ¤ āĻāĻŽāĻžāĻ° āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋāĻāĻŋ āĻŽāĻŋāĻ¸ āĻāĻ°ā§āĻā§ āĻ¨āĻžāĻāĻŋ āĻā§āĻŦāĻ˛ āĻā§āĻŦā§āĻāĻŋāĻ˛ āĻ¯ā§ āĻāĻāĻŋ āĻāĻ¤ āĻāĻžāĻ°āĻžāĻĒ āĻāĻŋāĻ˛ āĻ¯ā§ āĻāĻāĻŋāĻ° āĻā§āĻ¨āĻ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻāĨ¤ āĻāĻŽāĻŋ āĻĒā§āĻˇā§āĻ āĻžāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°ā§āĻāĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻāĻ¤ā§āĻ¤āĻ° āĻĒāĻžāĻāĻ¨āĻŋāĨ¤ āĻ¯āĻĻāĻŋāĻ āĻā§ āĻŦāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻā§ āĻ¤āĻž āĻā§āĻĒāĻ¨ āĻ¨āĻ¯āĻŧ, āĻāĻŽāĻŋ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ˛ā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋāĻā§ āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻāĻ°ā§āĻāĻŋāĨ¤
āĻŦā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¤āĻžāĻ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻ¨āĻ āĻ āĻ¨ā§āĻ āĻ¤āĻĨā§āĻ¯ āĻ¨ā§āĻ, āĻ¤āĻžāĻ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻā§āĻ°āĻšā§ āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻžāĻāĻāĻžāĻ¤ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻŦā§āĨ¤
TON-āĻ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋāĻ° āĻ§āĻžāĻ°āĻŖāĻž
āĻāĻĒāĻ¨āĻŋ āĻāĻŋāĻā§ āĻ˛āĻŋāĻāĻžāĻ° āĻāĻā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ āĻāĻŋāĻ¨āĻŋāĻ¸āĻāĻŋ āĻā§āĻ¨ āĻĻāĻŋāĻ āĻĨā§āĻā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ āĻ¤āĻāĻŦ, āĻāĻāĻ¨ āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻ˛āĻŦ āĻ¯ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋ āĻā§ āĻ āĻāĻļ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ āĻŋāĻ¤āĨ¤ āĻāĻ°āĻ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§, āĻāĻŽāĻĒāĻā§āĻˇā§ āĻā§āĻ¨āĻ āĻ§āĻ°āĻŖā§āĻ° āĻāĻžāĻā§āĻ° āĻā§āĻā§āĻ¤āĻŋ āĻ˛āĻŋāĻāĻ¤ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻā§āĻ¨ āĻ āĻāĻļāĻā§āĻ˛āĻŋ āĻāĻžāĻ¨āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻ˛āĻŋāĻāĻ¤ā§ āĻāĻŦāĻ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻĒāĻ° āĻĢā§āĻāĻžāĻ¸ āĻāĻ°āĻŦ TON Virtual Machine (TVM)
, Fift
и FunC
, āĻ¤āĻžāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ° āĻŽāĻ¤ā§āĨ¤ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽāĻāĻŋ āĻāĻāĻžāĻ¨ā§ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻ¤āĻž āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻŦ āĻ¨āĻžāĨ¤
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§ āĻāĻāĻž āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ TVM
āĻāĻŦāĻ āĻāĻžāĻˇāĻž Fift
āĻāĻžāĻ˛ āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻāĻā§. āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻžāĻ¯āĻŧ āĻ
āĻāĻļāĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻāĻ¨ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻā§āĻā§āĻ¤āĻŋ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŽāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻ¤āĻžāĻ° āĻĻāĻŋāĻā§ āĻĢāĻŋāĻ°ā§ āĻ¯āĻžāĻāĨ¤
āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻžāĻˇāĻž āĻ¯āĻž āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧ FunC
. āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§ āĻāĻāĻŋāĻ° āĻāĻĒāĻ° āĻā§āĻ¨ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻ¨ā§āĻ, āĻ¤āĻžāĻ āĻāĻŋāĻā§ āĻ˛ā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋ āĻĨā§āĻā§ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋāĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻāĻŦāĻ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻžāĻˇāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖāĻā§āĻ˛āĻŋ āĻ
āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻĒāĻ¨āĻŋ āĻŦāĻŋāĻāĻ¤ āĻĻā§āĻāĻŋ āĻĨā§āĻā§ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋāĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻž āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻļā§āĻˇā§ āĻ˛āĻŋāĻā§āĻ.
āĻ§āĻ°āĻž āĻ¯āĻžāĻ āĻāĻŽāĻ°āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻ˛āĻŋāĻā§āĻāĻŋ FunC
, āĻāĻ° āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻā§āĻĄāĻāĻŋ āĻĢāĻŋāĻĢāĻ āĻ
ā§āĻ¯āĻžāĻ¸ā§āĻŽā§āĻŦāĻ˛āĻžāĻ°ā§ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻŋāĨ¤
āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻž āĻŦāĻžāĻāĻŋ āĻāĻā§āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻŦā§ Fift
, āĻ¯āĻž āĻāĻ¨āĻĒā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻā§āĻĄ āĻāĻŦāĻ āĻāĻŋāĻā§ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻŦā§ āĻāĻŦāĻ āĻāĻāĻāĻĒā§āĻāĻāĻŋ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻ¸āĻš āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻšāĻŦā§ .boc
(āĻ¯āĻžāĻ° āĻ
āĻ°ā§āĻĨ "āĻā§āĻˇā§āĻ° āĻŦā§āĻ¯āĻžāĻ"), āĻāĻŦāĻ, āĻāĻŽāĻ°āĻž āĻā§āĻāĻžāĻŦā§ āĻāĻāĻŋ āĻ˛āĻŋāĻāĻŋ āĻ¤āĻžāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§, āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻā§ āĻāĻŦāĻ āĻ āĻŋāĻāĻžāĻ¨āĻž, āĻ¯āĻž āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻā§āĻĄā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋāĻ° āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻā§āĻ°āĻžāĻŽ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯āĻž āĻāĻāĻ¨āĻ āĻĒā§āĻ°āĻāĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧāĻ¨āĻŋāĨ¤
TON āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻ¤ā§ .boc
āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻāĻāĻāĻŋ āĻšāĻžāĻ˛āĻāĻž āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŦā§āĻ˛āĻāĻā§āĻāĻ¨ā§ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻšāĻŦā§ (āĻ¨ā§āĻā§ āĻāĻ°āĻ āĻŦā§āĻļāĻŋ)āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻžāĻ° āĻāĻā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻā§āĻ¨āĻžāĻ°ā§āĻ āĻāĻ°āĻž āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻā§āĻ°āĻžāĻŽ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ
āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻž āĻšāĻŦā§ āĻ¨āĻžāĨ¤ āĻĒā§āĻ°āĻāĻžāĻļā§āĻ° āĻĒāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻŋāĻā§ āĻŦāĻžāĻāĻ°ā§ āĻĨā§āĻā§ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻšāĻžāĻ˛āĻāĻž āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§) āĻŦāĻž āĻāĻŋāĻ¤āĻ° āĻĨā§āĻā§ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻŋāĻ¯āĻŧā§ āĻāĻ¨ā§āĻāĻžāĻ°āĻ
ā§āĻ¯āĻžāĻā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ TON-āĻāĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻāĻ°ā§āĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¯āĻŧ)āĨ¤
āĻāĻāĻŦāĻžāĻ° āĻāĻŽāĻ°āĻž āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§ āĻā§āĻĄāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻāĻāĻŋ āĻ¸āĻšāĻ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŽāĻ°āĻž āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻāĻžāĻ¨āĻŋ āĻāĻŽāĻ°āĻž āĻāĻŋ āĻ˛āĻŋāĻāĻ¤ā§ āĻāĻžāĻ āĻāĻŦāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻžāĻ āĻāĻ°āĻŦā§āĨ¤ āĻāĻŦāĻ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋāĻ¤ā§ āĻā§āĻāĻžāĻŦā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¤āĻž āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻŋ, āĻŦāĻž āĻāĻŽāĻ°āĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻā§āĻĄāĻāĻŋ āĻĻā§āĻāĻŋ Fift
и FunC
āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋāĻ¤ā§, āĻ
āĻĨāĻŦāĻž āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻĻā§āĻā§āĻ¨āĨ¤
āĻā§āĻŦ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ āĻāĻŽāĻŋ āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽ āĻā§āĻ¯āĻžāĻā§ āĻā§āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄāĻā§āĻ˛āĻŋ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻŋ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻžāĻ¯āĻŧ āĻ āĻāĻļāĻā§āĻ°āĻšāĻŖāĻāĻžāĻ°ā§ āĻāĻŦāĻ āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽ āĻāĻ°ā§āĻŽāĻāĻžāĻ°ā§āĻ°āĻž āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻŽāĻ¨ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¯ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻž āĻāĻ˛āĻžāĻāĻžāĻ˛ā§āĻ¨ āĻ¸āĻŦāĻžāĻ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻĄāĻŧā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻĢāĻŋāĻĢā§āĻ āĻāĻŦāĻ āĻĢāĻžāĻ¨āĻ¸āĻŋ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻļā§āĻ°ā§ āĻāĻ°ā§āĻāĻŋāĻ˛āĨ¤ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻļā§āĻˇā§ āĻ˛āĻŋāĻā§āĻ.
āĻ¤āĻ¤ā§āĻ¤ā§āĻŦ āĻĨā§āĻā§ āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨ā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ¸ā§āĻā§āĨ¤
TON āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻāĻŽāĻŋ āĻŽā§āĻ¯āĻžāĻāĻāĻāĻ¸-āĻāĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻŋāĻā§ āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻĄāĻāĻžāĻ°ā§ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻāĻŦā§āĻ¨ā§āĻā§ 18.04 āĻāĻ˛āĻāĻŋāĻāĻ¸-āĻ āĻĻā§āĻŦāĻžāĻ° āĻā§āĻ āĻāĻ°ā§āĻāĻŋāĨ¤
āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¯āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻž āĻšāĻ˛ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻŦāĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨ lite-client
āĻ¯āĻž āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻĒāĻ¨āĻŋ TON āĻ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻĒāĻžāĻ āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻā§āĻ° āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§ āĻŦā§āĻļ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻāĻžāĻŦā§ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ°āĻāĻžāĻŦā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻŋāĻā§ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻŦāĻžāĻĻ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§ āĻ
āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°āĻŋ, āĻĒāĻĨ āĻŦāĻ°āĻžāĻŦāĻ° āĻ
āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĨ¤ āĻāĻŽāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¨āĻŋāĻā§āĻ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻŋāĻ¨āĻŋ āĻāĻŦāĻ āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻāĻŦā§āĻ¨ā§āĻā§ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻĨā§āĻā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻŋāĻ¨āĻŋ (āĻŽā§āĻ¯āĻžāĻāĻāĻāĻ¸-āĻ āĻāĻŽāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻāĻŋ brew
).
apt -y install git
apt -y install wget
apt -y install cmake
apt -y install g++
apt -y install zlib1g-dev
apt -y install libssl-dev
āĻāĻāĻŦāĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻšāĻ¯āĻŧā§ āĻā§āĻ˛ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ lite-client
, Fift
, FunC
.
āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻŽāĻ°āĻž āĻ¤āĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻ¸āĻš TON āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻā§āĻ˛ā§āĻ¨ āĻāĻ°āĻŋāĨ¤ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻ°āĻŦ ~/TON
.
cd ~/TON
git clone https://github.com/ton-blockchain/ton.git
cd ./ton
git submodule update --init --recursive
āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§ Fift
и FunC
.
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĨ¤ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻā§āĻĄ āĻāĻāĻāĻŋ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ°ā§ āĻā§āĻ˛ā§āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ ~/TON/ton
āĨ¤ āĻĻā§āĻ¯ ~/TON
āĻāĻāĻāĻŋ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨ build
āĻāĻŦāĻ āĻāĻāĻŋāĻ¤ā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°ā§āĻ¨āĨ¤
mkdir ~/TON/build
cd ~/TON/build
cmake ../ton
āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻ˛āĻŋāĻāĻ¤ā§ āĻ¯āĻžāĻā§āĻāĻŋ, āĻ¤āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŦāĻ˛ āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻ lite-client
āĻāĻŋāĻ¨ā§āĻ¤ā§ Fift
Ņ FunC
, āĻ¤āĻžāĻ āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻ¯āĻžāĻ. āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¨āĻ¯āĻŧ, āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻ
āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻāĻŋāĨ¤
cmake --build . --target lite-client
cmake --build . --target fift
cmake --build . --target func
āĻāĻ° āĻĒāĻ°ā§, āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°ā§āĻ¨ āĻ¯āĻžāĻ¤ā§ āĻ¨ā§āĻĄ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĄā§āĻāĻž āĻ°āĻ¯āĻŧā§āĻā§ lite-client
āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻŦā§āĨ¤
wget https://test.ton.org/ton-lite-client-test1.config.json
TON āĻā§ āĻĒā§āĻ°āĻĨāĻŽ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻāĻāĻ¨ āĻ˛āĻā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ lite-client
.
cd ~/TON/build
./lite-client/lite-client -C ton-lite-client-test1.config.json
āĻ¯āĻĻāĻŋ āĻŦāĻŋāĻ˛ā§āĻĄāĻāĻŋ āĻ¸āĻĢāĻ˛ āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§ āĻ˛āĻā§āĻā§āĻ° āĻĒāĻ°ā§ āĻāĻĒāĻ¨āĻŋ āĻ¨ā§āĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻšāĻžāĻ˛āĻāĻž āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻāĻāĻāĻŋ āĻ˛āĻ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦā§āĻ¨āĨ¤
[ 1][t 2][1582054822.963129282][lite-client.h:201][!testnode] conn ready
[ 2][t 2][1582054823.085654020][lite-client.cpp:277][!testnode] server version is 1.1, capabilities 7
[ 3][t 2][1582054823.085725069][lite-client.cpp:286][!testnode] server time is 1582054823 (delta 0)
...
āĻāĻĒāĻ¨āĻŋ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ help
āĻāĻŦāĻ āĻĻā§āĻā§āĻ¨ āĻāĻŋ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
help
āĻāĻ¸ā§āĻ¨ āĻāĻŽāĻ°āĻž āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻ¯ā§ āĻāĻŽāĻžāĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ āĻ¸ā§āĻā§āĻ˛āĻŋāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻ°āĻŋāĨ¤
list of available commands:
last Get last block and state info from server
sendfile <filename> Load a serialized message from <filename> and send it to server
getaccount <addr> [<block-id-ext>] Loads the most recent state of specified account; <addr> is in [<workchain>:]<hex-or-base64-addr> format
runmethod <addr> [<block-id-ext>] <method-id> <params>... Runs GET method <method-id> of account <addr> with specified parameters
last ĐŋĐžĐģŅŅĐ°ĐĩŅ ĐŋĐžŅĐģĐĩĐ´ĐŊиК ŅОСдаĐŊĐŊŅĐš ĐąĐģĐžĐē Ņ ŅĐĩŅвĐĩŅĐ°.
sendfile <filename> ĐžŅĐŋŅавĐģŅĐĩŅ в TON ŅĐ°ĐšĐģ Ņ ŅООйŅĐĩĐŊиĐĩĐŧ, иĐŧĐĩĐŊĐŊĐž Ņ ĐŋĐžĐŧĐžŅŅŅ ŅŅОК ĐēĐžĐŧĐ°ĐŊĐ´Ņ ĐŋŅĐąĐģиĐēŅĐĩŅŅŅ ŅĐŧĐ°ŅŅ-ĐēĐžĐŊŅŅĐ°ĐēŅ и СаĐŋŅŅĐžŅŅ Đē ĐŊĐĩĐŧŅ.
getaccount <addr> СаĐŗŅŅĐļĐ°ĐĩŅ ŅĐĩĐēŅŅĐĩĐĩ ŅĐžŅŅĐžŅĐŊиĐĩ ŅĐŧĐ°ŅŅ-ĐēĐžĐŊŅŅĐ°ĐēŅĐ° Ņ ŅĐēаСаĐŊĐŊŅĐŧ Đ°Đ´ŅĐĩŅĐžĐŧ.
runmethod <addr> [<block-id-ext>] <method-id> <params> СаĐŋŅŅĐēĐ°ĐĩŅ get-ĐŧĐĩŅОдŅ ŅĐŧĐ°ŅŅĐēĐžĐŊŅŅĐ°ĐēŅĐ°.
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĨ¤
āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨
āĻ§āĻžāĻ°āĻŖāĻž
āĻāĻŽāĻŋ āĻāĻĒāĻ°ā§ āĻ¯ā§āĻŽāĻ¨ āĻ˛āĻŋāĻā§āĻāĻŋ, āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻ˛āĻŋāĻāĻāĻŋ āĻ¤āĻž āĻāĻāĻāĻŋ āĻ˛āĻāĻžāĻ°āĻŋāĨ¤
āĻ¤āĻĻā§āĻĒāĻ°āĻŋ, āĻāĻāĻŋ āĻā§āĻ¨āĻ āĻ˛āĻāĻžāĻ°āĻŋ āĻ¨āĻ¯āĻŧ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻŋāĻāĻŋāĻ āĻāĻŋāĻ¨āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻ āĻāĻ¨ā§āĻāĻž, āĻĻāĻŋāĻ¨ āĻŦāĻž āĻŽāĻžāĻ¸ āĻ
āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ¤āĻŦā§ āĻāĻāĻāĻŋ āĻ¤āĻžāĻ¤ā§āĻā§āĻˇāĻŖāĻŋāĻ āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻā§āĻā§āĻ¤āĻŋāĻ° āĻ āĻŋāĻāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°ā§ N
āĻā§āĻ°āĻžāĻŽ, āĻāĻŦāĻ āĻ
āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻāĻāĻŋ āĻĢāĻŋāĻ°ā§ āĻĒāĻžāĻ¯āĻŧ 2 * N
āĻā§āĻ°āĻžāĻŽ āĻŦāĻž āĻšāĻžāĻ°āĻžāĻ¯āĻŧāĨ¤ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻžāĻ¯āĻŧ 40% āĻā§āĻ¤āĻžāĻ° āĻ¸āĻŽā§āĻāĻžāĻŦāĻ¨āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦāĨ¤ āĻ¯āĻĻāĻŋ āĻĒā§āĻŽā§āĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻā§āĻ°āĻžāĻŽ āĻ¨āĻž āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻ˛ā§āĻ¨āĻĻā§āĻ¨āĻāĻŋāĻā§ āĻāĻĒ-āĻāĻĒ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻŦāĨ¤
āĻ¤āĻžāĻāĻžāĻĄāĻŧāĻž, āĻāĻāĻž āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻ¯ā§ āĻŦāĻžāĻāĻŋ āĻ°āĻŋāĻ¯āĻŧā§āĻ˛ āĻāĻžāĻāĻŽā§ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻāĻžāĻ°ā§ āĻĻā§āĻāĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻžāĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯ā§ āĻ¸ā§ āĻāĻŋāĻ¤ā§āĻā§ āĻ¨āĻžāĻāĻŋ āĻšā§āĻ°ā§āĻā§āĨ¤ āĻ āĻ¤āĻāĻŦ, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻž āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ TON āĻĨā§āĻā§ āĻŦāĻžāĻāĻŋ āĻāĻŦāĻ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĻā§āĻāĻžāĻŦā§āĨ¤
āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻ˛ā§āĻāĻž
āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻŋ FunC-āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻĄāĻāĻŋ āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°ā§āĻāĻŋ; āĻĒā§āĻ˛āĻžāĻāĻāĻ¨āĻāĻŋ āĻāĻŋāĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛ āĻ¸ā§āĻā§āĻĄāĻŋāĻ āĻā§āĻĄ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻāĻŦāĻ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§; āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻšāĻ āĻžā§ āĻāĻŋāĻā§ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨, āĻāĻŽāĻŋ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨āĻāĻŋ āĻ¸āĻ°ā§āĻŦāĻāĻ¨ā§āĻ¨āĻāĻžāĻŦā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻā§āĻ āĻāĻā§ āĻĢāĻŋāĻĢāĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻ˛āĻžāĻāĻāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻā§, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻŋāĻāĻ¸āĻ¸āĻŋāĻ¤ā§ āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻ¸ā§āĻ¨ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻā§āĻ˛āĻŋ āĻāĻŽāĻŋāĻ āĻāĻ°āĻŦāĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŦāĻ¨ āĻ¸āĻšāĻ āĻāĻ°āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻ˛āĻŋāĻāĻŦ āĻāĻŦāĻ āĻāĻāĻŋ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻŦāĨ¤ āĻ¤āĻžāĻ° āĻĒāĻ°ā§āĻ āĻāĻŽāĻ°āĻž āĻāĻāĻŋ 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));
}
āĻ¯ā§ āĻ¸āĻŦāĨ¤
āĻāĻāĻ¨ āĻ¯āĻž āĻŦāĻžāĻāĻŋ āĻāĻā§ āĻ¤āĻž āĻ¸āĻšāĻ, āĻāĻ¸ā§āĻ¨ āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻžāĻĒā§āĻ¤-āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻ¯āĻžāĻ¤ā§ āĻāĻŽāĻ°āĻž āĻŦāĻžāĻāĻ°ā§āĻ° āĻŦāĻŋāĻļā§āĻŦ āĻĨā§āĻā§ āĻā§āĻā§āĻ¤āĻŋāĻ° āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ (āĻāĻ¸āĻ˛ā§, āĻ¤āĻžāĻĻā§āĻ° āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ°ā§āĻ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻĒāĻĄāĻŧā§āĻ¨)āĨ¤
āĻāĻŽāĻŋ āĻ¸ā§āĻ āĻā§āĻĄāĻāĻŋ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻā§āĻ˛ā§ āĻā§āĻāĻŋ āĻ¯āĻž āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°āĻĨāĻŽ āĻ
āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻŦā§āĨ¤
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĒāĻĻāĻā§āĻˇā§āĻĒ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻž āĻšāĻ¯āĻŧ. āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ 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 āĻā§āĻ˛āĻžāĻāĻĄā§ āĻĒā§āĻ°āĻāĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§ā§ˇ
āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻā§
āĻāĻāĻ¨ āĻāĻ° āĻĨā§āĻā§ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ°āĻžāĻŽ āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻž āĻ¯āĻžāĻ
āĻāĻ¤ā§āĻ¤āĻ°āĻāĻžāĻˇ
āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻŽāĻžāĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻžāĻ° āĻā§āĻ¯āĻŧā§ āĻ āĻ¨ā§āĻ āĻŦā§āĻļāĻŋ āĻĻā§āĻ°ā§āĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻšāĻ¯āĻŧāĻ¤ā§ āĻāĻāĻŋ āĻā§āĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°āĻ¤, āĻ āĻĨāĻŦāĻž āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŽāĻ¨ āĻāĻāĻāĻ¨ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ¯āĻŋāĻ¨āĻŋ TON āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻŋāĻā§āĻ āĻāĻžāĻ¨ā§āĻ¨ āĻ¨āĻž āĻāĻŦāĻ āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻ¸āĻš āĻāĻāĻāĻŋ āĻ āĻ¤-āĻ¸āĻ°āĻ˛ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻ˛āĻŋāĻāĻ¤ā§ āĻāĻŦāĻ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨āĨ¤ āĻāĻāĻž āĻšāĻ¯āĻŧāĻ¤ā§ āĻāĻŋāĻā§ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻāĻ°āĻ āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻāĻ°āĻž āĻ¯ā§āĻ¤āĨ¤
āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻāĻŋāĻā§ āĻĻāĻŋāĻ āĻāĻ°āĻ āĻĻāĻā§āĻˇāĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻŦāĻ āĻŽāĻžāĻ°ā§āĻāĻŋāĻ¤āĻāĻžāĻŦā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤, āĻ¤āĻŦā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻ°āĻ āĻŦā§āĻļāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻāĻ¤āĨ¤ āĻāĻāĻžāĻ āĻ¸āĻŽā§āĻāĻŦ āĻ¯ā§ āĻāĻŽāĻŋ āĻā§āĻĨāĻžāĻ āĻā§āĻ˛ āĻāĻ°ā§āĻāĻŋ āĻŦāĻž āĻāĻŋāĻā§ āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĻ¨āĻŋ, āĻ¤āĻžāĻ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻā§āĻ°ā§āĻ¤āĻ° āĻāĻŋāĻā§ āĻāĻ°āĻā§āĻ¨ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻ āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻŦāĻž TON āĻā§āĻĄ āĻ¸āĻš āĻ āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ°āĻŋāĻĒā§āĻāĻŋāĻāĻ°āĻŋāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻāĻŋ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¯ā§ āĻ¯ā§āĻšā§āĻ¤ā§ TON āĻ¨āĻŋāĻā§āĻ āĻāĻāĻ¨āĻ āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻ°āĻ¯āĻŧā§āĻā§, āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻž āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻ¯ā§ āĻā§āĻ¨āĻ āĻĒāĻĻāĻā§āĻˇā§āĻĒāĻā§ āĻā§āĻā§ āĻĢā§āĻ˛āĻŦā§ (āĻ¯āĻž āĻāĻŽāĻŋ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻā§āĻāĻŋāĻ˛, āĻāĻāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§), āĻ¤āĻŦā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻšāĻ˛ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻ¸āĻŽā§āĻāĻžāĻŦāĻ¨āĻž āĻ¨ā§āĻāĨ¤
āĻāĻŽāĻŋ TON āĻāĻ° āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦ āĻ¨āĻžāĨ¤ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽāĻāĻŋ āĻŦāĻĄāĻŧ āĻāĻŋāĻā§ āĻšāĻ¯āĻŧā§ āĻāĻ āĻŦā§ āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻŋ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻāĻŦāĻ āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻŖā§āĻ¯āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻā§āĻ˛ā§āĻā§āĻāĻŋ āĻĒā§āĻ°āĻŖ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤
āĻāĻāĻžāĻĄāĻŧāĻžāĻ Facebook āĻĨā§āĻā§ āĻ˛āĻŋāĻŦā§āĻ°āĻž āĻ°āĻ¯āĻŧā§āĻā§, āĻ¯āĻžāĻ° āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻļā§āĻ°ā§āĻ¤āĻž TON-āĻāĻ° āĻĨā§āĻā§āĻ āĻŦāĻĄāĻŧāĨ¤ āĻāĻŽāĻŋ āĻ˛āĻŋāĻŦā§āĻ°āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻāĻŋāĻā§āĻ āĻāĻžāĻ¨āĻŋ āĻ¨āĻž, āĻĢā§āĻ°āĻžāĻŽā§āĻ° āĻŦāĻŋāĻāĻžāĻ°ā§ TON āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧā§āĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ āĻ¨ā§āĻ āĻŦā§āĻļāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ˛āĻžāĻĒ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻ¯āĻĻāĻŋāĻ TON-āĻāĻ° āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻāĻŦāĻ āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧāĻā§āĻ˛āĻŋ āĻāĻ°āĻ āĻŦā§āĻļāĻŋ āĻā§āĻāĻ°ā§āĻāĻ¸ā§āĻĨ, āĻ¯āĻž āĻļā§āĻ¤āĻ˛āĨ¤
āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸
- āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ TON āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨:
https://test.ton.org - āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ TON āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛:
https://github.com/ton-blockchain/ton - āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻāĻ¯āĻŧāĻžāĻ˛ā§āĻ:
https://wallet.ton.org - āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻĨā§āĻā§ āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛:
https://github.com/raiym/astonished - āĻ¸ā§āĻŽāĻžāĻ°ā§āĻ āĻā§āĻā§āĻ¤āĻŋāĻ° āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻā§āĻ° āĻ˛āĻŋāĻā§āĻ:
https://ton-lottery.appspot.com - FunC āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋāĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛ āĻ¸ā§āĻā§āĻĄāĻŋāĻ āĻā§āĻĄā§āĻ° āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛:
https://github.com/raiym/func-visual-studio-plugin - āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻŽā§ TON āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻā§āĻ¯āĻžāĻ āĻāĻ°ā§āĻ¨, āĻ¯āĻž āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻāĻŋ āĻŦā§āĻ° āĻāĻ°āĻ¤ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°ā§āĻā§āĨ¤ āĻāĻŽāĻŋ āĻŽāĻ¨ā§ āĻāĻ°āĻŋ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻ˛ āĻšāĻŦā§ āĻ¨āĻž āĻ¯āĻĻāĻŋ āĻāĻŽāĻŋ āĻŦāĻ˛āĻŋ āĻ¯ā§ āĻ¯āĻžāĻ°āĻž TON āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋāĻā§ āĻ˛āĻŋāĻā§āĻā§ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¸āĻŦāĻžāĻ āĻāĻā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻā§āĻ¸ā§āĻ āĻā§āĻ°āĻžāĻŽāĻ āĻāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
https://t.me/tondev_ru - TON āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻ°ā§āĻāĻāĻŋ āĻā§āĻ¯āĻžāĻ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻŋ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ¯āĻŧā§āĻāĻŋ:
https://t.me/TONgramDev - āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧ:
https://contest.com/blockchain - āĻĒā§āĻ°āĻ¤āĻŋāĻ¯ā§āĻāĻŋāĻ¤āĻžāĻ° āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧ:
https://contest.com/blockchain-2
āĻāĻ¤ā§āĻ¸: www.habr.com