แ‰ แ‰ดแˆŒแŒแˆซแˆ แŠญแแ‰ต แŠ แ‹แ‰ณแˆจแˆ˜แˆจแ‰ฅ (แ‰ถแŠ•) แ‹แˆตแŒฅ แ‰ฅแˆแˆ… แ‹แˆ แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแˆšแƒแ แŠฅแŠ“ แŠฅแŠ•แ‹ฐแˆšแ‰ณแ‰ฐแˆ

แ‰ แ‰ถแŠ• แ‹แˆตแŒฅ แ‰ฅแˆแŒฅ แ‹แˆ แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแˆšแƒแ แŠฅแŠ“ แŠฅแŠ•แ‹ฐแˆšแ‰ณแ‰ฐแˆ

แ‹ญแˆ… แŒฝแˆ‘แ แˆตแˆˆ แˆแŠ•แ‹ตแŠ• แАแ‹?

แ‰ แŒฝแˆแ‰ แ‹แˆตแŒฅ แ‰ แˆ˜แŒ€แˆ˜แˆชแ‹ซแ‹ (แŠจแˆแˆˆแ‰ต) แ‹จแ‰ดแˆŒแŒแˆซแˆ แ‹จแ‰ฅแˆŽแŠญแ‰ผแ‹ญแŠ• แ‹แ‹ตแ‹ตแˆญ แ‹แˆตแŒฅ แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแ‰ฐแˆณแ‰ฐแแŠฉ แŠฅแŠ“ แˆฝแˆแˆ›แ‰ต แŠฅแŠ•แ‹ณแˆแ‹ˆแˆฐแ‹ตแŠฉ แŠฅแŠ“ แ‹ˆแ‹ฐ แŠฅแˆญแˆณแ‰ต แ‹แˆตแŒฅ แŠฅแŠ•แ‹ณแ‹ญแŒˆแ‰ฃ แŠฅแŠ“ แˆแŠ“แˆแ‰ฃแ‰ตแˆ แŠฅแŠ•แ‹ฐแˆšแˆจแ‹ณแŠ แ‰ แŠ แŠ•แ‹ต แŒฝแˆ‘แ แ‹แˆตแŒฅ แˆแˆแ‹ดแŠ• แˆˆแˆ˜แˆ˜แ‹แŒˆแ‰ฅ แ‹ˆแˆฐแŠ•แŠฉ แข แŠ แŠ•แ‹ต แˆฐแ‹.

แŠ แ‰ฅแˆตแ‰ตแˆซแŠญแ‰ต แŠฎแ‹ต แˆ˜แŒปแ แˆตแˆˆแˆ›แˆแˆแˆแŒ แАแŒˆแˆญ แŒแŠ• แ‹จแˆšแˆฐแˆซ แАแŒˆแˆญ แˆˆแˆ˜แˆตแˆซแ‰ตแฃ แˆˆแŒฝแˆแ‰ แˆˆแˆแŒฃแŠ• แˆŽแ‰ฐแˆช แ‰ฅแˆแŒฅ แ‹แˆ แŒปแแŠฉแŠ แŠฅแŠ“ แˆ˜แŠซแŠจแˆˆแŠ› แˆ›แŠจแˆ›แ‰ป แˆณแ‹ญแŒ แ‰€แˆ แ‹จแˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ต แˆ˜แˆจแŒƒแŠ• แ‰ แ‰€แŒฅแ‰ณ แŠจ แ‰ถแŠ• แ‹จแˆšแ‹ซแˆณแ‹ญ แ‹ตแˆญ แŒฃแ‰ขแ‹ซ แŒปแแŠฉแข

แŒฝแˆ‘แ‰ แ‰  แ‰ถแŠ• แ‹แˆตแŒฅ แ‹จแˆ˜แŒ€แˆ˜แˆชแ‹ซแ‹แŠ• แ‹˜แˆ˜แŠ“แ‹Š แ‹แˆ แˆˆแˆ˜แˆฅแˆซแ‰ต แˆˆแˆšแˆแˆแŒ‰ แˆฐแ‹Žแ‰ฝ แŒ แ‰ƒแˆš แ‹ญแˆ†แŠ“แˆ, แАแŒˆแˆญ แŒแŠ• แ‹จแ‰ต แˆ˜แŒ€แˆ˜แˆญ แŠฅแŠ•แ‹ณแˆˆแ‰ฃแ‰ธแ‹ แŠ แ‹ซแ‹แ‰แˆ.

แˆŽแ‰ฐแˆชแ‹แŠ• แŠฅแŠ•แ‹ฐ แˆแˆณแˆŒ แ‰ แˆ˜แŒ แ‰€แˆ แŠ แŠซแ‰ฃแ‰ขแŠ• แŠจแˆ˜แŒซแŠ• แ‹ˆแ‹ฐ แˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ต แˆ›แ‰ฐแˆแฃ แŠจแˆฑ แŒ‹แˆญ แˆ˜แˆตแ‰ฐแŒ‹แ‰ฅแˆญ แŠฅแŠ“ แˆ˜แˆจแŒƒ แˆˆแˆ˜แ‰€แ‰ แˆ แŠฅแŠ“ แˆˆแˆ›แ‰ฐแˆ แ‹ตแˆจ-แŒˆแŒฝ แ‰ แˆ˜แŒปแ แŠฅแˆ„แ‹ณแˆˆแˆแข

แˆตแˆˆ แ‹แ‹ตแ‹ตแˆญ แ‰ฐแˆณแ‰ตแŽ

แ‰ฃแˆˆแˆแ‹ แŒฅแ‰…แˆแ‰ตแฃ แ‰ดแˆŒแŒแˆซแˆ แŠจแŠ แ‹ณแ‹ฒแˆต แ‰‹แŠ•แ‰‹แ‹Žแ‰ฝ แŒ‹แˆญ แ‹จแ‰ฅแˆŽแŠญแ‰ผแ‹ญแŠ• แ‹แ‹ตแ‹ตแˆญแŠ• แŠ แˆตแ‰ณแ‹แ‰‹แˆ Fift ะธ FunC. แŠจแŠ แˆแˆตแ‰ฑ แ‹จแ‰ณแ‰€แ‹ฑ แ‹˜แˆ˜แŠ“แ‹Š แŠฎแŠ•แ‰ตแˆซแ‰ถแ‰ฝ แ‹แˆตแŒฅ แˆ›แŠ•แŠ›แ‹แŠ•แˆ แŠจแˆ˜แŒปแ แˆ˜แˆแˆจแŒฅ แŠ แˆตแˆแˆ‹แŒŠ แАแ‰ แˆญ. แ‹ˆแ‹ฐแŠแ‰ต แˆแŠ•แˆ แˆ˜แŒปแ แ‰ฃแ‹ญแŠ–แˆญแ‰ฅแŠแˆ แ‹จแ‰ฐแˆˆแ‹จ แАแŒˆแˆญ แ‰ฅแˆ แˆซแฃ แ‰‹แŠ•แ‰‹ แ‰ฅแˆ›แˆญแŠ“ แŠ แŠ•แ‹ต แАแŒˆแˆญ แ‰ฅแˆ แˆซ แŒฅแˆฉ แˆ˜แˆตแˆŽแŠ แАแ‰ แˆญแข แ‰ แ‰ฐแŒจแˆ›แˆชแˆ, แˆญแ‹•แˆฑ แ‹ซแˆˆแˆ›แ‰‹แˆจแŒฅ แ‰ แŠจแŠ•แˆแˆฎแ‰ฝ แˆ‹แ‹ญ แАแ‹.

แ‰ฅแˆแŒฅ แŠฎแŠ•แ‰ตแˆซแ‰ถแ‰ฝแŠ• แ‹จแˆ›แ‹˜แŒ‹แŒ€แ‰ต แˆแˆแ‹ต แŠ แˆแАแ‰ แˆจแŠแˆ แˆ›แˆˆแ‰ต แ‰ฐแŒˆแ‰ข แАแ‹แข

แŠฅแˆตแŠจ แˆ˜แŒจแˆจแˆปแ‹ แ‹ตแˆจแˆต แˆˆแˆ˜แˆณแ‰ฐแ แŠฅแ‰…แ‹ต แАแ‰ แˆจแŠ แŠฅแŠ“ แŠจแ‹šแ‹ซ แ‹จแŒแˆแŒˆแˆ› แŒฝแˆแ แˆˆแˆ˜แŒปแ แŠ แˆตแ‰ค แАแ‰ แˆญ, แАแŒˆแˆญ แŒแŠ• แ‰ แˆ˜แŒ€แˆ˜แˆชแ‹ซแ‹ แˆ‹แ‹ญ แ‹ˆแ‹ฒแ‹ซแ‹แŠ‘ แŠ แˆแ‰ฐแˆณแŠซแˆแŠแˆ. แŠ แ‹ญ แ‰ฆแˆญแˆณ แŒฝแแˆ แ‰ฃแˆˆ แ‰ฅแ‹™ แŠแˆญแˆ› แ‰ แˆญแ‰ถ FunC แŠฅแŠ“ แ‰ แŠ แŒ แ‰ƒแˆ‹แ‹ญ แˆ แˆญแ‰ทแˆ. แˆ˜แˆฐแˆจแ‰ต แŠ แ‹ตแˆญแŒŒ แ‹ˆแˆฐแ‹ตแŠฉแ‰ต แ‰  Solidity แˆ‹แ‹ญ แ‰ฅแˆแŒฅ แ‹แˆ.

