ื•ื•ืขื’ืŸ ื•ื•ื™ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืื•ืŸ ืึทืจื•ื™ืกื’ืขื‘ืŸ ืึท ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื™ืŸ ื“ื™ Telegram Open Network (TON)

ื•ื•ืขื’ืŸ ื•ื•ื™ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืื•ืŸ ืึทืจื•ื™ืกื’ืขื‘ืŸ ืึท ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื™ืŸ TON

ื•ื•ืขื’ืŸ ื•ื•ืึธืก ืื™ื– ื“ืขืจ ืึทืจื˜ื™ืงืœ?

ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืื™ืš ื•ื•ืขืœ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื•ื•ื™ ืื™ืš ื’ืขื ื•ืžืขืŸ ืึธื ื˜ื™ื™ืœ ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ (ืคื•ืŸ ืฆื•ื•ื™ื™) ื˜ืขืœืขื’ืจืึทื ื‘ืœืึทืงื›ื™ื™ื•ื•ืึทืŸ ืคืึทืจืžืขืกื˜, ื”ืื˜ ื ื™ืฉื˜ ื ืขืžืขืŸ ืึท ืคืจื™ื™ื–, ืื•ืŸ ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืจืขืงืึธืจื“ื™ืจืŸ ืžื™ื™ืŸ ื“ืขืจืคืึทืจื•ื ื’ ืื™ืŸ ืึทืŸ ืึทืจื˜ื™ืงืœ ืึทื–ื•ื™ ืึทื– ืขืก ื–ืึธืœ ื ื™ืฉื˜ ื–ื™ื ืงืขืŸ ืื™ืŸ ืึทื‘ืœื™ื•ื•ื™ืึทืŸ ืื•ืŸ, ื˜ืึธืžืขืจ, ื”ืขืœืคืŸ ืขืžืขืฆืขืจ.

ื–ื™ื ื˜ ืื™ืš ื”ืื˜ ื ื™ืฉื˜ ื•ื•ืขืœืŸ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืึทื‘ืกื˜ืจืึทืงื˜ ืงืึธื“, ืึธื‘ืขืจ ืฆื• ื˜ืึธืŸ ืขืคึผืขืก ืืจื‘ืขื˜ืŸ, ืคึฟืึทืจ ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ืš ื’ืขืฉืจื™ื‘ืŸ ืึท ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืคึฟืึทืจ ืึท ืจืขื’ืข ืœืึธื˜ืขืจื™ืข ืื•ืŸ ืึท ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ื•ื•ืึธืก ื•ื•ื™ื™ึทื–ืŸ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ื“ืึทื˜ืŸ ื’ืœื™ื™ึทืš ืคื•ืŸ TON ืึธืŸ ื ื™ืฆืŸ ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ืกื˜ืึธืจื™ื“ื–ืฉ.

ื“ืขืจ ืึทืจื˜ื™ืงืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื ื•ืฆื™ืง ืคึฟืึทืจ ื“ื™ ื•ื•ืืก ื•ื•ื™ืœืŸ ืฆื• ืžืึทื›ืŸ ื–ื™ื™ืขืจ ืขืจืฉื˜ืขืจ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื™ืŸ TON, ืึธื‘ืขืจ ื˜ืึธืŸ ื ื™ื˜ ื•ื•ื™ืกืŸ ื•ื•ื• ืฆื• ืึธื ื”ื™ื™ื‘ืŸ.

ื ื™ืฆืŸ ื“ื™ ืœืึธื˜ืขืจื™ืข ื•ื•ื™ ืึท ื‘ื™ื™ืฉืคึผื™ืœ, ืื™ืš ื•ื•ืขืœ ื’ื™ื™ืŸ ืคื•ืŸ ื™ื ืกื˜ืึธืœื™ื ื’ ื“ื™ ืกื•ื•ื™ื•ื•ืข ืฆื• ืึทืจื•ื™ืกื’ืขื‘ืŸ ืึท ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜, ื™ื ื˜ืขืจืึทืงื˜ื™ื ื’ ืžื™ื˜ ืื™ื, ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ืึท ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ืคึฟืึทืจ ื‘ืึทืงื•ืžืขืŸ ืื•ืŸ ืืจื•ื™ืกื’ืขื‘ืŸ ื“ืึทื˜ืŸ.

ื•ื•ืขื’ืŸ ืึธื ื˜ื™ื™ืœ ืื™ืŸ ื“ื™ ืคืึทืจืžืขืกื˜

ืœืขืฆื˜ืข ืืงื˜ืื‘ืขืจ, ื˜ืขืœืขื’ืจืึทื ืžื•ื“ื™ืข ืึท ื‘ืœืึธืงื˜ืฉื™ื™ืŸ ืคืึทืจืžืขืกื˜ ืžื™ื˜ ื ื™ื™ึทืข ืฉืคึผืจืึทื›ืŸ Fift ะธ FunC. ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ืงืœื™ื™ึทื‘ืŸ ืคื•ืŸ ืฉืจื™ื™ื‘ืŸ ืงื™ื™ืŸ ืคื•ืŸ ื“ื™ ืคื™ื ืฃ ืคืืจื’ืขืœื™ื™ื’ื˜ ืงืœื•ื’ ืงืึทื ื˜ืจืึทืงืฅ. ืื™ืš ื”ืึธื‘ ื’ืขืžืฒื ื˜, ืึทื– ืก'ืฐืขื˜ ื–ืฒึทืŸ ืคึฟืฒึทืŸ ืฆื• ื˜ืึธืŸ ืขืคึผืขืก ืึทื ื“ืขืจืฉ, ืืฑืกืœืขืจื ืขืŸ ืึท ืฉืคึผืจืึทืš ืื•ืŸ ืขืคึผืขืก ืžืึทื›ืŸ, ืืฑื‘ ืื™ืš ื“ืึทืจืฃ ืื™ืŸ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜ ื’ืึธืจื ื™ืฉื˜ ืฉืจืฒึทื‘ืŸ. ืคึผืœื•ืก, ื“ื™ ื˜ืขืžืข ืื™ื– ืงืขืกื™ื™ื“ืขืจ ืื•ื™ืฃ ื“ื™ ืœื™ืคืŸ.

ืขืก ืื™ื– ื•ื•ืขืจื˜ ื’ืขื–ืื’ื˜ ืึทื– ืื™ืš ื”ืื˜ ืงื™ื™ืŸ ื“ืขืจืคืึทืจื•ื ื’ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืงืœื•ื’ ืงืึทื ื˜ืจืึทืงืฅ.

ืื™ืš ื”ืื‘ ื’ืขืคืœืื ื˜ ืื ื˜ื™ื™ืœื ืขืžืขืŸ ื‘ื™ื–ืŸ ืกื•ืฃ ื‘ื™ื– ืื™ืš ืงืขืŸ ืื•ืŸ ื“ืขืจื ืืš ืฉืจื™ื™ื‘ืŸ ื ืจืขืฆืขื ื–ื™ืข ืืจื˜ื™ืงืœ, ืื‘ืขืจ ืื™ืš ื”ืื‘ ื’ืœื™ื™ืš ื“ื•ืจื›ื’ืขืคืืœืŸ ื‘ื™ื™ื ืขืจืฉื˜ืŸ. ืื™ืš ื’ืขืฉืจื™ื‘ืŸ ืึท ื‘ื™ื™ึทื˜ืœ ืžื™ื˜ ืžืึทืœื˜ื™-ื—ืชื™ืžื” ืื•ื™ืฃ FunC ืื•ืŸ ืขืก ื‘ื›ืœืœ ื’ืขืืจื‘ืขื˜. ืื™ืš ื’ืขื ื•ืžืขืŸ ืขืก ื•ื•ื™ ืึท ื™ืงืขืจ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื•ื™ืฃ ืกืึธืœื™ื“ื™ื˜ื™.

ืื™ืš ื”ืื‘ ื“ืขืžืืœื˜ ื’ืขื˜ืจืื›ื˜ ืื– ื“ืืก ืื™ื– ืื•ื•ื“ืื™ ื’ืขื ื•ื’ ืฆื• ื ืขืžืขืŸ ืืžื•ื•ื™ื™ื ื™ื’ืกื˜ื ืก ื ืคืจื™ื™ื– ืคืœืืฅ. ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ื•ื•ืขื’ืŸ 40 ืคื•ืŸ 60 ืคึผืึทืจื˜ื™ืกืึทืคึผืึทื ืฅ ื’ืขื•ื•ืืจืŸ ืคึผืจื™ื™ื–-ื•ื•ื™ื ืขืจื– ืื•ืŸ ืื™ืš ื‘ื™ืŸ ื ื™ืฉื˜ ืฆื•ื•ื™ืฉืŸ ื–ื™ื™. ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืขืก ืื™ื– ื’ืึธืจื ื™ืฉื˜ ืคืึทืœืฉ ืžื™ื˜ ื“ืขื, ืึธื‘ืขืจ ืื™ื™ืŸ ื–ืึทืš ื‘ืึทื“ืขืจื“ ืžื™ืจ. ืื™ืŸ ื“ืขืจ ืฆื™ื™ื˜ ืคื•ืŸ ื“ื™ ืžืขืœื“ืŸ ืคื•ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ, ื“ื™ ืึธืคึผืฉืึทืฆื•ื ื’ ืคื•ืŸ ื“ื™ ืคึผืจืึธื‘ืข ืคึฟืึทืจ ืžื™ื™ืŸ ืงืึธื ื˜ืจืึทืงื˜ ืื™ื– ื ื™ืฉื˜ ื“ื•ืจื›ื’ืขืงืึธื›ื˜, ืื™ืš ื’ืขืคืจืขื’ื˜ ื“ื™ ืคึผืึทืจื˜ื™ืกืึทืคึผืึทื ืฅ ืื™ืŸ ื“ื™ ืฉืžื•ืขืกืŸ ืื•ื™ื‘ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื•ื•ืขืจ ืขืก ื™ื– ืึทื ื“ืขืจืฉ ื•ื•ืึธืก ื”ืื˜ ื ื™ืฉื˜ ื”ืึธื‘ืŸ ืขืก, ืขืก ื–ืขื ืขืŸ ื’ืึธืจื ื™ื˜.

ืœื›ืื•ืจื” ืื•ื™ืคืžืขืจืงื–ืื ืฆื• ืžื™ื™ื ืข ืžืขืกืขื“ื–ืฉืขืก, ืฆื•ื•ื™ื™ ื˜ืขื’ ืฉืคืขื˜ืขืจ ื”ืื‘ืŸ ื“ื™ ืจื™ื›ื˜ืขืจ ืคืืจืขืคื ื˜ืœืขื›ื˜ ื ืชื’ื•ื‘ื” ืื•ืŸ ืื™ืš ืคืืจืฉื˜ื™ื™ ื ืืš ื ื™ืฉื˜ ืฆื™ ื–ื™ื™ ื”ืื‘ืŸ ื‘ื˜ืขื•ืช ืคืืจืคืขืœื˜ ืžื™ื™ืŸ ืกืžืืจื˜ ืงืื ื˜ืจืืงื˜ ื‘ื™ื™ ื“ื™ ืฉื™ืคื•ื˜ ืื“ืขืจ ืกืชื ื’ืขืžื™ื™ื ื˜ ืื– ืขืก ืื™ื– ืื–ื•ื™ ืฉืœืขื›ื˜ ืื– ืขืก ื“ืืจืฃ ื ื™ืฉื˜ ืงื™ื™ืŸ ืงืืžืขื ื˜. ืื™ืš ื”ืื‘ ื’ืขืคืจืขื’ื˜ ื ืฉืืœื” ืื•ื™ืคืŸ ื‘ืœืื˜, ืื‘ืขืจ ื ื™ืฉื˜ ื‘ืืงื•ืžืขืŸ ืงื™ื™ืŸ ืขื ื˜ืคืขืจ. ื›ืึธื˜ืฉ ืขืก ืื™ื– ืงื™ื™ืŸ ืกื•ื“ ื•ื•ืขืจ ื’ืขืžืฉืคื˜, ืื™ืš ื’ืขื”ืืœื˜ืŸ ืขืก ื•ืžื ื™ื™ื˜ื™ืง ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืคึผืขืจื–ืขื ืœืขืš ืึทืจื˜ื™ืงืœืขืŸ.

ืืกืืš ืฆื™ื™ื˜ ืื™ื– ืคืืจื‘ืจืื›ื˜ ื’ืขื•ื•ืืจืŸ ืื•ื™ืฃ ืคืืจืฉื˜ืื ื“, ื”ืื˜ ืžืขืŸ ื‘ืืฉืœืืกืŸ ืฆื• ืฉืจื™ื™ื‘ืŸ ืืŸ ืืจื˜ื™ืงืœ. ื–ื™ื ื˜ ืขืก ืื™ื– ื ื™ืฉื˜ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื ืึธืš, ื“ืขืจ ืึทืจื˜ื™ืงืœ ื•ื•ืขื˜ ื”ืขืœืคึฟืŸ ืฉืคึผืึธืจืŸ ืฆื™ื™ื˜ ืคึฟืึทืจ ืึทืœืขืžืขืŸ ืื™ื ื˜ืขืจืขืกื™ืจื˜.

