{"id":327479,"date":"2022-01-10T08:54:35","date_gmt":"2022-01-10T08:54:35","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=327479"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=327479","title":{"rendered":"<span>\u041f\u0438\u0448\u0435\u043c \u0437\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d-\u0438\u0433\u0440\u0443 \u043d\u0430 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u0445 Rust<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"bordered full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"1249\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/05c\/649\/08e\/05c64908e626635648ff11e03627d21c.png\" data-width=\"2220\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0430\u043d\u043e\u043d\u0441\u044b \u043f\u0440\u043e NFT-metaverse-\u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d-\u0438\u0433\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u043b\u0438 \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0446\u0438\u0438 \u0432 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432 \u043f\u043e \u043e\u0446\u0435\u043d\u043a\u0435 \u0432 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u044b, \u043d\u043e \u043f\u0440\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0442\u0430\u043c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u043b\u0430\u0448\u043a\u0438 Coming Soon, \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0434\u0430\u0436\u0430 JPG-\u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u043d\u0430 \u0430\u0443\u043a\u0446\u0438\u043e\u043d\u0430\u0445 NFT-\u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u043b\u0438\u0431\u043e \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0441 \u0433\u043e\u043c\u0435\u043e\u043f\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0434\u043e\u0437\u0430\u043c\u0438 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430. \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043e\u043a\u0440\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u0432\u0441\u0451 \u043f\u0443\u0437\u044b\u0440\u0435\u043c \u0445\u0430\u0439\u043f\u0430, \u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0441\u0442\u0435\u043a\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d-\u0438\u0433\u0440\u0443 \u0441 NFT, \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0432 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u0437\u0430 2 \u0434\u043d\u044f, <s>\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043a\u0443\u043f\u0430\u0439\u0442\u0435 \u043c\u043e\u0438 NFT<\/s> (\u043d\u0435\u0442).<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u044b\u0435 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u0438\u0433\u0440\u044b \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0438 \u0442\u0430\u043a\u0438\u0435:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0431\u0435\u0434\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043c\u0435\u043d\u0438\u0435\u043c, \u0430 \u043d\u0435 \u0440\u0430\u043d\u0434\u043e\u043c\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0433\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u0438\u0432 \u0436\u0438\u0432\u044b\u0445 \u043b\u044e\u0434\u0435\u0439 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u043d\u044c\u0433\u0438<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0438\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0414\u043e\u0432\u0435\u0440\u0438\u0435. \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0435\u043d\u044c\u0433\u0438 \u043d\u0430 \u043a\u043e\u043d, \u0438\u0433\u0440\u043e\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u043e\u043d \u0442\u043e\u0447\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0431\u0430\u043d\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0431\u0435\u0434\u044b, \u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438\u0433\u0440\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e\u0442\u0430. \u0415\u0441\u043b\u0438 \u0441\u043b\u043e\u0436\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438\/\u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0434\u0435\u043d\u044c\u0433\u0438 \u0438\u043b\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u0433\u0440\u0435, \u044d\u0442\u043e \u0441\u0443\u0436\u0430\u0435\u0442 \u043a\u0440\u0443\u0433 \u0438\u0433\u0440\u043e\u043a\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u0445\u0432\u0430\u0442\u043a\u0430 \u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u041c\u043d\u0435 \u043d\u0430\u0434\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u0442\u0440\u0430\u0442\u0430\u043c\u0438 \u0438, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0431\u0435\u0437 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0439.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0440\u0438\u0435\u043c \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c, \u0432\u0435\u0434\u044c \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u043e\u043c. \u0415\u0441\u043b\u0438 \u0438\u0433\u0440\u0443 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0437\u0430\u0441\u0443\u043d\u0443\u0442\u044c \u0432 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442, \u0442\u043e \u043e\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0431\u0435\u0437\u0434\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\/\u0431\u0435\u043a\u044d\u043d\u0434\u0430 \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0446\u0435\u043d\u0442\u0440\u0430 \u0434\u043e\u0432\u0435\u0440\u0438\u044f. <strong>\u041d\u0443\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043a\u043e\u0434\u0443<\/strong>. \u0418\u0433\u0440\u043e\u043a\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u0441\u0435 \u0441\u0432\u043e\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442, \u0442\u043e\u0442 \u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u0442\u043e \u0432\u044b\u0438\u0433\u0440\u0430\u043b, \u0430 \u043f\u043e\u0442\u043e\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u0437.<\/p>\n<p>\u0421\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 (\u0438\u043b\u0438 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, dApp) &#8212; \u044d\u0442\u043e \u043d\u0435\u043a\u0430\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u0430\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c (\u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 (\u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435) \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u043e\u0432. \u0412\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u044b \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u044b \u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438\u0433\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0434\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u0434 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0430 \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0440 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0441\u0431\u0435\u0436\u0430\u0442\u044c \u0441 \u0434\u0435\u043d\u044c\u0433\u0430\u043c\u0438, \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>\u041d\u0430 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430\u0445 &#171;\u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u043e\u043b\u043d\u044b&#187; \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0431\u044b\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u0440\u043e\u0433\u043e, \u043d\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u0430\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0441 \u043a\u0440\u0430\u0439\u043d\u0435 \u0434\u0435\u0448\u0435\u0432\u044b\u043c\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438, \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 $0.001 \u0437\u0430 \u201c\u0445\u043e\u0434\u201d \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0432 1 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. RTS \u0438\u043b\u0438 \u0448\u0443\u0442\u0435\u0440\u044b \u0442\u0443\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0448\u044c, \u043d\u043e \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u044b\u0435 \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u0433\u0440\u044b \u0443\u0436\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u043c\u0438. \u0422\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u043c\u0438 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430\u043c\u0438 Wasm \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c <s>\u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434<\/s> \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0438\u0433\u0440\u043e\u0432\u0443\u044e \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443, \u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0440\u0430\u043d\u044c\u0448\u0435 \u0438 \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0432 Open Source. <\/p>\n<p>\u042f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 <strong>\u0438\u0433\u0440\u044b \u0432 \u0448\u0430\u0448\u043a\u0438<\/strong>, \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0447\u0443\u0436\u043e\u0439 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434. \u041e\u0442\u043a\u0440\u044b\u043b git, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u043f\u043e\u0438\u0441\u043a \u0438 \u0432\u0437\u044f\u043b \u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0438\u0437 \u0432\u044b\u0434\u0430\u0447\u0438: \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u043a\u0438 \u0438\u0433\u0440\u044b (<a href=\"https:\/\/github.com\/dboone\/rusty-checkers\" rel=\"noopener noreferrer nofollow\"><strong><u>rusty-checkers<\/u><\/strong><\/a>) \u0438 JS UI \u0434\u043b\u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 (<a href=\"https:\/\/github.com\/codethejason\/checkers\" rel=\"noopener noreferrer nofollow\"><strong><u>checkers<\/u><\/strong><\/a>). <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"438\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/312\/89c\/924\/31289c924a448e126d62616f7f729ca9.png\" data-width=\"1671\"\/><figcaption><\/figcaption><\/figure>\n<h2>\u0414\u0435\u043b\u0430\u0435\u043c \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442<\/h2>\n<p>\u0421\u0430\u043c\u043e \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u043d\u0430 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 NEAR, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/www.npmjs.com\/package\/create-near-app\" rel=\"noopener noreferrer nofollow\"><u>create-near-app<\/u><\/a>, \u0432 \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u044f \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0438\u0437 <strong>rusty-checkers<\/strong>, \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"http:\/\/lib.rs\" rel=\"noopener noreferrer nofollow\">lib.rs<\/a> \u0438\u043c\u043f\u043e\u0440\u0442 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0433\u0440\u044b, \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 (\u0434\u043e\u043b\u043e\u0439 <code>println!<\/code> ), \u0443\u0431\u0440\u0430\u043b \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f <code>stdin<\/code> \u0438 <code>stdout<\/code> \u0438 \u043f\u043e \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0443 \u043e\u0431\u043d\u043e\u0432\u0438\u043b \u043a\u043e\u0434 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/github.com\/rust-lang\/rust\/issues\/80165\" rel=\"noopener noreferrer nofollow\"><u>\u0432\u0435\u043b\u0435\u043d\u0438\u044f\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/u><\/a>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0438\u0441\u0430\u043b <code>dyn<\/code> \u0434\u043b\u044f \u0432\u0441\u0435\u0445 <code>Trait<\/code> \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0441\u043c\u0438\u0440\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u0447\u0438\u043d\u0438\u043b\u0441\u044f \u0432\u0441\u0435\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0432\u0435\u043b\u0438\u043a\u043e\u0433\u043e \u0438 \u0443\u0436\u0430\u0441\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 Rust \u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0447\u0430\u0441\u0430 \u043c\u043e\u0439 \u043a\u043e\u0434 \u0443\u0436\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443.<\/p>\n<h4>\u041a\u0430\u043a \u0431\u044b\u043b\u043e<\/h4>\n<p>\u0421\u0442\u0430\u0440\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <a href=\"https:\/\/github.com\/dboone\/rusty-checkers\/blob\/master\/src\/main.rs#L59\" rel=\"noopener noreferrer nofollow\"><u>main()<\/u><\/a> \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:\u00a0<\/p>\n<ul>\n<li>\n<p>\u0420\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435<\/p>\n<\/li>\n<\/ul>\n<pre><code>checkers::print_board(game.board()).unwrap();<\/code><\/pre>\n<ul>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0446\u0438\u043a\u043b, \u0438\u0433\u0440\u043e\u043a\u0430 \u043f\u0440\u043e\u0441\u044f\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0445\u043e\u0434, \u0447\u0438\u0442\u0430\u044f \u0435\u0433\u043e \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<pre><code>stdin().read_line(&amp;mut line);let parse_result = checkers::parse_move(&amp;line);<\/code><\/pre>\n<ul>\n<li>\n<p>\u0425\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u0441\u0451 \u043e\u043a, \u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u0433\u0440\u044b<\/p>\n<\/li>\n<\/ul>\n<pre><code>let move_result = apply_positions_as_move(&amp;mut game, positions);<\/code><\/pre>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u0432\u0448\u0438\u0439, \u0442\u043e \u0446\u0438\u043a\u043b \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f<\/p>\n<\/li>\n<\/ul>\n<pre><code>Ok(game_state) => match game_state { GameState::InProgress => { }, GameState::GameOver{winner_id} => { } }<\/code><\/pre>\n<h4>\u041a\u0430\u043a \u0441\u0442\u0430\u043b\u043e<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u044f \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b \u0434\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/zavodil\/near-checkers\/blob\/master\/contract\/src\/lib.rs#L227\" rel=\"noopener noreferrer nofollow\"><u>make_move<\/u><\/a>, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f <code>game_id<\/code> \u0438 <code>line<\/code> (\u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u0445\u043e\u0434\u043e\u043c, \u0432\u0435\u0434\u044c \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442). \u0414\u0430\u043b\u0435\u0435 \u043c\u044b:<\/p>\n<ul>\n<li>\n<p>\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0438\u0433\u0440\u0443 \u0438\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430<\/p>\n<\/li>\n<\/ul>\n<pre><code>let mut game: Game = self.games.get(game_id).expect(\"Game not found\");<\/code><\/pre>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430, \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u0435\u0441\u0442\u044c \u043f\u0440\u0430\u0432\u043e \u0445\u043e\u0434\u0430\u00a0<\/p>\n<\/li>\n<\/ul>\n<pre><code>assert_eq!(game.current_player_account_id(), env::predecessor_account_id(), \"ERR_NO_ACCESS\");<\/code><\/pre>\n<ul>\n<li>\n<p>\u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u043a\u043e\u0434 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u0445\u043e\u0434\u00a0<\/p>\n<\/li>\n<\/ul>\n<pre><code>let parse_result = input::parse_move(&amp;line);<\/code><\/pre>\n<ul>\n<li>\n<p>\u0421\u043e\u0432\u0435\u0440\u0448\u0430\u0435\u043c \u0445\u043e\u0434<\/p>\n<\/li>\n<\/ul>\n<pre><code>let move_result = util::apply_positions_as_move(&amp;mut game, positions);<\/code><\/pre>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044f\u00a0<\/p>\n<\/li>\n<\/ul>\n<pre><code>Ok(game_state) => match game_state { GameState::InProgress => { }, GameState::GameOver{winner_id} => { } }<\/code><\/pre>\n<ul>\n<li>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0438\u0433\u0440\u0443 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 (\u043e\u0431\u044a\u0435\u043a\u0442 games)<\/p>\n<\/li>\n<\/ul>\n<pre><code>self.games.insert(&amp;game_id, &amp;game_to_save);<\/code><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a (\u0431\u044b\u043b\u043e -> \u0441\u0442\u0430\u043b\u043e)<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"844\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/52f\/c50\/754\/52fc50754fb743386e8daa49236141c9.png\" data-width=\"1235\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0445\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 &#171;\u0447\u0438\u0442\u0430\u0435\u0442&#187; \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u0433\u0440\u044b, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0440\u0430\u043d\u0435\u0435 \u0432 <strong>rusty-checkers<\/strong> \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0445\u043e\u0434\u0430, \u0430 \u043f\u043e\u0442\u043e\u043c, \u0435\u0441\u043b\u0438 \u0431\u044b\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e\u0441\u043a\u0438 \u043d\u0430\u0437\u0430\u0434 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/zavodil\/near-checkers\/blob\/master\/contract\/src\/game.rs#L31\" rel=\"noopener noreferrer nofollow\"><u>GameToSave<\/u><\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f:<\/p>\n<pre><code>#[derive(BorshDeserialize, BorshSerialize)] pub struct GameToSave { pub(crate) player_1: PlayerInfo, pub(crate) player_2: PlayerInfo, pub(crate) reward: TokenBalance, pub(crate) winner_index: Option&lt;usize>, pub(crate) turns: u64, pub(crate) last_turn_timestamp: Timestamp, pub(crate) total_time_spent: Vec&lt;Timestamp>, pub(crate) board: BoardToSave, pub(crate) current_player_index: usize }<\/code><\/pre>\n<p><code>Player_1<\/code><strong>, <\/strong><code>player_2<\/code> &#8212; \u0438\u043c\u0435\u043d\u0430 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432 \u0438\u0433\u0440\u043e\u043a\u043e\u0432, <code>reward<\/code> &#8212; \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0430\u0433\u0440\u0430\u0434\u044b \u0437\u0430 \u0438\u0433\u0440\u0443 \u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u0442\u043e\u043a\u0435\u043d\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0433\u0440\u0430\u0434\u0430, <code>winner_index<\/code> &#8212; \u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044f (0\/1), \u0441\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0442\u0443\u0442 \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f <code>Option<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. <code>Turns<\/code><strong> &#8212; <\/strong>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u0440\u0442\u0438\u0438 \u0445\u043e\u0434\u043e\u0432, \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 UI.<strong> <\/strong><code>Last_turn_timestamp<\/code><strong> <\/strong>&#8212; \u0432\u0440\u0435\u043c\u044f \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0445\u043e\u0434\u0430 \u0438 <code>total_time_spent<\/code><strong> <\/strong>&#8212; \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u0430\u0436\u0434\u044b\u043c \u0438\u0433\u0440\u043e\u043a\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0442\u0438\u044e, \u0435\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. <code>Board<\/code><strong> <\/strong>&#8212; \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u043e\u0441\u043a\u043e\u0439, <code>current_player_index<\/code><strong> <\/strong>&#8212; \u0438\u043d\u0434\u0435\u043a\u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0438\u0433\u0440\u043e\u043a\u0430 (0\/1) \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0438\u0437 <a href=\"https:\/\/github.com\/dboone\/rusty-checkers\/blob\/master\/src\/checkers\/game.rs#L40-L42\" rel=\"noopener noreferrer nofollow\"><u>\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/u><\/a>.\u00a0 <code>BorshDeserialize<\/code><strong>, <\/strong><code>BorshSerialize<\/code> &#8212;  \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/near\/borsh-rs\" rel=\"noopener noreferrer nofollow\"><u>Borsh \u0434\u043b\u044f Rust<\/u><\/a>.<\/p>\n<p>\u0427\u0442\u043e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430:<\/p>\n<pre><code>#[derive(BorshDeserialize, BorshSerialize, PanicOnDefault)] pub struct Checkers {\u00a0\u00a0\u00a0\u00a0 games: LookupMap&lt;GameId, GameToSave>,\u00a0\u00a0\u00a0\u00a0 available_players: UnorderedMap&lt;AccountId, VGameConfig>,\u00a0\u00a0\u00a0\u00a0 stats: UnorderedMap&lt;AccountId, VStats>,\u00a0\u00a0\u00a0\u00a0 available_games: UnorderedMap&lt;GameId, (AccountId, AccountId)>,\u00a0\u00a0\u00a0\u00a0 whitelisted_tokens: LookupSet&lt;AccountId>,\u00a0\u00a0\u00a0\u00a0 next_game_id: GameId,\u00a0\u00a0\u00a0\u00a0 service_fee: Balance }<\/code><\/pre>\n<ul>\n<li>\n<p><code>games<\/code> &#8212; \u0445\u0435\u0448\u043c\u0430\u043f, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 <code>GameId<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0433\u0440\u044b (<code>GameToSave<\/code>), \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435.\u00a0<\/p>\n<\/li>\n<li>\n<p><code>available_players<\/code> &#8212; \u00a0\u0445\u0435\u0448\u043c\u0430\u043f \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0432 \u043b\u0438\u0441\u0442\u0435 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f, \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043f\u0430\u0440\u0443 \u043d\u0430 \u0438\u0433\u0440\u0443. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0442\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442 <code>VGameConfig. <\/code><\/p>\n<pre><code>pub struct GameConfig {\u00a0\u00a0\u00a0\u00a0 pub(crate) deposit: Option&lt;Balance>,\u00a0\u00a0\u00a0\u00a0 pub(crate) first_move: FirstMoveOptions,\u00a0\u00a0\u00a0\u00a0 pub(crate) opponent_id: Option&lt;AccountId> }<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f <code>deposit<\/code> (\u0441\u0443\u043c\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u0433\u0440\u043e\u043a \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043d\u0430 \u043a\u043e\u043d), <code>first_move<\/code> &#8212; \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0445\u043e\u0434\u0430 (\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0438\u043b\u0438 \u0440\u0430\u043d\u0434\u043e\u043c) \u0438 <code>opponent_id<\/code> \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u044b\u0433\u0440\u0430\u0442\u044c \u043b\u0438\u0448\u044c \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u043e\u043f\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c.<\/p>\n<\/li>\n<li>\n<p><code>stats<\/code> &#8212; \u0445\u0435\u0448\u043c\u0430\u043f \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u043e\u0439 \u0438\u0433\u0440\u043e\u043a\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0444\u0435\u0440\u0430\u043b\u043b\u0430, \u043f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u0432\u0448\u0435\u0433\u043e \u0435\u0433\u043e.<\/p>\n<\/li>\n<li>\n<p><code>available_games<\/code> &#8212; \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 id \u0438\u0433\u0440, \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442<\/p>\n<\/li>\n<li>\n<p><code>whitelisted_tokens<\/code> &#8212; \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0435\u043f\u043e\u0437\u0438\u0442\u0430,<\/p>\n<\/li>\n<li>\n<p><code>next_game_id<\/code> &#8212; id \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u0438\u0433\u0440\u044b<\/p>\n<\/li>\n<li>\n<p><code>service_fee<\/code> &#8212; \u043f\u0440\u043e\u0446\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0432\u0437\u0438\u043c\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u0438 \u0441 \u0432\u044b\u0438\u0433\u0440\u044b\u0448\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043a\u043e\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0445\u0435\u0448\u043c\u0430\u043f\u0430, \u043e\u0434\u0438\u043d <code>LookupMap<\/code><strong> <\/strong>\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 <code>UnorderedMap<\/code>, \u0438\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u0442\u0443\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e <a href=\"https:\/\/docs.near.org\/docs\/concepts\/data-storage#unorderedmap\" rel=\"noopener noreferrer nofollow\"><strong><u>UnorderedMap<\/u><\/strong><\/a><strong> <\/strong>\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0432\u0435\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u0432. \u0414\u043b\u044f <a href=\"https:\/\/docs.near.org\/docs\/concepts\/data-storage#lookupmap\" rel=\"noopener noreferrer nofollow\"><strong><u>LookupMap<\/u><\/strong><\/a><strong> <\/strong>\u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0442, \u043d\u043e \u0443 \u043d\u0430\u0441 \u0438 \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 &#171;\u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0442\u044c&#187; \u0432 \u0446\u0438\u043a\u043b\u0435 \u0432\u0441\u0435 \u0441\u044b\u0433\u0440\u0430\u043d\u043d\u044b\u0435 \u0438\u0433\u0440\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043f\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0441\u0432\u043e\u0435\u0439 \u0438\u0433\u0440\u0435 \u043f\u043e<strong> <\/strong><code>game_id<\/code><strong>,<\/strong> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d\u0438 \u0443\u0436\u0435 \u0437\u043d\u0430\u044e\u0442, \u0430 \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u044b \u0441\u043c\u043e\u0433\u0443\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0438\u0433\u0440\u0430\u0445 \u0438\u0437 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430<strong> <\/strong><code>available_games<\/code><strong>. <\/strong>\u0417\u0430 \u0441\u0447\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0435\u0439, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c <a href=\"https:\/\/docs.near.org\/docs\/concepts\/data-storage#lookupmap\" rel=\"noopener noreferrer nofollow\"><strong><u>LookupMap<\/u><\/strong><\/a> \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u043f\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u043c\u043e\u043c\u0443 \u0433\u0430\u0437\u0443.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0430\u0434\u044b, \u043a\u0430\u043f\u0438\u0442\u0443\u043b\u044f\u0446\u0438\u0438, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u0440\u0435\u0444\u0435\u0440\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b. \u041d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 &#171;\u0440\u044e\u0448\u0435\u0447\u043a\u0438&#187; \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435.<\/p>\n<h2>\u0414\u0435\u043b\u0430\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434<\/h2>\n<p>\u0421 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u201c\u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f\u201d \u0435\u0449\u0435 \u043f\u0440\u043e\u0449\u0435. \u041a\u043e\u0434 \u043d\u0430 JS \u0438\u0437 \u0432\u0437\u044f\u0442\u043e\u0439 <a href=\"https:\/\/github.com\/codethejason\/checkers\" rel=\"noopener noreferrer nofollow\"><u>\u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/u><\/a> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442 8 * 8, \u0433\u0434\u0435 0 &#8212; \u043f\u0443\u0441\u0442\u0430\u044f \u043a\u043b\u0435\u0442\u043a\u0430, 1 \u0438 2 &#8212; \u0448\u0430\u0448\u043a\u0438 \u0438\u0433\u0440\u043e\u043a\u043e\u0432.<\/p>\n<pre><code>var gameBoard = [  \u00a0\u00a0\u00a0   [0, 1, 0, 1, 0, 1, 0, 1],  \u00a0\u00a0\u00a0   [1, 0, 1, 0, 1, 0, 1, 0],  \u00a0\u00a0\u00a0   [0, 1, 0, 1, 0, 1, 0, 1],  \u00a0\u00a0\u00a0   [0, 0, 0, 0, 0, 0, 0, 0],  \u00a0\u00a0\u00a0   [0, 0, 0, 0, 0, 0, 0, 0],  \u00a0\u00a0\u00a0   [2, 0, 2, 0, 2, 0, 2, 0],  \u00a0\u00a0\u00a0   [0, 2, 0, 2, 0, 2, 0, 2],  \u00a0\u00a0\u00a0   [2, 0, 2, 0, 2, 0, 2, 0]  \u00a0 ];<\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0435\u0435\u043c\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445, \u044f \u0434\u043e\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u044e <a href=\"https:\/\/github.com\/zavodil\/near-checkers\/blob\/master\/contract\/src\/board.rs#L167\" rel=\"noopener noreferrer nofollow\"><u>\u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f,<\/u><\/a> \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0448\u0430\u0448\u0435\u043a\u00a0\u0432 \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u0447\u0438\u0441\u043b\u0430, \u0430 \u0434\u0430\u043c\u043a\u0438 (King) \u044f \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043b \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438.\u00a0<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u043b\u044f<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>for row in 0..board.number_rows {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for column in 0..board.number_columns {   let tile = &amp;board.tiles[board.indices_to_index(row, column)];     match tile.get_piece() {     None => 0,       Some(piece) =>\u00a0match piece.get_type() {       PieceType::Man => piece.get_player_id() as i8,         PieceType::King => piece.get_player_id() as i8 * -1       }     }   } }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0445\u043e\u0434\u044b, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 <a href=\"https:\/\/github.com\/zavodil\/near-checkers-ui\" rel=\"noopener noreferrer nofollow\"><u>\u043d\u0430 \u043c\u043e\u0435\u043c \u0444\u043e\u0440\u043a\u0435 UI<\/u><\/a> \u0432 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u043c \u0434\u043b\u044f\u00a0Rust-\u043a\u043e\u0434\u0430 \u0432\u0438\u0434\u0435, \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043d\u0430 180 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432 \u0434\u043e\u0441\u043a\u0443 \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0433\u0440\u043e\u043a\u0430, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435, \u043f\u043e\u043a\u0430 \u043a \u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u0438\u0433\u0440\u043e\u043a\u0443 \u043d\u0435 \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u0445\u043e\u0434. \u0414\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u044f \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e \u0438\u0433\u0440\u0443 \u043f\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0443, \u0431\u043b\u0430\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u044b \u0447\u0442\u0435\u043d\u0438\u044f \u0438\u0437 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435. \u042d\u0442\u043e \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e <a href=\"https:\/\/github.com\/zavodil\/near-checkers-ui\/blob\/master\/near.js\" rel=\"noopener noreferrer nofollow\"><u>\u0443\u0431\u043e\u0433\u043e\u043c JS-\u043a\u043e\u0434\u0435<\/u><\/a>, \u0441\u0441\u044b\u043b\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u043c\u043d\u0435 \u0441\u0442\u044b\u0434\u043d\u043e, \u0445\u043e\u0442\u044f \u043e\u043d \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 &#171;\u043a\u043b\u0435\u044f&#187; \u043c\u0435\u0436\u0434\u0443 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u043c \u0438 JS \u043a\u043e\u0434\u043e\u043c \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b <a href=\"https:\/\/www.npmjs.com\/package\/near-api-js\" rel=\"noopener noreferrer nofollow\"><u>near-api-js<\/u><\/a>, \u0442\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442, \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0438 \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 js-\u0432\u044b\u0437\u043e\u0432\u043e\u0432: \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0449\u0438\u0445 \u0447\u0442\u0435\u043d\u0438\u0435 (<code>viewMethods<\/code>) \u0438 \u0437\u0430\u043f\u0438\u0441\u044c (<code>changeMethods<\/code>).<\/p>\n<pre><code>window.contract = await new window.nearApi.Contract( window.walletConnection.account(),  nearConfig.contractName, {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0   viewMethods: ['get_available_players', 'get_available_games', 'get_game'],   changeMethods: ['make_available', 'start_game', 'make_move', 'give_up', 'make_unavailable', 'stop_game'], })<\/code><\/pre>\n<p>\u041f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0433\u0440\u0443 \u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code>await window.contract.start_game({opponent_id: player}, GAS_START_GAME, deposit)<\/code><\/pre>\n<p>\u0413\u0434\u0435<strong> <\/strong><code>GAS_START_GAME<\/code><strong> <\/strong>&#8212; \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043a \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0433\u0430\u0437\u0430, \u0430 <code>deposit<\/code> &#8212; \u0441\u0443\u043c\u043c\u0430 \u0441\u0442\u0430\u0432\u043a\u0438 \u0432 \u0442\u043e\u043a\u0435\u043d\u0430\u0445.<\/p>\n<p>\u0418\u0442\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a,\u00a0<\/p>\n<ul>\n<li>\n<p>\u043c\u044b \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430 <a href=\"https:\/\/checkers.nearspace.info\" rel=\"noopener noreferrer nofollow\"><u>\u0441\u0430\u0439\u0442 \u0441 UI<\/u><\/a>,\u00a0<\/p>\n<\/li>\n<li>\n<p>\u043b\u043e\u0433\u0438\u043d\u0438\u043c\u0441\u044f c \u043f\u043e\u043c\u043e\u0449\u044c\u044e NEAR-\u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043a\u043b\u044e\u0447, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043b\u0438\u0448\u044c \u0441 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u043c \u0438\u0433\u0440\u044b \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d\u044b \u0431\u0435\u0437 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0432 \u043b\u0438\u0441\u0442\u0435 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0438 \u043b\u0438\u0431\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0438\u0433\u0440\u0443 \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043d\u0438\u0445, \u043b\u0438\u0431\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u0441\u044f \u0432 \u044d\u0442\u043e\u0442 \u043b\u0438\u0441\u0442 \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u043c, \u043f\u043e\u043a\u0430 \u0432\u044b\u0431\u0435\u0440\u0443\u0442 \u043d\u0430\u0441<\/p>\n<\/li>\n<li>\n<p>\u0418\u0433\u0440\u0430\u0435\u043c \u0432 \u0448\u0430\u0448\u043a\u0438, \u0434\u0435\u043b\u0430\u044f \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0445\u043e\u0434\u044b, UI \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0448\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>make_move<\/code>, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0438\u0433\u0440\u044b, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u043c\u0441\u044f \u0432 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043b\u044e\u0431\u044b\u0435 &#171;\u0447\u0438\u0442\u044b&#187; \u043d\u0430 UI \u043d\u0435 \u0438\u043c\u0435\u044e\u0442 \u0441\u043c\u044b\u0441\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p>\u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0433\u0440\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f, \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u0441\u0435 \u0442\u043e\u043a\u0435\u043d\u044b, \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u043d\u0430 \u043a\u043e\u043d.<\/p>\n<\/li>\n<\/ul>\n<h2>\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c NFT<\/h2>\n<p>\u041f\u0440\u0438\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0433\u0440\u0443 NFT-\u043a\u043e\u0441\u043c\u0435\u0442\u0438\u043a\u043e\u0439: \u0435\u0441\u043b\u0438 \u0438\u0433\u0440\u043e\u043a \u043a\u0443\u043f\u0438\u043b NFT-\u0442\u043e\u043a\u0435\u043d\u044b \u0441\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u0442\u043e \u043e\u043d \u0438 \u0435\u0433\u043e \u0441\u043e\u043f\u0435\u0440\u043d\u0438\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u0438\u0434\u0435\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0443 \u0438\u0437 NFT \u043d\u0430 \u0448\u0430\u0448\u043a\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u0438\u0433\u0440\u043e\u043a\u0430.<\/p>\n<p>\u0418\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f NFT \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u0442\u0443\u0442 \u044f \u0442\u043e\u0436\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0447\u0443\u0436\u043e\u0439 \u043a\u043e\u0434, \u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u0438\u0437 <a href=\"https:\/\/github.com\/near-examples\/NFT\" rel=\"noopener noreferrer nofollow\">core_contracts <\/a>\u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 NEAR. \u0421\u043e\u0437\u0434\u0430\u043b \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<\/p>\n<pre><code>near_contract_standards::impl_non_fungible_token_core!(NfTCheckers, tokens); near_contract_standards::impl_non_fungible_token_approval!(NfTCheckers, tokens);  near_contract_standards::impl_non_fungible_token_enumeration!(NfTCheckers, tokens);<\/code><\/pre>\n<p>\u0412\u0441\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 NFT \u0441\u0440\u0430\u0437\u0443 \u0441\u0442\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <a href=\"https:\/\/github.com\/zavodil\/near-checkers\/blob\/master\/nft-contract\/src\/lib.rs#L67\" rel=\"noopener noreferrer nofollow\">nft_mint<\/a> \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f NFT \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0442\u0443\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0442\u043e\u043a\u0435\u043d\u0430:<\/p>\n<pre><code>#[payable]      pub fn nft_mint(          &amp;mut self,          token_id: TokenId,          receiver_id: AccountId,          token_metadata: TokenMetadata)  -> Token {  assert_eq!(self.owner_id, env::predecessor_account_id(), \"ERR_NO_ACCESS\");  self.tokens.internal_mint(token_id, receiver_id, Some(token_metadata)) }     <\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430, \u044f \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/vgrichina\/web4\/\" rel=\"noopener noreferrer nofollow\">web4<\/a> \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f css-\u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430, \u0433\u0434\u0435 \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430 \u0438 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 \u0442\u043e\u043a\u0435\u043d\u0430. <\/p>\n<pre><code>pub fn web4_get(&amp;self, request: Web4Request) -> Web4Response { let path = request.path.expect(\"Path expected\");          let token_id = get_token_id(&amp;path).unwrap_or_default();   if !token_id.is_empty() {             if path.starts_with(NFT_CSS_SOURCE) {     if let Some(token) = self.tokens.nft_token(token_id) {  return Web4Response::css_response(           format!(\"div#board .piece.{}.{} {{  background-image: url('{}');  background-size: cover;  background-repeat: unset; }}\", token.owner_id.to_string(),  token.token_id.to_string(),  token.metadata.expect(\"ERR_MISSING_DATA\").media.unwrap_or_default()) ); } } } }<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432\u044b\u0434\u0430\u0435\u0442 \u0438\u0437 NFT-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u043e\u0439 <a href=\"https:\/\/nft-checkers.near.page\/style\/chip.css\" rel=\"noopener noreferrer nofollow\">css-\u0441\u0442\u0438\u043b\u044c<\/a>:<\/p>\n<pre><code>div#board .piece.zavodil_near.chip { background-image: url('data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA\/wD\/AP+gvaeTAAAEJElEQVR4nO3bO2wcRRjA8R+JEQUCxyAo6AgFhJcBCxBxFGwgkikoKSKg4lVAgWQrIKoUIAVwJAShAdEAERGio6DgYRcJD0GQEI4UJKCIEAUCxRFQhPhBMXu5NdnH7D32HN\/9pdWOv5tv5rvvdr6Zb3bMgAF1MIxjWEjKVWQbgp1YTa6dFWVdZVMdnfyvn00VZV2lLgesWwYO6LUBHeJKvIdTWMS7uCJGcaiLRtXFJfgKV6dkD+Mu3IK\/i5RjnoDdeDa5r0f2aH75D5MLrsF0mXLME\/A4JjGP9ysaN4Q7MZaSjSXy0QjZGXyNpYI+7kjuC3gwVb4h6bttPhfm5bkWdA9ozuutXgdK+jiU1DuJbbheiAOrQlxoibtTBkxmyCYi25nTvgPKHH8vVjL0VmLsrCsIfo+Zijqz1g6JPD7Dc3hR8\/ucwfPCsC0kzwEn8FJS3i6Ms6GU7ESEYWlO4tMWdGJ5GR\/hfuHX\/xjHK\/aXSzsxoDEE6taNZqMshHrOQSxrP+DFXstJn21zQScaEQyq+2laweZ2G+mUA1aT+xEc7lCbeezAeFLulP1t03g099bQ195Uf23T90Gw7x1QZSU4hFdxbZdsaYVPMmQ\/4hnFCdRZqjjgdjxVoX6Di\/CokLdX4S+8jdMFde7LkR3ElzGdpB0wjNvkTy03p8pHrV2qZhnS4Am8FmNMBpvxesHn6eX1iGbavR0X5+gs4zth92iNA44IOXQMM9YmGkUR+fLINlvR3ZUqT2gum2dL9BZwE\/VvicXO2x2Z4mLaTztgXPEQGFXu2fXCjJCCZ7EsDGGsdcApxZlXVFRdJxwVsRfAWgdswa2Kn4DzhcYeYxa5QfCw+CC43okOgv26EhwEwcYfgyCYKg+CoD4MgnWvBLu9woul7SA4K37f\/s+q1qX4o+TzdDo8kip3JQj+kyqP5dY6lzeFHOCqCjrwG94qqZOXhX6hhXS4jG\/whuwNkaJ0+LTW0+Eyst42HRdsjaKKA5bwdM5nvRrbu8qrFNOvK8Gz9L0DOj0NjgvHabrJeHmVePr+1VinjD4kGFQXK6qfV+oJdZ4PmFD9CE\/lGHCPcGpsizDXviLs35+3VHHAHuzTjBtTeEg4kPh7h+2qwpPCOcEl4awQYWE2hZ+VrCZjHbANLwhffhG\/4kZsxX48UqI\/oni1mKcTw27hBNu85om2Oc33BB1xwBQuTMo7hH9q+EA4mPhAhP6o7Pd4Pafb6fAxFQJSQRtFTKTujSX5pObT0BGuw79JB4vChkIj4r5ToDckLFymU\/WnheEQIxsX\/yO1NAtUYca5JzJ\/EncsPcu4WFksW4UgvS8pR1FlCMziWzyGy4RDzPuVHEevkV80Z4FoqsaAeZG7recLfZ8NDhzQawN6TV0OWMkox8o2BMP4IbkurSgbMKCL\/AdBqz8yz5YYiQAAAABJRU5ErkJggg=='); background-size: cover; background-repeat: unset; }<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0447\u0438\u0442\u0430\u0435\u0442 NFT-\u0442\u043e\u043a\u0435\u043d\u044b, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0435\u0441\u044f \u043d\u0430 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0438 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0438\u043c css-\u0444\u0430\u0439\u043b\u044b. <\/p>\n<p>\u0412\u0441\u0451 \u0433\u043e\u0442\u043e\u0432\u043e! \u041c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0438\u0433\u0440\u0443, \u043b\u043e\u0433\u0438\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435 \u043d\u0430 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 \u0438 \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 NFT! \u041e\u0434\u0438\u043d \u0445\u043e\u0434 \u0432 \u0438\u0433\u0440\u0435 \u0441\u0442\u043e\u0438\u0442 ~$0.006, \u0447\u0442\u043e \u0435\u0449\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"\/img\/image-loader.svg\" height=\"542\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d1c\/e46\/417\/d1ce46417f218a9de90976d40f24f7c2.png\" data-width=\"981\"\/><figcaption><\/figcaption><\/figure>\n<h3>Fork me on Github<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u0433\u0440\u044b, \u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0441 \u043d\u043e\u0432\u043e\u0439 \u043b\u043e\u0433\u0438\u043a\u043e\u0439 \u043e\u0442 \u043d\u043e\u0432\u043e\u0439 \u0438\u0433\u0440\u044b, \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>make_move<\/code> \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\/\u0432\u044b\u0432\u043e\u0434 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f, \u0438 \u0432\u0443\u0430\u043b\u044f &#8212; \u0432\u043e\u0442 \u0432\u0430\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a\u0440\u0435\u0441\u0442\u0438\u043a\u0438-\u043d\u043e\u043b\u0438\u043a\u0438, \u0448\u0430\u0445\u043c\u0430\u0442\u044b, \u0433\u043e \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u044b\u0435 \u0438\u0433\u0440\u044b. \u041a\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u0438\u0448\u0438\u0442\u0435 \u043c\u043d\u0435 \u0432 <a href=\"https:\/\/bit.ly\/zavodil\" rel=\"noopener noreferrer nofollow\">\u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c<\/a>, \u0432\u043c\u0435\u0441\u0442\u0435 \u043f\u043e\u0438\u0433\u0440\u0430\u0435\u043c!<\/p>\n<p>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438: <a href=\"https:\/\/github.com\/zavodil\/near-checkers\/\" rel=\"noopener noreferrer nofollow\"><u>\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442<\/u><\/a>, <a href=\"https:\/\/github.com\/zavodil\/near-checkers-ui\" rel=\"noopener noreferrer nofollow\"><u>UI<\/u><\/a>.\u00a0<\/p>\n<\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/597551\/\"> https:\/\/habr.com\/ru\/post\/597551\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\" class=\"article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"bordered full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0430\u043d\u043e\u043d\u0441\u044b \u043f\u0440\u043e NFT-metaverse-\u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d-\u0438\u0433\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u043b\u0438 \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0446\u0438\u0438 \u0432 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432 \u043f\u043e \u043e\u0446\u0435\u043d\u043a\u0435 \u0432 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u044b, \u043d\u043e \u043f\u0440\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0442\u0430\u043c \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u043b\u0430\u0448\u043a\u0438 Coming Soon, \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0434\u0430\u0436\u0430 JPG-\u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a \u043d\u0430 \u0430\u0443\u043a\u0446\u0438\u043e\u043d\u0430\u0445 NFT-\u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u043b\u0438\u0431\u043e \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0441 \u0433\u043e\u043c\u0435\u043e\u043f\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0434\u043e\u0437\u0430\u043c\u0438 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430. \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043e\u043a\u0440\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u0442\u043e \u0432\u0441\u0451 \u043f\u0443\u0437\u044b\u0440\u0435\u043c \u0445\u0430\u0439\u043f\u0430, \u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0441\u0442\u0435\u043a\u0435 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d-\u0438\u0433\u0440\u0443 \u0441 NFT, \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0432 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u043a\u0430\u043a \u0443 \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u0437\u0430 2 \u0434\u043d\u044f, <s>\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043a\u0443\u043f\u0430\u0439\u0442\u0435 \u043c\u043e\u0438 NFT<\/s> (\u043d\u0435\u0442).<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u044b\u0435 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u0438\u0433\u0440\u044b \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u0431\u044b\u043b\u0438 \u0442\u0430\u043a\u0438\u0435:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0431\u0435\u0434\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043c\u0435\u043d\u0438\u0435\u043c, \u0430 \u043d\u0435 \u0440\u0430\u043d\u0434\u043e\u043c\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0433\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u0438\u0432 \u0436\u0438\u0432\u044b\u0445 \u043b\u044e\u0434\u0435\u0439 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u043d\u044c\u0433\u0438<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0440\u0435\u0448\u0438\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0414\u043e\u0432\u0435\u0440\u0438\u0435. \u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0435\u043d\u044c\u0433\u0438 \u043d\u0430 \u043a\u043e\u043d, \u0438\u0433\u0440\u043e\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e \u043e\u043d \u0442\u043e\u0447\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0431\u0430\u043d\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0431\u0435\u0434\u044b, \u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0438\u0433\u0440\u044b \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e\u0442\u0430. \u0415\u0441\u043b\u0438 \u0441\u043b\u043e\u0436\u043d\u043e \u0432\u0432\u0435\u0441\u0442\u0438\/\u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0434\u0435\u043d\u044c\u0433\u0438 \u0438\u043b\u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0438\u0433\u0440\u0435, \u044d\u0442\u043e \u0441\u0443\u0436\u0430\u0435\u0442 \u043a\u0440\u0443\u0433 \u0438\u0433\u0440\u043e\u043a\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u0445\u0432\u0430\u0442\u043a\u0430 \u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u041c\u043d\u0435 \u043d\u0430\u0434\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0437\u0430\u0442\u0440\u0430\u0442\u0430\u043c\u0438 \u0438, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0431\u0435\u0437 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0439.<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043f\u0440\u0438\u0435\u043c \u043f\u043b\u0430\u0442\u0435\u0436\u0435\u0439 \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c, \u0432\u0435\u0434\u044c \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u043e\u043c. \u0415\u0441\u043b\u0438 \u0438\u0433\u0440\u0443 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0437\u0430\u0441\u0443\u043d\u0443\u0442\u044c \u0432 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442, \u0442\u043e \u043e\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0431\u0435\u0437\u0434\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\/\u0431\u0435\u043a\u044d\u043d\u0434\u0430 \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0446\u0435\u043d\u0442\u0440\u0430 \u0434\u043e\u0432\u0435\u0440\u0438\u044f. <strong>\u041d\u0443\u0436\u043d\u043e \u043b\u0438\u0448\u044c \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043a\u043e\u0434\u0443<\/strong>. \u0418\u0433\u0440\u043e\u043a\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0432\u0441\u0435 \u0441\u0432\u043e\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442, \u0442\u043e\u0442 \u0438\u0445 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043a\u0442\u043e \u0432\u044b\u0438\u0433\u0440\u0430\u043b, \u0430 \u043f\u043e\u0442\u043e\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u0438\u0437.<\/p>\n<p>\u0421\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 (\u0438\u043b\u0438 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, dApp) &#8212; \u044d\u0442\u043e \u043d\u0435\u043a\u0430\u044f \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u0430\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c (\u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 (\u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435) \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u043e\u0432. \u0412\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u044b \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u044b \u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438\u0433\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u0434\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043a\u043e\u0434 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0430 \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0440 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0441\u0431\u0435\u0436\u0430\u0442\u044c \u0441 \u0434\u0435\u043d\u044c\u0433\u0430\u043c\u0438, \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p>\u041d\u0430 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430\u0445 &#171;\u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u043e\u043b\u043d\u044b&#187; \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0431\u044b\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u0440\u043e\u0433\u043e, \u043d\u043e \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0433\u043e\u0434\u044b \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043d\u0435\u043c\u0430\u043b\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0441 \u043a\u0440\u0430\u0439\u043d\u0435 \u0434\u0435\u0448\u0435\u0432\u044b\u043c\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438, \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 $0.001 \u0437\u0430 \u201c\u0445\u043e\u0434\u201d \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0432 1 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. RTS \u0438\u043b\u0438 \u0448\u0443\u0442\u0435\u0440\u044b \u0442\u0443\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0448\u044c, \u043d\u043e \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u044b\u0435 \u0438 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u0433\u0440\u044b \u0443\u0436\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u043d\u044b\u043c\u0438. \u0422\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u043c\u0438 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430\u043c\u0438 Wasm \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u043c \u043d\u0435 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c <s>\u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434<\/s> \u0441\u0432\u043e\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0438\u0433\u0440\u043e\u0432\u0443\u044e \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443, \u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0435 \u0440\u0430\u043d\u044c\u0448\u0435 \u0438 \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0435 \u0432 Open Source. <\/p>\n<p>\u042f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 <strong>\u0438\u0433\u0440\u044b \u0432 \u0448\u0430\u0448\u043a\u0438<\/strong>, \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0447\u0443\u0436\u043e\u0439 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434. \u041e\u0442\u043a\u0440\u044b\u043b git, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u043f\u043e\u0438\u0441\u043a \u0438 \u0432\u0437\u044f\u043b \u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u0438\u0437 \u0432\u044b\u0434\u0430\u0447\u0438: \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u043a\u0438 \u0438\u0433\u0440\u044b (<a href=\"https:\/\/github.com\/dboone\/rusty-checkers\" rel=\"noopener noreferrer nofollow\"><strong><u>rusty-checkers<\/u><\/strong><\/a>) \u0438 JS UI \u0434\u043b\u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u0430 (<a href=\"https:\/\/github.com\/codethejason\/checkers\" rel=\"noopener noreferrer nofollow\"><strong><u>checkers<\/u><\/strong><\/a>). <\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h2>\u0414\u0435\u043b\u0430\u0435\u043c \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442<\/h2>\n<p>\u0421\u0430\u043c\u043e \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u043d\u0430 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 NEAR, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/www.npmjs.com\/package\/create-near-app\" rel=\"noopener noreferrer nofollow\"><u>create-near-app<\/u><\/a>, \u0432 \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u044f \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043b \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u0438\u0437 <strong>rusty-checkers<\/strong>, \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432 \u0433\u043b\u0430\u0432\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"http:\/\/lib.rs\" rel=\"noopener noreferrer nofollow\">lib.rs<\/a> \u0438\u043c\u043f\u043e\u0440\u0442 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0433\u0440\u044b, \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 (\u0434\u043e\u043b\u043e\u0439 <code>println!<\/code> ), \u0443\u0431\u0440\u0430\u043b \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f <code>stdin<\/code> \u0438 <code>stdout<\/code> \u0438 \u043f\u043e \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0443 \u043e\u0431\u043d\u043e\u0432\u0438\u043b \u043a\u043e\u0434 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/github.com\/rust-lang\/rust\/issues\/80165\" rel=\"noopener noreferrer nofollow\"><u>\u0432\u0435\u043b\u0435\u043d\u0438\u044f\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/u><\/a>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0438\u0441\u0430\u043b <code>dyn<\/code> \u0434\u043b\u044f \u0432\u0441\u0435\u0445 <code>Trait<\/code> \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0441\u043c\u0438\u0440\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u0447\u0438\u043d\u0438\u043b\u0441\u044f \u0432\u0441\u0435\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0432\u0435\u043b\u0438\u043a\u043e\u0433\u043e \u0438 \u0443\u0436\u0430\u0441\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 Rust \u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0447\u0430\u0441\u0430 \u043c\u043e\u0439 \u043a\u043e\u0434 \u0443\u0436\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443.<\/p>\n<h4>\u041a\u0430\u043a \u0431\u044b\u043b\u043e<\/h4>\n<p>\u0421\u0442\u0430\u0440\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f <a href=\"https:\/\/github.com\/dboone\/rusty-checkers\/blob\/master\/src\/main.rs#L59\" rel=\"noopener noreferrer nofollow\"><u>main()<\/u><\/a> \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:\u00a0<\/p>\n<ul>\n<li>\n<p>\u0420\u0438\u0441\u0443\u0435\u0442\u0441\u044f \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435<\/p>\n<\/li>\n<\/ul>\n<pre><code>checkers::print_board(game.board()).unwrap();<\/code><\/pre>\n<ul>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0446\u0438\u043a\u043b, \u0438\u0433\u0440\u043e\u043a\u0430 \u043f\u0440\u043e\u0441\u044f\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0445\u043e\u0434, \u0447\u0438\u0442\u0430\u044f \u0435\u0433\u043e \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<pre><code>stdin().read_line(&amp;mut line);let parse_result = checkers::parse_move(&amp;line);<\/code><\/pre>\n<ul>\n<li>\n<p>\u0425\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u0441\u0451 \u043e\u043a, \u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u0433\u0440\u044b<\/p>\n<\/li>\n<\/ul>\n<pre><code>let move_result = apply_positions_as_move(&amp;mut game, positions);<\/code><\/pre>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u0432\u0448\u0438\u0439, \u0442\u043e \u0446\u0438\u043a\u043b \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f<\/p>\n<\/li>\n<\/ul>\n<pre><code>Ok(game_state) => match game_state { GameState::InProgress => { }, GameState::GameOver{winner_id} => { } }<\/code><\/pre>\n<h4>\u041a\u0430\u043a \u0441\u0442\u0430\u043b\u043e<\/h4>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u044f \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b \u0434\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/zavodil\/near-checkers\/blob\/master\/contract\/src\/lib.rs#L227\" rel=\"noopener noreferrer nofollow\"><u>make_move<\/u><\/a>, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f <code>game_id<\/code> \u0438 <code>line<\/code> (\u0441\u0442\u0440\u043e\u043a\u0430 \u0441 \u0445\u043e\u0434\u043e\u043c, \u0432\u0435\u0434\u044c \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 \u0443 \u043d\u0430\u0441 \u043d\u0435\u0442). \u0414\u0430\u043b\u0435\u0435 \u043c\u044b:<\/p>\n<ul>\n<li>\n<p>\u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0438\u0433\u0440\u0443 \u0438\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430<\/p>\n<\/li>\n<\/ul>\n<pre><code>let mut game: Game = self.games.get(game_id).expect(\"Game not found\");<\/code><\/pre>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430, \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434, \u0435\u0441\u0442\u044c \u043f\u0440\u0430\u0432\u043e \u0445\u043e\u0434\u0430\u00a0<\/p>\n<\/li>\n<\/ul>\n<pre><code>assert_eq!(game.current_player_account_id(), env::predecessor_account_id(), \"ERR_NO_ACCESS\");<\/code><\/pre>\n<ul>\n<li>\n<p>\u0414\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u043a\u043e\u0434 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0439 \u0445\u043e\u0434\u00a0<\/p>\n<\/li>\n<\/ul>\n<pre><code>let parse_result = input::parse_move(&amp;line);<\/code><\/pre>\n<ul>\n<li>\n<p>\u0421\u043e\u0432\u0435\u0440\u0448\u0430\u0435\u043c \u0445\u043e\u0434<\/p>\n<\/li>\n<\/ul>\n<pre><code>let move_result = util::apply_positions_as_move(&amp;mut game, positions);<\/code><\/pre>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044f\u00a0<\/p>\n<\/li>\n<\/ul>\n<pre><code>Ok(game_state) => match game_state { GameState::InProgress => { }, GameState::GameOver{winner_id} => { } }<\/code><\/pre>\n<ul>\n<li>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0438\u0433\u0440\u0443 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 (\u043e\u0431\u044a\u0435\u043a\u0442 games)<\/p>\n<\/li>\n<\/ul>\n<pre><code>self.games.insert(&amp;game_id, &amp;game_to_save);<\/code><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0442 \u0442\u0430\u043a (\u0431\u044b\u043b\u043e -> \u0441\u0442\u0430\u043b\u043e)<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0445\u043e\u0434, \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 &#171;\u0447\u0438\u0442\u0430\u0435\u0442&#187; \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u0433\u0440\u044b, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0440\u0430\u043d\u0435\u0435 \u0432 <strong>rusty-checkers<\/strong> \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0445\u043e\u0434\u0430, \u0430 \u043f\u043e\u0442\u043e\u043c, \u0435\u0441\u043b\u0438 \u0431\u044b\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e\u0441\u043a\u0438 \u043d\u0430\u0437\u0430\u0434 \u0432 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u0427\u0442\u043e\u0431\u044b \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 <a href=\"https:\/\/github.com\/zavodil\/near-checkers\/blob\/master\/contract\/src\/game.rs#L31\" rel=\"noopener noreferrer nofollow\"><u>GameToSave<\/u><\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f:<\/p>\n<pre><code>#[derive(BorshDeserialize, BorshSerialize)] pub struct GameToSave { pub(crate) player_1: PlayerInfo, pub(crate) player_2: PlayerInfo, pub(crate) reward: TokenBalance, pub(crate) winner_index: Option&lt;usize>, pub(crate) turns: u64, pub(crate) last_turn_timestamp: Timestamp, pub(crate) total_time_spent: Vec&lt;Timestamp>, pub(crate) board: BoardToSave, pub(crate) current_player_index: usize }<\/code><\/pre>\n<p><code>Player_1<\/code><strong>, <\/strong><code>player_2<\/code> &#8212; \u0438\u043c\u0435\u043d\u0430 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u043e\u0432 \u0438\u0433\u0440\u043e\u043a\u043e\u0432, <code>reward<\/code> &#8212; \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0430\u0433\u0440\u0430\u0434\u044b \u0437\u0430 \u0438\u0433\u0440\u0443 \u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u0442\u043e\u043a\u0435\u043d\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0433\u0440\u0430\u0434\u0430, <code>winner_index<\/code> &#8212; \u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044f (0\/1), \u0441\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0442\u0443\u0442 \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f <code>Option<\/code>, \u0442\u043e \u0435\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0438\u043c\u0435\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. <code>Turns<\/code><strong> &#8212; <\/strong>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0430\u0440\u0442\u0438\u0438 \u0445\u043e\u0434\u043e\u0432, \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 UI.<strong> <\/strong><code>Last_turn_timestamp<\/code><strong> <\/strong>&#8212; \u0432\u0440\u0435\u043c\u044f \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0445\u043e\u0434\u0430 \u0438 <code>total_time_spent<\/code><strong> <\/strong>&#8212; \u043c\u0430\u0441\u0441\u0438\u0432 \u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u0430\u0436\u0434\u044b\u043c \u0438\u0433\u0440\u043e\u043a\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u0440\u0442\u0438\u044e, \u0435\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u0438\u0437 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u043b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. <code>Board<\/code><strong> <\/strong>&#8212; \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u043e\u0441\u043a\u043e\u0439, <code>current_player_index<\/code><strong> <\/strong>&#8212; \u0438\u043d\u0434\u0435\u043a\u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0438\u0433\u0440\u043e\u043a\u0430 (0\/1) \u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0438\u0437 <a href=\"https:\/\/github.com\/dboone\/rusty-checkers\/blob\/master\/src\/checkers\/game.rs#L40-L42\" rel=\"noopener noreferrer nofollow\"><u>\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/u><\/a>.\u00a0 <code>BorshDeserialize<\/code><strong>, <\/strong><code>BorshSerialize<\/code> &#8212;  \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/near\/borsh-rs\" rel=\"noopener noreferrer nofollow\"><u>Borsh \u0434\u043b\u044f Rust<\/u><\/a>.<\/p>\n<p>\u0427\u0442\u043e \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430:<\/p>\n<pre><code>#[derive(BorshDeserialize, BorshSerialize, PanicOnDefault)] pub struct Checkers {\u00a0\u00a0\u00a0\u00a0 games: LookupMap&lt;GameId, GameToSave>,\u00a0\u00a0\u00a0\u00a0 available_players: UnorderedMap&lt;AccountId, VGameConfig>,\u00a0\u00a0\u00a0\u00a0 stats: UnorderedMap&lt;AccountId, VStats>,\u00a0\u00a0\u00a0\u00a0 available_games: UnorderedMap&lt;GameId, (AccountId, AccountId)>,\u00a0\u00a0\u00a0\u00a0 whitelisted_tokens: LookupSet&lt;AccountId>,\u00a0\u00a0\u00a0\u00a0 next_game_id: GameId,\u00a0\u00a0\u00a0\u00a0 service_fee: Balance }<\/code><\/pre>\n<ul>\n<li>\n<p><code>games<\/code> &#8212; \u0445\u0435\u0448\u043c\u0430\u043f, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u043e\u043c\u0443 <code>GameId<\/code> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0433\u0440\u044b (<code>GameToSave<\/code>), \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435.\u00a0<\/p>\n<\/li>\n<li>\n<p><code>available_players<\/code> &#8212; \u00a0\u0445\u0435\u0448\u043c\u0430\u043f \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0432 \u043b\u0438\u0441\u0442\u0435 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f, \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u043f\u0430\u0440\u0443 \u043d\u0430 \u0438\u0433\u0440\u0443. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u0442\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442 <code>VGameConfig. <\/code><\/p>\n<pre><code>pub struct GameConfig {\u00a0\u00a0\u00a0\u00a0 pub(crate) deposit: Option&lt;Balance>,\u00a0\u00a0\u00a0\u00a0 pub(crate) first_move: FirstMoveOptions,\u00a0\u00a0\u00a0\u00a0 pub(crate) opponent_id: Option&lt;AccountId> }<\/code><\/pre>\n<p>\u0422\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f <code>deposit<\/code> (\u0441\u0443\u043c\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u0433\u0440\u043e\u043a \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043d\u0430 \u043a\u043e\u043d), <code>first_move<\/code> &#8212; \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0445\u043e\u0434\u0430 (\u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0438\u043b\u0438 \u0440\u0430\u043d\u0434\u043e\u043c) \u0438 <code>opponent_id<\/code> \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u044b\u0433\u0440\u0430\u0442\u044c \u043b\u0438\u0448\u044c \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u043e\u043f\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u043c.<\/p>\n<\/li>\n<li>\n<p><code>stats<\/code> &#8212; \u0445\u0435\u0448\u043c\u0430\u043f \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u043e\u0439 \u0438\u0433\u0440\u043e\u043a\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0444\u0435\u0440\u0430\u043b\u043b\u0430, \u043f\u0440\u0438\u0433\u043b\u0430\u0441\u0438\u0432\u0448\u0435\u0433\u043e \u0435\u0433\u043e.<\/p>\n<\/li>\n<li>\n<p><code>available_games<\/code> &#8212; \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 id \u0438\u0433\u0440, \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442<\/p>\n<\/li>\n<li>\n<p><code>whitelisted_tokens<\/code> &#8212; \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u0430\u0434\u0440\u0435\u0441\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0435\u043f\u043e\u0437\u0438\u0442\u0430,<\/p>\n<\/li>\n<li>\n<p><code>next_game_id<\/code> &#8212; id \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u043e\u0439 \u0438\u0433\u0440\u044b<\/p>\n<\/li>\n<li>\n<p><code>service_fee<\/code> &#8212; \u043f\u0440\u043e\u0446\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0432\u0437\u0438\u043c\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u0438 \u0441 \u0432\u044b\u0438\u0433\u0440\u044b\u0448\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u043a\u043e\u0434\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0445\u0435\u0448\u043c\u0430\u043f\u0430, \u043e\u0434\u0438\u043d <code>LookupMap<\/code><strong> <\/strong>\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 <code>UnorderedMap<\/code>, \u0438\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u0442\u0443\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e <a href=\"https:\/\/docs.near.org\/docs\/concepts\/data-storage#unorderedmap\" rel=\"noopener noreferrer nofollow\"><strong><u>UnorderedMap<\/u><\/strong><\/a><strong> <\/strong>\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u0432\u0435\u0441\u0442\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0438\u0433\u0440\u043e\u043a\u043e\u0432. \u0414\u043b\u044f <a href=\"https:\/\/docs.near.org\/docs\/concepts\/data-storage#lookupmap\" rel=\"noopener noreferrer nofollow\"><strong><u>LookupMap<\/u><\/strong><\/a><strong> <\/strong>\u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u0442, \u043d\u043e \u0443 \u043d\u0430\u0441 \u0438 \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 &#171;\u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0442\u044c&#187; \u0432 \u0446\u0438\u043a\u043b\u0435 \u0432\u0441\u0435 \u0441\u044b\u0433\u0440\u0430\u043d\u043d\u044b\u0435 \u0438\u0433\u0440\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043f\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0441\u0432\u043e\u0435\u0439 \u0438\u0433\u0440\u0435 \u043f\u043e<strong> <\/strong><code>game_id<\/code><strong>,<\/strong> \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043d\u0438 \u0443\u0436\u0435 \u0437\u043d\u0430\u044e\u0442, \u0430 \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434\u044b \u0441\u043c\u043e\u0433\u0443\u0442 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0438\u0433\u0440\u0430\u0445 \u0438\u0437 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430<strong> <\/strong><code>available_games<\/code><strong>. <\/strong>\u0417\u0430 \u0441\u0447\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u044e\u0447\u0435\u0439, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c <a href=\"https:\/\/docs.near.org\/docs\/concepts\/data-storage#lookupmap\" rel=\"noopener noreferrer nofollow\"><strong><u>LookupMap<\/u><\/strong><\/a> \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u043f\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u043c\u043e\u043c\u0443 \u0433\u0430\u0437\u0443.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0430\u0434\u044b, \u043a\u0430\u043f\u0438\u0442\u0443\u043b\u044f\u0446\u0438\u0438, \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u0440\u0435\u0444\u0435\u0440\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b. \u041d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 &#171;\u0440\u044e\u0448\u0435\u0447\u043a\u0438&#187; \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435.<\/p>\n<h2>\u0414\u0435\u043b\u0430\u0435\u043c \u0444\u0440\u043e\u043d\u0442\u044d\u043d\u0434<\/h2>\n<p>\u0421 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u201c\u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f\u201d \u0435\u0449\u0435 \u043f\u0440\u043e\u0449\u0435. \u041a\u043e\u0434 \u043d\u0430 JS \u0438\u0437 \u0432\u0437\u044f\u0442\u043e\u0439 <a href=\"https:\/\/github.com\/codethejason\/checkers\" rel=\"noopener noreferrer nofollow\"><u>\u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/u><\/a> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442 8 * 8, \u0433\u0434\u0435 0 &#8212; \u043f\u0443\u0441\u0442\u0430\u044f \u043a\u043b\u0435\u0442\u043a\u0430, 1 \u0438 2 &#8212; \u0448\u0430\u0448\u043a\u0438 \u0438\u0433\u0440\u043e\u043a\u043e\u0432.<\/p>\n<pre><code>var gameBoard = [  \u00a0\u00a0\u00a0   [0, 1, 0, 1, 0, 1, 0, 1],  \u00a0\u00a0\u00a0   [1, 0, 1, 0, 1, 0, 1, 0],  \u00a0\u00a0\u00a0   [0, 1, 0, 1, 0, 1, 0, 1],  \u00a0\u00a0\u00a0   [0, 0, 0, 0, 0, 0, 0, 0],  \u00a0\u00a0\u00a0   [0, 0, 0, 0, 0, 0, 0, 0],  \u00a0\u00a0\u00a0   [2, 0, 2, 0, 2, 0, 2, 0],  \u00a0\u00a0\u00a0   [0, 2, 0, 2, 0, 2, 0, 2],  \u00a0\u00a0\u00a0   [2, 0, 2, 0, 2, 0, 2, 0]  \u00a0 ];<\/code><\/pre>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0435\u0435\u043c\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445, \u044f \u0434\u043e\u043f\u0438\u0441\u0430\u043b \u0441\u0432\u043e\u044e <a href=\"https:\/\/github.com\/zavodil\/near-checkers\/blob\/master\/contract\/src\/board.rs#L167\" rel=\"noopener noreferrer nofollow\"><u>\u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f,<\/u><\/a> \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b \u0448\u0430\u0448\u0435\u043a\u00a0\u0432 \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u0447\u0438\u0441\u043b\u0430, \u0430 \u0434\u0430\u043c\u043a\u0438 (King) \u044f \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043b \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438.\u00a0<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u043e\u043b\u044f<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>for row in 0..board.number_rows {  \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 for column in 0..board.number_columns {   let tile = &amp;board.tiles[board.indices_to_index(row, column)];     match tile.get_piece() {     None => 0,       Some(piece) =>\u00a0match piece.get_type() {       PieceType::Man => piece.get_player_id() as i8,         PieceType::King => piece.get_player_id() as i8 * -1       }     }   } }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0445\u043e\u0434\u044b, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 <a href=\"https:\/\/github.com\/zavodil\/near-checkers-ui\" rel=\"noopener noreferrer nofollow\"><u>\u043d\u0430 \u043c\u043e\u0435\u043c \u0444\u043e\u0440\u043a\u0435 UI<\/u><\/a> \u0432 \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u043c \u0434\u043b\u044f\u00a0Rust-\u043a\u043e\u0434\u0430 \u0432\u0438\u0434\u0435, \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043d\u0430 180 \u0433\u0440\u0430\u0434\u0443\u0441\u043e\u0432 \u0434\u043e\u0441\u043a\u0443 \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u0433\u0440\u043e\u043a\u0430, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435, \u043f\u043e\u043a\u0430 \u043a \u043d\u0443\u0436\u043d\u043e\u043c\u0443 \u0438\u0433\u0440\u043e\u043a\u0443 \u043d\u0435 \u043f\u0435\u0440\u0435\u0448\u0435\u043b \u0445\u043e\u0434. \u0414\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u044f \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e \u0438\u0433\u0440\u0443 \u043f\u043e \u0442\u0430\u0439\u043c\u0435\u0440\u0443, \u0431\u043b\u0430\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u044b \u0447\u0442\u0435\u043d\u0438\u044f \u0438\u0437 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435. \u042d\u0442\u043e \u0432\u0441\u0451 \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e <a href=\"https:\/\/github.com\/zavodil\/near-checkers-ui\/blob\/master\/near.js\" rel=\"noopener noreferrer nofollow\"><u>\u0443\u0431\u043e\u0433\u043e<\/u><\/a><\/p>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-327479","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=327479"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/327479\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=327479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=327479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=327479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}