แ‰ แ‹šแ‹ซแŠ• แŒŠแ‹œแฃ แ‹ญแˆ… แ‰ แŠฅแˆญแŒแŒ แŠแАแ‰ต แ‰ขแ‹ซแŠ•แˆต แ‹จแ‰ฐแ‹ˆแˆฐแА แ‹จแˆฝแˆแˆ›แ‰ต แ‰ฆแ‰ณ แˆˆแˆ˜แ‹แˆฐแ‹ต แ‰ แ‰‚ แАแ‹ แ‰ฅแ‹ฌ แŠ แˆตแ‰ค แАแ‰ แˆญแข แ‰ แ‹šแˆ… แˆแŠญแŠ•แ‹ซแ‰ต แŠจ40 แ‰ฐแˆณแ‰ณแŠแ‹Žแ‰ฝ แ‹แˆตแŒฅ 60 แ‹ซแˆ…แˆ‰ แ‰ฐแˆธแˆ‹แˆš แˆ†แАแ‹‹แˆ แŠฅแŠ”แˆ แŠจแŠฅแАแˆฑ แˆ˜แŠซแŠจแˆ แŠ แˆแАแ‰ แˆญแŠฉแˆแข แ‰ แŠ แŒ แ‰ƒแˆ‹แ‹ญ, แ‰ แ‹šแˆ… แ‹แˆตแŒฅ แˆแŠ•แˆ แˆตแˆ…แ‰ฐแ‰ต แ‹จแˆˆแ‰ แ‰ตแˆ, แŒแŠ• แŠ แŠ•แ‹ต แАแŒˆแˆญ แŠ แˆตแŒจแŠ•แ‰†แŠ. แ‹แŒคแ‰ฑ แ‰ แˆšแŒˆแˆˆแŒฝแ‰ แ‰ต แŒŠแ‹œ แˆˆแŠฎแŠ•แ‰ตแˆซแ‰ด แ‹จแˆแ‰ฐแŠ“ แŒแˆแŒˆแˆ› แŠ แˆแ‰ฐแŠซแˆ„แ‹ฐแˆ แАแ‰ แˆญ, แ‰ แ‰ปแ‰ต แ‹แˆตแŒฅ แ‹ซแˆ‰ แ‰ฐแˆณแ‰ณแŠแ‹Žแ‰ฝ แˆŒแˆ‹ แˆฐแ‹ แŠจแˆŒแˆˆ แˆŒแˆ‹ แˆฐแ‹ แŠซแˆˆ แŒ แ‹จแ‰…แŠณแ‰ธแ‹, แˆแŠ•แˆ แŠ แˆแАแ‰ แˆฉแˆ.

แˆˆแˆ˜แˆแŠฅแŠญแ‰ถแ‰ผ แ‰ตแŠฉแˆจแ‰ต แ‰ แˆ˜แˆตแŒ แ‰ต แ‹ญแˆ˜แˆตแˆ‹แˆ แŠจแˆแˆˆแ‰ต แ‰€แŠ“แ‰ต แ‰ แŠ‹แˆ‹ แ‹ณแŠžแ‰น แŠ แˆตแ‰ฐแ‹ซแ‹จแ‰ต แŠ แ‹ˆแŒก แŠฅแŠ“ แŠ แˆแŠ•แˆ แ‰ แ‹ณแŠแАแ‰ต แŒŠแ‹œ แ‹จแŠฅแŠ”แŠ• แ‰ฅแˆแŒฅ แ‹แˆ แ‰ แŠ แŒ‹แŒฃแˆš แŠ แˆแˆแŒ แ‹ แŠฅแŠ•แ‹ฐแˆ†แА แ‹ˆแ‹ญแˆ แ‰ แ‰€แˆ‹แˆ‰ แŠ แˆตแ‰ฐแ‹ซแ‹จแ‰ต แŠ แ‹ซแˆตแˆแˆแŒˆแ‹แˆ แ‰ฅแˆˆแ‹ แ‰ แˆ›แˆฐแ‰ฅ แŠ แˆแŠ•แˆ แŠ แˆแŒˆแ‰ฃแŠแˆแข แ‰ แŒˆแŒน แˆ‹แ‹ญ แŠ แŠ•แ‹ต แŒฅแ‹ซแ‰„ แ‰ฅแŒ แ‹ญแ‰…แˆ แˆ˜แˆแˆต แŠ แˆ‹แŒˆแŠ˜แˆแˆแข แˆแŠ•แˆ แŠฅแŠ•แŠณแŠ• แˆ›แŠ• แŠฅแŠ•แ‹ฐแˆแˆจแ‹ฐ แˆšแˆตแŒฅแˆญ แ‰ฃแ‹ญแˆ†แŠ•แˆ, แ‹จแŒแˆ แˆ˜แˆแ‹•แŠญแ‰ถแ‰ฝแŠ• แˆ˜แŒปแ แŠฅแŠ•แ‹ฐแˆ›แ‹ซแˆตแˆแˆแŒ แ‰†แŒ แˆญแŠฉ.

แ‰ แˆ˜แˆจแ‹ณแ‰ต แˆ‹แ‹ญ แ‰ฅแ‹™ แŒŠแ‹œ แŠ แˆณแˆแแˆ, แˆตแˆˆแ‹šแˆ… แŠ แŠ•แ‹ต แŒฝแˆ‘แ แˆˆแˆ˜แŒปแ แ‰ฐแ‹ˆแˆฐแА. แŒˆแŠ“ แ‰ฅแ‹™ แˆ˜แˆจแŒƒ แˆตแˆˆแˆŒแˆˆ, แ‹ญแˆ… แŒฝแˆ‘แ แแˆ‹แŒŽแ‰ต แˆ‹แˆˆแ‹ แˆแˆ‰ แŒŠแ‹œแŠ• แˆˆแˆ˜แ‰†แŒ แ‰ฅ แ‹ญแˆจแ‹ณแˆ.

แ‰ แ‰ถแŠ• แ‹แˆตแŒฅ แ‹จแˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ถแ‰ฝ แŒฝแŠ•แˆฐ-แˆ€แˆณแ‰ฅ

แˆ›แŠ•แŠ›แ‹แŠ•แˆ แАแŒˆแˆญ แŠจแˆ˜แŒปแแ‹Ž แ‰ แŠแ‰ต, แ‹ญแˆ…แŠ•แŠ• แАแŒˆแˆญ แŠจแ‹จแ‰ตแŠ›แ‹ แ‹ˆแŒˆแŠ• แŠฅแŠ•แ‹ฐแˆšแ‰€แˆญแ‰ก แˆ›แ‹ˆแ‰… แ‹ซแˆตแˆแˆแŒแ‹Žแ‰ณแˆ. แˆตแˆˆแ‹šแˆ…, แŠ แˆแŠ• แˆตแˆญแ‹“แ‰ฑ แˆแŠ• แŠญแแˆŽแ‰ฝ แŠฅแŠ•แ‹ณแˆ‰ แŠฅแАแŒแˆญแ‹Žแ‰ณแˆˆแˆ. แ‹จแ‰ แˆˆแŒ  แ‰ แ‰ตแŠญแŠญแˆ แฃ แ‰ขแ‹ซแŠ•แˆต แŠ แŠ•แ‹ต แ‹“แ‹ญแАแ‰ต แ‹จแˆฅแˆซ แ‹แˆ แˆˆแˆ˜แƒแ แˆแŠ• แŠญแแˆŽแ‰ฝ แˆ›แ‹ˆแ‰… แ‹ซแˆตแˆแˆแŒแ‹Žแ‰ณแˆแข

แ‹˜แˆ˜แŠ“แ‹Š แŠฎแŠ•แ‰ตแˆซแ‰ต แ‰ แˆ˜แŒปแ แŠฅแŠ“ แ‰ แˆ˜แˆฅแˆซแ‰ต แˆ‹แ‹ญ แŠฅแŠ“แ‰ฐแŠฉแˆซแˆˆแŠ• TON Virtual Machine (TVM), Fift ะธ FunC, แˆตแˆˆแ‹šแˆ… แŒฝแˆ‘แ‰ แŠฅแŠ•แ‹ฐ แˆ˜แ‹ฐแ‰ แŠ› แ•แˆฎแŒแˆซแˆ แŠฅแ‹ตแŒˆแ‰ต แˆ˜แŒแˆˆแŒซ แАแ‹. แˆ˜แ‹ตแˆจแŠฉ แˆซแˆฑ แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแˆšแˆฐแˆซ แŠฅแ‹šแˆ… แˆ‹แ‹ญ แŠ แŠ“แ‰ฐแŠฉแˆญแˆแข

แ‰ แŠ แŒ แ‰ƒแˆ‹แ‹ญ แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแˆšแˆฐแˆซ TVM แŠฅแŠ“ แ‰‹แŠ•แ‰‹ Fift แŒฅแˆฉ แŠฆแŠแˆดแˆ‹แ‹Š แˆฐแАแ‹ถแ‰ฝ แŠ แˆ‰. แ‰ แ‹แ‹ตแ‹ตแˆฉ แˆ‹แ‹ญ แˆตแˆณแ‰ฐแ แŠฅแŠ“ แŠ แˆแŠ• แ‹ซแˆˆแ‹แŠ• แ‹แˆ แŠฅแ‹จแƒแแŠฉ แ‰ฅแ‹™ แŒŠแ‹œ แ‹ˆแ‹ฐ แŠฅแˆท แ‹žแˆญแŠฉแข

แ‰ฅแˆแŒฅ แŠฎแŠ•แ‰ตแˆซแ‰ถแ‰ฝ แ‹จแˆšแŒปแ‰แ‰ แ‰ต แ‹‹แŠ“ แ‰‹แŠ•แ‰‹ แАแ‹แข FunC. แ‰ แŠ แˆแŠ‘ แŒŠแ‹œ แˆแŠ•แˆ แˆฐแАแ‹ต แ‹จแˆˆแˆ, แˆตแˆˆแ‹šแˆ… แŠ แŠ•แ‹ต แАแŒˆแˆญ แˆˆแˆ˜แŒปแ แŠจแŠฆแŠแˆดแˆ‹แ‹Šแ‹ แ‹จแˆ˜แˆจแŒƒ แˆ›แŒ แˆซแ‰€แˆšแ‹ซ แŠฅแŠ“ แ‹จแ‰‹แŠ•แ‰‹แ‹ แŠ แ‰ฐแŒˆแ‰ฃแ‰ แˆญ แˆแˆณแˆŒแ‹Žแ‰ฝแŠ• แˆ›แŒฅแŠ“แ‰ต แ‹ซแˆตแˆแˆแŒแ‹Žแ‰ณแˆ, แ‰ แ‰ฐแŒจแˆ›แˆชแˆ แŠซแˆˆแ‰แ‰ต แˆแˆˆแ‰ต แ‹จแˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ถแ‰ฝ แˆแˆณแˆŒแ‹Žแ‰ฝแŠ• แˆ˜แˆ˜แˆแŠจแ‰ต แ‹ญแ‰ฝแˆ‹แˆ‰. แ‹แ‹ตแ‹ตแˆฎแ‰ฝ. แ‰ แŠ แŠ•แ‰€แŒน แˆ˜แŒจแˆจแˆป แˆ‹แ‹ญ แŠ แŒˆแŠ“แŠžแ‰ฝ.

แŠ แˆตแ‰€แ‹ตแˆ˜แŠ• แ‰ฅแˆแŒฅ แ‹แˆ แŒฝแˆแŠ“แˆ แŠฅแŠ•แ‰ แˆ FunC, แŠจแ‹šแ‹ซ แ‰ แŠ‹แˆ‹ แŠฎแ‹ฑแŠ• แ‹ˆแ‹ฐ Fift assembler แŠฅแŠ•แˆฐแ‰ แˆตแ‰ฃแˆˆแŠ•.