ื“ืขืจ ื‘ืึทื’ืจื™ืฃ ืคื•ืŸ ืงืœื•ื’ ืงืึทื ื˜ืจืึทืงืฅ ืื™ืŸ TON

ืื™ื™ื“ืขืจ ืื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืขืคึผืขืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืจืขื›ืขื ืขืŸ ืื•ื™ืก ืคื•ืŸ ื•ื•ืึธืก ื–ื™ื™ึทื˜ ืฆื• ืฆื•ื’ืึทื ื’ ื“ืขื ื–ืึทืš. ื“ืขืจื™ื‘ืขืจ, ืื™ืฆื˜ ืื™ืš ื•ื•ืขืœ ื–ืึธื’ืŸ ืื™ืจ ื•ื•ืึธืก ืคึผืึทืจืฅ ื“ื™ ืกื™ืกื˜ืขื ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ. ืžืขืจ ื’ืขื ื•ื™, ื•ื•ืึธืก ืคึผืึทืจืฅ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื•ื•ื™ืกืŸ ืื™ืŸ ืกื“ืจ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ื‘ื™ื™ึท ืžื™ื ื“ืกื˜ืขืจ ืขื˜ืœืขื›ืข ืžื™ืŸ ืคื•ืŸ ืึทืจื‘ืขื˜ ืงืึธื ื˜ืจืึทืงื˜.

ืžื™ืจ ื•ื•ืขืœืŸ ืคืึธืงื•ืก ืื•ื™ืฃ ืฉืจื™ื™ื‘ืŸ ืึท ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื•ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ TON Virtual Machine (TVM), Fift ะธ FunC, ืึทื–ื•ื™ ื“ืขืจ ืึทืจื˜ื™ืงืœ ืื™ื– ืžืขืจ ื•ื•ื™ ืึท ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’ ืคื•ืŸ ื“ืขืจ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคื•ืŸ ืึท ืจืขื’ื•ืœืขืจ ืคึผืจืึธื’ืจืึทื. ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื•ื•ื•ื™ื ืขืŸ ืื•ื™ืฃ ื•ื•ื™ ื“ื™ ืคึผืœืึทื˜ืคืึธืจืžืข ื–ื™ืš ืึทืจื‘ืขื˜ ื“ืึธ.

ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ ื•ื•ืขื’ืŸ ื•ื•ื™ ืขืก ืึทืจื‘ืขื˜ TVM ืื•ืŸ ืฉืคึผืจืึทืš Fift ืขืก ืื™ื– ื’ื•ื˜ ื‘ืึทืึทืžื˜ืขืจ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ. ื‘ืฉืขืช ืื™ืš ืคึผืึทืจื˜ื™ืกืึทืคึผื™ื™ื˜ื™ื ื’ ืื™ืŸ ื“ื™ ืคืึทืจืžืขืกื˜ ืื•ืŸ ืื™ืฆื˜ ื‘ืฉืขืช ืฉืจื™ื™ื‘ืŸ ื“ืขื ืงืจืึทื ื˜ ืงืึธื ื˜ืจืึทืงื˜, ืื™ืš ืึธืคื˜ ื–ื™ืš ืฆื• ืื™ืจ.

ื“ื™ ื”ื•ื™ืคึผื˜ ืฉืคึผืจืึทืš ืื™ืŸ ื•ื•ืึธืก ืงืœื•ื’ ืงืึทื ื˜ืจืึทืงืฅ ื–ืขื ืขืŸ ื’ืขืฉืจื™ื‘ืŸ ืื™ื– FunC. ืขืก ืื™ื– ืงื™ื™ืŸ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืื•ื™ืฃ ืขืก ืื™ืŸ ื“ืขืจ ืžืึธืžืขื ื˜, ืึทื–ื•ื™ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืขืคึผืขืก ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœืขืจื ืขืŸ ื‘ื™ื™ืฉืคื™ืœืŸ ืคื•ืŸ ืงืœื•ื’ ืงืึทื ื˜ืจืึทืงืฅ ืคื•ืŸ ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ืŸ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ ืฉืคึผืจืึทืš ื–ื™ืš ื“ืึธืจื˜, ืคึผืœื•ืก ืื™ืจ ืงืขื ืขืŸ ืงื•ืงืŸ ืื™ืŸ ื‘ื™ื™ืฉืคื™ืœืŸ ืคื•ืŸ ืงืœื•ื’ ืงืึทื ื˜ืจืึทืงืฅ ืคื•ืŸ ื“ื™ ืœืขืฆื˜ืข ืฆื•ื•ื™ื™. ืงืึทืžืคึผืึทื˜ื™ืฉืึทื ื–. ืœื™ื ืงืก ืื™ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ.

ื–ืืœ ืก ื–ืึธื’ืŸ ืžื™ืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื’ืขืฉืจื™ื‘ืŸ ืึท ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืคึฟืึทืจ FunC, ื“ืขืจื ืึธืš ืžื™ืจ ืฆื•ื ื•ื™ืคื ืขืžืขืŸ ื“ื™ ืงืึธื“ ืื™ืŸ Fift assembler.

ื“ืขืจ ืฆื•ื ื•ื™ืคื’ืขืฉื˜ืขืœื˜ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ื‘ืœื™ื™ื‘ื˜ ืฆื• ื–ื™ื™ืŸ ืืจื•ื™ืก. ืฆื• ื˜ืึธืŸ ื“ืึธืก ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืึท ืคึฟื•ื ืงืฆื™ืข ืื™ืŸ Fift, ื•ื•ืึธืก ื•ื•ืขื˜ ื ืขืžืขืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืงืึธื“ ืื•ืŸ ืขื˜ืœืขื›ืข ืื ื“ืขืจืข ืคึผืึทืจืึทืžืขื˜ืขืจืก ื•ื•ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘, ืื•ืŸ ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึท ื˜ืขืงืข ืžื™ื˜ ื“ื™ ืคืึทืจืœืขื ื’ืขืจื•ื ื’ .boc (ื•ื•ืึธืก ืžื™ื˜ืœ "ื–ืขืงืœ ืคื•ืŸ ืกืขืœื–"), ืื•ืŸ, ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื•ื•ื™ ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืขืก, ืึท ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœ ืื•ืŸ ืึทื“ืจืขืก, ื•ื•ืึธืก ืื™ื– ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืงืึธื“. ืื™ืจ ืงืขื ื˜ ืฉื•ื™ืŸ ืฉื™ืงืŸ ื’ืจืึทืžื– ืฆื• ื“ื™ ืึทื“ืจืขืก ืคื•ืŸ ืึท ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ื•ื•ืึธืก ืื™ื– ื ืึธืš ื ื™ืฉื˜ ืืจื•ื™ืก.

ืฆื• ืึทืจื•ื™ืกื’ืขื‘ืŸ ืึท ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื™ืŸ TON ื‘ืืงื•ืžืขืŸ .boc ื“ื™ ื˜ืขืงืข ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขืฉื™ืงื˜ ืฆื• ื“ื™ ื‘ืœืึทืงื›ื™ื™ื•ื•ืึทืŸ ืžื™ื˜ ืึท ืœื™ื›ื˜ ืงืœื™ืขื ื˜ (ืžืขืจ ืื•ื™ืฃ ื“ืขื ืื•ื ื˜ืŸ). ืื‘ืขืจ ืื™ื™ื“ืขืจ ืืจื•ื™ืกื’ืขื‘ืŸ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึทืจื™ื‘ืขืจืคื™ืจืŸ ื’ืจืึทืžื– ืฆื• ื“ื™ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืึทื“ืจืขืก, ืึทื ื“ืขืจืฉ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืืจื•ื™ืก. ื ืึธืš ืืจื•ื™ืกื’ืขื‘ืŸ, ืื™ืจ ืงืขื ืขืŸ ื™ื ื˜ืขืจืึทืงื˜ ืžื™ื˜ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ื“ื•ืจืš ืฉื™ืงืŸ ืขืก ืึทืจื˜ื™ืงืœืขืŸ ืคื•ืŸ ื“ื™ ืึทืจื•ื™ืก (ืœืžืฉืœ, ื ื™ืฆืŸ ืึท ืœื™ื›ื˜ ืงืœื™ืขื ื˜) ืึธื“ืขืจ ืคื•ืŸ ืื™ื ืขื•ื•ื™ื™ื ื™ืง (ืœืžืฉืœ, ืื™ื™ืŸ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืกืขื ื“ื– ืื ื“ืขืจืŸ ืึท ืึธื ื–ืึธื’ ื™ืŸ TON).

ืึทืžืึธืœ ืžื™ืจ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ื™ ื“ื™ ืงืึธื“ ืื™ื– ืืจื•ื™ืก, ืขืก ื•ื•ืขืจื˜ ื’ืจื™ื ื’ืขืจ. ืžื™ืจ ื•ื•ื™ืกืŸ ื‘ืขืขืจืขืš ื•ื•ืึธืก ืžื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืื•ืŸ ื•ื•ื™ ืื•ื ื“ื–ืขืจ ืคึผืจืึธื’ืจืึทื ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ. ืื•ืŸ ื‘ืฉืขืช ืฉืจื™ื™ื‘ืŸ, ืžื™ืจ ืงื•ืงืŸ ืคึฟืึทืจ ื•ื•ื™ ื“ืึธืก ืื™ื– ืฉื•ื™ืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืื™ืŸ ื™ื’ื–ื™ืกื˜ื™ื ื’ ืงืœื•ื’ ืงืึทื ื˜ืจืึทืงืฅ, ืึธื“ืขืจ ืžื™ืจ ืงื•ืงืŸ ืื™ืŸ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืงืึธื“ Fift ะธ FunC ืื™ืŸ ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™, ืึธื“ืขืจ ืงื•ืง ืื™ืŸ ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ.

ื–ื™ื™ืขืจ ืึธืคื˜ ืื™ืš ื’ืขื–ื•ื›ื˜ ื˜ืขืจืžื™ื ืขืŸ ืื™ืŸ ื“ื™ ื˜ืขืœืขื’ืจืึทื ืฉืžื•ืขืกืŸ ื•ื•ื• ืึทืœืข ื“ื™ ืคืึทืจืžืขืกื˜ ืคึผืึทืจื˜ื™ืกืึทืคึผืึทื ืฅ ืื•ืŸ ื˜ืขืœืขื’ืจืึทื ืขืžืคึผืœื•ื™ื™ื– ื”ืึธื‘ืŸ ื–ื™ืš ืืœื ื’ืขื–ืืžืœื˜, ืื•ืŸ ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึทื–ื•ื™ ืึทื– ื‘ืขืฉืึทืก ื“ื™ ืคืึทืจืžืขืกื˜ ืึทืœืขืžืขืŸ ื–ื™ืš ืืœื ื’ืขื–ืืžืœื˜ ื“ืึธืจื˜ ืื•ืŸ ืื ื’ืขื”ื•ื™ื‘ืŸ ื“ื™ืกืงื•ื˜ื™ืจืŸ Fift ืื•ืŸ FunC. ืœื™ื ืง ืื™ืŸ ื“ื™ ืกื•ืฃ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ.

ืขืก ืื™ื– ืฆื™ื™ื˜ ืฆื• ืžืึทืš ืคื•ืŸ ื˜ืขืึธืจื™ืข ืฆื• ืคื™ืจ.

ืคึผืจื™ืคึผืขืจื™ื ื’ ื“ื™ ืกื•ื•ื™ื•ื•ืข ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ TON

ืื™ืš ื”ืึธื‘ ื’ืขื˜ืืŸ ืึทืœืฅ ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืื•ื™ืฃ ืžืึทืงืึธืก ืื•ืŸ ื˜ืึธืคึผืœ-ืึธืคึผื’ืขืฉื˜ืขืœื˜ ืขืก ืื™ืŸ ืจื™ื™ืŸ Ubuntu 18.04 LTS ืื•ื™ืฃ ื“ืึธืงืงืขืจ.

ื“ืขืจ ืขืจืฉื˜ืขืจ ื–ืึทืš ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื˜ืึธืŸ ืื™ื– ืืจืืคืงืืคื™ืข ืื•ืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ 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; ื“ื™ ืคึผืœื•ื’ื™ืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ืื•ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืื™ืŸ ื“ื™ ื•ื•ื™ืกื•ืึทืœ ืกื˜ื•ื“ื™ืึธ ืงืึธื•ื“ ื–ื•ื›ืŸ; ืื•ื™ื‘ ืื™ืจ ืคึผืœื•ืฆืœื™ื ื’ ื•ื•ื™ืœืŸ ืฆื• ืœื™ื™ื’ืŸ ืขืคึผืขืก, ืื™ืš ื”ืึธื‘ืŸ ื’ืขืžืื›ื˜ ื“ืขื ืคึผืœื•ื’ื™ืŸ ืขืคื ื˜ืœืขืš ื‘ื ื™ืžืฆื. ืื•ื™ืš, ืขืžืขืฆืขืจ ืคืจื™ืขืจ ื’ืขืžืื›ื˜ ืึท ืคึผืœื•ื’ื™ืŸ ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ Fift, ืื™ืจ ืงืขื ืขืŸ ืื•ื™ืš ื™ื ืกื˜ืึทืœื™ืจืŸ ืขืก ืื•ืŸ ื’ืขืคึฟื™ื ืขืŸ ืขืก ืื™ืŸ ื•ื•ืกืง.

