{"id":391528,"date":"2024-06-29T09:52:26","date_gmt":"2024-06-29T09:52:26","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=391528"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=391528","title":{"rendered":"<span>\u041f\u043e\u0448\u0430\u0433\u043e\u0432\u0430\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c NFT \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043d\u0430 Golang + Ethereum (\u0447\u0430\u0441\u0442\u044c 1)<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442 \u0425\u0430\u0431\u0440. <\/p>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u043b \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u0435\u043b \u043c\u043e\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u0441\u043e\u0437\u0434\u0430\u0442\u044c NFT \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043d\u0430 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 Ethereum. \u0421\u043a\u0430\u0436\u0443 \u0441\u0440\u0430\u0437\u0443, \u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0441\u044f \u043a\u0440\u0438\u043f\u0442\u043e\u0439 \u0438 \u043d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u043d\u0435 \u0438\u043c\u0435\u043b, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 NFT \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b.\u00a0<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u044f \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 <a href=\"https:\/\/habr.com\/ru\/company\/timeweb\/blog\/545620\/\" rel=\"noopener noreferrer nofollow\">NFT<\/a> \u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u044f \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0443\u0441\u044c \u043d\u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u0442.\u043a. \u043a\u043e\u0433\u0434\u0430 \u044f \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0431\u044b\u043b\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u0430\u043b\u043e \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0434\u043e\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u043e\u043c\u0443.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0438\u0437 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0433\u043e \u201c\u0441\u043e\u0437\u0434\u0430\u0442\u044c NFT \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e\u201d \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u043b\u043a\u0438\u0435 \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u0441 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 10 000 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <\/p>\n<\/li>\n<li>\n<p>\u0441 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 10 000 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c 10 000 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043c\u0435\u0442\u0435\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0434\u043b\u044f NFT \u0442\u043e\u043a\u0435\u043d\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0432 mainnet Ethereum<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0430\u0439\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u0430\u0448\u0438\u043c \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e web3, \u0433\u0434\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438 \u0441\u043c\u043e\u0433\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u044d\u0444\u0438\u0440\u044b \u043d\u0430 \u043d\u0430\u0448\u0438 NFT \u0442\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u0443\u0441\u0442\u044f\u043a\u0438, \u0430 \u043d\u0435\u0442, \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u0435\u043d\u044f \u043f\u043e\u0434\u0436\u0438\u0434\u0430\u043b\u0438 \u043d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c.<\/p>\n<p><strong>\u041a\u0430\u043a \u0441 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 10 000 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439?<\/strong><\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e 10 000? \u041e\u0442\u0432\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 NFT \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437 10 000 NFT \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c, \u0441\u0430\u043c \u0432\u043e\u043b\u0435\u043d \u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e NFT \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043e\u043d \u0445\u043e\u0447\u0435\u0442 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u043d\u043e \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0435 \u043e\u0442\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0442 \u043a\u0430\u043d\u043e\u043d\u0430 \u0438 \u0442\u043e\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 10 000 \u0442\u043e\u043a\u0435\u043d\u043e\u0432.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043a\u0430\u043a \u0436\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a\u0438 \u0441 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 10 000 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439? \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0435\u0432 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0430\u0437\u043c\u044b\u0441\u043b\u0438\u0432, \u043c\u044b \u0441 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u043e\u043c \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043b\u043e\u0438:<\/p>\n<ol>\n<li>\n<p>\u0444\u043e\u043d &#8212; 20 \u0448\u0442<\/p>\n<\/li>\n<li>\n<p>\u0442\u0443\u043b\u043e\u0432\u0438\u0449\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 &#8212; 25 \u0448\u0442<\/p>\n<\/li>\n<li>\n<p>\u0433\u043e\u043b\u043e\u0432\u0430 &#8212; 15 \u0448\u0442<\/p>\n<\/li>\n<li>\n<p>\u044d\u043c\u043e\u0446\u0438\u0438 &#8212; 20 \u0448\u0442<\/p>\n<\/li>\n<li>\n<p>\u043e\u0434\u0435\u0436\u0434\u0430 &#8212; 30 \u0448\u0442<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0443\u0432\u044c &#8212; 25 \u0448\u0442<\/p>\n<\/li>\n<li>\n<p>\u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u044b &#8212; 40 \u0448\u0442<\/p>\n<\/li>\n<\/ol>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435, \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e 175 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u043e\u0435\u0432 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 png, \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c 10 000 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439. \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0438\u0447\u0435\u0433\u043e, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043b\u043e\u0435\u0432, \u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439.\u00a0<\/p>\n<p>\u041f\u0438\u0441\u0430\u0442\u044c \u044f \u0431\u0443\u0434\u0443 \u043d\u0430 Golang, \u0438\u0442\u0430\u043a \u043f\u043e\u0435\u0445\u0430\u043b\u0438. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c 2 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 domain, \u043e\u0434\u043d\u0430 \u0434\u043b\u044f \u0441\u043b\u043e\u0435\u0432, \u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u0434\u043b\u044f \u0445\u043e\u043b\u0441\u0442\u0430.<\/p>\n<pre><code class=\"go\">package domain  import ( \"image\" \"image\/color\" )  \/\/ ImageLayer struct. type ImageLayer struct { Image    image.Image Priotiry int XPos     int YPos     int }  \/\/BgProperty is background property struct. type BgProperty struct { Width   int Length  int BgColor color.Color }<\/code><\/pre>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0431\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.<\/p>\n<p>ImageLayer:<\/p>\n<ul>\n<li>\n<p>Image &#8212; \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u044f<\/p>\n<\/li>\n<li>\n<p>Priority &#8212; \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0441\u043b\u043e\u044f, \u0442.\u043a. \u0441\u043b\u043e\u0438 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0444\u043e\u043d, \u043f\u043e\u0442\u043e\u043c \u0442\u0443\u043b\u043e\u0432\u0438\u0449\u0435, \u043f\u043e\u0442\u043e\u043c \u0433\u043e\u043b\u043e\u0432\u0430, \u0438\u0442\u0434 \u2026<\/p>\n<\/li>\n<li>\n<p>XPos, YPos &#8212; \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0441\u043b\u043e\u044f \u043d\u0430 \u0445\u043e\u043b\u0441\u0442\u0435<\/p>\n<\/li>\n<\/ul>\n<p>BgProperty:<\/p>\n<ul>\n<li>\n<p>Width &#8212; \u0448\u0438\u0440\u0438\u043d\u0430 \u0445\u043e\u043b\u0441\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>Length &#8212; \u0434\u043b\u0438\u043d\u0430 \u0445\u043e\u043b\u0441\u0442\u0430<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u0442\u0430\u043a, \u043a\u043e\u0433\u0434\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043e\u043f\u0438\u0441\u0430\u043d\u044b, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u0441\u043b\u043e\u0438 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435.\u00a0<\/p>\n<p>\u041a\u043e\u0434 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u043e\u0435\u0432 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0445\u043e\u043b\u0441\u0442\u0430, \u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u0439\u0442\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0425\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0 Go \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u043d\u0435\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u043e\u0434:<\/p>\n<pre><code class=\"go\">package combiner   import (    \"bytes\"    \"image\"    \"image\/draw\"    \"image\/png\"    \"nft\/internal\/domain\"    \"sort\" )   type service struct { }   func NewBasicImageCombiner() domain.ImageCombiner {    return &amp;service{} }   func (s *service) CombineLayers(layers []*domain.ImageLayer, bgProperty *domain.BgProperty) ([]byte, error) {      \/\/ Sort list by position.    layers = sortByPriotiry(layers)      \/\/ Create image's background.    bgImg := image.NewRGBA(image.Rect(0, 0, bgProperty.Width, bgProperty.Length))      \/\/ Set the background color.    draw.Draw(bgImg, bgImg.Bounds(), &amp;image.Uniform{bgProperty.BgColor}, image.Point{}, draw.Src)      \/\/ Looping image layers, higher position -> upper layer.    for _, img := range layers {          \/\/ Set the image offset.        offset := image.Pt(img.XPos, img.YPos)          \/\/ Combine the image.        draw.Draw(bgImg, img.Image.Bounds().Add(offset), img.Image, image.Point{}, draw.Over)    }      \/\/ Encode image to buffer.    buff := new(bytes.Buffer)    if err := png.Encode(buff, bgImg); err != nil {        return nil, err    }      return buff.Bytes(), nil }   func sortByPriotiry(list []*domain.ImageLayer) []*domain.ImageLayer {    sort.Slice(list, func(i, j int) bool {        return list[i].Priotiry &lt; list[j].Priotiry    })    return list } <\/code><\/pre>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u0434 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0433\u043e\u0442\u043e\u0432, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445. <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0434\u043b\u044f NFT \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u043f\u043b\u043e\u0449\u0430\u0434\u043e\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043f\u043e\u0438\u0441\u043a NFT \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u043b\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p><strong>\u0412 \u043a\u0430\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f NFT \u0442\u043e\u043a\u0435\u043d\u043e\u0432?<\/strong><\/p>\n<p>\u0422.\u043a. NFT \u0442\u043e\u043a\u0435\u043d\u044b \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u044b \u043d\u0430 ERC-721 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435, \u0430 \u0441\u0430\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 \u043a\u0430\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u043c\u044b \u0432\u043e\u043b\u044c\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043a\u0430\u043a\u043e\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0445\u043e\u0442\u0438\u043c.<\/p>\n<p>\u041d\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0448\u0438 NFT \u0442\u043e\u043a\u0435\u043d\u044b \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u0430\u043a\u0438\u0445 \u043f\u043e\u0449\u0430\u0434\u043a\u0430\u0445 \u043a\u0430\u043a <a href=\"https:\/\/opensea.io\/\" rel=\"noopener noreferrer nofollow\">opensea<\/a>, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 JSON \u0444\u043e\u0440\u043c\u0430\u0442\u0443: <\/p>\n<pre><code class=\"json\">{    \"image\":\"ipfs:\/\/QmPbxeGcXhYQQNgsC6a36dDyYUcHgMLnGKnF8pVFmGsvqi\",    \"attributes\":[       {          \"trait_type\":\"Mouth\",          \"value\":\"Grin\"       },       {          \"trait_type\":\"Clothes\",          \"value\":\"Vietnam Jacket\"       },       {          \"trait_type\":\"Background\",          \"value\":\"Orange\"       },       {          \"trait_type\":\"Eyes\",          \"value\":\"Blue Beams\"       },       {          \"trait_type\":\"Fur\",          \"value\":\"Robot\"       }    ] }<\/code><\/pre>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u043f\u0438\u0448\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 Go:<\/p>\n<pre><code class=\"go\">package domain  \/\/ ERC721Trait - ERC721 trait format. type ERC721Trait struct { TraitType string `json:\"trait_type\"` Value     string `json:\"value\"` }  \/\/ ERC721Metadata - metadata schema. type ERC721Metadata struct { Image      string         `json:\"image\"` Attributes []*ERC721Trait `json:\"attributes\"` }<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0432 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. <a href=\"https:\/\/habr.com\/ru\/post\/595763\/\" rel=\"noopener noreferrer nofollow\">\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>P.S.\u0412\u0435\u0441\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 <a href=\"https:\/\/github.com\/golang-enthusiast\/nft\" rel=\"noopener noreferrer nofollow\">github<\/a>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/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\/articles\/595723\/\"> https:\/\/habr.com\/ru\/articles\/595723\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442 \u0425\u0430\u0431\u0440. <\/p>\n<p>\u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u043f\u043e\u043b \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u0435\u043b \u043c\u043e\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0439 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b \u0441\u043e\u0437\u0434\u0430\u0442\u044c NFT \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e \u043d\u0430 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 Ethereum. \u0421\u043a\u0430\u0436\u0443 \u0441\u0440\u0430\u0437\u0443, \u044f \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0441\u044f \u043a\u0440\u0438\u043f\u0442\u043e\u0439 \u0438 \u043d\u0430 \u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u043d\u0435 \u0438\u043c\u0435\u043b, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 NFT \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b.\u00a0<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u044f \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 <a href=\"https:\/\/habr.com\/ru\/company\/timeweb\/blog\/545620\/\" rel=\"noopener noreferrer nofollow\">NFT<\/a> \u0438 \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b, \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u044f \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0443\u0441\u044c \u043d\u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u0442.\u043a. \u043a\u043e\u0433\u0434\u0430 \u044f \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0431\u044b\u043b\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043c\u0430\u043b\u043e \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0434\u043e\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0430\u043c\u043e\u043c\u0443.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u043c\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0438\u0437 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u043e\u0433\u043e \u201c\u0441\u043e\u0437\u0434\u0430\u0442\u044c NFT \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044e\u201d \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u043b\u043a\u0438\u0435 \u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u0441 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 10 000 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <\/p>\n<\/li>\n<li>\n<p>\u0441 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 10 000 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043a \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c 10 000 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043c\u0435\u0442\u0435\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0432 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0434\u043b\u044f NFT \u0442\u043e\u043a\u0435\u043d\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0432 mainnet Ethereum<\/p>\n<\/li>\n<li>\n<p>\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0430\u0439\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u0430\u0448\u0438\u043c \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e web3, \u0433\u0434\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0438 \u0441\u043c\u043e\u0433\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u044d\u0444\u0438\u0440\u044b \u043d\u0430 \u043d\u0430\u0448\u0438 NFT \u0442\u043e\u043a\u0435\u043d\u044b<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043f\u0443\u0441\u0442\u044f\u043a\u0438, \u0430 \u043d\u0435\u0442, \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u0435\u043d\u044f \u043f\u043e\u0434\u0436\u0438\u0434\u0430\u043b\u0438 \u043d\u0435\u043f\u0440\u0435\u0434\u0432\u0438\u0434\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c.<\/p>\n<p><strong>\u041a\u0430\u043a \u0441 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 10 000 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439?<\/strong><\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e 10 000? \u041e\u0442\u0432\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 NFT \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0437 10 000 NFT \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044c, \u0441\u0430\u043c \u0432\u043e\u043b\u0435\u043d \u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u043a\u043e NFT \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043e\u043d \u0445\u043e\u0447\u0435\u0442 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u043d\u043e \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0435 \u043e\u0442\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0442 \u043a\u0430\u043d\u043e\u043d\u0430 \u0438 \u0442\u043e\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 10 000 \u0442\u043e\u043a\u0435\u043d\u043e\u0432.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u043a\u0430\u043a \u0436\u0435 \u0432\u0441\u0435 \u0442\u0430\u043a\u0438 \u0441 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 10 000 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439? \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0435\u0432 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0430\u0437\u043c\u044b\u0441\u043b\u0438\u0432, \u043c\u044b \u0441 \u0445\u0443\u0434\u043e\u0436\u043d\u0438\u043a\u043e\u043c \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043b\u043e\u0438:<\/p>\n<ol>\n<li>\n<p>\u0444\u043e\u043d &#8212; 20 \u0448\u0442<\/p>\n<\/li>\n<li>\n<p>\u0442\u0443\u043b\u043e\u0432\u0438\u0449\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 &#8212; 25 \u0448\u0442<\/p>\n<\/li>\n<li>\n<p>\u0433\u043e\u043b\u043e\u0432\u0430 &#8212; 15 \u0448\u0442<\/p>\n<\/li>\n<li>\n<p>\u044d\u043c\u043e\u0446\u0438\u0438 &#8212; 20 \u0448\u0442<\/p>\n<\/li>\n<li>\n<p>\u043e\u0434\u0435\u0436\u0434\u0430 &#8212; 30 \u0448\u0442<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0443\u0432\u044c &#8212; 25 \u0448\u0442<\/p>\n<\/li>\n<li>\n<p>\u0430\u043a\u0441\u0435\u0441\u0441\u0443\u0430\u0440\u044b &#8212; 40 \u0448\u0442<\/p>\n<\/li>\n<\/ol>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435, \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e 175 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u043e\u0435\u0432 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 png, \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c 10 000 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439. \u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0438\u0447\u0435\u0433\u043e, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0437\u0430\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043b\u043e\u0435\u0432, \u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439.\u00a0<\/p>\n<p>\u041f\u0438\u0441\u0430\u0442\u044c \u044f \u0431\u0443\u0434\u0443 \u043d\u0430 Golang, \u0438\u0442\u0430\u043a \u043f\u043e\u0435\u0445\u0430\u043b\u0438. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c 2 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0432 \u043f\u0430\u043a\u0435\u0442\u0435 domain, \u043e\u0434\u043d\u0430 \u0434\u043b\u044f \u0441\u043b\u043e\u0435\u0432, \u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u0434\u043b\u044f \u0445\u043e\u043b\u0441\u0442\u0430.<\/p>\n<pre><code class=\"go\">package domain  import ( \"image\" \"image\/color\" )  \/\/ ImageLayer struct. type ImageLayer struct { Image    image.Image Priotiry int XPos     int YPos     int }  \/\/BgProperty is background property struct. type BgProperty struct { Width   int Length  int BgColor color.Color }<\/code><\/pre>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0431\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.<\/p>\n<p>ImageLayer:<\/p>\n<ul>\n<li>\n<p>Image &#8212; \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u044f<\/p>\n<\/li>\n<li>\n<p>Priority &#8212; \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0441\u043b\u043e\u044f, \u0442.\u043a. \u0441\u043b\u043e\u0438 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0444\u043e\u043d, \u043f\u043e\u0442\u043e\u043c \u0442\u0443\u043b\u043e\u0432\u0438\u0449\u0435, \u043f\u043e\u0442\u043e\u043c \u0433\u043e\u043b\u043e\u0432\u0430, \u0438\u0442\u0434 \u2026<\/p>\n<\/li>\n<li>\n<p>XPos, YPos &#8212; \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0441\u043b\u043e\u044f \u043d\u0430 \u0445\u043e\u043b\u0441\u0442\u0435<\/p>\n<\/li>\n<\/ul>\n<p>BgProperty:<\/p>\n<ul>\n<li>\n<p>Width &#8212; \u0448\u0438\u0440\u0438\u043d\u0430 \u0445\u043e\u043b\u0441\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>Length &#8212; \u0434\u043b\u0438\u043d\u0430 \u0445\u043e\u043b\u0441\u0442\u0430<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u0442\u0430\u043a, \u043a\u043e\u0433\u0434\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043e\u043f\u0438\u0441\u0430\u043d\u044b, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u0441\u043b\u043e\u0438 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435.\u00a0<\/p>\n<p>\u041a\u043e\u0434 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u043e\u0435\u0432 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0445\u043e\u043b\u0441\u0442\u0430, \u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u0439\u0442\u044b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u0425\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e\u00a0 Go \u043e\u0431\u043b\u0430\u0434\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0441 \u043d\u0435\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u043e\u0434:<\/p>\n<pre><code class=\"go\">package combiner   import (    \"bytes\"    \"image\"    \"image\/draw\"    \"image\/png\"    \"nft\/internal\/domain\"    \"sort\" )   type service struct { }   func NewBasicImageCombiner() domain.ImageCombiner {    return &amp;service{} }   func (s *service) CombineLayers(layers []*domain.ImageLayer, bgProperty *domain.BgProperty) ([]byte, error) {      \/\/ Sort list by position.    layers = sortByPriotiry(layers)      \/\/ Create image's background.    bgImg := image.NewRGBA(image.Rect(0, 0, bgProperty.Width, bgProperty.Length))      \/\/ Set the background color.    draw.Draw(bgImg, bgImg.Bounds(), &amp;image.Uniform{bgProperty.BgColor}, image.Point{}, draw.Src)      \/\/ Looping image layers, higher position -> upper layer.    for _, img := range layers {          \/\/ Set the image offset.        offset := image.Pt(img.XPos, img.YPos)          \/\/ Combine the image.        draw.Draw(bgImg, img.Image.Bounds().Add(offset), img.Image, image.Point{}, draw.Over)    }      \/\/ Encode image to buffer.    buff := new(bytes.Buffer)    if err := png.Encode(buff, bgImg); err != nil {        return nil, err    }      return buff.Bytes(), nil }   func sortByPriotiry(list []*domain.ImageLayer) []*domain.ImageLayer {    sort.Slice(list, func(i, j int) bool {        return list[i].Priotiry &lt; list[j].Priotiry    })    return list } <\/code><\/pre>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u0434 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0433\u043e\u0442\u043e\u0432, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445. <\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430, \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0434\u043b\u044f NFT \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u043f\u043b\u043e\u0449\u0430\u0434\u043e\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043f\u043e\u0438\u0441\u043a NFT \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u043b\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p><strong>\u0412 \u043a\u0430\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f NFT \u0442\u043e\u043a\u0435\u043d\u043e\u0432?<\/strong><\/p>\n<p>\u0422.\u043a. NFT \u0442\u043e\u043a\u0435\u043d\u044b \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u044b \u043d\u0430 ERC-721 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0435, \u0430 \u0441\u0430\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432 \u043a\u0430\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435, \u043c\u044b \u0432\u043e\u043b\u044c\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043a\u0430\u043a\u043e\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0445\u043e\u0442\u0438\u043c.<\/p>\n<p>\u041d\u043e \u0435\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0448\u0438 NFT \u0442\u043e\u043a\u0435\u043d\u044b \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u0430\u043a\u0438\u0445 \u043f\u043e\u0449\u0430\u0434\u043a\u0430\u0445 \u043a\u0430\u043a <a href=\"https:\/\/opensea.io\/\" rel=\"noopener noreferrer nofollow\">opensea<\/a>, \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 JSON \u0444\u043e\u0440\u043c\u0430\u0442\u0443: <\/p>\n<pre><code class=\"json\">{    \"image\":\"ipfs:\/\/QmPbxeGcXhYQQNgsC6a36dDyYUcHgMLnGKnF8pVFmGsvqi\",    \"attributes\":[       {          \"trait_type\":\"Mouth\",          \"value\":\"Grin\"       },       {          \"trait_type\":\"Clothes\",          \"value\":\"Vietnam Jacket\"       },       {          \"trait_type\":\"Background\",          \"value\":\"Orange\"       },       {          \"trait_type\":\"Eyes\",          \"value\":\"Blue Beams\"       },       {          \"trait_type\":\"Fur\",          \"value\":\"Robot\"       }    ] }<\/code><\/pre>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043e\u043f\u0438\u0448\u0435\u043c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 Go:<\/p>\n<pre><code class=\"go\">package domain  \/\/ ERC721Trait - ERC721 trait format. type ERC721Trait struct { TraitType string `json:\"trait_type\"` Value     string `json:\"value\"` }  \/\/ ERC721Metadata - metadata schema. type ERC721Metadata struct { Image      string         `json:\"image\"` Attributes []*ERC721Trait `json:\"attributes\"` }<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u043a \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0432 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. <a href=\"https:\/\/habr.com\/ru\/post\/595763\/\" rel=\"noopener noreferrer nofollow\">\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>P.S.\u0412\u0435\u0441\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 <a href=\"https:\/\/github.com\/golang-enthusiast\/nft\" rel=\"noopener noreferrer nofollow\">github<\/a>.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/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\/articles\/595723\/\"> https:\/\/habr.com\/ru\/articles\/595723\/<\/a><br \/><\/br><\/br><\/p>\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-391528","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/391528","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=391528"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/391528\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=391528"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=391528"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=391528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}