แ‹จแ‰ฐแŒ แŠ“แ‰€แˆจแ‹ แˆตแˆ›แˆญแ‰ต แ‹แˆ แˆˆแˆ˜แ‰ณแ‰ฐแˆ แ‹ญแ‰€แˆซแˆแข แ‹ญแˆ…แŠ•แŠ• แˆˆแˆ›แ‹ตแˆจแŒ แŠ แŠ•แ‹ต แ‰ฐแŒแ‰ฃแˆญ แˆ˜แƒแ แ‹ซแˆตแˆแˆแŒแ‹Žแ‰ณแˆ Fift, แ‹ญแˆ…แˆ แ‹˜แˆ˜แŠ“แ‹Š แ‹จแŠฎแŠ•แ‰ตแˆซแ‰ต แŠฎแ‹ต แŠฅแŠ“ แŠ แŠ•แ‹ณแŠ•แ‹ต แˆŒแˆŽแ‰ฝ แˆ˜แˆˆแŠชแ‹ซแ‹Žแ‰ฝแŠ• แŠฅแŠ•แ‹ฐ แŒแ‰ฅแŠ แ‰ต แ‹จแˆšแ‹ˆแˆตแ‹ต แˆฒแˆ†แŠ• แ‹แŒคแ‰ฑแˆ แ‰…แŒฅแ‹ซแ‹ แ‹ซแˆˆแ‹ แ‹แ‹ญแˆ แ‹ญแˆ†แŠ“แˆ .boc (แˆ›แˆˆแ‰ตแˆ "แ‹จแˆดแˆŽแ‰ฝ แ‰ฆแˆญแˆณ" แˆ›แˆˆแ‰ต แАแ‹), แŠฅแŠ“, แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแˆแŠ•แŒฝแˆแ‹, แ‹จแŒแˆ แ‰แˆแ แŠฅแŠ“ แŠ แ‹ตแˆซแˆป, แ‹ญแˆ…แˆ แ‰ แˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ต แŠฎแ‹ต แˆ‹แ‹ญ แ‹จแ‰ฐแˆ˜แˆฐแˆจแ‰ฐ แАแ‹. แŠฅแˆตแŠซแˆแŠ• แ‹ซแˆแ‰ณแ‰ฐแˆ˜ แ‹จแˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ต แŠ แ‹ตแˆซแˆป แŒแˆซแˆ แˆ˜แˆ‹แŠญ แ‹ญแ‰ฝแˆ‹แˆ‰แข

แ‰  TON แ‹จแ‰ฐแ‰€แ‰ แˆˆแ‹ แ‹˜แˆ˜แŠ“แ‹Š แ‹แˆ แˆˆแˆ›แ‰ฐแˆ .boc แ‹แ‹ญแˆ‰ แ‹จแ‰ฅแˆญแˆƒแŠ• แ‹ฐแŠ•แ‰ แŠ›แŠ• แ‰ แˆ˜แŒ แ‰€แˆ แ‹ˆแ‹ฐ blockchain แˆ˜แˆ‹แŠญ แŠ แˆˆแ‰ แ‰ต (แŠจแ‹šแˆ… แ‰ แ‰ณแ‰ฝ แ‰ฃแˆˆแ‹ แ‰ฐแŒจแˆ›แˆช)แข แАแŒˆแˆญ แŒแŠ• แŠจแˆ›แ‰ฐแˆแ‹Ž แ‰ แŠแ‰ต แŒแˆซแˆ แ‹ˆแ‹ฐแ‰ฐแˆแŒ แˆจแ‹ แŠ แ‹ตแˆซแˆป แˆ›แˆตแ‰ฐแˆ‹แˆˆแ แ‹ซแˆตแˆแˆแŒแ‹Žแ‰ณแˆ, แŠ แˆˆแ‰ แˆˆแ‹šแ‹ซ แ‹˜แˆ˜แŠ“แ‹Šแ‹ แŠฎแŠ•แ‰ตแˆซแ‰ต แŠ แ‹ญแ‰ณแ‰ฐแˆแˆ. แŠจแˆ…แ‰ตแˆ˜แ‰ฑ แ‰ แŠ‹แˆ‹ แŠจแˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ฑ แŒ‹แˆญ แŠจแ‹แŒญ แˆ˜แˆแ‹•แŠญแ‰ถแ‰ฝแŠ• แ‰ แˆ˜แˆ‹แŠญ (แˆˆแˆแˆณแˆŒ แ‹จแ‰ฅแˆญแˆƒแŠ• แ‹ฐแŠ•แ‰ แŠ›แŠ• แ‰ แˆ˜แŒ แ‰€แˆ) แ‹ˆแ‹ญแˆ แŠจแ‹แˆตแŒฅ (แˆˆแˆแˆณแˆŒ แŠ แŠ•แ‹ต แ‰ฅแˆแŒฅ แŠฎแŠ•แ‰ตแˆซแ‰ต แ‰ แ‰ถแŠ• แ‹แˆตแŒฅ แˆŒแˆ‹ แˆ˜แˆแŠฅแŠญแ‰ต แ‹ญแˆแŠซแˆ) แŒ‹แˆญ แˆ˜แˆตแ‰ฐแŒ‹แ‰ฅแˆญ แˆ˜แแŒ แˆญ แ‹ญแ‰ฝแˆ‹แˆ‰แข

แŠฎแ‹ฑ แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแˆšแ‰ณแ‰ฐแˆ แŠจแ‰ฐแˆจแ‹ณแŠ• แ‰ แŠ‹แˆ‹ แ‰€แˆ‹แˆ แ‹ญแˆ†แŠ“แˆแข แˆแŠ• แˆ˜แŒปแ แŠฅแŠ•แ‹ฐแˆแŠ•แˆแˆแŒ แŠฅแŠ“ แ•แˆฎแŒแˆซแˆ›แ‰ฝแŠ• แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแˆšแˆฐแˆซ แ‰ แ‰ตแŠญแŠญแˆ แŠฅแŠ“แ‹แ‰ƒแˆˆแŠ•แข แŠฅแŠ“ แ‰ แˆšแŒฝแ‰แ‰ แ‰ต แŒŠแ‹œ, แ‹ญแˆ… แŠ แˆแŠ• แ‰ฃแˆˆแ‹ แ‹˜แˆ˜แŠ“แ‹Š แŠฎแŠ•แ‰ตแˆซแ‰ถแ‰ฝ แ‹แˆตแŒฅ แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแˆšแ‰ฐแŒˆแ‰ แˆญ แŠฅแŠ•แˆแˆแŒ‹แˆˆแŠ•, แ‹ˆแ‹ญแˆ แ‹จแŠ แ‰ฐแŒˆแ‰ฃแ‰ แˆฉแŠ• แŠฎแ‹ต แŠฅแŠ•แˆ˜แˆˆแŠจแ‰ณแˆˆแŠ• Fift ะธ FunC แ‰ แŠฆแŠแˆดแˆ‹แ‹Šแ‹ แˆ›แŠจแˆ›แ‰ป แ‹แˆตแŒฅ, แ‹ˆแ‹ญแˆ แŠฆแŠแˆดแˆ‹แ‹Š แˆฐแАแ‹ถแ‰ฝแŠ• แ‹ญแˆ˜แˆแŠจแ‰ฑ.

แ‰ฅแ‹™ แŒŠแ‹œ แˆแˆ‰แˆ แ‹จแ‹แ‹ตแ‹ตแˆญ แ‰ฐแˆณแ‰ณแŠแ‹Žแ‰ฝ แŠฅแŠ“ แ‹จแ‰ดแˆŒแŒแˆซแˆ แˆฐแˆซแ‰ฐแŠžแ‰ฝ แ‰ แ‰ฐแˆฐแ‰ แˆฐแ‰กแ‰ แ‰ต แ‹จแ‰ดแˆŒแŒแˆซแˆ แ‰ปแ‰ต แˆ‹แ‹ญ แ‰แˆแ แ‰ƒแˆ‹แ‰ตแŠ• แŠฅแˆแˆแŒ แАแ‰ แˆญ แŠฅแŠ“แˆ แ‰ แ‹แ‹ตแ‹ตแˆฉ แ‹ˆแ‰…แ‰ต แˆแˆ‰แˆ แˆฐแ‹ แŠฅแ‹šแ‹ซแ‹ แ‰ฐแˆฐแ‰ฅแˆตแ‰ แ‹ แˆตแˆˆ Fift แŠฅแŠ“ FunC แˆ˜แ‹ˆแ‹ซแ‹จแ‰ต แŒ€แˆ˜แˆฉแข แ‰ แŠ แŠ•แ‰€แŒน แˆ˜แŒจแˆจแˆป แˆ‹แ‹ญ แŠ แŒˆแŠ“แŠ.

แŠจแ‰ฒแ‹Žแˆช แ‹ˆแ‹ฐ แˆแˆแˆแ‹ต แ‹จแˆแŠ•แˆธแŒ‹แŒˆแˆญแ‰ แ‰ต แŒŠแ‹œ แАแ‹แข

แŠจ TON แŒ‹แˆญ แˆˆแˆ˜แˆตแˆซแ‰ต แŠ แŠซแ‰ฃแ‰ขแŠ• แˆ›แ‹˜แŒ‹แŒ€แ‰ต

แ‰ แˆ›แŠญแŠฆแŠคแˆต แˆ‹แ‹ญ แ‰ฃแˆˆแ‹ แŒฝแˆ‘แ แ‹แˆตแŒฅ แ‹จแˆšแŒˆแˆˆแŒนแ‰ตแŠ• แˆแˆ‰ แŠ แ‹ตแˆญแŒŒแ‹ซแˆˆแˆ แŠฅแŠ“ แ‰ แŠ•แŒนแˆ… แˆแŠ”แ‰ณ แŠฅแŠ•แ‹ฐแŒˆแŠ“ แŠ แˆจแŒ‹แŒแŒซแˆˆแˆ Ubuntu 18.04 LTS แ‰ แ‹ถแŠจแˆญ แˆ‹แ‹ญแข