ืœืึธืžื™ืจ ื’ืœื™ื™ืš ืฉืึทืคึฟืŸ ืึท ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ื•ื•ื• ืžื™ืจ ื•ื•ืขืœืŸ ื™ื‘ืขืจื’ืขื‘ืŸ ื“ื™ ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ืจืขื–ื•ืœื˜ืึทื˜ืŸ.

ืฆื• ืžืึทื›ืŸ ืื•ื ื“ื–ืขืจ ืœืขื‘ืŸ ื’ืจื™ื ื’ืขืจ, ืžื™ืจ ื•ื•ืขืœืŸ ืฉืจื™ื™ึทื‘ืŸ ืึท ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื•ืŸ ืคึผืจื•ื‘ื™ืจืŸ ืขืก ืœืึธื•ืงืึทืœื™ ื‘ื™ื– ืขืก ืื™ื– ื’ืจื™ื™ื˜. ื‘ืœื•ื™ื– ื ืึธืš ื“ืขื ื•ื•ืขืœืŸ ืžื™ืจ ืขืก ืึทืจื•ื™ืกื’ืขื‘ืŸ ืื™ืŸ 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 Blockchain ืื™ื– ืึท ื–ืึทืžืœื•ื ื’ 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

ืžื™ืจ ื”ืึธื‘ืŸ ืฆื•ื ื•ื™ืคื’ืขืฉื˜ืขืœื˜ Fift ืึทืกืขืžื‘ืึทืœืขืจ ืงืึธื“ ืื™ืŸ 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, ื“ืึธืก ืื™ื– ืงืึธื“ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ Fift ืคึฟืึทืจ ื“ื™ ืคื™ืคื˜ ืึทืกืขืžื‘ืึทืœืœืขืจ.

ื–ื™ื ื˜ ืžื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืœื•ื™ืคืŸ ืื•ืŸ ืคึผืจื•ื‘ื™ืจืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืœืึธื•ืงืึทืœื™, ืžื™ืจ ื•ื•ืขืœืŸ ืžืึทื›ืŸ ืึท ื˜ืขืงืข lottery-test-suite.fif ืื•ืŸ ื ืึธื›ืžืึทื›ืŸ ื“ื™ ืฆื•ื ื•ื™ืคื’ืขืฉื˜ืขืœื˜ ืงืึธื“ ื“ืึธืจื˜, ืจื™ืคึผืœื™ื™ืกื™ื ื’ ื“ื™ ืœืขืฆื˜ืข ืฉื•ืจื” ืื™ืŸ ืขืก, ื•ื•ืึธืก ืฉืจื™ื™ื‘ื˜ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืงืึธื“ ืฆื• ืึท ืงืขืกื™ื™ื“ืขืจื“ื™ืง codeื“ืขืจื ืึธืš ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืขืก ืฆื• ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ:

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

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

ื‘ื™ื– ืื™ืฆื˜ ืขืก ืžื™ื™ื ื˜ ืงืœืึธืจ, ืื™ืฆื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ืœื™ื™ื’ืŸ ืฆื• ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื˜ืขืงืข ื“ื™ ืงืึธื“ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ืฆื• ืงืึทื˜ืขืจ TVM.

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

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

ะ’ c7 ืžื™ืจ ืจืขืงืึธืจื“ื™ืจืŸ ื“ืขื ืงืึธื ื˜ืขืงืกื˜, ื“ืึธืก ืื™ื– ื“ื™ ื“ืึทื˜ืŸ ืžื™ื˜ ื•ื•ืึธืก ื“ื™ TVM (ืึธื“ืขืจ ื ืขืฅ ืฉื˜ืึทื˜) ื•ื•ืขื˜ ื–ื™ื™ืŸ ืœืึธื ื˜ืฉื˜. ืืคื™ืœื• ื‘ืขืฉืึทืก ื“ื™ ืคืึทืจืžืขืกื˜, ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื’ืขื•ื•ื™ื–ืŸ ื•ื•ื™ ืฆื• ืฉืึทืคึฟืŸ c7 ืื•ืŸ ืื™ืš ื”ืึธื‘ ืื™ื‘ืขืจื’ืขื—ื–ืจื˜. ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืžื™ืจ ืงืขืŸ ื“ืึทืจืคึฟืŸ ืฆื• ื˜ื•ื™ืฉืŸ rand_seed ื–ื™ื ื˜ ื“ื™ ื“ื•ืจ ืคื•ืŸ ืึท ื˜ืจืึทืค - ื ื•ืžืขืจ ื“ืขืคึผืขื ื“ืก ืื•ื™ืฃ ืขืก ืื•ืŸ ืื•ื™ื‘ ื ื™ืฉื˜ ื’ืขื‘ื™ื˜ืŸ, ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื ื•ืžืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื•ืžื’ืขืงืขืจื˜ ื™ืขื“ืขืจ ืžืึธืœ.

recv_internal ะธ recv_external ืงืึทื ืกื˜ืึทื ืฅ ืžื™ื˜ ื•ื•ืึทืœื•ืขืก 0 ืื•ืŸ -1 ื•ื•ืขื˜ ื–ื™ื™ืŸ ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ืจื•ืคืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืคืึทื ื’ืงืฉืึทื ื– ืื™ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜.

ืื™ืฆื˜ ืžื™ืจ ื–ืขื ืขืŸ ื’ืจื™ื™ื˜ ืฆื• ืžืึทื›ืŸ ื“ื™ ืขืจืฉื˜ืขืจ ืคึผืจืึธื‘ืข ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ืœื™ื™ื“ื™ืง ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜. ืคึฟืึทืจ ืงืœืขืจื™ื˜ื™, ืื™ืฆื˜ ืžื™ืจ ื•ื•ืขืœืŸ ืœื™ื™ื’ืŸ ืึทืœืข ื˜ืขืกืฅ ืฆื• ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื˜ืขืงืข lottery-test-suite.fif.

ื–ืืœ ืก ืžืึทื›ืŸ ืึท ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง storage ืื•ืŸ ืฉืจืฒึทื‘ ืึทืจืฒึทืŸ ืึท ืœืฒื“ื™ืงืŸ cell, ื“ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ.

message ื“ืึธืก ืื™ื– ื“ืขืจ ืึธื ื–ืึธื’ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื™ื‘ืขืจืฉื™ืงืŸ ืฆื• ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืึทืงื˜ ืคื•ืŸ ื“ื™ ืึทืจื•ื™ืก. ืžื™ืจ ื•ื•ืขืœืŸ ืื•ื™ืš ืžืึทื›ืŸ ืขืก ืœื™ื™ื“ื™ืง ืคึฟืึทืจ ืื™ืฆื˜.

variable storage 
<b b> storage ! 

variable message 
<b b> message ! 

ื ืึธืš ืžื™ืจ ื”ืึธื‘ืŸ ืฆื•ื’ืขื’ืจื™ื™ื˜ ื“ื™ ืงืึทื ืกื˜ืึทื ืฅ ืื•ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื–, ืžื™ืจ ืงืึทื˜ืขืจ TVM ื ื™ืฆืŸ ื“ื™ ื‘ืึทืคึฟืขืœ runvmctx ืื•ืŸ ืคืึธืจืŸ ื“ื™ ื‘ืืฉืืคืŸ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืฆื• ื“ื™ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘.

message @ 
recv_external 
code 
storage @ 
c7 
runvmctx 

ืื™ืŸ ื“ื™ ืกื•ืฃ ืžื™ืจ ื•ื•ืขืœืŸ ืžืฆืœื™ื— ื–ื™ื™ืŸ ืื–ื•ื™ ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ืงืึธื“ ืคึฟืึทืจ Fift.

ืื™ืฆื˜ ืžื™ืจ ืงืขื ืขืŸ ืœื•ื™ืคืŸ ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ืงืึธื“.

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

ื“ืขืจ ืคึผืจืึธื’ืจืึทื ื–ืึธืœ ืœื•ื™ืคืŸ ืึธืŸ ืขืจืจืึธืจืก ืื•ืŸ ืื™ืŸ ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืžื™ืจ ื•ื•ืขืœืŸ ื–ืขืŸ ื“ื™ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืงืœืึธืฅ:

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

ื’ืจื•ื™ืก, ืžื™ืจ ื”ืึธื‘ืŸ ื’ืขืฉืจื™ื‘ืŸ ื“ืขืจ ืขืจืฉื˜ืขืจ ืืจื‘ืขื˜ืŸ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜.

ืื™ืฆื˜ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ื’ืŸ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™. ืขืจืฉื˜ืขืจ ืœืึธื–ืŸ ืก ื”ืึทื ื“ืœืขืŸ ืžื™ื˜ ืึทืจื˜ื™ืงืœืขืŸ ื•ื•ืึธืก ืงื•ืžืขืŸ ืคื•ืŸ ื“ื™ ืึทืจื•ื™ืก ื•ื•ืขืœื˜ ืฆื• recv_external()

ื“ืขืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ื–ื™ืš ื˜ืฉื•ื–ื™ื– ื“ื™ ืึธื ื–ืึธื’ ืคึฟืึธืจืžืึทื˜ ืึทื– ื“ืขืจ ืึธืคึผืžืึทืš ืงืขื ืขืŸ ืึธื ื ืขืžืขืŸ.

ืื‘ืขืจ ื™ื•ื–ืฉืึทื•ื•ืึทืœื™

  • ืขืจืฉื˜ืขืจ, ืžื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื‘ืึทืฉื™ืฆืŸ ืื•ื ื“ื–ืขืจ ืงืึธื ื˜ืจืึทืงื˜ ืคื•ืŸ ื“ื™ ืึทืจื•ื™ืก ื•ื•ืขืœื˜ ืื•ืŸ ืžืึทื›ืŸ ืขืก ืึทื–ื•ื™ ืึทื– ื‘ืœื•ื™ื– ื“ื™ ื‘ืึทื–ื™ืฆืขืจ ืคื•ืŸ ื“ื™ ืงืึธื ื˜ืจืึทืงื˜ ืงืขื ืขืŸ ืฉื™ืงืŸ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืึทืจื˜ื™ืงืœืขืŸ ืฆื• ืื™ื.
  • ืฆื•ื•ื™ื™ื˜ื ืก, ื•ื•ืขืŸ ืžื™ืจ ืฉื™ืงืŸ ืึท ื’ื™ืœื˜ื™ืง ืึธื ื–ืึธื’ ืฆื• TON, ืžื™ืจ ื•ื•ืขืœืŸ ืึทื– ื“ืึธืก ื–ืึธืœ ืคึผืึทืกื™ืจืŸ ืคึผื•ื ืงื˜ ืึทืžืึธืœ ืื•ืŸ ื•ื•ืขืŸ ืžื™ืจ ืฉื™ืงืŸ ื“ื™ ื–ืขืœื‘ืข ืึธื ื–ืึธื’ ื•ื•ื™ื“ืขืจ, ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืึธืคึผื•ื•ืึทืจืคืŸ ืขืก.

ืึทื–ื•ื™ ื›ึผืžืขื˜ ื™ืขื“ืขืจ ืงืึธื ื˜ืจืึทืงื˜ ืกืึทืœื•ื•ื– ื“ื™ ืฆื•ื•ื™ื™ ืคึผืจืึธื‘ืœืขืžืก, ื–ื™ื ื˜ ืื•ื ื“ื–ืขืจ ืงืึธื ื˜ืจืึทืงื˜ ืึทืงืกืขืคึผืฅ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืึทืจื˜ื™ืงืœืขืŸ, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื ืขืžืขืŸ ืงืขื™ืจ ืคื•ืŸ ื“ืขื ืื•ื™ืš.

ืžื™ืจ ื•ื•ืขืœืŸ ื˜ืึธืŸ ื“ืึธืก ืื™ืŸ ืคืึทืจืงืขืจื˜ ืกื“ืจ. ืขืจืฉื˜ืขืจ, ืœืึธื–ืŸ ืก ืกืึธืœื•ื•ืข ื“ื™ ืคึผืจืึธื‘ืœืขื ืžื™ื˜ ื™ื‘ืขืจื›ืึทื–ืขืจื•ื ื’; ืื•ื™ื‘ ื“ืขืจ ืึธืคึผืžืึทืš ื”ืื˜ ืฉื•ื™ืŸ ื‘ืืงื•ืžืขืŸ ืึทื–ืึท ืึท ืึธื ื–ืึธื’ ืื•ืŸ ืคึผืจืึทืกืขืกื˜ ืขืก, ืขืก ื•ื•ืขื˜ ื ื™ืฉื˜ ื•ื™ืกืคื™ืจืŸ ืขืก ืึท ืฆื•ื•ื™ื™ื˜ ืžืึธืœ. ืื•ืŸ ื“ืขืžืึธืœื˜ ืžื™ืจ ื•ื•ืขืœืŸ ืกืึธืœื•ื•ืข ื“ื™ ืคึผืจืึธื‘ืœืขื ืึทื–ื•ื™ ืึทื– ื‘ืœื•ื™ื– ืึท ื–ื™ื›ืขืจ ืงืจื™ื™ึทื– ืคื•ืŸ ืžืขื ื˜ืฉืŸ ืงืขื ืขืŸ ืฉื™ืงืŸ ืึทืจื˜ื™ืงืœืขืŸ ืฆื• ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜.