แˆ›แ‹ตแˆจแŒ แ‹ซแˆˆแ‰ฅแ‹Žแ‰ต แ‹จแˆ˜แŒ€แˆ˜แˆชแ‹ซแ‹ แАแŒˆแˆญ แˆ›แ‹แˆจแ‹ต แŠฅแŠ“ แˆ˜แŒซแŠ• แАแ‹ lite-client แ‹ˆแ‹ฐ แ‰ถแŠ• แŒฅแ‹ซแ‰„แ‹Žแ‰ฝแŠ• แˆ˜แˆ‹แŠญ แ‹จแˆšแ‰ฝแˆ‰แ‰ แ‰ต.

แ‰ แŠฆแŠแˆดแˆ‹แ‹Šแ‹ แ‹ตแˆ…แˆจ แŒˆแŒฝ แˆ‹แ‹ญ แ‹ซแˆ‰แ‰ต แˆ˜แˆ˜แˆชแ‹ซแ‹Žแ‰ฝ แ‹จแˆ˜แŒซแŠ• แˆ‚แ‹ฐแ‰ฑแŠ• แ‰ แŒฃแˆ แ‰ แ‹แˆญแ‹แˆญ แŠฅแŠ“ แ‰ แŒแˆแŒฝ แ‹ญแŒˆแˆแŒปแˆ‰แฃ แŠ แŠ•แ‹ณแŠ•แ‹ต แ‹แˆญแ‹แˆฎแ‰ฝแŠ• แŠ แˆตแ‰€แˆญแ‰ฐแ‹‹แˆแข แŠฅแ‹šแˆ… แˆ‹แ‹ญ แˆ˜แˆ˜แˆชแ‹ซแ‹Žแ‰นแŠ• แŠฅแŠ•แŠจแ‰ฐแˆ‹แˆˆแŠ•แฃ แ‰ แˆ˜แŠ•แŒˆแ‹ต แˆ‹แ‹ญ แ‹จแŒŽแ‹ฐแˆ‰ แŒฅแŒˆแŠแАแ‰ถแ‰ฝแŠ• แŠฅแŠ•แŒญแŠ“แˆˆแŠ•แข แŠฅแŠ” แˆซแˆด แŠฅแ‹ซแŠ•แ‹ณแŠ•แ‹ฑแŠ• แ•แˆฎแŒ€แŠญแ‰ต แŠ แŒ แŠ“แ‰…แ‰„ แŠจแŠฆแŠแˆดแˆ‹แ‹Šแ‹ แˆ›แŠจแˆ›แ‰ป แŠ แˆแŒซแŠ•แŠฉแˆแข Ubuntu (แ‰ แˆ›แŠญแŠฆแŠคแˆต แˆ‹แ‹ญ แ‹จแ‰ฐแŒ แ‰€แˆแŠฉแ‰ แ‰ต 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.

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% แŠ แŠซแ‰ฃแ‰ข แ‹จแˆ›แˆธแАแ แŠฅแ‹ตแˆ‹แ‰ฝแŠ•แŠ• แŠฅแŠ“แ‹ฐแˆญแŒ‹แˆˆแŠ•แข แˆˆแŠญแแ‹ซ แ‰ แ‰‚ แŒแˆซแˆžแ‰ฝ แŠจแˆŒแˆ‰, แŒแ‰ฅแ‹ญแ‰ฑแŠ• แŠฅแŠ•แ‹ฐ แˆ˜แˆ™แˆ‹แ‰ต แŠฅแŠ•แ‰†แŒฅแˆซแˆˆแŠ•.

แŠจแ‹šแˆ…แˆ แ‰ แˆ‹แ‹ญ แ‹แˆญแˆญแ‹ต แ‰ แŠฅแ‹แАแ‰ฐแŠ› แŒŠแ‹œ แŠฅแŠ“ แˆแ‰น แ‰ แˆ†แА แˆ˜แˆแŠฉ แˆ˜แ‰ณแ‹จแ‰ต แŠ แˆตแˆแˆ‹แŒŠ แАแ‹, แ‹ญแˆ…แˆ แ‰ฐแŒ แ‰ƒแˆšแ‹ แ‹ซแˆธแАแˆ แ‹ˆแ‹ญแˆ แ‹จแ‰ฐแˆธแАแˆ แŠฅแŠ•แ‹ฐแˆ†แА แ‹ˆแ‹ฒแ‹ซแ‹แŠ‘ แŠฅแŠ•แ‹ฒแˆจแ‹ณแ‹. แˆตแˆˆแ‹šแˆ…, แ‹แˆญแˆญแ‹ถแ‰ฝแŠ• แŠฅแŠ“ แ‹แŒคแ‰ถแ‰ฝแŠ• แ‰ แ‰€แŒฅแ‰ณ แŠจ แ‰ถแŠ• แ‹จแˆšแ‹ซแˆณแ‹ญ แ‹ตแˆ…แˆจ แŒˆแŒฝ แˆ˜แˆตแˆซแ‰ต แ‹ซแˆตแˆแˆแŒแ‹Žแ‰ณแˆ.

แ‰ฅแˆแŒฅ แŠฎแŠ•แ‰ตแˆซแ‰ต แˆ˜แŒปแ

แˆˆแˆแ‰พแ‰ต แˆฒแ‰ฃแˆ แ‹จFunCแŠ• แŠฎแ‹ต แŠ แŒ‰แˆแ‰ปแˆˆแˆแค แ‰ฐแˆฐแŠชแ‹ แ‰  Visual Studio Code แแˆˆแŒ‹ แ‹แˆตแŒฅ แˆŠแŒˆแŠ แŠฅแŠ“ แˆŠแŒญแŠ• แ‹ญแ‰ฝแˆ‹แˆแค แ‰ แ‹ตแŠ•แŒˆแ‰ต แ‹จแˆ†แА แАแŒˆแˆญ แˆ›แŠจแˆ แŠจแˆแˆˆแŒ‰ แ•แˆˆแŒŠแŠ‘แŠ• แ‰ แ‹ญแ‹ แŠฅแŠ•แ‹ฒแŒˆแŠ แŠ แ‹ตแˆญแŒŒแ‹‹แˆˆแˆแข แŠฅแŠ•แ‹ฒแˆแˆแฃ แŠ แŠ•แ‹ต แˆฐแ‹ แŠจแ‹šแˆ… แ‰€แ‹ฐแˆ แŠจFift แŒ‹แˆญ แŠ แ‰ฅแˆฎ แˆˆแˆ˜แˆตแˆซแ‰ต แ‰ฐแˆฐแŠช แˆ แˆญแ‰ทแˆแฃ แŠฅแˆฑแŠ• แˆ˜แŒซแŠ• แŠฅแŠ“ แ‰ แ‰ชแŠคแˆตแˆฒ แ‹แˆตแŒฅ แˆ›แŒแŠ˜แ‰ต แ‹ญแ‰ฝแˆ‹แˆ‰แข

แ‹ˆแ‹ฒแ‹ซแ‹แŠ‘ แˆ˜แŠซแŠจแˆˆแŠ› แ‹แŒคแ‰ถแ‰ฝแŠ• แ‹จแˆแŠ•แˆแŒฝแˆแ‰ แ‰ต แˆ›แŠจแˆ›แ‰ป แŠฅแŠ•แแŒ แˆญ.

แˆ…แ‹ญแ‹ˆแ‰ณแ‰ฝแŠ•แŠ• แˆˆแˆ›แ‰…แˆˆแˆแฃ แˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ต แŠฅแŠ•แ…แ‹แˆˆแŠ• แŠฅแŠ“ แŠฅแˆตแŠชแ‹˜แŒ‹แŒ… แ‹ตแˆจแˆต แ‰ แŠ แŒˆแˆญ แ‹แˆตแŒฅ แŠฅแŠ•แˆแ‰ตแˆปแˆˆแŠ•แข แŠจแ‹šแ‹ซ แ‰ แŠ‹แˆ‹ แ‰ฅแ‰ป แ‰ แ‰ถแŠ• แ‹แˆตแŒฅ แŠฅแŠ“แ‰ฐแˆแАแ‹แข

แ‰ฅแˆแŒฅ แŠฎแŠ•แ‰ตแˆซแ‰ฑ แˆŠแ‹ฐแˆจแˆตแ‰ฃแ‰ธแ‹ แ‹จแˆšแ‰ฝแˆ‰ แˆแˆˆแ‰ต แ‹แŒซแ‹Š แ‹˜แ‹ดแ‹Žแ‰ฝ แŠ แˆ‰แ‰ต. แŠ แŠ•แ‹ฐแŠ›, recv_external() แ‹ญแˆ… แ‰ฐแŒแ‰ฃแˆญ แ‹จแˆšแˆแŒธแˆ˜แ‹ แ‹จแŠฎแŠ•แ‰ตแˆซแ‰ฑ แŒฅแ‹ซแ‰„ แŠจแ‹แŒญแ‹ แ‹“แˆˆแˆ แˆฒแˆ˜แŒฃ แˆ›แˆˆแ‰ตแˆ แŠจแ‰ถแŠ• แˆณแ‹ญแˆ†แŠ• แŠฅแŠ› แˆซแˆณแ‰ฝแŠ• แˆ˜แˆแŠฅแŠญแ‰ต แŠ แˆแŒฅแ‰ฐแŠ• แ‰ แˆŠแ‰ฐ-แ‹ฐแŠ•แ‰ แŠ› แ‰ แŠฉแˆ แˆตแŠ•แˆแŠญ แАแ‹แข แˆแˆˆแ‰ฐแŠ›, recv_internal() แ‹ญแˆ… แ‰ แ‰ถแŠ• แ‰ แˆซแˆฑ แ‹แˆตแŒฅ แˆ›แŠ•แŠ›แ‹แˆ แ‹แˆ แ‹จแŠฅแŠ›แŠ• แ‹ญแˆ˜แˆˆแŠจแ‰ณแˆแข แ‰ แˆแˆˆแ‰ฑแˆ แˆแŠ”แ‰ณแ‹Žแ‰ฝ แˆ˜แˆˆแŠชแ‹ซแ‹Žแ‰ฝแŠ• แ‹ˆแ‹ฐ แ‰ฐแŒแ‰ฃแˆฉ แˆ›แˆˆแ แ‹ญแ‰ฝแˆ‹แˆ‰.

แŠจแ‰ณแ‰ฐแˆ˜ แ‰ แˆšแˆฐแˆซ แ‰€แˆ‹แˆ แˆแˆณแˆŒ แŠฅแŠ•แŒ€แˆแˆญ, แАแŒˆแˆญ แŒแŠ• แ‰ แ‹แˆตแŒก แˆแŠ•แˆ แ‰ฐแŒแ‰ฃแˆซแ‹Š แŒญแАแ‰ต แ‹จแˆˆแˆ.

() 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 assembler แŠฎแ‹ต แŠ แ‹˜แŒ‹แŒ…แ‰ฐแŠ“แˆ 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 for the Fift assembler แ‹จแ‰ฐแŒปแˆ แŠฎแ‹ต แАแ‹แข

แˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ฑแŠ• แ‰ แŠ แŒˆแˆญ แ‹แˆตแŒฅ แˆ˜แˆฎแŒฅ แŠฅแŠ“ แˆ˜แˆžแŠจแˆญ แˆตแˆˆแˆแŠ•แˆแˆแŒ แ‹แ‹ญแˆ แŠฅแŠ•แˆแŒฅแˆซแˆˆแŠ• 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

แŠฅแˆตแŠซแˆแŠ• แŒแˆแ… แ‹ญแˆ˜แˆตแˆ‹แˆแฃ แŠ แˆแŠ• แ‰ฒแ‰ชแŠคแˆแŠ• แˆˆแˆ˜แŠญแˆแ‰ต แ‹จแˆแŠ•แŒ แ‰€แˆแ‰ แ‰ตแŠ• แŠฎแ‹ต แ‹ˆแ‹ฐ แ‰ฐแˆ˜แˆณแˆณแ‹ญ แ‹แ‹ญแˆ แŠฅแŠ•แŒจแˆแˆญแข

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 แŠฅแŠ› แŠ แ‹แ‹ต แŠฅแŠ•แˆ˜แ‹˜แŒแ‰ฃแˆˆแŠ•, แˆ›แˆˆแ‰ตแˆ, แ‹จแ‰ฒแ‰ชแŠคแˆ (แ‹ˆแ‹ญแˆ แ‹จแŠ แ‹แ‰ณแˆจ แˆ˜แˆจแ‰ฅ แˆแŠ”แ‰ณ) แ‹จแˆšแŒ€แˆ˜แˆญแ‰ แ‰ตแŠ• แ‹แˆ‚แ‰ฅ. แ‰ แ‹แ‹ตแ‹ตแˆฉ แ‹ˆแ‰…แ‰ต แŠฅแŠ•แŠณแŠ• แŠจแŒˆแŠ•แ‰ขแ‹Žแ‰น แŠ แŠ•แ‹ฑ แŠฅแŠ•แ‹ดแ‰ต แˆ˜แแŒ แˆญ แŠฅแŠ•แ‹ฐแˆšแ‰ปแˆ แŠ แˆณแ‹ญแ‰ทแˆแข 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()

แŒˆแŠ•แ‰ขแ‹ แˆซแˆฑ แ‹แˆ‰ แˆŠแ‰€แ‰ แˆˆแ‹ แ‹จแˆšแ‰ฝแˆˆแ‹แŠ• แ‹จแˆ˜แˆแ‹•แŠญแ‰ต แ‰…แˆญแŒธแ‰ต แ‹ญแˆ˜แˆญแŒฃแˆ.

แŒแŠ• แŠ แ‰ฅแ‹›แŠ›แ‹แŠ• แŒŠแ‹œ

  • แ‰ แˆ˜แŒ€แˆ˜แˆชแ‹ซ แ‹แˆ‹แ‰ฝแŠ•แŠ• แŠจแ‹แŒชแ‹ แŠ แˆˆแˆ แˆˆแˆ˜แŒ แ‰ แ‰… แŠฅแŠ“ แ‹จแ‹แˆ‰ แ‰ฃแˆˆแ‰คแ‰ต แ‰ฅแ‰ป แ‹จแ‹แŒญ แˆ˜แˆแŠฅแŠญแ‰ต แŠฅแŠ•แ‹ฒแˆแŠญแˆˆแ‰ต แˆˆแˆ›แ‹ตแˆจแŒ แŠฅแŠ•แˆแˆแŒ‹แˆˆแŠ•แข
  • แ‰ แˆแˆˆแ‰ฐแŠ› แ‹ฐแˆจแŒƒ แ‰ตแŠญแŠญแˆˆแŠ› แˆ˜แˆแŠฅแŠญแ‰ต แ‹ˆแ‹ฐ แ‰ถแŠ• แˆตแŠ•แˆแŠญ แ‹ญแˆ… แ‰ แ‰ตแŠญแŠญแˆ แŠ แŠ•แ‹ต แŒŠแ‹œ แŠฅแŠ•แ‹ฒแˆ†แŠ• แŠฅแŠ•แˆแˆแŒ‹แˆˆแŠ• แŠฅแŠ“ แ‰ฐแˆ˜แˆณแˆณแ‹ญ แˆ˜แˆแŠฅแŠญแ‰ต แˆตแŠ•แˆแŠญ แˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ฑ แ‹แ‹ตแ‰… แ‹ซแ‹ฐแˆญแŒˆแ‹‹แˆแข

แˆตแˆˆแ‹šแˆ… แŠฅแ‹ซแŠ•แ‹ณแŠ•แ‹ฑ แ‹แˆ แˆ›แˆˆแ‰ต แ‹ญแ‰ปแˆ‹แˆ แŠฅแАแ‹šแˆ…แŠ• แˆแˆˆแ‰ต แ‰ฝแŒแˆฎแ‰ฝ แ‹ญแˆแ‰ณแˆแฃ แ‹แˆ‹แ‰ฝแŠ• แ‹จแ‹แŒญ แˆ˜แˆแ‹•แŠญแ‰ถแ‰ฝแŠ• แˆตแˆˆแˆšแ‰€แ‰ แˆ แŠฅแŠ›แˆ แˆแŠ•แŒ แАแ‰€แ‰…แ‰ แ‰ต แ‹ญแŒˆแ‰ฃแˆแข

แ‰ แ‰ฐแ‰ƒแˆซแŠ’แ‹ แ‰…แ‹ฐแˆ แ‰ฐแŠจแ‰ฐแˆ แŠฅแŠ“แ‹ฐแˆญแŒˆแ‹‹แˆˆแŠ•. แ‰ แˆ˜แŒ€แˆ˜แˆชแ‹ซ แ‰ฝแŒแˆฉแŠ• แ‰ แˆ˜แ‹ตแŒˆแˆ แŠฅแŠ•แแ‰ณแ‹แค แ‹แˆ‰ แŠ แˆตแ‰€แ‹ตแˆž แŠฅแŠ•แ‹ฐแ‹šแˆ… แŠ แ‹ญแАแ‰ต แˆ˜แˆแŠฅแŠญแ‰ต แ‹ฐแˆญแˆถแ‰ต แŠจแˆ†แА แˆˆแˆแˆˆแ‰ฐแŠ› แŒŠแ‹œ แŠ แ‹ซแˆตแˆแŒฝแˆ˜แ‹แˆแข แŠฅแŠ“ แŠจแ‹šแ‹ซ แ‹จแ‰ฐแ‹ˆแˆฐแŠ‘ แ‹จแˆฐแ‹Žแ‰ฝ แŠญแ‰ แ‰ฅ แ‰ฅแ‰ป แ‹ˆแ‹ฐ แ‰ฅแˆแŒฅ แŠฎแŠ•แ‰ตแˆซแ‰ฑ แˆ˜แˆแŠฅแŠญแ‰ต แŠฅแŠ•แ‹ฒแˆแŠญ แ‰ฝแŒแˆฉแŠ• แŠฅแŠ•แˆแ‰ณแ‹‹แˆˆแŠ•แข

แ‰ แ‰ฐแ‰ฃแ‹™ แˆ˜แˆแ‹•แŠญแ‰ถแ‰ฝ แ‰ฝแŒแˆฉแŠ• แˆˆแˆ˜แแ‰ณแ‰ต แ‹จแ‰ฐแˆˆแ‹ซแ‹ฉ แˆ˜แŠ•แŒˆแ‹ถแ‰ฝ แŠ แˆ‰แข แŠฅแŠ•แ‹ดแ‰ต แŠฅแŠ•แ‹ฐแˆแŠ“แ‹ฐแˆญแŒˆแ‹ แŠฅแАแˆ†แข แ‰ แ‹˜แˆ˜แŠ“แ‹Šแ‹ แŠฎแŠ•แ‰ตแˆซแ‰ต แ‹แˆตแŒฅ แ‹จแ‰ฐแ‰€แ‰ แˆ‰แ‰ตแŠ• แˆ˜แˆแŠฅแŠญแ‰ถแ‰ฝ แ‰†แŒฃแˆช แŠจแˆ˜แŒ€แˆ˜แˆชแ‹ซแ‹ แŠฅแˆดแ‰ต 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 แ‰ แŠ แˆแˆตแ‰ฐแŠ›แ‹. แ‰ฐแˆˆแ‹‹แ‹‹แŒฎแ‰ฝแŠ• แˆ›แŒฅแ‹แ‰ต แ‰  Fift แˆฐแАแ‹ต แ‹แˆตแŒฅ แ‰ฐแŒˆแˆแŒฟแˆ.

แ‰แˆญแŠแ‰ต แŠ แŒˆแŠ“แŠ แŠจแ‰ฐแŒจแˆ˜แˆจแ‹ แˆŠแŒฅ แŒ‹แˆญ.

แˆแ‰ฐแŠ“แ‹แŠ• แŠฅแŠ“แŠซแˆ‚แ‹ตแŠ“ แŠ แˆˆแˆ˜แˆณแŠซแ‰ฑแŠ• แŠฅแŠ“แˆจแŒ‹แŒแŒฅแข แŠ แˆแŠ• แ‹จแˆŽแ‰ฐแˆชแ‹แŠ• แ‰ฃแˆˆแ‰คแ‰ต แŠ แ‹ตแˆซแˆป แˆˆแˆ˜แ‰€แ‹จแˆญ แŠ แˆ˜แŠญแŠ•แ‹ฎ แŠฅแŠ•แŒจแˆแˆญแข

แ‰ แ‹˜แˆ˜แŠ“แ‹Šแ‹ แ‹แˆ แ‹แˆตแŒฅ แˆ˜แ‰ฐแŠ•แ‰ฐแŠ• แŠฅแŠ•แ‰€แŒฅแˆ‹แˆˆแŠ• 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 แ‹จแ‰ต แˆ›แŒแŠ˜แ‰ต แ‹ญแ‰ฝแˆ‹แˆ แ‰ แŠฆแŠแˆดแˆ‹แ‹Šแ‹ แˆ›แŠจแˆ›แ‰ป แ‹แˆตแŒฅ.

แ‰ตแŠฉแˆจแ‰ต แˆŠแˆฐแŒ แ‹ แ‹จแˆšแŒˆแ‰ฃ แАแŒˆแˆญ. แ‹˜แˆ˜แŠ“แ‹Š แ‹จแŠฎแŠ•แ‰ตแˆซแ‰ต แˆ›แŠจแˆ›แ‰ป แŠฅแŠ“ แ‹จแŒแ‰คแ‰ต แˆ˜แˆแŠฅแŠญแ‰ต แŠฅแŠ“แˆ˜แАแŒซแˆˆแŠ•แข แŠจแ‹šแˆ… แ‰ แŠ‹แˆ‹ แ‹จแˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ฑ แŠ แ‹ตแˆซแˆป แ‹ญแˆแŒ แˆซแˆ, แˆ›แˆˆแ‰ตแˆ แŠ แ‹ตแˆซแˆปแ‹ แ‰ แ‰ถแŠ• แ‹แˆตแŒฅ แŠจแˆ˜แ‰ณแ‰ฐแˆ™ แ‰ แŠแ‰ต แŠฅแŠ•แŠณแŠ• แ‹ญแ‰ณแ‹ˆแ‰ƒแˆ. แ‰ แˆ˜แ‰€แŒ แˆ แฃ แ‰ฅแ‹™ แŒแˆซแˆ แ‹ˆแ‹ฐแ‹šแˆ… แŠ แ‹ตแˆซแˆป แˆ˜แˆ‹แŠญ แ‹ซแˆตแˆแˆแŒแ‹Žแ‰ณแˆ แฃ แŠฅแŠ“ แŠจแ‹šแ‹ซ แ‰ แŠ‹แˆ‹ แ‰ฅแ‰ป แŠจแˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ฑ แŒ‹แˆญ แ‹แ‹ญแˆ แˆ˜แˆ‹แŠญ แ‹ซแˆตแˆแˆแŒแ‹Žแ‰ณแˆ แฃ แˆแŠญแŠ•แ‹ซแ‰ฑแˆ แŠ แ‹แ‰ณแˆจ แˆ˜แˆจแ‰ก แ‰ฅแˆแŒฅ แŠฎแŠ•แ‰ตแˆซแ‰ฑแŠ• แŠฅแŠ“ แ‰ แ‹แˆตแŒก แ‹ซแˆ‰แ‰ตแŠ• แˆตแˆซแ‹Žแ‰ฝ แˆˆแˆ›แŠจแˆ›แ‰ธแ‰ต แŠฎแˆšแˆฝแŠ• แˆตแˆˆแˆšแ‹ˆแˆตแ‹ต (แˆตแˆ›แˆญแ‰ต แ‹จแˆšแ‹ซแŠจแˆ›แ‰น แŠฅแŠ“ แ‹จแˆšแˆแŒฝแˆ™ แŠ แˆจแŒ‹แŒ‹แŒฎแ‰ฝ) แ‹แˆŽแ‰ฝ)แข แŠฎแ‹ฑ แŠฅแ‹šแˆ… แˆŠแ‰ณแ‹ญ แ‹ญแ‰ฝแˆ‹แˆ.

แ‰ แˆ˜แ‰€แŒ แˆ แ‹จแˆ…แ‰ตแˆ˜แ‰ต แŠฎแ‹ฑแŠ• แŠฅแŠ“แˆตแˆแŒฝแˆ›แˆˆแŠ• แŠฅแŠ“ แŠฅแŠ“แŒˆแŠ›แˆˆแŠ• 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

แˆˆแˆ˜แ‹แŠ“แŠ“แ‰ต แ‹ซแˆ…แˆแฃ แˆˆแ‰ถแŠ• แŒฅแ‹ซแ‰„ แŠฅแŠ“แ‰…แˆญแ‰ฅ

$ ./lite-client/lite-client -C ton-lite-client-test1.config.json 
getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd

แŠฅแŠ“ แ‰ แ‹šแˆ… แŠ แ‹ตแˆซแˆป แ‹ซแˆˆแ‹ แˆ˜แˆˆแ‹ซ แ‰ฃแ‹ถ แˆ˜แˆ†แŠ‘แŠ• แŠฅแŠ“แ‹ซแˆˆแŠ•แข

account state is empty

แ‹ˆแ‹ฐ แŠ แ‹ตแˆซแˆปแ‹ แŠฅแŠ•แˆแŠซแˆˆแŠ•แข 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd 2 แŒแˆซแˆ แŠฅแŠ“ แŠจแŒฅแ‰‚แ‰ต แˆฐแŠจแŠ•แ‹ถแ‰ฝ แ‰ แŠ‹แˆ‹ แ‰ฐแˆ˜แˆณแˆณแ‹ญ แ‰ตแ‹•แ‹›แ‹ แŠฅแŠ•แˆแŒฝแˆ›แˆˆแŠ•. แŠฅแŠ” แŠฅแŒ แ‰€แˆ›แˆˆแˆ แŒแˆซแˆ แˆˆแˆ˜แˆ‹แŠญ แŠฆแŠแˆดแˆ‹แ‹Š แ‹จแŠชแˆต แ‰ฆแˆญแˆณ, แŠฅแŠ“ แŠ แŠ•แ‹ต แˆฐแ‹ แŠจแ‰ปแ‰ต แˆˆแˆ™แŠจแˆซ แŒแˆซแˆ แˆ˜แŒ แ‹จแ‰… แ‹ญแ‰ฝแˆ‹แˆ‰, แ‹ญแˆ…แˆ แ‰ แŠ แŠ•แ‰€แŒน แˆ˜แŒจแˆจแˆป แˆ‹แ‹ญ แˆตแˆˆแˆ›แ‹ˆแˆซแ‹.

> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd

แ‹ซแˆแ‰ณแ‹ˆแ‰€ แ‹ญแˆ˜แˆตแˆ‹แˆ (state:account_uninit) แ‰ฐแˆ˜แˆณแˆณแ‹ฉ แŠ แ‹ตแˆซแˆป แ‹ซแˆˆแ‹ แ‰ฅแˆแŒฅ แ‹แˆ แŠฅแŠ“ แ‹จ 1 แŠ“แŠ–แŒแˆซแˆ แˆšแ‹›แŠ•แข

account state is (account
  addr:(addr_std
    anycast:nothing workchain_id:0 address:x044910149DBEAF8EADBB2B28722E7D6A2DC6E264EC2F1D9BEBD6FB209079BC2A)
  storage_stat:(storage_info
    used:(storage_used
      cells:(var_uint len:1 value:1)
      bits:(var_uint len:1 value:103)
      public_cells:(var_uint len:0 value:0)) last_paid:1583257959
    due_payment:nothing)
  storage:(account_storage last_trans_lt:3825478000002
    balance:(currencies
      grams:(nanograms
        amount:(var_uint len:4 value:2000000000))
      other:(extra_currencies
        dict:hme_empty))
    state:account_uninit))
x{C00044910149DBEAF8EADBB2B28722E7D6A2DC6E264EC2F1D9BEBD6FB209079BC2A20259C2F2F4CB3800000DEAC10776091DCD650004_}
last transaction lt = 3825478000001 hash = B043616AE016682699477FFF01E6E903878CDFD6846042BA1BFC64775E7AC6C4
account balance is 2000000000ng

แŠ แˆแŠ• แ‰ฅแˆแŒฅ แŠฎแŠ•แ‰ตแˆซแ‰ฑแŠ• แŠฅแŠ“แ‰ฐแˆแข แˆŠแ‰ต-แ‹ฐแŠ•แ‰ แŠ›แŠ• แŠฅแŠ•แŒ€แˆแˆญ แŠฅแŠ“ แŠฅแŠ•แˆแŒฝแˆแข

> sendfile lottery-query.boc
[ 1][t 2][1583008371.631410122][lite-client.cpp:966][!testnode] sending query from file lottery-query.boc
[ 3][t 1][1583008371.828550100][lite-client.cpp:976][!query]    external message status is 1 

แ‹แˆ‰ แŠฅแŠ•แ‹ฐแ‰ณแ‰ฐแˆ˜ แŠฅแŠ•แˆแ‰ตแˆฝแข

> last
> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd

แŠจแˆŒแˆŽแ‰ฝ แАแŒˆแˆฎแ‰ฝ แ‰ แ‰ฐแŒจแˆ›แˆช แŠฅแŠ“แŒˆแŠ›แˆˆแŠ•.

  storage:(account_storage last_trans_lt:3825499000002
    balance:(currencies
      grams:(nanograms
        amount:(var_uint len:4 value:1987150999))
      other:(extra_currencies
        dict:hme_empty))
    state:(account_active

แ‹ซแŠ•แŠ• แŠฅแŠ“แ‹ซแˆˆแŠ• account_active.

แŠจแˆˆแ‹แŒฆแ‰ฝ แŒ‹แˆญ แ‰ฐแŒ“แ‹ณแŠ แ‰ƒแˆ แŠชแ‹ณแŠ• แŠฅแ‹šแˆ.

แŠ แˆแŠ• แŠจแˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ฑ แŒ‹แˆญ แˆˆแˆ˜แŒˆแŠ“แŠ˜แ‰ต แŒฅแ‹ซแ‰„แ‹Žแ‰ฝแŠ• แŠฅแŠ•แแŒ แˆญแข

แ‹ญแ‰ แˆแŒฅ แ‰ แ‰ตแŠญแŠญแˆ แฃ แŠ แ‹ตแˆซแˆปแ‹แŠ• แˆˆแˆ˜แ‰€แ‹จแˆญ แ‹จแˆ˜แŒ€แˆ˜แˆชแ‹ซแ‹แŠ• แŠฅแŠ•แ‰ฐแ‹ˆแ‹‹แˆˆแŠ• แŠฅแŠ•แ‹ฐ แŒˆแˆˆแˆแ‰ฐแŠ› แˆฅแˆซ แฃ แŠฅแŠ“ แˆแˆˆแ‰ฐแŠ›แ‹แŠ• แŒแˆซแˆ แ‹ˆแ‹ฐ แ‹จแ‰ฃแˆˆแ‰คแ‰ฑ แŠ แ‹ตแˆซแˆป แˆˆแˆ˜แˆ‹แŠญ แŠฅแŠ•แˆฐแˆซแˆˆแŠ•แข แŠฅแŠ•แ‹ฐ แŠฅแ‹แАแ‰ฑ แŠจแˆ†แА, แŒแˆซแˆ แˆˆแˆ˜แˆ‹แŠญ แ‰ แˆแ‰ฐแŠ“ แ‹แˆตแŒฅ แŠฅแŠ•แ‹ฐแАแ‰ แˆจแ‹ แ‰ฐแˆ˜แˆณแˆณแ‹ญ แАแŒˆแˆญ แˆ›แ‹ตแˆจแŒ แŠ แˆˆแ‰ฅแŠ•.

แ‹ญแˆ… แŠฅแŠ› แ‹ˆแ‹ฐ แ‰ฅแˆแŒฅ แŠฎแŠ•แ‰ตแˆซแ‰ต แ‹จแˆแŠ•แˆแŠญ แˆ˜แˆแŠฅแŠญแ‰ต แАแ‹, แ‹จแ‰ต msg_seqno 165, action แˆˆแˆ˜แˆ‹แŠญ 2 แŠฅแŠ“ 9.5 แŒแˆซแˆ.

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

แˆ˜แˆแŠฅแŠญแ‰ฑแŠ• แ‰ แŒแˆ แ‰แˆแแ‹Ž แˆ˜แˆแˆจแˆแ‹ŽแŠ• แŠ แ‹ญแˆญแˆฑ lottery.pkแ‰ฅแˆแŒฅ แŠฎแŠ•แ‰ตแˆซแ‰ฑแŠ• แˆฒแˆแŒฅแˆฉ แ‰€แ‹ฐแˆ แ‰ฅแˆŽ แ‹จแ‰ฐแˆแŒ แˆจ. แ‰ฐแŒ“แ‹ณแŠ แ‰แˆญแŒ แŠแАแ‰ต แŠฅแАแˆ†.

แ‹จแˆ›แŒแŠ› แ‹˜แ‹ดแ‹Žแ‰ฝแŠ• แ‰ แˆ˜แŒ แ‰€แˆ แŠจแ‹˜แˆ˜แŠ“แ‹Š แŠฎแŠ•แ‰ตแˆซแ‰ต แˆ˜แˆจแŒƒ แˆ˜แ‰€แ‰ แˆ

แŠ แˆแŠ• แŠฅแŠ•แ‹ดแ‰ต แˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ต แˆ›แŒแŠ˜แ‰ต แŠฅแŠ•แ‹ฐแˆšแ‰ปแˆ แŠฅแŠ•แ‹ญแข

แŠ แˆตแŒ€แˆแˆญ lite-client แŠฅแŠ“ แŠฅแŠ› แ‹จแŒปแแŠ“แ‰ธแ‹ แ‹˜แ‹ดแ‹Žแ‰ฝแŠ• แ‹ซแˆ‚แ‹ฑแข

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

ะ’ result แ‰ฐแŒแ‰ฃแˆฉ แ‹จแˆšแˆ˜แˆˆแˆฐแ‹แŠ• แŠฅแˆดแ‰ต แ‹ญแ‹Ÿแˆ balance() แŠจแ‰ฅแˆแŒฅ แŠฎแŠ•แ‰ตแˆซแ‰ณแ‰ฝแŠ•.
แˆˆแ‰ฅแ‹™ แ‰ฐแŒจแˆ›แˆช แ‹˜แ‹ดแ‹Žแ‰ฝ แ‰ฐแˆ˜แˆณแˆณแ‹ญ แАแŒˆแˆญ แŠฅแŠ“แ‹ฐแˆญแŒ‹แˆˆแŠ•.

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

แ‹จแŠฅแˆญแˆตแ‹ŽแŠ• แ‹แˆญแˆญแ‹ต แ‰ณแˆชแŠญ แŠฅแŠ•แŒ แ‹ญแ‰…แข

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

แ‰€แˆ‹แˆ แ‹ฐแŠ•แ‰ แŠ›แŠ• แŠฅแŠ•แŒ แ‰€แˆ›แˆˆแŠ• แŠฅแŠ“ แ‰ แŒฃแ‰ขแ‹ซแ‹ แˆ‹แ‹ญ แˆตแˆ‹แˆˆแ‹ แ‹˜แˆ˜แŠ“แ‹Š แŠฎแŠ•แ‰ตแˆซแ‰ต แˆ˜แˆจแŒƒแŠ• แˆˆแˆ›แˆณแ‹จแ‰ต แ‹˜แ‹ดแ‹Žแ‰ฝแŠ• แŠฅแŠ“แŒˆแŠ›แˆˆแŠ•แข

แ‰ แ‹ตแˆญ แŒฃแ‰ขแ‹ซแ‹ แˆ‹แ‹ญ แ‹จแˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ต แ‹แˆ‚แ‰ฅแŠ• แ‰ แˆ›แˆณแ‹จแ‰ต แˆ‹แ‹ญ

แˆ˜แˆจแŒƒแ‹แŠ• แŠจแˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ฑ แˆแ‰น แ‰ แˆ†แА แˆ˜แŠ•แŒˆแ‹ต แˆˆแˆ›แˆณแ‹จแ‰ต แ‰ แ“แ‹ญแ‹˜แŠ• แ‹แˆตแŒฅ แ‰€แˆ‹แˆ แ‹ตแˆญ แŒฃแ‰ขแ‹ซ แŒปแแŠฉ แข แŠฅแ‹šแˆ… แˆ‹แ‹ญ แ‰ แ‹แˆญแ‹แˆญ แŠ แˆแ‰†แ‹ญแˆ แŠฅแŠ“ แŒฃแ‰ขแ‹ซแ‹แŠ• แŠ แˆณแ‰ตแˆ˜แ‹‹แˆˆแˆ แ‰ แŠ แŠ•แ‹ต แ‰ƒแˆ แŠชแ‹ณแŠ•.

แ‹จ TON แŒฅแ‹ซแ‰„แ‹Žแ‰ฝ แ‹จแˆšแ‰€แˆญแ‰กแ‰ต แŠจ Python แ‰  แŠฅแŒˆแ‹› lite-client. แˆˆแˆแ‰พแ‰ต แˆฒแ‰ฃแˆ แŒฃแ‰ขแ‹ซแ‹ แ‰ แ‹ถแŠจแˆญ แ‰ณแˆฝแŒŽ แ‰ Google แŠญแˆ‹แ‹แ‹ต แˆ‹แ‹ญ แ‰ณแ‰ตแˆŸแˆแข แŠ แŒˆแŠ“แŠ.

แŠฅแŠ•แˆžแŠญแˆญ

แŠ แˆแŠ• แˆˆแˆ˜แˆ™แˆ‹แ‰ต แŠฅแ‹šแ‹ซ แŒแˆซแˆ แˆˆแˆ˜แˆ‹แŠญ แŠฅแŠ•แˆžแŠญแˆญ แ‰ฆแˆญแˆณ. 40 แŒแˆซแˆ แŠฅแŠ•แˆแŠซแˆˆแŠ•. แŠฅแŠ“ แˆˆแŒแˆแŒฝแАแ‰ต แˆแˆˆแ‰ต แ‹แˆญแˆญแ‹ถแ‰ฝแŠ• แŠฅแŠ“แ‹ตแˆญแŒแข แŒฃแ‰ขแ‹ซแ‹ แ‹จแ‹แˆญแˆญแ‹ต แ‰ณแˆชแŠญแŠ•แฃ แŠ แˆแŠ• แ‹ซแˆˆแ‹แŠ• แ‹จแŠ แˆธแŠ“แŠแАแ‰ต แˆ˜แ‰ถแŠ› แŠฅแŠ“ แˆŒแˆŽแ‰ฝ แŒ แ‰ƒแˆš แˆ˜แˆจแŒƒแ‹Žแ‰ฝแŠ• แŠฅแŠ•แ‹ฐแˆšแ‹ซแˆณแ‹ญ แŠ แ‹ญแ‰ฐแŠ“แˆแข

แŠฅแŠ“แ‹ซแˆˆแŠ•แ‹จแˆ˜แŒ€แˆ˜แˆชแ‹ซแ‹แŠ• แŠ แˆธแАแแŠ•, แˆแˆˆแ‰ฐแŠ›แ‹แŠ• แ‰ฐแˆธแŠ•แˆแŠ“แˆ.

แŠจแ‰ƒแˆ แ‰ แŠ‹แˆ‹

แŒฝแˆ‘แ‰ แŠจแŒ แ‰ แ‰…แŠฉแ‰ต แ‰ แˆ‹แ‹ญ แˆจแ‹˜แˆ แ‹ซแˆˆ แˆ†แŠ– แ‰ฐแŒˆแŠแ‰ทแˆแฃ แˆแŠ“แˆแ‰ฃแ‰ต แŠ แŒ แˆญ แ‹ซแˆˆ แˆŠแˆ†แŠ• แ‹ญแ‰ฝแˆ‹แˆ แ‹ˆแ‹ญแˆ แˆแŠ“แˆแ‰ฃแ‰ต แˆตแˆˆ แ‰ถแŠ• แˆแŠ•แˆ แˆˆแˆ›แ‹ซแ‹แ‰… แŠฅแŠ“ แ‰€แˆ‹แˆ แ‹ซแˆแˆ†แА แˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ต แˆ˜แŒปแ แŠฅแŠ“ แˆ›แ‰ฐแˆ แˆˆแˆšแˆแˆแŒ แˆฐแ‹ แ‹จแˆ˜แŒแ‰ฃแ‰ฃแ‰ต แ‰ฝแˆŽแ‰ณ แˆŠแŠ–แˆจแ‹ แ‹ญแ‰ฝแˆ‹แˆแข แАแ‹แข แˆแŠ“แˆแ‰ฃแ‰ต แŠ แŠ•แ‹ณแŠ•แ‹ต แАแŒˆแˆฎแ‰ฝ แ‰ แ‰€แˆ‹แˆ‰ แˆŠแ‰ฅแˆซแˆฉ แ‹ญแ‰ฝแˆ‰ แ‹ญแˆ†แŠ“แˆแข

แˆแŠ“แˆแ‰ฃแ‰ต แŠ แŠ•แ‹ณแŠ•แ‹ต แ‹จแŠ แ‰ฐแŒˆแ‰ฃแ‰ แˆฉ แŒˆแŒฝแ‰ณแ‹Žแ‰ฝ แ‹ญแ‰ แˆแŒฅ แ‰ แ‰ฐแ‰€แˆ‹แŒ แˆ แŠฅแŠ“ แ‰ แˆšแ‹ซแˆแˆญ แˆแŠ”แ‰ณ แˆŠแŠจแŠ“แ‹ˆแŠ‘ แ‹ญแ‰ฝแˆ‰ แАแ‰ แˆญ, แАแŒˆแˆญ แŒแŠ• แŒฝแˆ‘แ‰แŠ• แˆˆแˆ›แ‹˜แŒ‹แŒ€แ‰ต แ‹จแ‰ แˆˆแŒ  แŒŠแ‹œ แ‹ญแ‹ˆแˆตแ‹ต แАแ‰ แˆญ. แŠฅแŠ•แ‹ฒแˆแˆ แ‹จแˆ†แА แ‰ฆแ‰ณ แˆตแˆ…แ‰ฐแ‰ต แˆฐแˆญแ‰ผ แ‹ˆแ‹ญแˆ แ‹จแˆ†แА แАแŒˆแˆญ แŠฅแŠ•แ‹ณแˆแŒˆแ‰ฃแŠ แˆŠแˆ†แŠ• แ‹ญแ‰ฝแˆ‹แˆ, แˆตแˆˆแ‹šแˆ… แŠ แŠ•แ‹ต แŠจแ‰ฃแ‹ต แАแŒˆแˆญ แŠฅแ‹ซแ‹ฐแˆจแŒ‰ แŠจแˆ†แА, แ‰  TON แŠฎแ‹ต แŠฆแŠแˆดแˆ‹แ‹Š แˆฐแАแ‹ต แ‹ˆแ‹ญแˆ แŠฆแŠแˆดแˆ‹แ‹Š แˆ›แŠจแˆ›แ‰ป แˆ‹แ‹ญ แˆ˜แ‰ฐแˆ›แˆ˜แŠ• แŠ แˆˆแ‰ฅแ‹Žแ‰ต.

แ‰ถแŠ• แˆซแˆฑ แŒˆแŠ“ แ‰ แŠ•แ‰ƒแ‰ต แ‹จแ‹•แ‹ตแŒˆแ‰ต แ‹ฐแˆจแŒƒ แˆ‹แ‹ญ แˆตแˆˆแˆ†แА แ‰ แ‹šแˆ… แŒฝแˆ‘แ แ‹แˆตแŒฅ แ‹ซแˆ‰แ‰ตแŠ• แˆ›แŠ“แ‰ธแ‹แŠ•แˆ แŠฅแˆญแˆแŒƒแ‹Žแ‰ฝ แ‹จแˆšแŒฅแˆฑ แˆˆแ‹แŒฆแ‰ฝ แˆŠแŠจแˆฐแ‰ฑ แŠฅแŠ•แ‹ฐแˆšแ‰ฝแˆ‰ แˆแ‰ฅ แˆŠแ‰ฃแˆ แ‹ญแŒˆแ‰ฃแˆ (แ‰ แˆแŒฝแแ‰ แ‰ต แŒŠแ‹œ แ‹จแ‰ฐแŠจแˆฐแ‰ฐแ‹ แฃ แ‰€แ‹ตแˆžแ‹แŠ‘ แ‰ฐแˆตแ‰ฐแŠซแŠญแˆแˆ) แฃ แŒแŠ• แŠ แŒ แ‰ƒแˆ‹แ‹ญ แŠ แ‰€แˆซแˆจแ‰ฅ แˆŠแˆˆแ‹ˆแŒฅ แ‹จแˆ›แ‹ญแ‰ฝแˆ.

แˆตแˆˆ แ‰ถแŠ• แ‹จแ‹ˆแ‹ฐแŠแ‰ต แˆแŠ”แ‰ณ แŠ แˆแŠ“แŒˆแˆญแˆ. แˆแŠ“แˆแ‰ฃแ‰ต แˆ˜แ‹ตแˆจแŠฉ แ‰ตแˆแ‰… แАแŒˆแˆญ แ‹ญแˆ†แŠ“แˆ แŠฅแŠ“ แŠฅแˆฑแŠ• แˆˆแˆ›แŒฅแŠ“แ‰ต แŒŠแ‹œ แŠฅแŠ“แŒ แ‹แˆˆแŠ• แŠฅแŠ“ แŠ แˆแŠ• แ‰ แˆแˆญแ‰ถแ‰ปแ‰ฝแŠ• แ‹แˆตแŒฅ แŠ แŠ•แ‹ต แ‰ฆแ‰ณ แŠฅแŠ•แˆžแˆ‹แˆˆแŠ•แข

แŠจ โ€นTONโ€บ แ‹จแ‰ แˆˆแŒ  แ‹จแ‰ฐแŒ แ‰ƒแˆšแ‹Žแ‰ฝ แ‰ฐแˆ˜แˆแŠซแ‰ฝ แ‹ซแˆˆแ‹ แˆŠแ‰ฅแˆซ แŠจแŒแˆตแ‰กแŠญแˆ แŠ แˆˆแข แˆตแˆˆ แˆŠแ‰ฅแˆซ แˆแŠ•แˆ แ‹จแˆ›แ‹แ‰€แ‹ แАแŒˆแˆญ แ‹จแˆˆแˆแฃ แ‰ แŽแˆจแˆ™ แˆตแŠ•แŒˆแˆ˜แŒแˆ แŠจแ‰ถแŠ• แˆ›แˆ…แ‰ แˆจแˆฐแ‰ฅ แ‹จแ‰ แˆˆแŒ  แ‰ฅแ‹™ แŠฅแŠ•แ‰…แˆตแ‰ƒแˆด แŠ แˆˆแข แˆแŠ•แˆ แŠฅแŠ•แŠณแŠ• แ‹จแ‰ถแŠ• แŒˆแŠ•แ‰ขแ‹Žแ‰ฝ แŠฅแŠ“ แˆ›แˆ…แ‰ แˆจแˆฐแ‰ฆแ‰ฝ แŠฅแŠ•แ‹ฐ แŠจแˆ˜แˆฌแ‰ต แ‰ แ‰ณแ‰ฝ แ‹ซแˆ‰ แ‰ขแˆ†แŠ‘แˆ แŒฅแˆฉ แАแ‹แข

แˆ›แŒฃแ‰€แˆปแ‹Žแ‰ฝ

  1. แ‰ แ‰ถแŠ• แˆ‹แ‹ญ แŠฆแŠแˆดแˆ‹แ‹Š แˆฐแАแ‹ถแ‰ฝแก- https://test.ton.org
  2. แŠฆแŠแˆดแˆ‹แ‹Š แ‹จแ‰ถแŠ• แˆ›แŠจแˆ›แ‰ปแก- https://github.com/ton-blockchain/ton
  3. แˆˆแ‰ฐแˆˆแ‹ซแ‹ฉ แˆ˜แ‹ตแˆจแŠฎแ‰ฝ แ‹ญแ‹แ‹Š แ‹จแŠชแˆต แ‰ฆแˆญแˆณแก- https://wallet.ton.org
  4. แ‹จแˆตแˆ›แˆญแ‰ต แŠฎแŠ•แ‰ตแˆซแ‰ต แˆ›แŠจแˆ›แ‰ป แŠจแ‹šแˆ… แŠ แŠ•แ‰€แŒฝแก- https://github.com/raiym/astonished
  5. แ‹ˆแ‹ฐ แ‹˜แˆ˜แŠ“แ‹Š แ‹จแŠฎแŠ•แ‰ตแˆซแ‰ต แ‹ตแˆญ แŒฃแ‰ขแ‹ซ แŠ แŒˆแŠ“แŠแก https://ton-lottery.appspot.com
  6. แ‹จVisual Studio Code แˆˆFunC แ‹จแˆ›แˆซแ‹˜แˆšแ‹ซ แˆ›แŠจแˆ›แ‰ปแก https://github.com/raiym/func-visual-studio-plugin
  7. แ‰ แ‰ดแˆŒแŒแˆซแˆ แˆตแˆˆ แ‰ถแŠ• แ‹ญแ‹ˆแ‹ซแ‹ฉแฃ แ‹ญแˆ…แˆ แ‰ แˆ˜แАแˆป แ‹ฐแˆจแŒƒ แˆˆแˆ›แ‹ˆแ‰… แ‹จแˆจแ‹ณแ‹แข แˆˆแ‰ถแŠ• แ‹จแˆ†แА แАแŒˆแˆญ แ‹จแƒแ‰ แˆแˆ‰ แŠฅแ‹šแ‹ซ แŠ แˆ‰ แ‰ฅแ‰ฃแˆ แˆตแˆ…แ‰ฐแ‰ต แŠ แ‹ญแˆ†แŠ•แˆ แ‰ฅแ‹ฌ แŠ แˆตแ‰ฃแˆˆแˆแข แŠฅแ‹šแ‹ซแˆ แˆˆแˆ™แŠจแˆซ แŒแˆซแˆ แˆ˜แŒ แ‹จแ‰… แ‹ญแ‰ฝแˆ‹แˆ‰. https://t.me/tondev_ru
  8. แŒ แ‰ƒแˆš แˆ˜แˆจแŒƒ แ‹ซแŒˆแŠ˜แˆแ‰ แ‰ต แˆตแˆˆ แ‰ถแŠ• แˆŒแˆ‹ แ‹แ‹ญแ‹ญแ‰ตแก- https://t.me/TONgramDev
  9. แ‹จแ‹แ‹ตแ‹ตแˆฉ แ‹จแˆ˜แŒ€แˆ˜แˆชแ‹ซ แ‹ฐแˆจแŒƒแก- https://contest.com/blockchain
  10. แ‹จแ‹แ‹ตแ‹ตแˆฉ แˆแˆˆแ‰ฐแŠ› แ‹ฐแˆจแŒƒแก- https://contest.com/blockchain-2

แˆแŠ•แŒญ: hab.com

แ‰ DDoS แŒฅแ‰ แ‰ƒแฃ VPS VDS แŠ แŒˆแˆแŒ‹แ‹ฎแ‰ฝ แˆˆแŒฃแ‰ขแ‹ซแ‹Žแ‰ฝ แŠ แˆตแ‰ฐแˆ›แˆ›แŠ แˆ›แˆตแ‰ฐแŠ“แŒˆแŒƒ แ‹ญแŒแ‹™ ๐Ÿ”ฅ แŠ แˆตแ‰ฐแˆ›แˆ›แŠ แ‹จแ‹ตแˆญ แŒฃแ‰ขแ‹ซ แˆ›แˆตแ‰ฐแŠ“แŒˆแŒƒ แ‰ แ‹ฒแ‹ถแŠคแˆต แŒฅแ‰ แ‰ƒแฃ แ‰ แ‰ชแ’แŠคแˆต แ‰ชแ‹ฒแŠคแˆต แŠ แŒˆแˆแŒ‹แ‹ฎแ‰ฝ แ‹ญแŒแ‹™ | ProHoster