ืขืก ื–ืขื ืขืŸ ืคืึทืจืฉื™ื“ืขื ืข ื•ื•ืขื’ืŸ ืฆื• ืกืึธืœื•ื•ืข ื“ื™ ืคึผืจืึธื‘ืœืขื ืžื™ื˜ ื“ื•ืคึผืœื™ืงืึทื˜ ืึทืจื˜ื™ืงืœืขืŸ. ื“ืึธ ืก ื•ื•ื™ ืžื™ืจ ื•ื•ืขืœืŸ ื˜ืึธืŸ ืขืก. ืื™ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜, ืžื™ืจ ื™ื ื™ืฉืึทืœื™ื™ื– ื“ื™ ื˜ืึธืžื‘ืึทื ืง ืคื•ืŸ ื‘ืืงื•ืžืขืŸ ืึทืจื˜ื™ืงืœืขืŸ ืžื™ื˜ ื“ื™ ืขืจืฉื˜ ื•ื•ืขืจื˜ 0. ืื™ืŸ ื™ืขื“ืขืจ ืึธื ื–ืึธื’ ืฆื• ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜, ืžื™ืจ ื•ื•ืขืœืŸ ืœื™ื™ื’ืŸ ื“ื™ ืงืจืึทื ื˜ ื˜ืึธืžื‘ืึทื ืง ื•ื•ืขืจื˜. ืื•ื™ื‘ ื“ื™ ื˜ืึธืžื‘ืึทื ืง ื•ื•ืขืจื˜ ืื™ืŸ ื“ืขืจ ืึธื ื–ืึธื’ ืื™ื– ื ื™ืฉื˜ ื’ืœื™ื™ืš ืฆื• ื“ื™ ื•ื•ืขืจื˜ ืื™ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜, ืžื™ืจ ื˜ืึธืŸ ื ื™ื˜ ืคึผืจืึธืฆืขืก ืขืก; ืื•ื™ื‘ ืขืก ืื™ื– ื“ืึธืก, ืžื™ืจ ืคึผืจืึธืฆืขืก ืขืก ืื•ืŸ ืคืึทืจื’ืจืขืกืขืจืŸ ื“ื™ ื˜ืึธืžื‘ืึทื ืง ืื™ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืžื™ื˜ 1.

ืœืืžื™ืจ ื–ื™ืš ืื•ืžืงืขืจืŸ ืฆื• lottery-test-suite.fif ืื•ืŸ ืฆื•ื’ืขื‘ืŸ ืฆื• ืื™ื ืึท ืฆื•ื•ื™ื™ื˜ ืคึผืจืึธื‘ืข. ืื•ื™ื‘ ืžื™ืจ ืฉื™ืงืŸ ืึท ืคืึทืœืฉ ื ื•ืžืขืจ, ื“ื™ ืงืึธื“ ื–ืึธืœ ื•ื•ืึทืจืคืŸ ืึท ื•ื™ืกื ืขื. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืœืึธื–ืŸ ื“ื™ ืงืึธื ื˜ืจืึทืงื˜ ื“ืึทื˜ืŸ ืงืจืึธื 166, ืื•ืŸ ืžื™ืจ ื•ื•ืขืœืŸ ืฉื™ืงืŸ 165.

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

message @ 
recv_external 
code 
storage @ 
c7 
runvmctx

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

ื–ืืœ ืก ืงืึทื˜ืขืจ.

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

ืื•ืŸ ืžื™ืจ ื•ื•ืขืœืŸ ื–ืขืŸ ืึทื– ื“ื™ ืคึผืจืึธื‘ืข ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“ ืžื™ื˜ ืึท ื˜ืขื•ืช.

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

ืื™ืŸ ื“ืขื ื‘ื™ื ืข lottery-test-suite.fif ื–ืึธืœ ืงื•ืงืŸ ื•ื•ื™ ะฟะพ ััั‹ะปะบะต.

ืื™ืฆื˜ ืœืึธื–ืŸ ืก ืœื™ื™ื’ืŸ ื“ื™ ื˜ืึธืžื‘ืึทื ืง ืœืึธื’ื™ืง ืฆื• ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื™ืŸ lottery-code.fc.

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

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

ะ’ slice in_msg ืœื™ื’ื˜ ื“ืขืจ ืึธื ื–ืึธื’ ื•ื•ืึธืก ืžื™ืจ ืฉื™ืงืŸ.

ื“ืขืจ ืขืจืฉื˜ืขืจ ื–ืึทืš ืžื™ืจ ื˜ืึธืŸ ืื™ื– ื˜ืฉืขืง ืื•ื™ื‘ ื“ืขืจ ืึธื ื–ืึธื’ ื›ึผื•ืœืœ ื“ืึทื˜ืŸ, ืื•ื™ื‘ ื ื™ื˜, ืžื™ืจ ืคืฉื•ื˜ ืึทืจื•ื™ืกื’ืึทื ื’.

ื•ื•ื™ื™ึทื˜ืขืจ ืžื™ืจ ืคึผืึทืจืก ื“ื™ ืึธื ื–ืึธื’. in_msg~load_uint(32) ืœืึธื•ื“ื– ื“ื™ ื ื•ืžืขืจ 165, 32-ื‘ื™ืกืœ unsigned int ืคื•ืŸ ื“ื™ ื˜ืจืึทื ืกืžื™ื˜ื˜ืขื“ ืึธื ื–ืึธื’.

ื•ื•ื™ื™ึทื˜ืขืจ ืžื™ืจ ืœืึธื“ืŸ 32 ื‘ื™ื˜ืŸ ืคื•ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ. ืžื™ืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ื“ื™ ืœืึธื•ื“ื™ื“ ื ื•ืžืขืจ ืฉื•ื•ืขื‘ืขืœืขืš ื“ื™ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืื™ื™ื ืขืจ; ืื•ื™ื‘ ื ื™ื˜, ืžื™ืจ ื•ื•ืึทืจืคืŸ ืึท ื•ื™ืกื ืขื. ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ, ื–ื™ื ื˜ ืžื™ืจ ืคืึธืจืŸ ืึท ื ื™ื˜-ืฉื•ื•ืขื‘ืœ, ืึท ื•ื™ืกื ืขื ื–ืึธืœ ื–ื™ื™ืŸ ื•ื•ืึทืจืคืŸ.

ืื™ืฆื˜ ืœืึธืžื™ืจ ืฆื•ื ื•ื™ืคื ืขืžืขืŸ.

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

ื ืึธื›ืžืึทื›ืŸ ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ืงืึธื“ ืฆื• lottery-test-suite.fif, ื ื™ื˜ ืคืึทืจื’ืขืกืŸ ืฆื• ืคืึทืจื‘ื™ื™ึทื˜ืŸ ื“ื™ ืœืขืฆื˜ืข ืฉื•ืจื”.

ืžื™ืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ื“ื™ ืคึผืจืึธื‘ืข ืคึผืึทืกื™ื–:

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

ืจืขื›ื˜ ื“ืึธ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ื™ื‘ืขืจื’ืขื‘ืŸ ืžื™ื˜ ื“ื™ ืงืจืึทื ื˜ ืจืขื–ื•ืœื˜ืึทื˜ืŸ.

ื‘ืึทืžืขืจืงื•ื ื’ ืึทื– ืขืก ืื™ื– ื•ืžื‘ืึทืงื•ื•ืขื ืฆื• ืงืขืกื™ื™ื“ืขืจ ื ืึธื›ืžืึทื›ืŸ ื“ื™ ืงืึทืžืคึผื™ื™ืœื“ ืงืึธื“ ืคื•ืŸ ืึท ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื™ืŸ ืึท ื˜ืขืงืข ืžื™ื˜ ื˜ืขืกืฅ, ืึทื–ื•ื™ ืœืึธื–ืŸ ืื•ื ื“ื– ืฉืจื™ื™ึทื‘ืŸ ืึท ืฉืจื™ืคื˜ ื•ื•ืึธืก ื•ื•ืขื˜ ืฉืจื™ื™ึทื‘ืŸ ื“ืขื ืงืึธื“ ืื™ืŸ ืึท ืงืขืกื™ื™ื“ืขืจื“ื™ืง ืคึฟืึทืจ ืื•ื ื“ื–, ืื•ืŸ ืžื™ืจ ื•ื•ืขืœืŸ ืคืฉื•ื˜ ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ืงืึทืžืคึผื™ื™ืœื“ ืงืึธื“ ืฆื• ืื•ื ื“ื–ืขืจ ื˜ืขืกืฅ ื ื™ืฆืŸ "include".

ืฉืึทืคึฟืŸ ืึท ื˜ืขืงืข ืื™ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ื˜ืขืงืข build.sh ืžื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ืื™ื ื”ืึทืœื˜.

#!/bin/bash

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

ื–ืืœ ืก ืžืึทื›ืŸ ืขืก ืขืงืกืขืงื•ื˜ืึทื‘ืœืข.

chmod +x ./build.sh

ืื™ืฆื˜, ื ืึธืจ ืœื•ื™ืคืŸ ืื•ื ื“ื–ืขืจ ืฉืจื™ืคื˜ ืฆื• ื–ืึทืžืœืขืŸ ื“ื™ ืงืึธื ื˜ืจืึทืงื˜. ืื‘ืขืจ ื—ื•ืฅ ื“ืขื, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืขืก ืื™ืŸ ืึท ืงืขืกื™ื™ื“ืขืจื“ื™ืง code. ืึทื–ื•ื™ ืžื™ืจ ื•ื•ืขืœืŸ ืฉืึทืคึฟืŸ ืึท ื ื™ื™ึทืข ื˜ืขืงืข lotter-compiled-for-test.fif, ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ืึทืจื™ื™ึทื ื ืขืžืขืŸ ืื™ืŸ ื“ืขืจ ื˜ืขืงืข lottery-test-suite.fif.

ืœืึธืžื™ืจ ืœื™ื™ื’ืŸ ืกืงืขืจืคึผื˜ ืงืึธื“ ืฆื• sh, ื•ื•ืึธืก ื•ื•ืขื˜ ืคืฉื•ื˜ ื“ื•ืคึผืœื™ืงืึทื˜ ื“ื™ ืงืึทืžืคึผื™ื™ืœื“ ื˜ืขืงืข ืื™ืŸ lotter-compiled-for-test.fif ืื•ืŸ ื˜ื•ื™ืฉืŸ ื“ื™ ืœืขืฆื˜ืข ืฉื•ืจื” ืื™ืŸ ืขืก.

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

ืื™ืฆื˜, ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ, ืœืึธื–ืŸ ืื•ื ื“ื– ืœื•ื™ืคืŸ ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ืฉืจื™ืคื˜ ืื•ืŸ ืึท ื˜ืขืงืข ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ lottery-compiled-for-test.fif, ืฐืขืœื› ืข ืžื™ ืจ ืฐืขืœ ืŸ ืืจืฒื ื ืขืžืข ืŸ ืื™ ืŸ ืื•ื ื“ื–ืขืจ lottery-test-suite.fif

ะ’ lottery-test-suite.fif ื•ื™ืกืžืขืงืŸ ื“ื™ ืงืึธื ื˜ืจืึทืงื˜ ืงืึธื“ ืื•ืŸ ืœื™ื™ื’ืŸ ื“ื™ ืฉื•ืจื” "lottery-compiled-for-test.fif" include.

ืžื™ืจ ืœื•ื™ืคืŸ ื˜ืขืกืฅ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ื–ื™ื™ ืคืึธืจืŸ.

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

ื’ืจื•ื™ืก, ืื™ืฆื˜ ืฆื• ืึธื˜ืึทืžื™ื™ื˜ ื“ื™ ืงืึทื˜ืขืจ ืคื•ืŸ ื˜ืขืกืฅ, ืœืึธื–ืŸ ืื•ื ื“ื– ืฉืึทืคึฟืŸ ืึท ื˜ืขืงืข test.sh, ื•ื•ืึธืก ื•ื•ืขื˜ ืขืจืฉื˜ืขืจ ื•ื™ืกืคื™ืจืŸ build.sh, ืื•ืŸ ื“ืขืžืึธืœื˜ ืœื•ื™ืคืŸ ื“ื™ ื˜ืขืกืฅ.

touch test.sh
chmod +x test.sh

ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืื™ื ืขื•ื•ื™ื™ื ื™ืง

./build.sh 

echo "nCompilation completedn"

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

ืœืืžื™ืจ ืขืก ื˜ื•ื”ืŸ test.sh ืื•ืŸ ืœื•ื™ืคืŸ ืขืก ืฆื• ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– ื“ื™ ื˜ืขืกืฅ ืึทืจื‘ืขื˜.

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

ืžื™ืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ื“ื™ ืึธืคึผืžืึทืš ืงืึทืžืคึผื™ื™ืœื– ืื•ืŸ ื“ื™ ื˜ืขืกืฅ ื–ืขื ืขืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“.

ื’ืจื•ื™ืก, ืื™ืฆื˜ ืื•ื™ืฃ ืกื˜ืึทืจื˜ืึทืคึผ test.sh ื“ื™ ื˜ืขืกืฅ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืงืึทืžืคึผื™ื™ืœื“ ืื•ืŸ ืœื•ื™ืคืŸ ื’ืœื™ื™ืš. ื“ืึธ ืื™ื– ื“ื™ ืœื™ื ืง ืฆื• ื˜ื•ืขืŸ.

ืึธื•ืงื™ื™, ืื™ื™ื“ืขืจ ืžื™ืจ ืคืึธืจื–ืขืฆืŸ, ืœืึธื–ืŸ ืื•ื ื“ื– ื˜ืึธืŸ ื ืึธืš ืื™ื™ืŸ ื–ืึทืš ืคึฟืึทืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ืก.

ื–ืืœ ืก ืžืึทื›ืŸ ืึท ื˜ืขืงืข build ื•ื•ื• ืžื™ืจ ื•ื•ืขืœืŸ ืงืจืึธื ื“ื™ ืงืึทืคึผื™ื“ ืงืึธื ื˜ืจืึทืงื˜ ืื•ืŸ ื–ื™ื™ึทืŸ ืงืœืึธื•ืŸ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ืึท ืงืขืกื™ื™ื“ืขืจื“ื™ืง lottery-compiled.fif, lottery-compiled-for-test.fif. ื–ืืœ ืก ืื•ื™ืš ืฉืึทืคึฟืŸ ืึท ื˜ืขืงืข test ื•ื•ื• ื•ื•ืขื˜ ื“ื™ ืคึผืจืึธื‘ืข ื˜ืขืงืข ื–ื™ื™ืŸ ืกื˜ืึธืจื“? lottery-test-suite.fif ืื•ืŸ ืคึผืึทื˜ืขื ื˜ืฉืึทืœื™ ืื ื“ืขืจืข ืฉื˜ื™ืฆืŸ ื˜ืขืงืขืก. ืœื™ื ืง ืฆื• ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ืขื ื“ืขืจื•ื ื’ืขืŸ.

ืœืึธืžื™ืจ ืคืึธืจื–ืขืฆืŸ ืฆื• ืึทื ื˜ื•ื•ื™ืงืœืขืŸ ื“ืขื ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜.

ื•ื•ื™ื™ึทื˜ืขืจ ืขืก ื–ืึธืœ ื–ื™ื™ืŸ ืึท ืคึผืจืึธื‘ืข ื•ื•ืึธืก ื˜ืฉืขืงืก ืึทื– ื“ืขืจ ืึธื ื–ืึธื’ ืื™ื– ื‘ืืงื•ืžืขืŸ ืื•ืŸ ื“ื™ ื˜ืึธืžื‘ืึทื ืง ืื™ื– ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ืื™ืŸ ื“ื™ ืงืจืึธื ื•ื•ืขืŸ ืžื™ืจ ืฉื™ืงืŸ ื“ื™ ืจื™ื›ื˜ื™ืง ื ื•ืžืขืจ. ืื‘ืขืจ ืžื™ืจ ื•ื•ืขืœืŸ ื˜ืึธืŸ ื“ืึธืก ืฉืคึผืขื˜ืขืจ.

ืื™ืฆื˜ ืœืึธื–ืŸ ืก ื˜ืจืึทื›ื˜ืŸ ื•ื•ืขื’ืŸ ื•ื•ืึธืก ื“ืึทื˜ืŸ ืกื˜ืจื•ืงื˜ื•ืจ ืื•ืŸ ื•ื•ืึธืก ื“ืึทื˜ืŸ ื“ืึทืจืฃ ื–ื™ื™ืŸ ืกื˜ืึธืจื“ ืื™ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜.

ืื™ืš ื•ื•ืขืœ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ืึทืœืฅ ื•ื•ืึธืก ืžื™ืจ ืงืจืึธื.

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

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

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

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

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

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

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

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

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

ื•ื•ื™ื™ึทื˜ืขืจ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืฆื•ื•ื™ื™ ืคืึทื ื’ืงืฉืึทื ื–. ืœืึธืžื™ืจ ืจื•ืคืŸ ื“ื™ ืขืจืฉื˜ืข pack_state(), ื•ื•ืึธืก ื•ื•ืขื˜ ืคึผืึทืงืŸ ื“ื™ ื“ืึทื˜ืŸ ืคึฟืึทืจ ืกืึทื‘ืกืึทืงื•ื•ืึทื ื˜ ืฉืคึผืึธืจืŸ ืื™ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ. ืœืืžื™ืจ ืจื•ืคืŸ ื“ื™ ืฆื•ื•ื™ื™ื˜ืข unpack_state() ื•ื•ืขื˜ ืœื™ื™ืขื ืขืŸ ืื•ืŸ ืฆื•ืจื™ืงืงื•ืžืขืŸ ื“ืึทื˜ืŸ ืคื•ืŸ ืกื˜ืึธืจื™ื“ื–ืฉ.

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

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

ืžื™ืจ ืœื™ื™ื’ืŸ ื“ื™ ืฆื•ื•ื™ื™ ืคืึทื ื’ืงืฉืึทื ื– ืฆื• ื“ื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜. ืขืก ื•ื•ืขื˜ ืึทืจื‘ืขื˜ืŸ ืื•ื™ืก ืื–ื•ื™ ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ืจืขื–ื•ืœื˜ืึทื˜.

ืฆื• ืจืึทื˜ืขื•ื•ืขืŸ ื“ืึทื˜ืŸ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืจื•ืคืŸ ื“ื™ ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ืคึฟื•ื ืงืฆื™ืข set_data() ืื•ืŸ ืขืก ื•ื•ืขื˜ ืฉืจื™ื™ึทื‘ืŸ ื“ืึทื˜ืŸ ืคื•ืŸ pack_state() ืื™ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ.

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

ืื™ืฆื˜ ืึทื– ืžื™ืจ ื”ืึธื‘ืŸ ื‘ืึทืงื•ื•ืขื ืคืึทื ื’ืงืฉืึทื ื– ืคึฟืึทืจ ืฉืจื™ื™ื‘ืŸ ืื•ืŸ ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ, ืžื™ืจ ืงืขื ืขืŸ ืคืึธืจื–ืขืฆืŸ.

ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ื“ืขืจ ืึธื ื–ืึธื’ ื•ื•ืึธืก ืงื•ืžื˜ ืคื•ืŸ ืึทืจื•ื™ืก ืื™ื– ื’ืขื—ืชืžืขื˜ ื“ื•ืจืš ื“ื™ ื‘ืึทื–ื™ืฆืขืจ ืคื•ืŸ ื“ื™ ืงืึธื ื˜ืจืึทืงื˜ (ืึธื“ืขืจ ืืŸ ืื ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ื•ื•ืืก ื”ืื˜ ืฆื•ื˜ืจื™ื˜ ืฆื• ื“ื™ ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœ).

ื•ื•ืขืŸ ืžื™ืจ ืึทืจื•ื™ืกื’ืขื‘ืŸ ืึท ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜, ืžื™ืจ ืงืขื ืขืŸ ื™ื ื™ืฉืึทืœื™ื™ื– ืขืก ืžื™ื˜ ื“ื™ ื“ืึทื˜ืŸ ื•ื•ืึธืก ืžื™ืจ ื“ืึทืจืคึฟืŸ ืื™ืŸ ืกื˜ืึธืจื™ื“ื–ืฉ, ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขืจืื˜ืขื•ื•ืขื˜ ืคึฟืึทืจ ืฆื•ืงื•ื ืคึฟื˜ ื ื•ืฆืŸ. ืžื™ืจ ื•ื•ืขืœืŸ ืจืขืงืึธืจื“ื™ืจืŸ ื“ืขื ืฆื™ื‘ื•ืจ ืฉืœื™ืกืœ ื“ืึธืจื˜ ืึทื–ื•ื™ ืึทื– ืžื™ืจ ืงืขื ืขืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืึทื– ื“ื™ ื™ื ืงืึทืžื™ื ื’ ืึธื ื–ืึธื’ ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืขื—ืชืžืขื˜ ืžื™ื˜ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœ.

ืื™ื™ื“ืขืจ ืื™ืจ ืคืึธืจื–ืขืฆืŸ, ืœืึธื–ืŸ ืื•ื ื“ื– ืžืึทื›ืŸ ืึท ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœ ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ืขืก ืฆื• test/keys/owner.pk. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืœืึธืžื™ืจ ืงืึทื˜ืขืจ Fift ืื™ืŸ ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื• ืžืึธื“ืข ืื•ืŸ ื•ื™ืกืคื™ืจืŸ ืคื™ืจ ืงืึทืžืึทื ื“ื–.

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

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

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

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

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

ื–ืืœ ืก ืžืึทื›ืŸ ืึท ื˜ืขืงืข keys ื™ืŸ ื“ืขืจ ื˜ืขืงืข test ืื•ืŸ ืฉืจื™ื™ื‘ ื“ืืจื˜ ื“ื™ ืคืจื™ื•ื•ืื˜ืข ืฉืœื™ืกืœ.

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

ืžื™ืจ ื–ืขืŸ ืึท ื˜ืขืงืข ืื™ืŸ ื“ื™ ืงืจืึทื ื˜ ื˜ืขืงืข owner.pk.

ืžื™ืจ ืึทืจืึธืคึผื ืขืžืขืŸ ื“ืขื ืฆื™ื‘ื•ืจ ืฉืœื™ืกืœ ืคื•ืŸ ื“ื™ ืึธื ืœื™ื™ื’ืŸ ืื•ืŸ ื•ื•ืขืŸ ื“ืืจืฃ ืžื™ืจ ืงืขื ืขืŸ ื‘ืึทืงื•ืžืขืŸ ืขืก ืคื•ืŸ ื“ื™ ืคึผืจื™ื•ื•ืึทื˜.

ืื™ืฆื˜ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืึท ื›ืกื™ืžืข ื•ื•ืขืจืึทืคืึทืงื™ื™ืฉืึทืŸ. ื–ืืœ ืก ืึธื ื”ื™ื™ื‘ืŸ ืžื™ื˜ ื“ื™ ืคึผืจืึธื‘ืข. ืขืจืฉื˜ืขืจ ืžื™ืจ ืœื™ื™ืขื ืขืŸ ื“ื™ ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœ ืคึฟื•ืŸ ื“ืขืจ ื˜ืขืงืข ื ื™ืฆืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข file>B ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ืขืก ืฆื• ืึท ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง owner_private_key, ื“ืขืžืึธืœื˜ ื ื™ืฆืŸ ื“ื™ ืคึฟื•ื ืงืฆื™ืข priv>pub ื’ืขืจ ื“ื™ ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœ ืฆื• ืึท ืฆื™ื‘ื•ืจ ืฉืœื™ืกืœ ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ืŸ owner_public_key.

variable owner_private_key
variable owner_public_key 

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

ืžื™ืจ ื•ื•ืขืœืŸ ื“ืึทืจืคึฟืŸ ื‘ื™ื™ื“ืข ืฉืœื™ืกืœืขืŸ.

ืžื™ืจ ื™ื ื™ืฉืึทืœื™ื™ื– ื“ื™ ืกืžืึทืจื˜ ืงืึธื ื˜ืจืึทืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ ืžื™ื˜ ืึทืจื‘ื™ื˜ืจืึทืจื™ืฉ ื“ืึทื˜ืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืกื™ืงื•ื•ืึทื ืก ื•ื•ื™ ืื™ืŸ ื“ื™ ืคื•ื ืงืฆื™ืข pack_state()ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ืขืก ืื™ืŸ ืึท ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง storage.

variable owner_private_key
variable owner_public_key 
variable orders
variable owner_wc
variable owner_account_id

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

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

ื•ื•ื™ื™ึทื˜ืขืจ, ืžื™ืจ ื•ื•ืขืœืŸ ืงืึทืžืคึผืึธื•ื– ืึท ื’ืขื—ืชืžืขื˜ ืึธื ื–ืึธื’, ืขืก ื•ื•ืขื˜ ื‘ืœื•ื™ื– ืึทื ื˜ื”ืึทืœื˜ืŸ ื“ื™ ื›ืกื™ืžืข ืื•ืŸ ื“ื™ ื˜ืึธืžื‘ืึทื ืง ื•ื•ืขืจื˜.

ืขืจืฉื˜ืขืจ, ืžื™ืจ ืžืึทื›ืŸ ื“ื™ ื“ืึทื˜ืŸ ื•ื•ืึธืก ืžื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืึทืจื™ื‘ืขืจืคื™ืจืŸ, ื“ืขืจื ืึธืš ืžื™ืจ ืฆื™ื™ื›ืŸ ืขืก ืžื™ื˜ ืึท ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœ ืื•ืŸ ืœืขืกืึธืฃ ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืึท ื’ืขื—ืชืžืขื˜ ืึธื ื–ืึธื’.

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

ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ื“ืขืจ ืึธื ื–ืึธื’ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ืฉื™ืงืŸ ืฆื• ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื™ื– ืจืขืงืึธืจื“ืขื“ ืื™ืŸ ืึท ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง message_to_send, ื•ื•ืขื’ืŸ ืคืึทื ื’ืงืฉืึทื ื– hashu, ed25519_sign_uint ืื™ืจ ืงืขื ืขืŸ ืœื™ื™ืขื ืขืŸ ืื™ืŸ ื“ื™ ืคื™ืคื˜ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ.

ืื•ืŸ ืฆื• ืœื•ื™ืคืŸ ื“ื™ ืคึผืจืึธื‘ืข ืžื™ืจ ืจื•ืคืŸ ื•ื•ื™ื“ืขืจ.

message_to_send @ 
recv_external 
code 
storage @
c7
runvmctx

ืึทื–ื•ื™ ื“ืขืจ ื˜ืขืงืข ืžื™ื˜ ื˜ืขืกืฅ ื–ืึธืœ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก ืื™ืŸ ื“ืขื ื‘ื™ื ืข.

ืœืึธืžื™ืจ ืœื•ื™ืคืŸ ื“ื™ ืคึผืจืึธื‘ืข ืื•ืŸ ืขืก ื•ื•ืขื˜ ื“ื•ืจื›ืคืึทืœ, ืึทื–ื•ื™ ืžื™ืจ ื•ื•ืขื˜ ื˜ื•ื™ืฉืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืึทื–ื•ื™ ืึทื– ืขืก ืงืขื ืขืŸ ื‘ืึทืงื•ืžืขืŸ ืึทืจื˜ื™ืงืœืขืŸ ืคื•ืŸ ื“ืขื ืคึฟืึธืจืžืึทื˜ ืื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ื™ ื›ืกื™ืžืข.

ืขืจืฉื˜ืขืจ, ืžื™ืจ ืฆื™ื™ืœืŸ 512 ื‘ื™ืฅ ืคื•ืŸ ื“ื™ ื›ืกื™ืžืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืึธื ื–ืึธื’ ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ืขืก ืฆื• ืึท ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง, ืื•ืŸ ื“ืขืžืึธืœื˜ ืžื™ืจ ืฆื™ื™ืœืŸ 32 ื‘ื™ืฅ ืคื•ืŸ ื“ื™ ื˜ืึธืžื‘ืึทื ืง ื•ื•ืขืจื™ืึทื‘ืึทืœ.

ื–ื™ื ื˜ ืžื™ืจ ื”ืึธื‘ืŸ ืึท ืคื•ื ืงืฆื™ืข ืคึฟืึทืจ ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืคึฟื•ืŸ ื“ื™ ืกืžืึทืจื˜ ืงืึธื ื˜ืจืึทืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ, ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ืขืก.

ื•ื•ื™ื™ึทื˜ืขืจ ืื™ื– ืงืึธื ื˜ืจืึธืœื™ืจื•ื ื’ ื“ื™ ื˜ืึธืžื‘ืึทื ืง ื˜ืจืึทื ืกืคืขืจื“ ืžื™ื˜ ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ ืื•ืŸ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ื›ืกื™ืžืข. ืื•ื™ื‘ ืขืคึผืขืก ื˜ื•ื˜ ื ื™ืฉื˜ ื’ืœื™ื™ึทื›ืŸ, ืžื™ืจ ื•ื•ืึทืจืคืŸ ืึท ื•ื™ืกื ืขื ืžื™ื˜ ื“ื™ ืฆื•ื ืขืžืขืŸ ืงืึธื“.

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

ื‘ืึทื˜ื™ื™ึทื˜ื™ืง ื™ื‘ืขืจื’ืขื‘ืŸ ื“ืึธ.

ืœืืžื™ืจ ืœื•ื™ืคืŸ ื“ื™ ื˜ืขืกื˜ืก ืื•ืŸ ื–ืขืŸ ืื– ื“ื™ ืฆื•ื•ื™ื™ื˜ืข ื˜ืขืกื˜ ืคืขืœื˜ ืื•ื™ืก. ืคึฟืึทืจ ืฆื•ื•ื™ื™ ืกื™ื‘ื•ืช, ืขืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ื’ืขื ื•ื’ ื‘ื™ื˜ืŸ ืื™ืŸ ื“ืขืจ ืึธื ื–ืึธื’ ืื•ืŸ ืขืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ื’ืขื ื•ื’ ื‘ื™ื˜ืŸ ืื™ืŸ ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ, ืึทื–ื•ื™ ื“ื™ ืงืึธื“ ืงืจืึทืฉื™ื– ื•ื•ืขืŸ ืคึผืึทืจืกื™ื ื’. ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืœื™ื™ื’ืŸ ืึท ื›ืกื™ืžืข ืฆื• ื“ื™ ืึธื ื–ืึธื’ ื•ื•ืึธืก ืžื™ืจ ืฉื™ืงืŸ ืื•ืŸ ื ืึธื›ืžืึทื›ืŸ ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ ืคื•ืŸ ื“ื™ ืœืขืฆื˜ืข ืคึผืจืึธื‘ืข.

ืื™ืŸ ื“ื™ ืจื’ืข ืคึผืจืึธื‘ืข, ืžื™ืจ ื•ื•ืขืœืŸ ืœื™ื™ื’ืŸ ืึท ืึธื ื–ืึธื’ ื›ืกื™ืžืข ืื•ืŸ ื˜ื•ื™ืฉืŸ ื“ื™ ืกืžืึทืจื˜ ืงืึธื ื˜ืจืึทืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ. ืึทื–ื•ื™ ื“ืขืจ ื˜ืขืงืข ืžื™ื˜ ื˜ืขืกืฅ ืงื•ืงื˜ ื•ื•ื™ ืื™ืŸ ื“ืขื ืžืึธืžืขื ื˜.

ืœืืžื™ืจ ืฉืจื™ื™ื‘ืŸ ื ืคืขืจื˜ืข ื˜ืขืกื˜, ืื™ืŸ ื•ื•ืขืœื›ืŸ ืžื™ืจ ื•ื•ืขืœืŸ ืฉื™ืงืŸ ื ืžืขืกืขื“ื–ืฉ ื’ืขื—ืชืžืขื˜ ืžื™ื˜ ืืŸ ืื ื“ืขืจืขืก ืคืจื™ื•ื•ืื˜ืข ืฉืœื™ืกืœ. ืœืึธืžื™ืจ ืžืึทื›ืŸ ืืŸ ืื ื“ืขืจ ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœ ืื•ืŸ ืจืึทื˜ืขื•ื•ืขืŸ ืขืก ืื™ืŸ ืึท ื˜ืขืงืข not-owner.pk. ืžื™ืจ ื•ื•ืขืœืŸ ืฆื™ื™ื›ืŸ ื“ืขื ืึธื ื–ืึธื’ ืžื™ื˜ ื“ืขื ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœ. ืœืึธืžื™ืจ ืœื•ื™ืคืŸ ื“ื™ ื˜ืขืกืฅ ืื•ืŸ ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืึทื– ืึทืœืข ื˜ืขืกืฅ ืคืึธืจืŸ. ืงืึทืžื™ื˜ ืื™ืŸ ื“ืขื ืžืึธืžืขื ื˜.

ืื™ืฆื˜ ืžื™ืจ ืงืขื ืขืŸ ืœืขืกืึธืฃ ืžืึทืš ืื•ื™ืฃ ืฆื• ื™ืžืคึผืœืึทืžืขื ื™ื ื’ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืœืึธื’ื™ืง.
ะ’ recv_external() ืžื™ืจ ื•ื•ืขืœืŸ ืึธื ื ืขืžืขืŸ ืฆื•ื•ื™ื™ ื˜ื™ื™ืคึผืก ืคื•ืŸ ืึทืจื˜ื™ืงืœืขืŸ.

ื–ื™ื ื˜ ืื•ื ื“ื–ืขืจ ืงืึธื ื˜ืจืึทืงื˜ ื•ื•ืขื˜ ืึธื ืงืœื™ื™ึทื‘ืŸ ื“ื™ ืœืึธืกืกืขืก ืคื•ืŸ ืคึผืœื™ื™ึทืขืจืก, ื“ืึธืก ื’ืขืœื˜ ืžื•ื–ืŸ ื–ื™ื™ืŸ ื˜ืจืึทื ืกืคืขืจื“ ืฆื• ื“ืขืจ ื‘ืืฉืขืคืขืจ ืคื•ืŸ ื“ื™ ืœืึธื˜ืขืจื™ืข. ื“ื™ ื‘ื™ื™ึทื˜ืœ ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ืœืึธื˜ืขืจื™ืข ื‘ืืฉืขืคืขืจ ืื™ื– ืจืขืงืึธืจื“ืขื“ ืื™ืŸ ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ ื•ื•ืขืŸ ื“ื™ ืงืึธื ื˜ืจืึทืงื˜ ืื™ื– ื‘ืืฉืืคืŸ.

ื ืึธืจ ืื™ืŸ ืคืึทืœ, ืžื™ืจ ื“ืึทืจืคึฟืŸ ื“ื™ ืคื™ื™ื™ืงื™ื™ึทื˜ ืฆื• ื˜ื•ื™ืฉืŸ ื“ื™ ืึทื“ืจืขืก ืฆื• ื•ื•ืึธืก ืžื™ืจ ืฉื™ืงืŸ ื’ืจืึทืžื– ืคื•ืŸ ื“ื™ ืœื•ื–ืขืจื–. ืžื™ืจ ื–ืึธืœ ืื•ื™ืš ืงืขื ืขืŸ ืฆื• ืฉื™ืงืŸ ื’ืจืึทืžื– ืคื•ืŸ ื“ื™ ืœืึธื˜ืขืจื™ืข ืฆื• ื“ื™ ื‘ืึทื–ื™ืฆืขืจ ืก ืึทื“ืจืขืก.

ืœืึธืžื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ืžื™ื˜ ื“ืขืจ ืขืจืฉื˜ืขืจ. ื–ืืœ ืก ืขืจืฉื˜ืขืจ ืฉืจื™ื™ึทื‘ืŸ ืึท ืคึผืจืึธื‘ืข ื•ื•ืึธืก ื•ื•ืขื˜ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ืึทื– ื ืึธืš ืฉื™ืงืŸ ื“ื™ ืึธื ื–ืึธื’, ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ื’ืขืจืื˜ืขื•ื•ืขื˜ ื“ื™ ื ื™ื™ึท ืึทื“ืจืขืก ืื™ืŸ ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ. ื‘ื™ื˜ืข ื˜ืึธืŸ ืึทื– ืื™ืŸ ื“ืขืจ ืึธื ื–ืึธื’, ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ื™ ื˜ืึธืžื‘ืึทื ืง ืื•ืŸ ื“ื™ ื ื™ื™ึทืข ืึทื“ืจืขืก, ืžื™ืจ ืื•ื™ืš ืึทืจื™ื‘ืขืจืคื™ืจืŸ action ื 7-ื‘ื™ืกืœ ื™ื ื˜ืึทื“ื–ืฉืขืจ ื ื™ื˜-ื ืขื’ืึทื˜ื™ื•ื• ื ื•ืžืขืจ, ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ืขืก, ืžื™ืจ ื•ื•ืขืœืŸ ืงืœื™ื™ึทื‘ืŸ ื•ื•ื™ ืฆื• ืคึผืจืึธืฆืขืก ื“ืขื ืึธื ื–ืึธื’ ืื™ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜.

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

ืื™ืŸ ื“ื™ ืคึผืจืึธื‘ืข ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื•ื•ื™ ืกืžืึทืจื˜ ืงืึธื ื˜ืจืึทืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ ืื™ื– ื“ืขืกืขืจื™ืึทืœื™ื™ื–ื“ storage ืื™ืŸ ืคื™ืคื˜. ื“ืขืกืขืจื™ืึทืœื™ื–ืึทื˜ื™ืึธืŸ ืคื•ืŸ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื™ื– ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ ื“ื™ ืคื™ืคื˜ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ.

ืฉืึทืคึฟืŸ ืึท ืœื™ื ืง ืžื™ื˜ ืฆื•ื’ืขืœื™ื™ื’ื˜ ื˜ื™ื™ื’.

ื–ืืœ ืก ืœื•ื™ืคืŸ ื“ื™ ืคึผืจืึธื‘ืข ืื•ืŸ ืžืึทื›ืŸ ื–ื™ื›ืขืจ ืขืก ืคื™ื™ืœื–. ืื™ืฆื˜ ืœืึธื–ืŸ ืก ืœื™ื™ื’ืŸ ืœืึธื’ื™ืง ืฆื• ื˜ื•ื™ืฉืŸ ื“ื™ ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ืœืึธื˜ืขืจื™ืข ื‘ืึทื–ื™ืฆืขืจ.

ืื™ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืžื™ืจ ืคืึธืจื–ืขืฆืŸ ืฆื• ืคึผืึทืจืก message, ืœื™ื™ืขื ืขืŸ ืื™ืŸ action. ืœืืžื™ืจ ืื™ื™ืš ื“ืขืจืžืื ืขืŸ ืื– ืžื™ืจ ื•ื•ืขืœืŸ ื”ืื‘ืŸ ืฆื•ื•ื™ื™ action: ื˜ื•ื™ืฉืŸ ืึทื“ืจืขืก ืื•ืŸ ืฉื™ืงืŸ ื’ืจืึทืžื–.

ื“ืขืจื ืึธืš ืžื™ืจ ืœื™ื™ืขื ืขืŸ ื“ื™ ื ื™ื™ึทืข ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ืงืึธื ื˜ืจืึทืงื˜ ื‘ืึทื–ื™ืฆืขืจ ืื•ืŸ ืจืึทื˜ืขื•ื•ืขืŸ ืขืก ืื™ืŸ ืกื˜ืึธืจื™ื“ื–ืฉ.
ืžื™ืจ ืœื•ื™ืคืŸ ื“ื™ ื˜ืขืกืฅ ืื•ืŸ ื–ืขืŸ ืึทื– ื“ื™ ื“ืจื™ื˜ ืคึผืจื•ื‘ื™ืจืŸ ืคื™ื™ืœื–. ืขืก ืงืจืึทืฉื™ื– ืจืขื›ื˜ ืฆื• ื“ืขื ืคืึทืงื˜ ืึทื– ื“ืขืจ ืึธืคึผืžืึทืš ืื™ืฆื˜ ืึทื“ื™ืฉื ืึทืœื™ ืคึผืึทืจืกืขืก 7 ื‘ื™ื˜ืŸ ืคื•ืŸ ื“ื™ ืึธื ื–ืึธื’, ื•ื•ืึธืก ื–ืขื ืขืŸ ืคืขืœื ื“ื™ืง ืื™ืŸ ื“ื™ ืคึผืจืึธื‘ืข. ืœื™ื™ื’ ืึท ื ื™ื˜-ืขื’ื–ื™ืกื˜ืึทื ื˜ ืื™ื™ื ืขืจ ืฆื• ื“ื™ ืึธื ื–ืึธื’ action. ื–ืืœ ืก ืœื•ื™ืคืŸ ื“ื™ ื˜ืขืกืฅ ืื•ืŸ ื–ืขืŸ ืึทื– ืึทืœืฅ ืคึผืึทืกื™ื–. ื“ืึธ ื™ื‘ืขืจื’ืขื‘ืŸ ืฆื• ืขื ื“ืขืจื•ื ื’ืขืŸ. ื’ืจื•ื™ืก.

ืื™ืฆื˜ ืœืึธื–ืŸ ืื•ื ื“ื– ืฉืจื™ื™ึทื‘ืŸ ื“ื™ ืœืึธื’ื™ืง ืคึฟืึทืจ ืฉื™ืงืŸ ื“ื™ ืกืคึผืขืกื™ืคื™ืขื“ ื ื•ืžืขืจ ืคื•ืŸ ื’ืจืึทืžื– ืฆื• ื“ื™ ืคืจื™ืขืจ ื’ืขืจืื˜ืขื•ื•ืขื˜ ืึทื“ืจืขืก.

ืงื•ื“ื ืœืืžื™ืจ ืฉืจื™ื™ื‘ืŸ ื ืคืจืื‘ืข. ืžื™ืจ ื•ื•ืขืœืŸ ืฉืจื™ื™ึทื‘ืŸ ืฆื•ื•ื™ื™ ื˜ืขืกืฅ, ืื™ื™ื ืขืจ ื•ื•ืขืŸ ืขืก ืื™ื– ื ื™ืฉื˜ ื’ืขื ื•ื’ ื•ื•ืึธื’, ื“ื™ ืฆื•ื•ื™ื™ื˜ืข ื•ื•ืขืŸ ืึทืœืฅ ื–ืึธืœ ื“ื•ืจื›ื’ื™ื™ืŸ ื”ืฆืœื—ื”. ื˜ืขืกืฅ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื•ื•ื™ื•ื“ ืื™ืŸ ื“ืขื ื™ื‘ืขืจื’ืึทื ื’.

ืื™ืฆื˜ ืœืึธื–ืŸ ืก ืœื™ื™ื’ืŸ ื“ืขื ืงืึธื“. ืงื•ื“ื ืœืืžื™ืจ ืฉืจื™ื™ื‘ืŸ ืฆื•ื•ื™ื™ ื”ืขืœืคืขืจ ืžืขื˜ืื“ืŸ. ื“ืขืจ ืขืจืฉื˜ืขืจ ื‘ืึทืงื•ืžืขืŸ ืื•ืคึฟืŸ ืื™ื– ืฆื• ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืงืจืึทื ื˜ ื•ื•ืึธื’ ืคื•ืŸ ืึท ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜.

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

ืื•ืŸ ื“ื™ ืฆื•ื•ื™ื™ื˜ืข ืื™ื– ืคึฟืึทืจ ืฉื™ืงืŸ ื’ืจืึทืžื– ืฆื• ืืŸ ืื ื“ืขืจ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜. ืื™ืš ื’ืึธืจ ืงืึทืคึผื™ื“ ื“ืขื ืื•ืคึฟืŸ ืคื•ืŸ ืืŸ ืื ื“ืขืจ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜.

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

ืœืึธืžื™ืจ ืœื™ื™ื’ืŸ ื“ื™ ืฆื•ื•ื™ื™ ืžืขื˜ื”ืึธื“ืก ืฆื• ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื•ืŸ ืฉืจื™ื™ึทื‘ืŸ ื“ื™ ืœืึธื’ื™ืง. ืขืจืฉื˜ืขืจ, ืžื™ืจ ืคึผืึทืจืก ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื’ืจืึทืžื– ืคื•ืŸ ื“ืขื ืึธื ื–ืึธื’. ื•ื•ื™ื™ึทื˜ืขืจ ืžื™ืจ ืงืึธื ื˜ืจืึธืœื™ืจืŸ ื“ื™ ื•ื•ืึธื’, ืื•ื™ื‘ ืขืก ืื™ื– ื ื™ืฉื˜ ื’ืขื ื•ื’ ืžื™ืจ ื•ื•ืึทืจืคืŸ ืึท ื•ื™ืกื ืขื. ืื•ื™ื‘ ืึทืœืฅ ืื™ื– ื’ื•ื˜, ืžื™ืจ ืฉื™ืงืŸ ื“ื™ ื’ืจืึทืžื– ืฆื• ื“ื™ ื’ืขืจืื˜ืขื•ื•ืขื˜ ืึทื“ืจืขืก ืื•ืŸ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ื“ื™ ื˜ืึธืžื‘ืึทื ืง.

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

ืึทื–ื•ื™ ืงื•ืงื˜ ื•ื•ื™ ื“ืขืจ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื™ืŸ ื“ืขื ืžืึธืžืขื ื˜. ื–ืืœ ืก ืœื•ื™ืคืŸ ื“ื™ ื˜ืขืกืฅ ืื•ืŸ ืžืึทื›ืŸ ื–ื™ื›ืขืจ ื–ื™ื™ ืคืึธืจืŸ.

ื“ื•ืจืš ื“ืขื ื•ื•ืขื’, ืึท ืงืึธืžื™ืกื™ืข ืื™ื– ื“ื™ื“ืึทืงื˜ื™ื“ ืคื•ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ื™ืขื“ืขืจ ืžืึธืœ ืคึฟืึทืจ ืึท ืคึผืจืึทืกืขืกื˜ ืึธื ื–ืึธื’. ืื™ืŸ ืกื“ืจ ืคึฟืึทืจ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืึทืจื˜ื™ืงืœืขืŸ ืฆื• ื•ื™ืกืคื™ืจืŸ ื“ื™ ื‘ืงืฉื”, ื ืึธืš ื™ืงืขืจื“ื™ืง ื˜ืฉืขืงืก ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืจื•ืคืŸ accept_message().

ืื™ืฆื˜ ืœืึธื–ืŸ ืก ืžืึทืš ืื•ื™ืฃ ืฆื• ื™ื ืขืจืœืขืš ืึทืจื˜ื™ืงืœืขืŸ. ืื™ืŸ ืคืึทืงื˜, ืžื™ืจ ื•ื•ืขืœืŸ ื‘ืœื•ื™ื– ืึธื ื ืขืžืขืŸ ื’ืจืึทืžื– ืื•ืŸ ืฉื™ืงืŸ ืฆื•ืจื™ืง ื˜ืึธืคึผืœ ื“ื™ ืกื•ืžืข ืฆื• ื“ื™ ืฉืคึผื™ืœืขืจ ืื•ื™ื‘ ืขืจ ื•ื•ื™ื ืก ืื•ืŸ ืึท ื“ืจื™ื˜ ืฆื• ื“ื™ ื‘ืึทื–ื™ืฆืขืจ ืื•ื™ื‘ ืขืจ ืคืืจืœื™ืจื˜.

ืขืจืฉื˜ืขืจ, ืœืึธืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืึท ืคึผืฉื•ื˜ ืคึผืจืึธื‘ืข. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืึท ืคึผืจืึธื‘ืข ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืคื•ืŸ ื•ื•ืึธืก ืžื™ืจ ืกืึทืคึผืึธื•ื–ืึทื“ืœื™ ืฉื™ืงืŸ ื’ืจืึทืžื– ืฆื• ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜.

ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืึทื“ืจืขืก ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ืฆื•ื•ื™ื™ ื ื•ืžืขืจืŸ, ืึท 32-ื‘ื™ืกืœ ื™ื ื˜ืึทื“ื–ืฉืขืจ ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ื“ื™ ื•ื•ืึธืจืงื˜ืฉืึทื™ืŸ ืื•ืŸ ืึท 256-ื‘ื™ืกืœ ื ื™ื˜-ื ืขื’ืึทื˜ื™ื•ื• ื™ื ื˜ืึทื“ื–ืฉืขืจ ื™ื™ื ืฆื™ืง ื—ืฉื‘ื•ืŸ ื ื•ืžืขืจ ืื™ืŸ ื“ืขื ื•ื•ืึธืจืงื˜ืฉืึทื™ืŸ. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, -1 ืื•ืŸ 12345, ื“ืึธืก ืื™ื– ื“ื™ ืึทื“ืจืขืก ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ืจืึทื˜ืขื•ื•ืขืŸ ืื™ืŸ ืึท ื˜ืขืงืข.

ืื™ืš ืงืึทืคึผื™ื“ ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืคึฟืึทืจ ืฉืคึผืึธืจืŸ ื“ื™ ืึทื“ืจืขืก ืคึฟื•ืŸ TonUtil.fif.

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

ืœืึธืžื™ืจ ื–ืขืŸ ื•ื•ื™ ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืึทืจื‘ืขื˜, ื“ืึธืก ื•ื•ืขื˜ ื’ืขื‘ืŸ ืึท ืคืืจืฉื˜ืื ื“ ืคื•ืŸ ื•ื•ื™ Fift ืึทืจื‘ืขื˜. ืงืึทื˜ืขืจ Fift ืื™ืŸ ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื• ืžืึธื“ืข.

~/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 ืงืกื ื•ืžืงืก, action 2 ืื•ืŸ 9.5 ื’ืจืึทืžื– ืคึฟืึทืจ ืฉื™ืงืŸ.

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

ื“ื• ื–ืืœืกื˜ ื ื™ืฉื˜ ืคืึทืจื’ืขืกืŸ ืฆื• ืฆื™ื™ื›ืŸ ื“ื™ ืึธื ื–ืึธื’ ืžื™ื˜ ื“ื™ื™ืŸ ืคึผืจื™ื•ื•ืึทื˜ ืฉืœื™ืกืœ lottery.pk, ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืคืจื™ืขืจ ื•ื•ืขืŸ ืงืจื™ื™ื™ื˜ื™ื ื’ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜. ื“ืึธ ืื™ื– ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ื™ื‘ืขืจื’ืขื‘ืŸ.

ืจื™ืกื™ื•ื•ื™ื ื’ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ืึท ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ื ื™ืฆืŸ ื‘ืึทืงื•ืžืขืŸ ืžืขื˜ื”ืึธื“ืก

ืื™ืฆื˜ ืœืึธื–ืŸ ืก ืงื•ืง ืื™ืŸ ื•ื•ื™ ืฆื• ืœื•ื™ืคืŸ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ื‘ืึทืงื•ืžืขืŸ ืžืขื˜ื”ืึธื“ืก.

ืงืึทื˜ืขืจ lite-client ืื•ืŸ ืœื•ื™ืคืŸ ื“ื™ ื‘ืึทืงื•ืžืขืŸ ืžืขื˜ื”ืึธื“ืก ื•ื•ืึธืก ืžื™ืจ ื’ืขืฉืจื™ื‘ืŸ.

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

ะ’ result ื›ึผื•ืœืœ ื“ื™ ื•ื•ืขืจื˜ ื•ื•ืึธืก ื“ื™ ืคึฟื•ื ืงืฆื™ืข ืงืขืจื˜ balance() ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜.
ืžื™ืจ ื•ื•ืขืœืŸ ื˜ืึธืŸ ื“ื™ ื–ืขืœื‘ืข ืคึฟืึทืจ ืขื˜ืœืขื›ืข ืžืขืจ ืžืขื˜ื”ืึธื“ืก.

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

ื–ืืœ ืก ืคืจืขื’ืŸ ืคึฟืึทืจ ื“ื™ื™ืŸ ื’ืขื•ื•ืขื˜ ื’ืขืฉื™ื›ื˜ืข.

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

ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ืœื™ื™ื˜-ืงืœื™ืขื ื˜ ืื•ืŸ ื‘ืึทืงื•ืžืขืŸ ืžืขื˜ื”ืึธื“ืก ืฆื• ื•ื•ื™ื™ึทื–ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ืขื ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื•ื™ืฃ ื“ืขื ืคึผืœืึทืฅ.

ื•ื•ื™ื™ึทื–ื ื“ื™ืง ืกืžืึทืจื˜ ืงืึธื ื˜ืจืึทืงื˜ ื“ืึทื˜ืŸ ืื•ื™ืฃ ื“ืขื ื•ื•ืขื‘ื–ื™ื™ื˜ืœ

ืื™ืš ื’ืขืฉืจื™ื‘ืŸ ืึท ืคึผืฉื•ื˜ ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ ืฆื• ื•ื•ื™ื™ึทื–ืŸ ื“ื™ ื“ืึทื˜ืŸ ืคื•ืŸ ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ืื•ื™ืฃ ืึท ื‘ืึทืงื•ื•ืขื ื•ื•ืขื’. ื“ื ื•ื•ืขืœ ืื™ืš ื–ื™ืš ื ื™ืฉื˜ ืืคืฉื˜ืขืœืŸ ืื™ืŸ ื“ืขื˜ืึทืœ ืื•ืŸ ื•ื•ืขืœ ืืจื•ื™ืกื’ืขื‘ืŸ ื“ืขื ืคึผืœืึทืฅ ืื™ืŸ ืื™ื™ืŸ ื™ื‘ืขืจื’ืึทื ื’.

ืจื™ืงื•ื•ืขืก ืฆื• TON ื–ืขื ืขืŸ ื’ืขืžืื›ื˜ ืคื•ืŸ Python ื“ื•ืจืš lite-client. ืคึฟืึทืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ืก, ื“ื™ ืคึผืœืึทืฅ ืื™ื– ืคึผืึทืงื™ื“ื–ืฉื“ ืื™ืŸ ื“ืึธืงืงืขืจ ืื•ืŸ ืืจื•ื™ืก ืื•ื™ืฃ Google ืงืœืึธื•ื“. ืœื™ื ืง.

ื˜ืจื™ื™ื ื’

ืื™ืฆื˜ ืœืึธืžื™ืจ ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ืฉื™ืงืŸ ื’ืจืึทืžื– ื“ืึธืจื˜ ืคึฟืึทืจ ืจื™ืคึผืœืขื ื™ืฉืžืึทื ื˜ ืคื•ืŸ ื‘ื™ื™ึทื˜ืœ. ืžื™ืจ ื•ื•ืขืœืŸ ืฉื™ืงืŸ 40 ื’ืจืึทืžื–. ืื•ืŸ ืœืึธื–ืŸ ืก ืžืึทื›ืŸ ืึท ืคึผืึธืจ ืคื•ืŸ ื‘ืขืฅ ืคึฟืึทืจ ืงืœืขืจื™ื˜ื™. ืžื™ืจ ื–ืขืŸ ืึทื– ื“ืขืจ ืคึผืœืึทืฅ ื•ื•ื™ื™ื–ื˜ ื“ื™ ื’ืขืฉื™ื›ื˜ืข ืคื•ืŸ โ€‹โ€‹ื‘ืขืฅ, ื“ื™ ืงืจืึทื ื˜ ื•ื•ื™ื ื™ื ื’ ืคึผืจืึธืฆืขื ื˜ ืื•ืŸ ืื ื“ืขืจืข ื ื•ืฆื™ืง ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข.

ืžื™ืจ ื–ืขื”ืŸืึทื– ืžื™ืจ ื”ืึธื‘ืŸ ื’ืขื•ื•ื•ึผื ืขืŸ ื“ืขื ืขืจืฉื˜ืŸ, ืคึฟืึทืจืœื•ื™ืจืŸ ื“ืขื ืฆื•ื•ื™ื™ื˜ืŸ.

ืึทืคื˜ืขืจื•ื•ืึธืจื“

ื“ืขืจ ืืจื˜ื™ืงืœ ื”ืื˜ ื–ื™ืš ืืจื•ื™ืกื’ืขื•ื•ื™ื–ืŸ ืืกืืš ืœืขื ื’ืขืจ ื•ื•ื™ ืื™ืš ื”ืื‘ ื–ื™ืš ื’ืขืจื™ื›ื˜, ืืคืฉืจ ื”ืื˜ ืขืก ื’ืขืงืขื ื˜ ื–ื™ื™ืŸ ืงื™ืจืฆืขืจ, ืื“ืขืจ ืืคืฉืจ ืกืชื ืคืืจ ื ืžืขื ื˜ืฉ ื•ื•ืืก ื•ื•ื™ื™ืกื˜ ื’ืืจื ื™ืฉื˜ ืคื•ืŸ TON ืื•ืŸ ื•ื•ื™ืœ ืฉืจื™ื™ื‘ืŸ ืื•ืŸ ืคืืจืขืคื ื˜ืœืขื›ืŸ ื ื ื™ืฉื˜ ืคืฉื•ื˜ืข ืงืœื•ื’ืข ืงืื ื˜ืจืืงื˜ ืžื™ื˜ ื“ื™ ืžืขื’ืœื™ื›ืงื™ื™ื˜ ื–ื™ืš ืฆื• ืื™ื ื˜ืขืจืืงืฆื™ืขืŸ ืžื™ื˜ ืขืก. ืืคืฉืจ ื”ืื˜ ืžืขืŸ ื’ืขืงืขื ื˜ ืคืืจืขื ื˜ืคืขืจืŸ ืขื˜ืœืขื›ืข ื–ืื›ืŸ ืคืฉื•ื˜ืขืจ.

ื˜ืึธืžืขืจ ืขื˜ืœืขื›ืข ืึทืกืคึผืขืงืฅ ืคื•ืŸ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืงืขืŸ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืžืขืจ ื™ืคื™ืฉืึทื ื˜ืœื™ ืื•ืŸ ืขืœืขื’ืึทื ื˜, ืึธื‘ืขืจ ื“ืขืžืึธืœื˜ ืขืก ื•ื•ืึธืœื˜ ื”ืึธื‘ืŸ ื’ืขื ื•ืžืขืŸ ืืคื™ืœื• ืžืขืจ ืฆื™ื™ื˜ ืฆื• ืฆื•ื’ืจื™ื™ื˜ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ. ืขืก ืื™ื– ืื•ื™ืš ืžืขื’ืœืขืš ืึทื– ืื™ืš ื’ืขืžืื›ื˜ ืึท ื’ืจื™ื™ึทื– ืขืจื’ืขืฅ ืึธื“ืขืจ ื˜ืึธืŸ ื ื™ื˜ ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืขืคึผืขืก, ืึทื–ื•ื™ ืื•ื™ื‘ ืื™ืจ ื˜ืึธืŸ ืขืคึผืขืก ืขืจื ืกื˜, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืคืึทืจืœืึธื–ื  ื–ื™ืš ื“ื™ ื‘ืึทืึทืžื˜ืขืจ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ืึธื“ืขืจ ื“ื™ ื‘ืึทืึทืžื˜ืขืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืžื™ื˜ ื“ื™ TON ืงืึธื“.

ืขืก ื–ืึธืœ ื–ื™ื™ืŸ ืื ื’ืขื•ื•ื™ื–ืŸ ืึทื– ื–ื™ื ื˜ TON ื–ื™ืš ืื™ื– ื ืึธืš ืื™ืŸ ื“ื™ ืึทืงื˜ื™ื•ื• ืกื˜ืึทื’ืข ืคื•ืŸ โ€‹โ€‹ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’, ืขื ื“ืขืจื•ื ื’ืขืŸ ืงืขื ืขืŸ ืคึผืึทืกื™ืจืŸ ื•ื•ืึธืก ื•ื•ืขื˜ ื‘ืจืขื›ืŸ ืงื™ื™ืŸ ืคื•ืŸ ื“ื™ ืกื˜ืขืคึผืก ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ (ื•ื•ืึธืก ื’ืขื˜ืจืืคืŸ ื‘ืฉืขืช ืื™ืš ืฉืจื™ื™ื‘ืŸ, ืขืก ืื™ื– ืฉื•ื™ืŸ ืงืขืจืขืงื˜ืึทื“), ืึธื‘ืขืจ ื“ืขืจ ืึทืœื’ืขืžื™ื™ืŸ ืฆื•ื’ืึทื ื’ ืื™ื– ืึทื ืœื™ื™ืงืœื™ ืฆื• ื˜ื•ื™ืฉืŸ.

ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื“ื™ ืฆื•ืงื•ื ืคึฟื˜ ืคื•ืŸ TON. ื˜ืึธืžืขืจ ื“ื™ ืคึผืœืึทื˜ืคืึธืจืžืข ื•ื•ืขื˜ ื•ื•ืขืจืŸ ืขืคึผืขืก ื’ืจื•ื™ืก ืื•ืŸ ืžื™ืจ ื–ืึธืœ ืคืึทืจื‘ืจืขื ื’ืขืŸ ืฆื™ื™ื˜ ืฆื• ืœืขืจื ืขืŸ ืขืก ืื•ืŸ ืคึผืœืึธืžื‘ื™ืจืŸ ืึท ื ื™ืฉืข ืžื™ื˜ ืื•ื ื“ื–ืขืจ ืคึผืจืึธื“ื•ืงื˜ืŸ ืื™ืฆื˜.

ืขืก ืื™ื– ืื•ื™ืš ืœื™ื‘ืจืึท ืคึฟื•ืŸ ืคืึทืกืขื‘ืึธืึธืง, ื•ื•ืึธืก ื”ืื˜ ืึท ืคึผืึธื˜ืขื ืฆื™ืขืœ ื•ื™ืœืขื ืคื•ืŸ ื ื™ืฆืขืจืก ื’ืจืขืกืขืจ ื•ื•ื™ TON. ื•ื•ืขื’ืŸ ืœื™ื‘ืจืึท ื•ื•ื™ื™ืก ืื™ืš ื›ึผืžืขื˜ ื’ืึธืจื ื™ืฉื˜, ืœื•ื™ื˜ืŸ ืคืึธืจื•ื ืื™ื– ื“ืึธืจื˜ ืึท ืกืš ืžืขืจ ืึทืงื˜ื™ื•ื•ื™ื˜ืขื˜ ื•ื•ื™ ืื™ืŸ ื“ื™ TON ืงื”ืœ. ื›ืึธื˜ืฉ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืื•ืŸ ืงื”ืœ ืคื•ืŸ TON ื–ืขื ืขืŸ ืžืขืจ ื•ื•ื™ ื•ื ื˜ืขืจืขืจื“, ื•ื•ืึธืก ืื™ื– ืื•ื™ืš ืงื™ืœ.

ืจืขืคึฟืขืจืขื ืฆืŸ

  1. ืึทืคื™ืฉืึทืœ TON ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ: https://test.ton.org
  2. ืึทืคื™ืฉืึทืœ TON ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™: https://github.com/ton-blockchain/ton
  3. ืึทืคื™ืฉืึทืœ ื‘ื™ื™ึทื˜ืœ ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืขื ืข ืคึผืœืึทื˜ืคืึธืจืžืก: https://wallet.ton.org
  4. ืกืžืึทืจื˜ ืงืึธื ื˜ืจืึทืงื˜ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ: https://github.com/raiym/astonished
  5. ืœื™ื ืง ืฆื• ื“ื™ ืงืœื•ื’ ืงืึธื ื˜ืจืึทืงื˜ ื•ื•ืขื‘ื–ื™ื™ื˜ืœ: https://ton-lottery.appspot.com
  6. ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืคึฟืึทืจ ื“ื™ ืคืึทืจืœืขื ื’ืขืจื•ื ื’ ืคึฟืึทืจ ื•ื•ื™ืกื•ืึทืœ ืกื˜ื•ื“ื™ืึธ ืงืึธื“ ืคึฟืึทืจ FunC: https://github.com/raiym/func-visual-studio-plugin
  7. ืฉืžื•ืขืกืŸ ื•ื•ืขื’ืŸ TON ืื™ืŸ ื˜ืขืœืขื’ืจืึทื, ื•ื•ืึธืก ื˜ืึทืงืข ื’ืขื”ืึธืœืคึฟืŸ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืขืก ืื™ืŸ ื“ืขืจ ืขืจืฉื˜ ื‘ื™ื ืข. ืื™ืš ืžื™ื™ืŸ ืื– ืขืก ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืงื™ื™ืŸ ื˜ืขื•ืช ืื•ื™ื‘ ืื™ืš ื–ืื’ ืื– ื™ืขื“ืขืจ ื•ื•ืืก ื”ืื˜ ื’ืขืฉืจื™ื‘ืŸ ืขืคืขืก ืคืืจ TON ืื™ื– ื“ืืจื˜. ืื™ืจ ืงืขื ืขืŸ ืื•ื™ืš ืคืจืขื’ืŸ ืคึฟืึทืจ ืคึผืจื•ื‘ื™ืจืŸ ื’ืจืึทืžื– ื“ืึธืจื˜. https://t.me/tondev_ru
  8. ืืŸ ืื ื“ืขืจ ืฉืžื•ืขืก ื•ื•ืขื’ืŸ TON ืื™ืŸ ื•ื•ืึธืก ืื™ืš ื’ืขืคึฟื•ื ืขืŸ ื ื•ืฆื™ืง ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข: https://t.me/TONgramDev
  9. ื“ืขืจ ืขืจืฉื˜ืขืจ ื‘ื™ื ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืคืึทืจืžืขืกื˜: https://contest.com/blockchain
  10. ืฆื•ื•ื™ื™ื˜ืข ื‘ื™ื ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืคืึทืจืžืขืกื˜: https://contest.com/blockchain-2

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’