{"id":375075,"date":"2024-05-21T06:15:33","date_gmt":"2024-05-21T06:15:33","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=375075"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=375075","title":{"rendered":"<span>\u041a\u0430\u043a \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u0432 \u0438 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432? \u041e\u0431\u0437\u043e\u0440 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 Compound V2<\/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><strong>Lending \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b<\/strong>\u00a0\u0438\u043b\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f. \u042d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u0432 \u0441\u0444\u0435\u0440\u0435 DeFi \u043f\u043e\u0441\u043b\u0435 DEX (Decentralized exchange). Lending \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0431\u0440\u0430\u0442\u044c \u0432 \u0437\u0430\u0439\u043c\u044b \u0430\u043a\u0442\u0438\u0432\u044b.  <\/p>\n<p>\u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, lending \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u043e\u043c \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0430\u043a\u0442\u0438\u0432\u044b \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430. \u042d\u0442\u0430 \u0430\u043a\u0442\u0438\u0432\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430\u043c . \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0430\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0440\u043e\u043b\u0438 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u043e\u043c \u0438 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u043c. \u041e\u043d \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0447\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0434\u0435\u043b\u043a\u0438 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b, \u0430 \u0437\u0430\u0451\u043c\u0449\u0438\u043a\u0443 \u0432\u044b\u0434\u0430\u0442\u044c \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0435 \u0430\u043a\u0442\u0438\u0432\u044b. \u0414\u043b\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u0432 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u043c \u0434\u043e\u0445\u043e\u0434\u043e\u043c.  <\/p>\n<p><strong>\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u043d\u043e\u0433\u043e \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f?<\/strong>\u00a0\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b DeFi, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0<a href=\"https:\/\/makerdao.com\/\"><u>MakerDAO<\/u><\/a>, \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0435\u0449\u0435 \u0432 2014 \u0433\u043e\u0434\u0443. \u0412 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u0435 2018 \u0433\u043e\u0434\u0430\u00a0<a href=\"https:\/\/compound.finance\/\"><u>Compound Labs<\/u><\/a>\u00a0\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0431\u0440\u0430\u0442\u044c \u0432 \u0437\u0430\u0439\u043c\u044b \u043f\u044f\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043e\u0432: ETH, TUSD, ZRX, BAT \u0438 REP. \u0412 2020 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043a\u0430 \u0440\u0435\u0437\u043a\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u0437-\u0437\u0430 \u043f\u0430\u043d\u0434\u0435\u043c\u0438\u0438. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0445 \u0441\u0442\u0430\u0432\u043e\u043a \u0438 \u0440\u0435\u0437\u043a\u043e\u043c\u0443 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044e \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u0442\u0438\u0442\u0443\u0442\u0430\u0445. \u0412 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0441\u0442\u0438\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u044b\u043d\u043a\u0430 Compound \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b \u0442\u043e\u043a\u0435\u043d\u00a0<strong>COMP<\/strong>. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u043d\u0430\u0447\u0430\u043b\u043e \u0432\u0437\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u043e\u0441\u0442\u0430 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 \u044d\u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u00a0<a href=\"https:\/\/aave.com\/\"><u>Aave<\/u><\/a>.  <\/p>\n<h3>\u0422\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044f<\/h3>\n<p><strong>Borrower<\/strong>\u00a0&#8212; \u0437\u0430\u0435\u043c\u0449\u0438\u043a.<\/p>\n<p><strong>Lender<\/strong>\u00a0&#8212; \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440.<\/p>\n<p><strong>Loan (\u0437\u0430\u0439\u043c)<\/strong>\u00a0&#8212; \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u043e\u043b\u0433 \u0438\u043b\u0438 \u0441\u0443\u043c\u043c\u0430 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432. \u041e\u0431\u044b\u0447\u043d\u043e\u00a0<strong>\u0437\u0430\u0435\u043c\u0449\u0438\u043a<\/strong>\u00a0\u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u043e\u043b\u0433 + \u0432\u044b\u043f\u043b\u0430\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u044e \u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432.<\/p>\n<p><strong>Interest (\u043f\u0440\u043e\u0446\u0435\u043d\u0442)<\/strong>\u00a0&#8212; \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u00a0<strong>lending \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443<\/strong>\u00a0\u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0435\u043c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0438\u043b\u0438 \u043d\u0430\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u0443 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0432\u0448\u0435\u043c\u0443 \u0441\u0432\u043e\u0438 \u0430\u043a\u0442\u0438\u0432\u044b \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430.<\/p>\n<p><strong>Collateral (\u0437\u0430\u043b\u043e\u0433)<\/strong>\u00a0&#8212; \u044d\u0442\u043e \u0430\u043a\u0442\u0438\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439\u00a0<strong>\u0437\u0430\u0435\u043c\u0449\u0438\u043a<\/strong>\u00a0\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043b\u044f\u00a0<strong>\u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u0430<\/strong>\u00a0\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u043e\u043b\u0433. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442,\u00a0<strong>\u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440<\/strong>\u00a0\u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0441\u043a\u043e\u0432\u0430\u0442\u044c \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u00a0<strong>\u0437\u0430\u043b\u043e\u0433<\/strong>. <strong>\u041a\u0440\u0435\u0434\u0438\u0442\u043e\u0440<\/strong>\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u00a0<strong>\u0437\u0430\u043b\u043e\u0433<\/strong>\u00a0\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0440\u0438\u0441\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e\u00a0<strong>\u0437\u0430\u0435\u043c\u0449\u0438\u043a<\/strong>\u00a0\u043f\u043e\u0433\u0430\u0441\u0438\u0442 \u0437\u0430\u0435\u043c.<\/p>\n<p><strong>Liquidation (\u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u044f)<\/strong>\u00a0&#8212; \u044d\u0442\u043e &#171;\u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438&#187; \u0438\u043b\u0438 \u043f\u0440\u043e\u0434\u0430\u0436\u0430\u00a0<strong>\u0437\u0430\u043b\u043e\u0433\u0430<\/strong>\u00a0\u0434\u043b\u044f \u0432\u044b\u043f\u043b\u0430\u0442\u044b \u043a\u0440\u0435\u0434\u0438\u0442\u0430. \u0415\u0441\u043b\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c\u00a0<strong>\u0437\u0430\u043b\u043e\u0433\u0430<\/strong>\u00a0\u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0438\u0436\u0435 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u0440\u0435\u0434\u0438\u0442\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u0437\u0430\u043b\u043e\u0433 \u0431\u0443\u0434\u0435\u0442 \u00ab\u043b\u0438\u043a\u0432\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u00bb, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u043d\u0435\u0441\u0442\u0438 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0442\u0435\u0440\u0438.<\/p>\n<h3>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b<\/h3>\n<p>\u041a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0442\u043e\u0439 \u0437\u0430\u0439\u043c\u0430 \u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0438\u043c\u0435\u044e\u0442 \u0433\u0438\u0431\u043a\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432, \u0446\u0435\u043b\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043e\u0434\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445: \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u0437\u0430\u0451\u043c\u0449\u0438\u043a\u0430 \u0438 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c62\/ee4\/1b3\/c62ee41b3b3e706c586d63205eb76d3d.png\" width=\"1019\" height=\"590\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c62\/ee4\/1b3\/c62ee41b3b3e706c586d63205eb76d3d.png\"\/><\/figure>\n<p><strong>\u041a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u0435<\/strong>. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0439 \u043f\u0443\u043b (\u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442). \u0412\u0437\u0430\u043c\u0435\u043d \u043e\u043d\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442 LP \u0442\u043e\u043a\u0435\u043d\u044b (\u0442\u043e\u043a\u0435\u043d\u044b \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u0443\u043b\u0430), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u0445 \u0434\u043e\u043b\u044e \u0432 \u043e\u0431\u0449\u0435\u0439 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u0443\u043b\u0430. \u041e\u0431\u044b\u0447\u043d\u043e \u0441\u0432\u043e\u0438 \u0430\u043a\u0442\u0438\u0432\u044b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0441 \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u043c\u0438.<\/p>\n<p><strong>\u0417\u0430\u0435\u043c<\/strong>. \u0418\u0437-\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0432 DeFi, \u0437\u0430\u0435\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0432\u0435\u0440\u0445-\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u044f \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u043f\u043e\u0442\u0435\u0440\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0435\u043c\u0449\u0438\u043a \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043b\u0430\u0442\u0438\u0442\u044c \u043a\u0440\u0435\u0434\u0438\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043d\u0435\u0441\u0442\u0438 \u0437\u0430\u043b\u043e\u0433, \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u0440\u0435\u0434\u0438\u0442\u0430. \u0418 \u0442\u043e\u0433\u0434\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u043e\u0433\u0430 \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0437\u0430\u0439\u043c\u0443 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043f\u0430\u0434\u0435\u0442, \u0442\u043e \u0437\u0430\u043b\u043e\u0433\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0434\u043e\u043b\u0433\u0430. \u0417\u0430\u0435\u043c\u0449\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u043e\u043b\u0433 + \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0439\u043c\u0430 \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0438 \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u043b\u043e\u0433.<\/p>\n<p><em>\u0412\u0430\u0436\u043d\u043e!<\/em>\u00a0\u041f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0435 \u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u043b\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u0439\u043c\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0432 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u043e\u043c \u043f\u0443\u043b\u0435 \u0438 \u043e\u0431\u0449\u0435\u0439 \u0441\u0443\u043c\u043c\u044b \u0437\u0430\u0439\u043c\u043e\u0432. \u0421\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043a \u0437\u0430\u0439\u043c\u0430\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u00a0<strong>\u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>\u00a0(\u0433\u0434\u0435-\u0442\u043e \u044d\u0442\u043e\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0430\u0447\u0435, \u043d\u043e \u0441\u0443\u0442\u044c \u0435\u0433\u043e \u043e\u0434\u043d\u0430). \u0415\u0441\u043b\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442, \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u0430\u044f \u0441\u0442\u0430\u0432\u043a\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u0440\u0438\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0432 \u0438 \u0441\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u043e\u0432, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c.<\/p>\n<p><strong>\u041b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u044f<\/strong>. \u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u043e\u0433\u0430 \u043c\u043e\u0436\u0435\u0442 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u0441\u044f \u0438\u043b\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0432 \u0437\u0430\u0439\u043c\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0440\u0430\u0441\u0442\u0438 \u0438 \u0442\u043e\u0433\u0434\u0430 \u0437\u0430\u043b\u043e\u0433\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0439\u043c\u0430. \u0415\u0441\u043b\u0438 \u0437\u0430\u0435\u043c\u0449\u0438\u043a \u043d\u0435 \u043f\u043e\u0433\u0430\u0441\u0438\u0442 \u0434\u043e\u043b\u0433, \u0442\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u043a\u0432\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043d. \u0417\u0430\u0435\u043c\u0449\u0438\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u043e\u0433\u0430 \u043d\u0435 \u043f\u0430\u0434\u0430\u043b\u0430 \u043d\u0438\u0436\u0435 \u043f\u043e\u0440\u043e\u0433\u0430 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442, \u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 &#8212;\u00a0<strong>\u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u044b<\/strong>\u00a0\u043c\u043e\u0433\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043b\u043e\u0433 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430 \u0434\u043b\u044f \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0437\u0430\u0439\u043c\u0430.<\/p>\n<p><em>\u0412\u0430\u0436\u043d\u043e!<\/em>\u00a0\u041f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0443\u0442\u0435\u043c \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0437\u0430\u043b\u043e\u0433\u0430 \u0438\u043b\u0438 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e.<\/p>\n<p>\u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043d\u0430 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u044e \u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u0432 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u043a\u043b\u044e\u0447\u0435 \u0438 \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0435 \u043c\u043d\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0431\u044b \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b, \u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043a\u0443 \u0438 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u0432. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0431\u0430\u043b\u0430\u043d\u0441 \u0441\u0438\u043b \u0432 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435 lending \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c.<\/p>\n<h2>Compound V2<\/h2>\n<p><strong>Compound<\/strong>\u00a0&#8212; \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u0435\u0440\u0432\u044b\u0445 lending \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0432 DeFi. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0435\u0437 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0440\u0433\u0430\u043d\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u0430\u043d\u043a). Compound \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u0432 \u0438 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0433\u0440\u0443\u043f\u043f\u0443 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0432 EVM \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0441\u0435\u0442\u044f\u0445. \u0412\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u0435.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0432\u0438\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:<\/p>\n<ul>\n<li>\n<p><strong>\u041a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u044b (Lenders)<\/strong>\u00a0\u2014 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0430\u043a\u0442\u0438\u0432\u044b \u043d\u0430 Compound. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0430\u043a\u0442\u0438\u0432\u044b \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f Compound. \u0421\u0442\u0438\u043c\u0443\u043b\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432.<\/p>\n<\/li>\n<li>\n<p><strong>\u0417\u0430\u0435\u043c\u0449\u0438\u043a\u0438 (Borrowers)<\/strong>\u00a0\u2014 \u0431\u0435\u0440\u0443\u0442 \u0432 \u0437\u0430\u0439\u043c\u044b \u0430\u043a\u0442\u0438\u0432\u044b, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f Compound \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u0430\u043c\u0438. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0437\u0430\u043b\u043e\u0433 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u0437\u044f\u0442\u044c \u0437\u0430\u0439\u043c. \u0412 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0437\u0430\u0439\u043c\u0430 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0435\u043c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432.<\/p>\n<\/li>\n<\/ul>\n<p><em>\u0412\u0430\u0436\u043d\u043e!<\/em>\u00a0\u0414\u0430\u043b\u044c\u0448\u0435 \u044f \u0431\u0443\u0434\u0443 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u00a0<strong>\u0432\u0442\u043e\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e<\/strong>\u00a0Compound!<\/p>\n<h3>\u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b<\/h3>\n<p>\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol\"><u>\u0421Token.sol<\/u><\/a>. \u041e\u043b\u0438\u0446\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b Compound. \u0422\u0430\u043a\u043e\u0439 \u0430\u043a\u0442\u0438\u0432 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 cToken \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f\u00a0<strong>underlying<\/strong>\u00a0(\u0431\u0430\u0437\u043e\u0432\u044b\u043c).<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/Comptroller.sol\"><u>Comptroller.sol<\/u><\/a>. \u0412\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0440\u043e\u043b\u0438 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u043a\u0430\u043c\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0437\u0430\u0439\u043c\u0430, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u00a0<strong>CToken<\/strong>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/605\/29d\/1ed\/60529d1ed8e6d7489c958a5c087a8656.png\" width=\"571\" height=\"180\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/605\/29d\/1ed\/60529d1ed8e6d7489c958a5c087a8656.png\"\/><\/figure>\n<h4>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e cToken<\/h4>\n<p>\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u0442\u0438\u043f\u0430 cToken:<\/p>\n<ol>\n<li>\n<p><strong>CErc20<\/strong>. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u043e\u0439 \u0434\u043b\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 ERC-20.<\/p>\n<\/li>\n<li>\n<p><strong>CEther<\/strong>. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u043e\u0439 \u0434\u043b\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0432\u0430\u043b\u044e\u0442\u044b ETH.<\/p>\n<\/li>\n<\/ol>\n<p>\u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CErc20.sol\"><u>CErc20<\/u><\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CEther.sol\"><u>CEther<\/u><\/a>\u00a0\u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u00a0<strong>CToken<\/strong>\u00a0\u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 ERC-20 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0438 \u0441 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0432\u0430\u043b\u044e\u0442\u043e\u0439 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0414\u043b\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0432\u0430\u043b\u044e\u0442\u044b CToken \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f\u00a0<strong>\u0441ETH<\/strong>, \u0434\u043b\u044f USDT &#8212;\u00a0<strong>cUSDT<\/strong>\u00a0\u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/56c\/789\/3b3\/56c7893b3716cd084c8b1fa44101c447.png\" width=\"621\" height=\"372\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/56c\/789\/3b3\/56c7893b3716cd084c8b1fa44101c447.png\"\/><\/figure>\n<p>\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u00a0<strong>cToken<\/strong>\u00a0\u2014 \u044d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0443\u0442\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 Compound \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c. \u0414\u043b\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 (\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u0437\u0430\u0439\u043c \u0430\u043a\u0442\u0438\u0432\u0430) \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u044d\u0442\u0438\u043c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u043c. \u0412 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u044b\u0434\u0430\u0435\u0442\u0441\u044f \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442 \u0441\u0430\u043c\u043e\u0433\u043e\u00a0<strong>cToken<\/strong>\u00a0\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u041a\u0430\u0436\u0434\u044b\u0439\u00a0<strong>cToken<\/strong>\u00a0\u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u0412 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438\u00a0<strong>cToken<\/strong>\u00a0\u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u043a\u0442\u0438\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c19\/80f\/60d\/c1980f60d61fc0299615c1628e35cd65.png\" width=\"658\" height=\"169\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c19\/80f\/60d\/c1980f60d61fc0299615c1628e35cd65.png\"\/><\/figure>\n<p>\u0414\u043b\u044f \u0443\u0447\u0435\u0442\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0432\u0432\u043e\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435:<\/p>\n<ul>\n<li>\n<p>totalBorrows (\u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0432 \u0437\u0430\u0439\u043c\u0435),<\/p>\n<\/li>\n<li>\n<p>totalReserves (\u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430),<\/p>\n<\/li>\n<li>\n<p>initialExchangeRate (\u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0443\u0440\u0441 \u043e\u0431\u043c\u0435\u043d\u0430 cToken \u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e) \u0438 \u0434\u0440\u0443\u0433\u0438\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 Storage \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 cToken \u043c\u043e\u0436\u043d\u043e \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CTokenInterfaces.sol\"><u>\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/u><\/a>. \u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b:\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CTokenInterfaces.sol#L9C10-L9C23\"><u>CTokenStorage<\/u><\/a>,\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CTokenInterfaces.sol#L233\"><u>CErc20Storage<\/u><\/a>.<\/p>\n<p>\u0414\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol\"><u>cToken<\/u><\/a>. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u0445\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CErc20.sol\"><u>CErc20<\/u><\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CEther.sol\"><u>CEther<\/u><\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b cToken \u0438\u043b\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CTokenInterfaces.sol\"><u>CTokenInterfaces<\/u><\/a>.<\/p>\n<ul>\n<li>\n<p><code>mint()<\/code>\u00a0&#8212; \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432 \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b. \u0412 \u043e\u0431\u043c\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u00a0<strong>cToken<\/strong>\u00a0\u0440\u0430\u0432\u043d\u043e\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u043c\u0443 \u0442\u043e\u043a\u0435\u043d\u0443 \u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0430 exchangeRate (\u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043e\u0431\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u0443\u0440\u0441). \u041d\u0430 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u043d\u0442.<\/p>\n<\/li>\n<li>\n<p><code>redeem()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f. \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u00a0<strong>cToken<\/strong>\u00a0\u0432 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.<\/p>\n<\/li>\n<li>\n<p><code>redeemUnderlying()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f. \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u00a0<strong>cToken<\/strong>\u00a0\u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.<\/p>\n<\/li>\n<li>\n<p><code>borrow()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u0439\u043c\u0430 \u0430\u043a\u0442\u0438\u0432\u0430. \u041f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0430\u043a\u0442\u0438\u0432 \u0438\u0437 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u0434\u043e\u043b\u0433\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e\u0439 \u0441\u0442\u0430\u0432\u043a\u0438 \u0430\u043a\u0442\u0438\u0432\u0430. \u0422\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043b\u043e\u0433\u0430, \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>mint()<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>repayBorrow()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0439\u043c\u0430. \u041f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0430\u043a\u0442\u0438\u0432 \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0434\u043e\u043b\u0433 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p><code>repayBorrowBehalf()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0439\u043c\u0430. \u041f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0430\u043a\u0442\u0438\u0432 \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0434\u043e\u043b\u0433 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u0434\u043e\u043b\u0433 \u0437\u0430 \u043c\u0435\u0441\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430.<\/p>\n<\/li>\n<li>\n<p><code>liquidateBorrow()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u043d\u0435\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u0439\u043c\u0430. \u041d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0441\u0430\u043c\u0438\u043c \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430\u043c, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438 (\u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u0430\u043c\u0438) \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p><code>getCashPrior()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430\u00a0<strong>cToken<\/strong>.<\/p>\n<\/li>\n<li>\n<p><code>totalBorrows()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0443\u043c\u043c\u044b \u043d\u0435\u043f\u043e\u0433\u0430\u0448\u0435\u043d\u043d\u044b\u0445 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0440\u044b\u043d\u043a\u043e\u043c \u0432 \u0437\u0430\u0439\u043c\u044b \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<\/li>\n<li>\n<p><code>borrowBalanceCurrent()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0443\u043c\u043c\u044b \u043d\u0435\u043f\u043e\u0433\u0430\u0448\u0435\u043d\u043d\u044b\u0445 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p><code>balanceOf()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0430\u00a0<strong>cToken<\/strong>\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0432\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b.<\/p>\n<\/li>\n<li>\n<p><code>balanceOfUnderlying()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0432\u043b\u043e\u0436\u0435\u043d \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b. \u0420\u0430\u0432\u0435\u043d \u0431\u0430\u043b\u0430\u043d\u0441\u0443\u00a0<strong>cToken<\/strong>\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0430 \u043e\u0431\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u0443\u0440\u0441.<\/p>\n<\/li>\n<li>\n<p><code>supplyRatePerBlock()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e\u0439 \u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u043b\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0437\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0431\u043b\u043e\u043a.<\/p>\n<\/li>\n<li>\n<p><code>borrowRatePerBlock()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e\u0439 \u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0437\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0431\u043b\u043e\u043a.<\/p>\n<\/li>\n<li>\n<p><code>totalReserves()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043e\u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430. \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u043c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u043c \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c (reserve factor).<\/p>\n<\/li>\n<li>\n<p><code>reserveFactorMantissa()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432, \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u044b.<\/p>\n<\/li>\n<\/ul>\n<h4>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e comptroller<\/h4>\n<p>\u0412 Compound \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e\u00a0<strong>\u0441Token<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c Compound \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u0437\u0430\u043b\u043e\u0433 \u043e\u0434\u0438\u043d \u0430\u043a\u0442\u0438\u0432 \u0438 \u0432\u0437\u044f\u0442\u044c \u0432 \u0437\u0430\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439.<\/p>\n<p>\u042d\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442 \u043b\u043e\u0433\u0438\u0447\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0437\u0430\u043b\u043e\u0433 \u0438 \u0437\u0430\u0439\u043c \u0432 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435 \u0430\u043a\u0442\u0438\u0432\u0435 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430. \u0410 \u0437\u043d\u0430\u0447\u0438\u0442 \u043d\u0430\u0434 \u0432\u0441\u0435\u043c\u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u043c\u0438\u00a0<strong>cToken<\/strong>\u00a0\u0434\u043e\u043b\u0436\u043d\u043e \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435.<\/p>\n<p><strong>Comptroller<\/strong>\u00a0\u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0440\u043e\u043b\u0438 \u0441\u0432\u044f\u0437\u0443\u044e\u0449\u0435\u0433\u043e \u0437\u0432\u0435\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445\u00a0<strong>cToken<\/strong>. \u041e\u043d \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0442\u0430\u043a\u0438\u043c\u0438 \u043f\u043e\u043d\u044f\u0442\u0438\u044f\u043c\u0438, \u043a\u0430\u043a: &#171;operation allowed&#187;,\u00a0<em>collateral factor<\/em>,\u00a0<em>close factor<\/em>,\u00a0<em>liquidation incentive<\/em>.<\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u00a0<strong>cToken<\/strong>, \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c\u00a0<strong>cToken<\/strong>\u00a0\u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a\u00a0<strong>comptroller<\/strong>\u00a0\u0437\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0435\u0439 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438.\u00a0<strong>Comptroller<\/strong>\u00a0\u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0435 \u043f\u0440\u0430\u0432\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u043f\u0440\u0438 \u043d\u0435\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0439.<\/p>\n<blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440!<\/p>\n<ul>\n<li>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0445\u043e\u0447\u0435\u0442 \u0432\u0437\u044f\u0442\u044c \u0437\u0430\u0435\u043c \u0432 Compound, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043d \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443\u00a0<strong>cToken<\/strong>\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u043b\u043e\u0433. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f ETH \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u043b\u043e\u0433\u0430 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 cETH.<\/p>\n<\/li>\n<li>\n<p><strong>cToken<\/strong>\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 (\u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 cETH) \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u00a0<strong>comptroller<\/strong>\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u043c \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0437\u0430\u043b\u043e\u0433\u0430 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u0435\u043d \u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0437\u0430\u043b\u043e\u0433\u0430. \u0415\u0441\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u044b,\u00a0<strong>comptroller<\/strong>\u00a0\u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e, \u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0435\u0433\u043e \u0437\u0430\u043b\u043e\u0433\u043e\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>Comptroller<\/strong>\u00a0\u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u044f, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u043d \u0437\u0430\u043d\u044f\u043b \u0438 \u043a\u0430\u043a\u043e\u0439 \u0443 \u043d\u0435\u0433\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0437\u0430\u043b\u043e\u0433.<\/p>\n<\/li>\n<\/ul>\n<\/blockquote>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6d4\/980\/f63\/6d4980f6385d806a8567c2bde65021f8.png\" width=\"674\" height=\"142\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d4\/980\/f63\/6d4980f6385d806a8567c2bde65021f8.png\"\/><\/figure>\n<blockquote>\n<p>\u042d\u0442\u0430 \u0441\u0445\u0435\u043c\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u0439 \u0438 \u043a\u0440\u0430\u0442\u043a\u043e\u0439. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u00a0<strong>comptroller<\/strong>\u00a0\u0438\u00a0<strong>cToken<\/strong>\u00a0\u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,\u00a0<strong>comptroller<\/strong>\u00a0\u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u00a0<strong>COMP<\/strong>\u00a0\u0442\u043e\u043a\u0435\u043d\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c.<\/p>\n<\/blockquote>\n<p>\u0412 \u0441\u0432\u043e\u0435\u043c \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435\u00a0<strong>comptroller<\/strong>\u00a0\u0438\u043c\u0435\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/ComptrollerStorage.sol#L135\"><u>borrowCaps<\/u><\/a>. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0439\u043c\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d \u0440\u0430\u0432\u0435\u043d 0, \u0447\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e\u0431 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/ComptrollerStorage.sol#L66\"><u>collateralFactorMantissa<\/u><\/a>. \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e\u0433\u043e \u0437\u0430\u043b\u043e\u0433\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0.9 \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c 90% \u043e\u0442 \u0437\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0439 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438. \u0417\u0430\u043b\u043e\u0433 \u0440\u0430\u0432\u0435\u043d 100 DAI. \u0417\u0430\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u044b\u043c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 90 DAI.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/ComptrollerStorage.sol#L66\"><u>liquidationIncentiveMantissa<\/u><\/a>. \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0431\u043e\u043d\u0443\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/ComptrollerStorage.sol\"><u>ComptrollerStorage.sol<\/u><\/a>\u00a0\u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/Comptroller.sol\"><u>Comptroller.sol<\/u><\/a>\u00a0\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0437\u0430\u0439\u043c\u0430\u0445 \u0438 \u0432\u044b\u043f\u043b\u0430\u0442\u0430\u0445.<\/p>\n<p>\u0420\u0430\u0431\u043e\u0447\u0430\u044f \u0441\u0432\u044f\u0437\u043a\u0430\u00a0<strong>\u0441Token<\/strong>\u00a0\u0438\u00a0<strong>Comptroller<\/strong>\u00a0\u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u0439\u043c\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u0414\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0430\u043a\u0442\u0438\u0432\u043e\u043c \u0432\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u043d\u044f\u0442\u0438\u0435\u00a0<strong>market<\/strong>.<\/p>\n<h3>Market<\/h3>\n<p><strong>Market<\/strong>\u00a0\u0438\u043b\u0438 \u0440\u044b\u043d\u043e\u043a &#8212; \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u043c\u0438\u043d\u0438 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0430\u043a\u043e\u0439\u00a0<strong>market<\/strong>\u00a0\u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u00a0<strong>cToken<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0430\u0432\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u043a\u0442\u0438\u0432.\u00a0<strong>Comptroller<\/strong>\u00a0\u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u0434\u043b\u044f\u00a0<strong>cToken<\/strong>\u00a0\u0438 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u043b\u043e\u0433, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u043e\u043c \u0432\u0441\u0435\u0439 \u0437\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0439 \u0441\u0443\u043c\u043c\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u0432\u043d\u0435\u0441 \u0447\u0435\u0440\u0435\u0437 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b\u00a0<strong>cToken<\/strong>.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438\u00a0<strong>market<\/strong>\u00a0\u0432 Compound:<\/p>\n<ol>\n<li>\n<p><strong>cToken<\/strong>. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u044b\u043d\u043e\u043a \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 cToken (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, cDAI \u0434\u043b\u044f DAI, cETH \u0434\u043b\u044f ETH). \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u00a0<strong>cToken<\/strong>, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u0437\u0430\u043b\u043e\u0433 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0435 \u0441\u0442\u0430\u0432\u043a\u0438<\/strong>. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u044b\u043d\u043e\u043a \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u044e \u0441\u0442\u0430\u0432\u043a\u0443 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430 \u0438 \u0441\u0442\u0430\u0432\u043a\u0443 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u0421\u0442\u0430\u0432\u043a\u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u043f\u0440\u043e\u0441\u0430 \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u0440\u044b\u043d\u043a\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438<\/strong>. \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u043a\u0442\u0438\u0432\u0430, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u0423\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u0438<\/strong>. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u043e\u0442 \u0437\u0430\u0439\u043c\u0430 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d \u0437\u0430\u043b\u043e\u0433\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0440\u044b\u043d\u043a\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u041b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u044f.<\/strong>\u00a0\u0420\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u0438 \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u0435\u0440\u0435\u043d\u0435\u0441\u0435\u043c\u0441\u044f \u043d\u0435\u043d\u0430\u0434\u043e\u043b\u0433\u043e \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Compound \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435\u00a0<a href=\"https:\/\/app.compound.finance\/markets\"><u>markets<\/u><\/a>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ea9\/895\/548\/ea98955481647a0e393f7e63e3f4f5bd.png\" width=\"1145\" height=\"861\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ea9\/895\/548\/ea98955481647a0e393f7e63e3f4f5bd.png\"\/><\/figure>\n<p>\u0412\u043d\u0438\u0437\u0443 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u0433\u0434\u0435 \u0437\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u00a0<strong>market<\/strong>. \u0420\u044b\u043d\u043e\u043a \u0434\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430 &#171;Ether&#187; \u0432 \u0441\u0435\u0442\u0438 Ethereum \u0432\u044b\u0434\u0435\u043b\u0435\u043d \u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u043b\u0438\u043d\u0438\u0435\u0439. \u0421\u043f\u0438\u0441\u043e\u043a \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u044b:<\/p>\n<ol>\n<li>\n<p><strong>Utilization<\/strong>. \u041a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0432\u0437\u044f\u0442\u044b\u0445 \u0432 \u0437\u0430\u0439\u043c \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0430\u043a\u0442\u0438\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430. \u041f\u0440\u043e \u043d\u0435\u0433\u043e \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u043e\u0437\u0436\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>Earn APR<\/strong>. Earn Annual Percentage Rate. \u0413\u043e\u0434\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u043b\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p><strong>Borrow APR<\/strong>. Borrow Annual Percentage Rate. \u0413\u043e\u0434\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p><strong>Total Earning<\/strong>. \u041e\u0431\u0449\u0438\u0439 \u0434\u043e\u0445\u043e\u0434 \u044d\u0442\u043e\u0433\u043e market.<\/p>\n<\/li>\n<li>\n<p><strong>Total Borrowing<\/strong>. \u041e\u0431\u0449\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u0437\u0430\u0439\u043c\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>Total Collateral<\/strong>. \u041e\u0431\u0449\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u0432\u043d\u0435\u0441\u0435\u043d\u043d\u043e\u0433\u043e \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0437\u0430\u043b\u043e\u0433\u0430 \u0432 \u044d\u0442\u043e\u043c \u0430\u043a\u0442\u0438\u0432\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>Collateral assets<\/strong>. \u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0430\u043a\u0442\u0438\u0432\u0430 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u043b\u043e\u0433\u0430.<\/p>\n<\/li>\n<\/ol>\n<p>\u0412\u0441\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e markets \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e<a href=\"https:\/\/app.compound.finance\/markets\/v2\"> legacy \u0441\u0441\u044b\u043b\u043a\u0435<\/a>. \u0421\u043c\u043e\u0442\u0440\u0438 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u043d\u0438\u0436\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bee\/108\/eba\/bee108eba8380f22b8c7896b817c2916.png\" width=\"842\" height=\"859\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bee\/108\/eba\/bee108eba8380f22b8c7896b817c2916.png\"\/><\/figure>\n<p><em>\u0412\u0430\u0436\u043d\u043e!<\/em>\u00a0\u041f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0435 \u0441\u0442\u0430\u0432\u043a\u0438, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0434\u043b\u044f \u0437\u0430\u043b\u043e\u0433\u0430, \u0430\u043a\u0442\u0438\u0432\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b\u00a0<strong>market<\/strong>\u00a0\u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u00a0<strong>markets<\/strong>\u00a0&#8212; \u044d\u0442\u043e \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u0437\u0430\u0439\u043c\u0430. \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b\u00a0<strong>Comptroller<\/strong>\u00a0\u0437\u043d\u0430\u043b \u0441 \u043a\u0430\u043a\u0438\u043c\u0438\u00a0<strong>cToken<\/strong>\u00a0\u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u043c\u0443 \u043e\u0431 \u044d\u0442\u043e\u043c &#171;\u0441\u043a\u0430\u0437\u0430\u0442\u044c&#187;. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/Comptroller.sol#L121\"><u>Comptroller<\/u><\/a>, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0<code>enterMarkets()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0430\u0441\u0441\u043e\u0446\u0438\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438\u00a0<strong>markets<\/strong>. \u0412\u044b\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>enterMarkets()<\/code>\u00a0\u0438\u043b\u0438 &#171;\u0432\u044b\u0439\u0442\u0438 \u043d\u0430 \u0440\u044b\u043d\u043e\u043a&#187; \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435: \u0414\u043b\u044f \u0437\u0430\u0439\u043c\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u041f\u043e\u0441\u043b\u0435 &#171;\u0432\u044b\u0445\u043e\u0434\u0430 \u043d\u0430 \u0440\u044b\u043d\u043e\u043a&#187; \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u043b\u043e\u0433\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u044b.<\/p>\n<h3>Supplying<\/h3>\n<p>\u041f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c. \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443. \u041f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u043b\u043e\u0433\u0430 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430. \u0412\u0437\u0430\u043c\u0435\u043d \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u00a0<strong>cToken<\/strong>\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430.<\/p>\n<p><em>\u0412\u0430\u0436\u043d\u043e!<\/em>\u00a0\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438, \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430\u043c\u0438, \u043c\u043e\u0433\u0443\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438\u00a0<a href=\"https:\/\/app.compound.finance\/\"><u>\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430<\/u><\/a>.<\/p>\n<p>\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<ol>\n<li>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0441 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>mint()<\/code>\u00a0\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435 CToken. \u0412\u044b\u0437\u043e\u0432 \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435\u00a0<strong>Adapter<\/strong>\u00a0\u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"javascript\">contract CompoundAdapter {     \/\/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 tokenA \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0432 Compound     function addCollateral(uint256 amount) external {       \/\/\/ \u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0441 \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442.       \/\/\/ \u041f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u043a\u043e\u0448\u0435\u043b\u044c\u043a\u0430 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0434\u0430\u043b \u0430\u043f\u0440\u0443\u0432 \u043d\u0430 \u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 tokenA       tokenA.transferFrom(msg.sender, address(this), amount);       \/\/\/ \u0421\u0442\u0430\u0440\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u043c Compound       cTokenA.mint(amount);     } }<\/code><\/pre>\n<\/li>\n<li>\n<p>\u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044f mint() \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CErc20.sol#L49\"><u>CErc20.sol<\/u><\/a>\u00a0\u0438\u043b\u0438\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CEther.sol#L45\"><u>CEther.sol<\/u><\/a>. \u0414\u0430\u043b\u044c\u0448\u0435 \u0432\u044b\u0437\u043e\u0432 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol#L386C14-L386C26\"><u>\u0421Token.sol<\/u><\/a>\u00a0\u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0437\u043e\u0432\u00a0<code>mintInternal()<\/code>.  <\/p>\n<pre><code class=\"javascript\">function mint(uint mintAmount) override external returns (uint) {     mintInternal(mintAmount);     return NO_ERROR; }<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0412\u00a0<code>mintInternal()<\/code>\u00a0\u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u0434\u0432\u0443\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439\u00a0<code>accrueInterest()<\/code>\u00a0\u0438\u00a0<code>mintFresh()<\/code>. \u041f\u0435\u0440\u0432\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0441\u0447\u0435\u0442\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434, \u0432\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u0435\u0440 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0432\u043d\u0443\u0442\u0440\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0438 \u0432\u044b\u0434\u0430\u0447\u0443 CToken \u0432\u0437\u0430\u043c\u0435\u043d. <\/p>\n<pre><code class=\"javascript\">function mintInternal(uint mintAmount) internal nonReentrant {     accrueInterest();     mintFresh(msg.sender, mintAmount); }<\/code><\/pre>\n<\/li>\n<li>\n<p> \u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>accrueInterest()<\/code>  <\/p>\n<pre><code class=\"javascript\">function accrueInterest() virtual override public returns (uint) {     \/\/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043d\u043e\u043c\u0435\u0440 \u0431\u043b\u043e\u043a\u0430 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043d\u043e\u043c\u0435\u0440 \u0431\u043b\u043e\u043a\u0430 \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u044b\u043b\u043e \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432     uint currentBlockNumber = getBlockNumber();     uint accrualBlockNumberPrior = accrualBlockNumber;      \/\/\/ \u0412\u044b\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043a\u0438, \u0435\u0441\u043b\u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0431\u043b\u043e\u043a\u0435 \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u0443\u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c     if (accrualBlockNumberPrior == currentBlockNumber) {         return NO_ERROR;     }      uint cashPrior = getCashPrior();     uint borrowsPrior = totalBorrows;     uint reservesPrior = totalReserves;     uint borrowIndexPrior = borrowIndex;      \/\/\/ \u0420\u0430\u0441\u0447\u0435\u0442 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430 \u043f\u043e \u0437\u0430\u0439\u043c\u0430\u043c     uint borrowRateMantissa = interestRateModel.getBorrowRate(cashPrior, borrowsPrior, reservesPrior);     require(borrowRateMantissa &lt;= borrowRateMaxMantissa, \"borrow rate is absurdly high\");      \/\/\/ \u0412\u044b\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0431\u043b\u043e\u043a\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u0431\u044b\u043b \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d \u0440\u0430\u0441\u0447\u0435\u0442 \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u043c     uint blockDelta = currentBlockNumber - accrualBlockNumberPrior;      \/\/\/ \u0420\u0430\u0441\u0447\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0437\u0430\u0439\u043c\u044b, \u0440\u0435\u0437\u0435\u0440\u0432\u044b     Exp memory simpleInterestFactor = mul_(Exp({mantissa: borrowRateMantissa}), blockDelta);     uint interestAccumulated = mul_ScalarTruncate(simpleInterestFactor, borrowsPrior);     uint totalBorrowsNew = interestAccumulated + borrowsPrior;     uint totalReservesNew = mul_ScalarTruncateAddUInt(Exp({mantissa: reserveFactorMantissa}), interestAccumulated, reservesPrior);     uint borrowIndexNew = mul_ScalarTruncateAddUInt(simpleInterestFactor, borrowIndexPrior, borrowIndexPrior);      \/\/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0431\u043b\u043e\u043a, \u043a\u0430\u043a \u0431\u043b\u043e\u043a \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043e \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432     accrualBlockNumber = currentBlockNumber;      \/\/\/ \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430     borrowIndex = borrowIndexNew;     \/\/\/ \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u0439\u043c\u043e\u0432 \u0438 \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u043e\u0432     totalBorrows = totalBorrowsNew;     totalReserves = totalReservesNew;      emit AccrueInterest(cashPrior, interestAccumulated, borrowIndexNew, totalBorrowsNew);      return NO_ERROR; }<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>mintFresh()<\/code>  <\/p>\n<pre><code class=\"javascript\">function mintFresh(address minter, uint mintAmount) internal {     \/\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432 comptroller \u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c mint() \u0444\u0443\u043d\u043a\u0446\u0438\u044e     uint allowed = comptroller.mintAllowed(address(this), minter, mintAmount);     if (allowed != 0) {         revert MintComptrollerRejection(allowed);     }      \/\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u0443\u0436\u0435 \u0431\u044b\u043b\u0438 \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u044b \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b     if (accrualBlockNumber != getBlockNumber()) {         revert MintFreshnessCheck();     }      \/\/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0421Token \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430     \/\/\/ \u0412\u043d\u0443\u0442\u0440\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 exchangeRateStoredInternal() \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0440\u0430\u0441\u0447\u0435\u0442 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430 \u0431\u0430\u0437\u0435 totalCash, totalBorrows, totalReserves, totalSupply     Exp memory exchangeRate = Exp({mantissa: exchangeRateStoredInternal()});      \/\/\/ \u0422\u0440\u0430\u043d\u0441\u0444\u0435\u0440 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 CToken.     \/\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f CErc-20 \u0438 CEther, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0432\u0430\u043b\u044e\u0442\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u0441 \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 mint()     uint actualMintAmount = doTransferIn(minter, mintAmount);      \/\/\/ \u0420\u0430\u0441\u0447\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 cToken \u043d\u0430 \u0431\u0430\u0437\u0435 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 cToken     uint mintTokens = div_(actualMintAmount, exchangeRate);      totalSupply = totalSupply + mintTokens;     \/\/\/ \u041d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441Token \u0432\u0437\u0430\u043c\u0435\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438     accountTokens[minter] = accountTokens[minter] + mintTokens;      emit Mint(minter, actualMintAmount, mintTokens);     emit Transfer(address(this), minter, mintTokens); }<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>\u0421\u0445\u0435\u043c\u0430 \u043d\u0438\u0436\u0435 \u0432 \u043f\u043e\u043c\u043e\u0449\u044c! ?  <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/57f\/b4e\/869\/57fb4e8694a3828d71d2a2cfb2d4bf87.png\" width=\"1045\" height=\"721\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/57f\/b4e\/869\/57fb4e8694a3828d71d2a2cfb2d4bf87.png\"\/><\/figure>\n<h3>Borrowing<\/h3>\n<p>\u041f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 Compound \u043f\u0440\u0438 \u0437\u0430\u0439\u043c\u0435. \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c, \u0447\u0442\u043e \u0437\u0430\u043b\u043e\u0433 (\u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u0438\u043b\u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435) \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0430\u043a\u0442\u0438\u0432\u0435 \u0443\u0436\u0435 \u0432\u043d\u0435\u0441\u0435\u043d \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 supplying.<\/p>\n<p><em>\u0412\u0430\u0436\u043d\u043e!<\/em>\u00a0\u0417\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0437\u0430\u0435\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0432\u0435\u0440\u0445 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u043b\u043e\u0433\u0430.<\/p>\n<ol>\n<li>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0435\u043c \u0441 &#171;\u0432\u044b\u0445\u043e\u0434\u0430 \u043d\u0430 \u0440\u044b\u043d\u043e\u043a&#187;. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>enterMarkets()<\/code>\u00a0\u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/Comptroller.sol#L121\"><u>comptroller<\/u><\/a>\u00a0\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432 \u043d\u0435\u0435 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0434\u0440\u0435\u0441\u043e\u0432 CToken, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u041d\u0430\u0448 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u00a0<strong>Adapter<\/strong>\u00a0\u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<pre><code class=\"javascript\">contract CompoundAdapter {     constructor(Comptroller comptroller, address[] cTokens) {         \/\/\/ \u0421\u043e\u0432\u0435\u0440\u0448\u0430\u0435\u043c \"\u0432\u044b\u0445\u043e\u0434 \u043d\u0430 \u0440\u044b\u043d\u043e\u043a\"         uint256[] memory errors = comptroller.enterMarkets(cTokens);         if (errors[0] != 0) {             revert EnterMarketsFailed();         }     }      function borrow(uint256 amount) {         cTokenB.borrow(amount);         tokenB.transfer(             msg.sender,             tokenB.balanceOf(address(this))         );     } }<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0412\u044b\u0437\u043e\u0432\u00a0<code>enterMarkets()<\/code>\u00a0\u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 cToken \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>addToMarketInternal()<\/code>  <\/p>\n<pre><code class=\"javascript\">function addToMarketInternal(CToken cToken, address borrower) internal returns (Error) {     Market storage marketToJoin = markets[address(cToken)];      \/\/\/ \u0412\u043e\u0437\u0432\u0440\u0430\u0442 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u0442\u043e\u043a\u0435\u043d \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c     if (!marketToJoin.isListed) {         return Error.MARKET_NOT_LISTED;     }      \/\/\/ \u041f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0442, \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u043b\u0441\u044f \u043a \u0440\u044b\u043d\u043a\u0443     if (marketToJoin.accountMembership[borrower] == true) {         return Error.NO_ERROR;     }      \/\/\/ \u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0432 state \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043b\u0441\u044f \u043a \u0440\u044b\u043d\u043a\u0443     marketToJoin.accountMembership[borrower] = true;     accountAssets[borrower].push(cToken);      emit MarketEntered(cToken, borrower);      return Error.NO_ERROR; }<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>borrow()<\/code>\u00a0\u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435 cToken. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0437\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c, \u0430 \u0443 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u043e\u0432 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432. \u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c borrow \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u0445 CErc20 \u0438 CEther \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>borrowInternal()<\/code>.  <\/p>\n<pre><code class=\"javascript\">function borrow(uint borrowAmount) override external returns (uint) {     borrowInternal(borrowAmount);     return NO_ERROR; } <\/code><\/pre>\n<\/li>\n<li>\n<p>\u0412\u00a0<code>borrowInternal()<\/code>\u00a0\u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol#L555C14-L555C28\"><u>CToken<\/u><\/a>\u00a0\u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441\u00a0<code>mintInternal()<\/code>\u00a0\u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438:\u00a0<code>accrueInterest()<\/code>\u00a0\u0438\u00a0<code>borrowFresh()<\/code>.  <\/p>\n<pre><code class=\"javascript\">function borrowInternal(uint borrowAmount) internal nonReentrant {     accrueInterest();     borrowFresh(payable(msg.sender), borrowAmount); }<\/code><\/pre>\n<\/li>\n<li>\n<p><code>accrueInterest()<\/code>\u00a0\u043c\u044b \u0443\u0436\u0435 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0432\u00a0<a href=\"https:\/\/github.com\/fullstack-development\/blockchain-wiki\/blob\/main\/DeFi\/lending\/compound\/README.md#supplying\"><u>supplying<\/u><\/a>. \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430\u00a0<code>borrowFresh()<\/code>  <\/p>\n<pre><code class=\"javascript\">function borrowFresh(address payable borrower, uint borrowAmount) internal {     \/\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0439\u043c\u0430 \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435 comptroller     uint allowed = comptroller.borrowAllowed(address(this), borrower, borrowAmount);     if (allowed != 0) {         revert BorrowComptrollerRejection(allowed);     }      \/\/\/ \u041e\u0442\u043c\u0435\u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0431\u043b\u043e\u043a\u0435 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432     if (accrualBlockNumber != getBlockNumber()) {         revert BorrowFreshnessCheck();     }      \/\/\/ \u041e\u0442\u043c\u0435\u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430 \u0441\u0440\u0435\u0434\u0441\u0442\u0432     if (getCashPrior() &lt; borrowAmount) {         revert BorrowCashNotAvailable();     }      \/\/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0434\u043e\u043b\u0433\u0430 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430     uint accountBorrowsPrev = borrowBalanceStoredInternal(borrower);     \/\/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u043e\u0432\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043d\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u0439\u043c\u0430     uint accountBorrowsNew = accountBorrowsPrev + borrowAmount;     \/\/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u0449\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0437\u0430\u0439\u043c\u0430 \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443     uint totalBorrowsNew = totalBorrows + borrowAmount;      \/\/\/ \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u0437\u0430\u0439\u043c\u0430\u043c \u0432 state \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430     accountBorrows[borrower].principal = accountBorrowsNew;     accountBorrows[borrower].interestIndex = borrowIndex;     totalBorrows = totalBorrowsNew;      \/\/\/ \u0422\u0440\u0430\u043d\u0441\u0444\u0435\u0440 \u0437\u0430\u043d\u044f\u0442\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0441 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0434\u043e \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430.     \/\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043b\u044f CErc-20 \u0438 CEther \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432     doTransferOut(borrower, borrowAmount);      emit Borrow(borrower, borrowAmount, accountBorrowsNew, totalBorrowsNew); }<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>Interest rates<\/h3>\n<p>\u041f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0435 \u0441\u0442\u0430\u0432\u043a\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u0438 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043a \u0437\u0430\u043d\u044f\u0442\u044b\u043c \u0430\u043a\u0442\u0438\u0432\u0430\u043c. \u0415\u0441\u0442\u044c \u0442\u0440\u0438 \u0442\u0438\u043f\u0430 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0445 \u0441\u0442\u0430\u0432\u043e\u043a:<\/p>\n<ol>\n<li>\n<p><strong>Supply rate.<\/strong>\u00a0\u042d\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u0430\u044f \u0441\u0442\u0430\u0432\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0437\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0438\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443.<\/p>\n<\/li>\n<li>\n<p><strong>Exchange rate.<\/strong>\u00a0\u042d\u0442\u043e \u043a\u0443\u0440\u0441 \u043e\u0431\u043c\u0435\u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 cToken (cDAI, cETH \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435) \u043a \u0431\u0430\u0437\u043e\u0432\u043e\u043c\u0443 \u0430\u043a\u0442\u0438\u0432\u0443 (DAI, ETH )<\/p>\n<\/li>\n<li>\n<p><strong>Borrow rate.<\/strong>\u00a0\u042d\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u0430\u044f \u0441\u0442\u0430\u0432\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0443 \u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0435\u043c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432.<\/p>\n<\/li>\n<\/ol>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0432\u043e\u043a \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/InterestRateModel.sol\"><u>InterestRateModel<\/u><\/a>.<\/p>\n<p><em>\u0412\u0430\u0436\u043d\u043e!<\/em>\u00a0\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 CToken \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0445 \u0441\u0442\u0430\u0432\u043e\u043a. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0<code>_setInterestRateModel()<\/code>. \u041e\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol#L1080\"><u>cToken<\/u><\/a>.<\/p>\n<p>\u0421\u0430\u043c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u00a0<code>InterestRateModel.sol<\/code>\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0432\u0443\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439\u00a0<code>getBorrowRate()<\/code>\u00a0\u0438\u00a0<code>getSupplyRate()<\/code>. \u041f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u044b\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0435 \u0441\u0442\u0430\u0432\u043a\u0438 \u043d\u0430 \u0431\u0430\u0437\u0435: \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 (cash), \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0432 \u0437\u0430\u0439\u043c\u0435 (borrows), \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432.<\/p>\n<p>\u0423\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0447\u0442\u0435\u043d\u0438\u044f\u00a0<code>interestRateModel()<\/code>\u00a0\u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435 cToken. \u041d\u0438\u0436\u0435 \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u044d\u0442\u043e \u0434\u043b\u044f\u00a0<a href=\"https:\/\/etherscan.io\/address\/0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643\"><u>cDAI<\/u><\/a>\u00a0\u0432 \u0441\u0435\u0442\u0438 Ethereum.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/33f\/212\/318\/33f2123182e52eaf0822e3fb4bda274e.png\" width=\"1361\" height=\"125\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/33f\/212\/318\/33f2123182e52eaf0822e3fb4bda274e.png\"\/><\/figure>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0442\u0430\u043b \u0430\u0434\u0440\u0435\u0441\u00a0<code>0xFB564da37B41b2F6B6EDcc3e56FbF523bD9F2012<\/code>. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0435\u0433\u043e \u043d\u0430 etherscan.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c38\/06f\/366\/c3806f3663be0a9f382f39352214ae77.png\" width=\"1488\" height=\"709\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c38\/06f\/366\/c3806f3663be0a9f382f39352214ae77.png\"\/><\/figure>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u00a0<code>JumpRateModelV2<\/code>\u00a0\u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0443\u0442 \u0436\u0435 \u0432\u00a0<a href=\"https:\/\/etherscan.io\/address\/0xFB564da37B41b2F6B6EDcc3e56FbF523bD9F2012#code\"><u>etherscan<\/u><\/a>\u00a0\u0438\u043b\u0438 \u043d\u0430\u0439\u0442\u0438 \u0432\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/JumpRateModelV2.sol\"><u>\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/u><\/a>.<\/p>\n<h4>Supply rate<\/h4>\n<p>\u0412 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol#L215\"><u>cToken<\/u><\/a>\u00a0\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u0443\u044e \u0441\u0442\u0430\u0432\u043a\u0443, \u043d\u0430\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u0443\u044e \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0430\u043c \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0437\u0430 \u0431\u043b\u043e\u043a, \u0432\u044b\u0437\u0432\u0430\u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>supplyRatePerBlock()<\/code>.<\/p>\n<pre><code class=\"javascript\">function supplyRatePerBlock() override external view returns (uint) {     return interestRateModel.getSupplyRate(getCashPrior(), totalBorrows, totalReserves, reserveFactorMantissa); }<\/code><\/pre>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0447\u0442\u043e \u0432\u044b\u0437\u043e\u0432\u00a0<code>interestRateModel.getSupplyRate()<\/code>\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430. \u0414\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u043d\u044f\u0442\u0438\u044f \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol#L484\"><u>exchangeRate<\/u><\/a>.<\/p>\n<p>\u0412 \u043a\u0430\u0436\u0434\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u0430\u044f \u0441\u0442\u0430\u0432\u043a\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u0439. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u044b \u0432\u0438\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>accrueInterest()<\/code>.<\/p>\n<p><em>\u0413\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e!<\/em>\u00a0\u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0430\u043a\u0442\u0438\u0432\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u0440\u0430\u0442\u044c \u0432 \u0437\u0430\u0439\u043c\u044b. \u0417\u0430\u0435\u043c\u0449\u0438\u043a\u0438 \u0432\u044b\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b (\u043f\u043b\u0430\u0442\u044f\u0442\u0441\u044f \u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u043c \u0430\u043a\u0442\u0438\u0432\u0435) \u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0430\u0441\u0442\u0435\u0442. \u0412\u0441\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b (\u0432\u044b\u0440\u043e\u0441\u0448\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430) \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u0432 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 market \u0430\u043a\u0442\u0438\u0432\u0430.<\/p>\n<h4>Exchange rate<\/h4>\n<p>\u042d\u0442\u0430 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u0430\u044f \u0441\u0442\u0430\u0432\u043a\u0430 \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043a\u0443\u0440\u0441\u0430 \u043e\u0431\u043c\u0435\u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u043d\u0430 cToken \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u041a\u043e\u0433\u0434\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432 \u043e\u0431\u043c\u0435\u043d cToken \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043e\u0431\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u043a\u0443\u0440\u0441\u0443 (exchange rate).<\/p>\n<p>\u041e\u0431\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u0443\u0440\u0441 \u043c\u0435\u0436\u0434\u0443 cToken \u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u043c \u0430\u043a\u0442\u0438\u0432\u043e\u043c \u0432\u044b\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"exchangeRate = \\frac{getCash() + totalBorrows() - totalReserves()}{totalSupply()} \" alt=\"exchangeRate = \\frac{getCash() + totalBorrows() - totalReserves()}{totalSupply()} \" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/948\/deb\/a70\/948deba70c7ae068cc99f0a1cba19ed6.svg\" width=\"545\" height=\"50\"\/><\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043e\u0431\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u0443\u0440\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>exchangeRateCurrent()<\/code>\u00a0\u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol#L274\"><u>cToken<\/u><\/a>.<\/p>\n<h4>Borrow rate<\/h4>\n<p>\u0412 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol#L207\"><u>cToken<\/u><\/a>\u00a0\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u0443\u044e \u0441\u0442\u0430\u0432\u043a\u0443, \u043d\u0430\u0447\u0438\u0441\u043b\u044f\u0435\u043c\u0443\u044e \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430\u043c \u0437\u0430 \u0431\u043b\u043e\u043a.<\/p>\n<pre><code class=\"javascript\">function borrowRatePerBlock() override external view returns (uint) {     return interestRateModel.getBorrowRate(getCashPrior(), totalBorrows, totalReserves); }<\/code><\/pre>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0443 \u0441\u0442\u0430\u0432\u043a\u0443 \u0437\u0430\u0435\u043c\u0449\u0438\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u0432\u0437\u044f\u0442\u044b\u0445 \u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442\u00a0<code>supplyRatePerBlock()<\/code>,\u00a0<code>borrowRatePerBlock()<\/code>\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u043b\u043e\u0433\u0438\u043a\u0443\u00a0<code>interestRateModel.getBorrowRate()<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0443\u0447\u0430\u0441\u0442\u0438\u0435 \u0432 \u0440\u0430\u0441\u0447\u0435\u0442\u0430\u0445 \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>accrueInterest()<\/code>\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol#L344\"><u>cToken<\/u><\/a>.<\/p>\n<h3>Utilization rate<\/h3>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0440\u0430 \u0443\u0433\u043b\u0443\u0431\u0438\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/InterestRateModel.sol\"><u>InterestRateModel<\/u><\/a>. \u041e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0435\u0439 \u0434\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0445 \u0441\u0442\u0430\u0432\u043e\u043a. \u0421\u0430\u043c\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/JumpRateModelV2.sol\"><u>JumpRateModelV2<\/u><\/a>.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 JumpRateModelV2, \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043e\u043d \u0435\u0449\u0435 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 InterestRateModel, \u043d\u043e \u0438 \u043e\u0442\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/BaseJumpRateModelV2.sol\"><u>BaseJumpRateModelV2<\/u><\/a>.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f\u00a0<code>getSupplyRate()<\/code>\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/BaseJumpRateModelV2.sol#L116C1-L121C6\"><u>\u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<\/u><\/a><code>utilizationRate()<\/code>.<\/p>\n<pre><code class=\"javascript\">function getSupplyRate(uint cash, uint borrows, uint reserves, uint reserveFactorMantissa) virtual override public view returns (uint) {     uint oneMinusReserveFactor = BASE - reserveFactorMantissa;     uint borrowRate = getBorrowRateInternal(cash, borrows, reserves);     uint rateToPool = borrowRate * oneMinusReserveFactor \/ BASE;     return utilizationRate(cash, borrows, reserves) * rateToPool \/ BASE; }<\/code><\/pre>\n<p><strong>Utilization rate<\/strong>\u00a0&#8212; \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0432\u0437\u044f\u0442\u044b\u0445 \u0432 \u0437\u0430\u0435\u043c \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0430\u043a\u0442\u0438\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430.<\/p>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043b\u044e\u0431\u043e\u0439 \u0430\u043a\u0442\u0438\u0432 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u0430\u043c\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0431\u0430\u043b\u0430\u043d\u0441 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430 \u0438 \u0443\u0436\u0435 \u0432\u044b\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u043c\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u0439\u043c\u0430.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0433\u043e, \u0442\u043e \u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0431\u044b\u043b\u0438 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u0430\u043c. \u0418 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0435\u0441\u043b\u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043c\u0430\u043b\u043e, \u0442\u043e \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 lending \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b.<\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u0438\u0434\u0435:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"utilizationRate\u00a0=\u00a0\\frac{totalBorrows\u00a0}{totalSupply}\\text{, \u0433\u0434\u0435:}\" alt=\"utilizationRate\u00a0=\u00a0\\frac{totalBorrows\u00a0}{totalSupply}\\text{, \u0433\u0434\u0435:}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dcd\/047\/5ac\/dcd0475acf4a4cbe37b31b1fa43b119d.svg\" width=\"316\" height=\"47\"\/><\/p>\n<ul>\n<li>\n<p><strong>totalBorrows<\/strong>\u00a0&#8212; \u041e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0432 \u0437\u0430\u0439\u043c\u0435<\/p>\n<\/li>\n<li>\n<p><strong>totalSupply<\/strong>\u00a0&#8212; \u041e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u043a\u0442\u0438\u0432\u0430<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e\u00a0<code>totalSupply<\/code>\u00a0\u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"totalSupply\u00a0=\u00a0cash\u00a0+\u00a0borrows\u00a0-\u00a0reserves\\text{, \u0433\u0434\u0435:}\" alt=\"totalSupply\u00a0=\u00a0cash\u00a0+\u00a0borrows\u00a0-\u00a0reserves\\text{, \u0433\u0434\u0435:}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6ed\/189\/f1e\/6ed189f1e1400687f3e2a941dcbeab27.svg\" width=\"387\" height=\"21\"\/><\/p>\n<ul>\n<li>\n<p><strong>cash<\/strong>\u00a0&#8212; \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430. \u0421\u0443\u043c\u043c\u0430 \u0430\u043a\u0442\u0438\u0432\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>borrow<\/strong>\u00a0&#8212; \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u0432 \u0437\u0430\u0439\u043c\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>reserves<\/strong>\u00a0&#8212; \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u043a\u0442\u0438\u0432\u0430, \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u0431\u044b\u043b\u0438<\/p>\n<\/li>\n<\/ul>\n<blockquote>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440!<\/p>\n<p>Alice \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u043c \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430 750$<\/p>\n<p>Bob \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u043c \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430 300$<\/p>\n<p>Charlie \u0432\u0437\u044f\u043b \u0432 \u0437\u0430\u0435\u043c 150$<\/p>\n<p>\u0420\u0435\u0437\u0435\u0440\u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 10$<\/p>\n<p>\u0422\u043e\u0433\u0434\u0430\u00a0<strong>utilizationRate<\/strong>\u00a0\u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p><strong>cash<\/strong>\u00a0= 750 + 300 &#8212; 150 = 900 (\u043e\u0442\u043d\u0438\u043c\u0430\u0435\u043c 150, \u0442\u0430\u043a \u0442\u0430\u043a Charlie \u0443\u0436\u0435 \u0437\u0430\u043d\u044f\u043b \u044d\u0442\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0438 \u043e\u043d\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430)<\/p>\n<p><strong>borrows<\/strong>\u00a0= 150<\/p>\n<p><strong>reserves<\/strong>\u00a0= 10<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u00a0<strong>utilizationRate<\/strong>\u00a0=\u00a0<strong>totalBorrows<\/strong>\u00a0\/\u00a0<strong>cash<\/strong>\u00a0+\u00a0<strong>borrows<\/strong>\u00a0&#8212;\u00a0<strong>reserves<\/strong>\u00a0= 150 \/ (900 + 150 &#8212; 10) \u2248 0.144 \u2248 14.4%<\/p>\n<\/blockquote>\n<p><em>\u0412\u0430\u0436\u043d\u043e!<\/em>\u00a0UtilizationRate \u0440\u0430\u0432\u043d\u044b\u0439 14.4% \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e 14.4% \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0437\u0430\u0439\u043c\u043e\u0432. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0443\u044e \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c. \u0417\u0430\u0435\u043c\u0449\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0430\u043a\u0442\u0438\u0432\u044b.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/abd\/0c8\/e0c\/abd0c8e0c5a45bac1ac6dc899cc9c157.png\" width=\"769\" height=\"179\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/abd\/0c8\/e0c\/abd0c8e0c5a45bac1ac6dc899cc9c157.png\"\/><\/figure>\n<p><em>\u0417\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c!<\/em>\u00a0\u041f\u0440\u0438 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f &#8212; \u0441\u0442\u0430\u0432\u043a\u0438 \u043d\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0442\u0438 \u0434\u043b\u044f \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u041f\u0440\u0438 \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f &#8212; \u0441\u0442\u0430\u0432\u043a\u0438 \u043d\u0430 \u0437\u0430\u0435\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043d\u0438\u0436\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0435\u043c \u0431\u044b\u043b \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u043e\u0432.<\/p>\n<p>\u042f\u0437\u044b\u043a Solidity, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0434\u043b\u044f Ethereum \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u043d\u0435 \u0443\u043c\u0435\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0434\u0440\u043e\u0431\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u0445 \u044d\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0443\u043b\u0443 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 BASE.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"utilizationRate = \\frac{borrows * BASE}{cash + borrows - reserves}\" alt=\"utilizationRate = \\frac{borrows * BASE}{cash + borrows - reserves}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/121\/5b9\/f80\/1215b9f80e6d6153cbd70fa433944267.svg\" width=\"389\" height=\"44\"\/><\/p>\n<p>\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f\u00a0<strong>utilizationRate<\/strong>\u00a0off-chain \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c utilizationRate \u043d\u0430 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c BASE.<\/p>\n<h3>Kink<\/h3>\n<p><strong>\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u0435\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0438 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0442\u044c\u0441\u044f \u043a 100%?<\/strong>\u00a0\u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430 \u0438 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u043e. \u0422\u043e \u0435\u0441\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0432 \u0437\u0430\u0439\u043c\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0442\u044c\u0441\u044f \u043a \u043e\u0431\u0449\u0435\u043c\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u0415\u0441\u043b\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d 100%, \u0442\u043e \u044d\u0442\u043e \u043f\u043e \u0441\u0443\u0442\u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u041f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0439 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u0437\u0430\u0439\u043c\u043e\u0432, \u0430 \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0441\u0435 \u0430\u043a\u0442\u0438\u0432\u044b \u0443\u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0437\u0430\u0439\u043c\u0435, \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u044b \u043d\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0435\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u0437\u0430\u0439\u043c\u043e\u0432. \u0418 \u044d\u0442\u043e \u043d\u0435\u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. ?<\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u00a0<strong>kink<\/strong>. \u041e\u043d \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00a0<strong>utilizationRate<\/strong>\u00a0\u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0435 \u0441\u0442\u0430\u0432\u043a\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u0432 \u0438 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u043e\u0432.<\/p>\n<p>\u041f\u0440\u0438\u00a0<code>utilizationRate &lt; kink<\/code>\u00a0\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0435 \u0441\u0442\u0430\u0432\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e. \u041f\u0440\u0438\u00a0<code>utilizationRate > kink<\/code>\u00a0\u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0435 \u0441\u0442\u0430\u0432\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e. \u041a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0437\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u0417\u0430\u0435\u043c\u0449\u0438\u043a\u0430\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0434\u043e\u0440\u043e\u0436\u0435 \u0431\u0440\u0430\u0442\u044c \u043a\u0440\u0435\u0434\u0438\u0442\u044b.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2da\/3d5\/1f3\/2da3d51f333ccff20ba29fc6b18d4f85.png\" width=\"969\" height=\"200\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2da\/3d5\/1f3\/2da3d51f333ccff20ba29fc6b18d4f85.png\"\/><\/figure>\n<p>\u041f\u0435\u0440\u0435\u0433\u0438\u0431 \u043a\u0440\u0438\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0445 \u0441\u0442\u0430\u0432\u043e\u043a \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043d\u0435\u043c\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0431\u0435\u0437\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u043e\u0433\u043e \u0440\u043e\u0441\u0442\u0430 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043c\u0430\u043b\u043e\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u044b\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u044b\u0441\u043e\u043a\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0435 \u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u043b\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u0432 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u043f\u043e\u043d\u0438\u0436\u0430\u0435\u0442 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p><em>\u0412\u0430\u0436\u043d\u043e!<\/em>\u00a0\u0423\u0440\u043e\u0432\u0435\u043d\u044c kink \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 Compound \u0440\u0430\u0432\u0435\u043d 80%. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a utilizationRate > 80%, \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0435 \u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u0432 \u0438 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0440\u0435\u0437\u043a\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u0442\u044c. \u041c\u043e\u0436\u043d\u043e \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>kink()<\/code>\u00a0\u0432 etherscan \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u00a0<a href=\"https:\/\/etherscan.io\/address\/0xFB564da37B41b2F6B6EDcc3e56FbF523bD9F2012#readContract\"><u>JumpRateModelV2<\/u><\/a><u>.<\/u><\/p>\n<h4>Borrow rate \u0432 InterestRateModelV2<\/h4>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 interest borrow rate. \u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u043f\u0440\u043e kink \u0438 utilizationRate. \u041e\u0442\u0441\u044e\u0434\u0430 \u0434\u0435\u043b\u0430\u0435\u043c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0430\u0441\u0447\u0435\u0442\u0430:<\/p>\n<ol>\n<li>\n<p>\u041f\u0440\u0438 <code>utilizationRate &lt;= kink<\/code>. \u0424\u043e\u0440\u043c\u0443\u043b\u0430:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"borrowRate\u00a0= \\frac{utilizationRate * multiplierPerBlock}{BASE} + baseRatePerBlock\" alt=\"borrowRate\u00a0= \\frac{utilizationRate * multiplierPerBlock}{BASE} + baseRatePerBlock\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ac9\/b9d\/114\/ac9b9d11486cf547cf754ffffe43ce0d.svg\" width=\"630\" height=\"43\"\/><\/p>\n<ul>\n<li>\n<p><strong>baseRatePerBlock<\/strong>\u00a0&#8212; \u0411\u0430\u0437\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u0430\u044f \u0441\u0442\u0430\u0432\u043a\u0430, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u0442\u0430\u0432\u043a\u0443 \u043f\u0440\u0438 utilizationRate = 0%.<\/p>\n<\/li>\n<li>\n<p><strong>multiplierPerBlock<\/strong>\u00a0&#8212; \u041a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e\u0439 \u0441\u0442\u0430\u0432\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u0443\u0435\u0442 \u0435\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 utilizationRate. \u0422\u043e \u0435\u0441\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0430\u043a\u043b\u043e\u043d \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0440\u043e\u0441\u0442\u0430 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0445 \u0441\u0442\u0430\u0432\u043e\u043a \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e utilizationRate.\u00a0<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/40b\/b52\/815\/40bb52815a36138fe824153a08fb685a.png\" width=\"456\" height=\"191\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/40b\/b52\/815\/40bb52815a36138fe824153a08fb685a.png\"\/><\/figure>\n<\/li>\n<li>\n<p><strong>BASE<\/strong>\u00a0&#8212; \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 Solidity \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0440\u043e\u0431\u043d\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438.<\/p>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e\u0439 \u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u043d\u0438\u044f \u0443\u0440\u043e\u0432\u043d\u044f kink.  <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438 <code>utilizationRate > kink<\/code>. \u0424\u043e\u0440\u043c\u0443\u043b\u0430:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"borrowRate\u00a0= \\frac{excessUtil * jumpMultiplierPerBlock}{BASE} + normalRate\" alt=\"borrowRate\u00a0= \\frac{excessUtil * jumpMultiplierPerBlock}{BASE} + normalRate\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/122\/7b9\/714\/1227b97142705064b3dc9872536c5368.svg\" width=\"583\" height=\"43\"\/><\/p>\n<ul>\n<li>\n<p><code>normalRate\u00a0= (kink * multiplierPerBlock \/ BASE) + baseRatePerBlock<\/code>. \u041a\u0430\u043a \u043f\u0440\u0438 utilizationRate &lt;= kink<\/p>\n<\/li>\n<li>\n<p><code>excessUtil\u00a0= utilization rate - kink<\/code>. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u0438\u0435 utilizationRate \u0443\u0440\u043e\u0432\u043d\u044f kink.<\/p>\n<\/li>\n<li>\n<p><strong>jumpMultiplierPerBlock<\/strong>. \u0414\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0445 \u0441\u0442\u0430\u0432\u043e\u043a \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u043d\u0438\u044f \u0443\u0440\u043e\u0432\u043d\u044f kink  <\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>\u0412 \u043a\u043e\u0434\u0435\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/BaseJumpRateModelV2.sol#L96\"><u>BaseJumpRateModelV2<\/u><\/a>\u00a0\u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u0435\u0435:  <\/p>\n<pre><code class=\"javascript\">function getBorrowRateInternal(uint cash, uint borrows, uint reserves) internal view returns (uint) {     uint util = utilizationRate(cash, borrows, reserves);      if (util &lt;= kink) {         return ((util * multiplierPerBlock) \/ BASE) + baseRatePerBlock;     } else {         uint normalRate = ((kink * multiplierPerBlock) \/ BASE) + baseRatePerBlock;         uint excessUtil = util - kink;         return ((excessUtil * jumpMultiplierPerBlock) \/ BASE) + normalRate;     } }<\/code><\/pre>\n<h3>Redemption<\/h3>\n<p>\u0422\u044b, \u043a\u0430\u043a \u043c\u043e\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0443\u0436\u0435 \u0441\u043c\u0435\u043a\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439\u00a0<code>supply()<\/code>\u00a0&#8212; \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0438\u00a0<code>borrow()<\/code>\u00a0&#8212; \u0437\u0430\u0435\u043c \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u041d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u0445 \u0432\u044b\u0448\u0435 \u0442\u044b \u043c\u043e\u0436\u0435\u0448\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043a\u043e\u0432\u044b\u0440\u044f\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u0434\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 Compound.<\/p>\n<p>\u042f \u043f\u043e\u043c\u043e\u0433\u0443 \u0442\u0435\u0431\u0435 \u0432 \u044d\u0442\u043e\u043c \u0438 \u0443\u043a\u0430\u0436\u0443 \u0442\u043e\u0447\u043a\u0438 \u0432\u0445\u043e\u0434\u0430:<\/p>\n<ol>\n<li>\n<p>\u0412\u044b\u0432\u043e\u0434 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438. \u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol#L456C14-L456C28\"><u>cToken<\/u><\/a>, \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0<code>redeemInternal()<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0439\u043c\u0430. \u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol#L619C14-L619C33\"><u>cToken<\/u><\/a>, \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0<code>repayBorrowInternal()<\/code><\/p>\n<\/li>\n<\/ol>\n<h3>Liquidation<\/h3>\n<p>\u0421\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0439\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0442\u044c \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u0432 \u0441\u0438\u043b\u0443 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442. \u0422\u043e\u0433\u0434\u0430 \u0437\u0430\u0439\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u0434 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438.<\/p>\n<h4>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u0437\u0430\u0439\u043c\u0430<\/h4>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043d\u0435\u043f\u0440\u0438\u043a\u043e\u0441\u043d\u043e\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043b\u043e\u0433\u0430 \u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0437\u0430\u0439\u043c\u0430 \u0432 Compound \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u0449\u0430\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u043e\u0433\u0430 \u0438 \u043e\u0431\u0449\u0430\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u0435\u043c\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u0417\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0<code>getAccountLiquidity(address user)<\/code>\u00a0\u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/Comptroller.sol#L676\"><u>Comptroller<\/u><\/a>.<\/p>\n<p>\u0412 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c\u0441\u044f \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>getHypotheticalAccountLiquidityInternal()<\/code>, \u0433\u0434\u0435 \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430. \u042d\u0442\u043e \u0432\u0441\u0435 \u0435\u0449\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/Comptroller.sol#L723\"><u>Comptroller<\/u><\/a>.<\/p>\n<pre><code class=\"javascript\">function getHypotheticalAccountLiquidityInternal(     address account,     CToken cTokenModify,     uint redeemTokens,     uint borrowAmount ) internal view returns (Error, uint, uint) {     \/\/\/ \u0421\u044e\u0434\u0430 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f     AccountLiquidityLocalVars memory vars;      CToken[] memory assets = accountAssets[account];     \/\/\/ \u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0443\u0435\u043c \u0446\u0438\u043a\u043b \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0431\u043e\u0440\u0430 \u0432\u0441\u0435\u0445 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441 \u0430\u0434\u0440\u0435\u0441\u043e\u043c account     for (uint i = 0; i &lt; assets.length; i++) {         CToken asset = assets[i];          \/\/\/ \u041f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0430\u043a\u0442\u0438\u0432\u0443         (oErr, vars.cTokenBalance, vars.borrowBalance, vars.exchangeRateMantissa) = asset.getAccountSnapshot(account);         if (oErr != 0) {             return (Error.SNAPSHOT_ERROR, 0, 0);         }          \/\/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0443 \".\/ExponentialNoError.sol\"         vars.collateralFactor = Exp({mantissa: markets[address(asset)].collateralFactorMantissa});         vars.exchangeRate = Exp({mantissa: vars.exchangeRateMantissa});          \/\/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u0440\u0430\u0439\u0441 \u0438\u0437 \u043e\u0440\u0430\u043a\u0443\u043b\u0430 \u0434\u043b\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430         vars.oraclePriceMantissa = oracle.getUnderlyingPrice(asset);         if (vars.oraclePriceMantissa == 0) {             return (Error.PRICE_ERROR, 0, 0);         }         vars.oraclePrice = Exp({mantissa: vars.oraclePriceMantissa});          \/\/\/ \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0434\u043d\u043e\u0433\u043e cToken         vars.tokensToDenom = mul_(mul_(vars.collateralFactor, vars.exchangeRate), vars.oraclePrice);          \/\/\/ sumCollateral += tokensToDenom(\u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0434\u043d\u043e cToken) * cTokenBalance(\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e cToken \u0443 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430)         vars.sumCollateral = mul_ScalarTruncateAddUInt(vars.tokensToDenom, vars.cTokenBalance, vars.sumCollateral);          \/\/\/ sumBorrowPlusEffects += oraclePrice(\u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043e\u0440\u0430\u043a\u0443\u043b\u0443) * borrowBalance(\u0431\u0430\u043b\u0430\u043d\u0441 \u0437\u0430\u0435\u043c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432)         vars.sumBorrowPlusEffects = mul_ScalarTruncateAddUInt(vars.oraclePrice, vars.borrowBalance, vars.sumBorrowPlusEffects);          \/\/\/ \u0414\u043b\u044f \u0430\u043a\u0442\u0438\u0432\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0431\u0440\u0430\u043b \u0432 \u0437\u0430\u0439\u043c \u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f         if (asset == cTokenModify) {             \/\/ sumBorrowPlusEffects += tokensToDenom(\u043f\u0440\u0430\u0439\u0441 \u043e\u0434\u043d\u043e\u0433\u043e cToken) * redeemTokens(\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e cToken \u0434\u043b\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438)             vars.sumBorrowPlusEffects = mul_ScalarTruncateAddUInt(vars.tokensToDenom, redeemTokens, vars.sumBorrowPlusEffects);              \/\/ sumBorrowPlusEffects += oraclePrice(\u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0430) * borrowAmount (\u0441\u0443\u043c\u043c\u0430 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0432 \u0437\u0430\u0439\u043c\u0435)             vars.sumBorrowPlusEffects = mul_ScalarTruncateAddUInt(vars.oraclePrice, borrowAmount, vars.sumBorrowPlusEffects);         }     }      \/\/\/ \u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f     if (vars.sumCollateral > vars.sumBorrowPlusEffects) {         return (Error.NO_ERROR, vars.sumCollateral - vars.sumBorrowPlusEffects, 0);     } else {         return (Error.NO_ERROR, 0, vars.sumBorrowPlusEffects - vars.sumCollateral);     } }<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u043a\u0430\u043a \u043d\u0430 \u0441\u0445\u0435\u043c\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e73\/510\/f9d\/e73510f9d5270b87172bdc035abc62cb.png\" width=\"1044\" height=\"566\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e73\/510\/f9d\/e73510f9d5270b87172bdc035abc62cb.png\"\/><\/figure>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>getHypotheticalAccountLiquidityInternal()<\/code>\u00a0\u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0432 \u0446\u0438\u043a\u043b\u0435 \u0437\u0430\u043b\u043e\u0433\u043e\u0432\u0443\u044e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0433\u043e\u00a0<strong>market<\/strong>\u00a0\u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u0443\u043c\u043c\u0443 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:\u00a0<strong>cTokenBalance<\/strong>,\u00a0<strong>borrowBalance<\/strong>,\u00a0<strong>exchangeRate<\/strong>. \u042d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e borrow \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0414\u043b\u044f\u00a0<strong>collateralFactor<\/strong>\u00a0\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 collateral \u0430\u043a\u0442\u0438\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u043e\u0440\u0430\u043a\u0443\u043b.<\/p>\n<p>\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u043a\u0442\u0438\u0432\u0430, \u043a\u0443\u0440\u0441\u0430 \u043e\u0431\u043c\u0435\u043d\u0430 \u0441Tokens \u043d\u0430 \u0430\u043a\u0442\u0438\u0432 \u0438 collateralFactor \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0430 \u0437\u0430\u043b\u043e\u0433\u043e\u0432\u0430\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0434\u043d\u043e\u0433\u043e \u0441Token:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"tokensToDenom = collateralFactor * exchangeRate * oraclePrice\" alt=\"tokensToDenom = collateralFactor * exchangeRate * oraclePrice\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/67a\/c0b\/a77\/67ac0ba775753a7416041343830c5515.svg\" width=\"561\" height=\"20\"\/><\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u0443\u044e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u043e \u0432\u0441\u0435\u043c market.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"sumCollateral += tokensToDenom * cTokenBalance\" alt=\"sumCollateral += tokensToDenom * cTokenBalance\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a5b\/44d\/025\/a5b44d025c687ede9543053aca90b066.svg\" width=\"456\" height=\"18\"\/><\/p>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u0435\u043c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0432 market \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u043e\u0433\u043e \u0437\u0430\u0439\u043c\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 market:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula\" source=\"sumBorrowPlusEffects += oraclePrice * borrowBalance\" alt=\"sumBorrowPlusEffects += oraclePrice * borrowBalance\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a55\/b25\/e1c\/a55b25e1c13354e125f1408eed42684f.svg\" width=\"497\" height=\"20\"\/><\/p>\n<p>\u0421\u0445\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e market \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ca9\/e56\/128\/ca9e561287516afb0ab10e8ce88518c4.png\" width=\"966\" height=\"546\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ca9\/e56\/128\/ca9e561287516afb0ab10e8ce88518c4.png\"\/><\/figure>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043d\u0430 \u044d\u0442\u043e\u043c \u0446\u0438\u043a\u043b \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f. \u041f\u043e\u0441\u043b\u0435 \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u044b\u043d\u043a\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 sumCollateral \u0438 sumBorrowPlusEffects.<\/p>\n<blockquote>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f! \u0415\u0441\u043b\u0438\u00a0<code>sumCollateral > sumBorrowPlusEffects<\/code>, \u0442\u043e \u0437\u0430\u043b\u043e\u0433\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0439\u043c\u0430. \u0415\u0441\u043b\u0438\u00a0<code>sumCollateral &lt; sumBorrowPlusEffects<\/code>, \u0442\u043e \u0437\u0430\u043b\u043e\u0433\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0439\u043c\u0430. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0437\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u043b\u0435\u0436\u0430\u0442\u044c \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438.<\/p>\n<\/blockquote>\n<blockquote>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0437\u0430\u043b\u043e\u0433\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u043e\u0434\u043b\u0435\u0436\u0430\u0442 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 (\u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u0430\u043c\u0438). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043e\u043d\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043d\u0438\u043c\u0430\u0442\u044c \u0438\u043b\u0438 \u0431\u0440\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u044b, \u043f\u043e\u043a\u0430 \u0437\u0430\u043b\u043e\u0433\u0430 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0443 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f (\u0442.\u0435. \u0447\u0442\u043e\u0431\u044b somCollateral > sumBorrowPlusEffects).<\/p>\n<\/blockquote>\n<p><strong>\u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0441 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u043e\u0439 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f?<\/strong><\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u043f\u043e \u0437\u0430\u0435\u043c\u043d\u044b\u043c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u044e \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u043e\u0433\u0430 \u0440\u0435\u0437\u043a\u043e \u043f\u0430\u0434\u0430\u0435\u0442 \u0432\u043d\u0438\u0437 (\u0437\u0430\u043b\u043e\u0433 \u0434\u0435\u0448\u0435\u0432\u0435\u0435\u0442).<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u0440\u0435\u0437\u043a\u043e \u0432\u0437\u043b\u0435\u0442\u0430\u0435\u0442 \u0432\u0432\u0435\u0440\u0445 (\u0437\u0430\u0435\u043c \u0434\u043e\u0440\u043e\u0436\u0430\u0435\u0442 \u0438 \u0437\u0430\u043b\u043e\u0433\u0430 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442).<\/p>\n<\/li>\n<\/ul>\n<h4>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438<\/h4>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u044f \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430, \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0438\u043b\u0438 \u0432\u0435\u0441\u044c \u0437\u0430\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0412\u0437\u0430\u043c\u0435\u043d \u043e\u043d \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0447\u0430\u0441\u0442\u0438 \u0437\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u043c \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 0% \u0434\u043e 100% \u0437\u0430\u0439\u043c\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0433\u0430\u0448\u0435\u043d \u0437\u0430 \u043e\u0434\u043d\u0443 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f. \u0417\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f\u00a0<code>closeFactorMinMantissa<\/code>,\u00a0<code>closeFactorMaxMantissa<\/code>\u00a0\u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/Comptroller.sol#L81C28-L81C51\"><u>Comptroller<\/u><\/a>.<\/p>\n<ol>\n<li>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u0441 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>liquidateBorrow()<\/code>\u00a0\u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u0445\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CErc20.sol#L115C14-L115C29\"><u>CErc20.sol<\/u><\/a>\u00a0\u0438\u043b\u0438\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CErc20.sol#L115C14-L115C29\"><u>CEther.sol<\/u><\/a><\/p>\n<pre><code class=\"javascript\">    function liquidateBorrow(address borrower, CToken cTokenCollateral) external payable {         liquidateBorrowInternal(borrower, msg.value, cTokenCollateral);     }<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0432\u044b\u0437\u043e\u0432 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432\u043d\u0443\u0442\u0440\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>liquidateBorrowInternal()<\/code>\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol#L700C5-L711C6\"><u>CToken<\/u><\/a>.<\/p>\n<pre><code class=\"javascript\">function liquidateBorrowInternal(address borrower, uint repayAmount, CTokenInterface cTokenCollateral) internal nonReentrant {     \/\/\/ \u041d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u0437\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0440\u0430\u0441\u0447\u0435\u0442\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434     accrueInterest();      \/\/\/ \u0412\u044b\u0437\u043e\u0432 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438     liquidateBorrowFresh(msg.sender, borrower, repayAmount, cTokenCollateral); }<\/code><\/pre>\n<p>\u041f\u043e \u0441\u0443\u0442\u0438 \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0430\u044f \u043d\u0430\u043c \u0441\u0445\u0435\u043c\u0430 \u0438 \u043f\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 supplying \u0438 borrowing.<\/p>\n<\/li>\n<li>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u0432\u044b\u0437\u043e\u0432 \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0<code>liquidateBorrowFresh()<\/code>\u00a0\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol#L721\"><u>CToken<\/u><\/a>.  <\/p>\n<pre><code class=\"javascript\">function liquidateBorrowFresh(address liquidator, address borrower, uint repayAmount, CTokenInterface cTokenCollateral) internal {     \/\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u044e \u0443 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 Comptroller     uint allowed = comptroller.liquidateBorrowAllowed(address(this), address(cTokenCollateral), liquidator, borrower, repayAmount);     if (allowed != 0) {         revert LiquidateComptrollerRejection(allowed);     }      \/\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u0431\u044b\u043b\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0431\u043b\u043e\u043a\u0435     if (accrualBlockNumber != getBlockNumber()) {         revert LiquidateFreshnessCheck();     }      \/\/\/ \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0434\u043b\u044f \u043d\u0443\u0436\u043d\u043e\u0433\u043e CToken \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u0431\u044b\u043b\u043e \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u0431\u043b\u043e\u043a\u0435     if (cTokenCollateral.accrualBlockNumber() != getBlockNumber()) {         revert LiquidateCollateralFreshnessCheck();     }      \/\/\/ \u0417\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0443 \u043b\u0438\u043a\u0432\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u0435\u043c     if (borrower == liquidator) {         revert LiquidateLiquidatorIsBorrower();     }      \/\/\/ \u0421\u0443\u043c\u043c\u0430 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0443\u043b\u0435\u0432\u043e\u0439     if (repayAmount == 0) {         revert LiquidateCloseAmountIsZero();     }      \/\/\/ \u0421\u0443\u043c\u043c\u0430 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439, \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 uint     if (repayAmount == type(uint).max) {         revert LiquidateCloseAmountIsUintMax();     }      \/\/\/ \u0412\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0439\u043c\u0430     uint actualRepayAmount = repayBorrowFresh(liquidator, borrower, repayAmount);      \/\/\/ \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e cToken, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u0441 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u0430 \u0434\u043b\u044f \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0439\u043c\u0430     (uint amountSeizeError, uint seizeTokens) = comptroller.liquidateCalculateSeizeTokens(address(this), address(cTokenCollateral), actualRepayAmount);     require(amountSeizeError == NO_ERROR, \"LIQUIDATE_COMPTROLLER_CALCULATE_AMOUNT_SEIZE_FAILED\");      \/\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0443 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e cToken \u0434\u043b\u044f \u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432 \u0441\u0447\u0435\u0442 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u0437\u0430\u0439\u043c\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f     require(cTokenCollateral.balanceOf(borrower) >= seizeTokens, \"LIQUIDATE_SEIZE_TOO_MUCH\");      \/\/\/ \u0415\u0441\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 \u0438 \u0430\u0434\u0440\u0435\u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e cToken \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442, \u0442\u043e     \/\/\/ \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430 \u0438 \u043d\u0430\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u0435 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u0443     if (address(cTokenCollateral) == address(this)) {         seizeInternal(address(this), liquidator, borrower, seizeTokens);     } else {         require(cTokenCollateral.seize(liquidator, borrower, seizeTokens) == NO_ERROR, \"token seizure failed\");     }      emit LiquidateBorrow(liquidator, borrower, actualRepayAmount, address(cTokenCollateral), seizeTokens); }<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>\u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c 4 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0445\u043e\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f:  <\/p>\n<ol>\n<li>\n<p>\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u0437\u0430\u0439\u043c\u0430\u00a0<code>liquidateBorrowAllowed()<\/code>\u00a0\u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/Comptroller.sol#L473\"><u>Comptroller<\/u><\/a>.<\/p>\n<pre><code class=\"javascript\">function liquidateBorrowAllowed(     address cTokenBorrowed,     address cTokenCollateral,     address liquidator,     address borrower,     uint repayAmount ) override external returns (uint) {     liquidator;      \/\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0447\u0442\u043e \u0442\u043e\u043a\u0435\u043d\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 compound     if (!markets[cTokenBorrowed].isListed || !markets[cTokenCollateral].isListed) {         return uint(Error.MARKET_NOT_LISTED);     }      \/\/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u0443\u043c\u043c\u0443 \u0437\u0430\u0439\u043c\u0430 \u0434\u043b\u044f \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430     uint borrowBalance = CToken(cTokenBorrowed).borrowBalanceStored(borrower);      \/\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0447\u0442\u043e market \u0434\u043b\u044f cToken \u043d\u0435 \u0431\u044b\u043b \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d     if (isDeprecated(CToken(cTokenBorrowed))) {         require(borrowBalance >= repayAmount, \"Can not repay more than the total borrow\");     } else {         \/\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0434\u043b\u044f \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438         (Error err, , uint shortfall) = getAccountLiquidityInternal(borrower);         if (err != Error.NO_ERROR) {             return uint(err);         }          if (shortfall == 0) {             return uint(Error.INSUFFICIENT_SHORTFALL);         }          \/\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043a\u0440\u044b\u0442\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043d\u0430 \u0441\u0443\u043c\u043c\u0443 \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c         uint maxClose = mul_ScalarTruncate(Exp({mantissa: closeFactorMantissa}), borrowBalance);         if (repayAmount > maxClose) {             return uint(Error.TOO_MUCH_REPAY);         }     }     return uint(Error.NO_ERROR); }<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>repayBorrowFresh()<\/code>. \u041f\u043e \u0441\u0443\u0442\u0438 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0439\u043c\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442 \u0438\u043c\u0435\u043d\u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u0430. \u0422\u044b \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u043b \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0439\u043c\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u0415\u0441\u043b\u0438 \u0442\u044b \u044d\u0442\u043e\u0433\u043e \u0435\u0449\u0435 \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043b \u0438\u043b\u0438 \u043f\u043e\u0434\u0437\u0430\u0431\u044b\u043b, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol#L643C14-L643C30\"><u>cToken<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>liquidateCalculateSeizeTokens()<\/code>\u00a0\u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/Comptroller.sol#L789\"><u>cToken<\/u><\/a>.  <\/p>\n<pre><code class=\"javascript\">function liquidateCalculateSeizeTokens(address cTokenBorrowed, address cTokenCollateral, uint actualRepayAmount) override external view returns (uint, uint) {     \/\/\/ \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0445 \u0438 \u0437\u0430\u0435\u043c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0438\u0437 \u043e\u0440\u0430\u043a\u0443\u043b\u0430     uint priceBorrowedMantissa = oracle.getUnderlyingPrice(CToken(cTokenBorrowed));     uint priceCollateralMantissa = oracle.getUnderlyingPrice(CToken(cTokenCollateral));     if (priceBorrowedMantissa == 0 || priceCollateralMantissa == 0) {         return (uint(Error.PRICE_ERROR), 0);     }      \/\/\/ \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 exchangeRate \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 CToken     uint exchangeRateMantissa = CToken(cTokenCollateral).exchangeRateStored(); \/\/ Note: reverts on error     uint seizeTokens;     Exp memory numerator;     Exp memory denominator;     Exp memory ratio;      \/\/\/ \u0420\u0430\u0441\u0447\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u043b\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u043a\u0432\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043e     numerator = mul_(Exp({mantissa: liquidationIncentiveMantissa}), Exp({mantissa: priceBorrowedMantissa}));     denominator = mul_(Exp({mantissa: priceCollateralMantissa}), Exp({mantissa: exchangeRateMantissa}));     ratio = div_(numerator, denominator);      seizeTokens = mul_ScalarTruncate(ratio, actualRepayAmount);      return (uint(Error.NO_ERROR), seizeTokens); }<\/code><\/pre>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>seizeInternal()<\/code>\u00a0\u0434\u043b\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 cToken \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438 \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u0430.  <\/p>\n<pre><code class=\"javascript\">function seizeInternal(address seizerToken, address liquidator, address borrower, uint seizeTokens) internal {     \/\/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0435 Comptroller     uint allowed = comptroller.seizeAllowed(address(this), seizerToken, liquidator, borrower, seizeTokens);     if (allowed != 0) {         revert LiquidateSeizeComptrollerRejection(allowed);     }      \/\/\/ \u0417\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0443 \u043b\u0438\u043a\u0432\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0437\u0430\u0435\u043c     if (borrower == liquidator) {         revert LiquidateSeizeLiquidatorIsBorrower();     }      \/*      * \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0435 \u0431\u0430\u043b\u0430\u043d\u0441\u044b \u0434\u043b\u044f \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430 \u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u0430      *  borrowerTokensNew = accountTokens[borrower] - seizeTokens      *  liquidatorTokensNew = accountTokens[liquidator] + seizeTokens      *\/     uint protocolSeizeTokens = mul_(seizeTokens, Exp({mantissa: protocolSeizeShareMantissa}));     uint liquidatorSeizeTokens = seizeTokens - protocolSeizeTokens;     Exp memory exchangeRate = Exp({mantissa: exchangeRateStoredInternal()});     uint protocolSeizeAmount = mul_ScalarTruncate(exchangeRate, protocolSeizeTokens);     uint totalReservesNew = totalReserves + protocolSeizeAmount;      \/\/\/ \u041d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u043e\u0432 cToken \u0434\u043b\u044f \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430 \u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u0430     totalReserves = totalReservesNew;     totalSupply = totalSupply - protocolSeizeTokens;     accountTokens[borrower] = accountTokens[borrower] - seizeTokens;     accountTokens[liquidator] = accountTokens[liquidator] + liquidatorSeizeTokens;      emit Transfer(borrower, liquidator, liquidatorSeizeTokens);     emit Transfer(borrower, address(this), protocolSeizeTokens);     emit ReservesAdded(address(this), protocolSeizeAmount, totalReservesNew); }<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>\u0421\u0445\u0435\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0432\u044b\u0437\u043e\u0432\u0430 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0432\u044b\u0448\u0435, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.  <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ec7\/227\/001\/ec72270011d1baa8ec31b6e492210b7e.png\" width=\"1009\" height=\"333\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ec7\/227\/001\/ec72270011d1baa8ec31b6e492210b7e.png\"\/><\/figure>\n<h4>Cascading liquidations<\/h4>\n<p><em>\u041e\u043f\u0440!<\/em>\u00a0\u041a\u0430\u0441\u043a\u0430\u0434\u043d\u044b\u0435 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u043b\u043e\u0433\u0430 \u0440\u0435\u0437\u043a\u043e \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e \u043f\u0430\u0434\u0430\u0435\u0442, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u043c. \u041b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u044b \u0447\u0435\u0441\u0442\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0441\u0432\u043e\u044e \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u0437\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0440\u0430\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u043a\u043e\u0440\u0435\u0435 \u043e\u0442 \u043d\u0435\u0433\u043e &#171;\u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f&#187; (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,\u043f\u0440\u043e\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u0435\u0449\u0435 \u0432\u044b\u0433\u043e\u0434\u043d\u043e), \u0447\u0442\u043e \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u043e\u043d\u044f\u0435\u0442 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0430 \u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0439 \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u0446\u0435\u043f\u043d\u0443\u044e \u0440\u0435\u0430\u043a\u0446\u0438\u044e. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0435\u0442\u0430 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u043b\u043e\u0433\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0440\u0430\u043a\u0443\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0440\u044b\u043d\u043e\u0447\u043d\u0443\u044e \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0430.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/408\/1ef\/77a\/4081ef77a44a3b7708a66a2446549bc9.png\" width=\"1884\" height=\"982\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/408\/1ef\/77a\/4081ef77a44a3b7708a66a2446549bc9.png\"\/><\/figure>\n<p>\u0412 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 Compound \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0435\u0440\u044b \u0434\u043b\u044f \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0440\u0438\u0441\u043a\u0430 \u043a\u0430\u0441\u043a\u0430\u0434\u043d\u044b\u0445 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0439:<\/p>\n<ol>\n<li>\n<p><strong>\u041e\u0446\u0435\u043d\u043a\u0430 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f<\/strong>. Compound \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0435 \u0446\u0435\u043d\u043e\u0432\u044b\u0435 \u043e\u0440\u0430\u043a\u0443\u043b\u044b \u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0447\u0430\u0441\u0442\u044b\u0435 \u043f\u0435\u0440\u0435\u043e\u0446\u0435\u043d\u043a\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u043e\u0433\u0430 \u0438 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u0438\u043b\u0438 \u043f\u0440\u0435\u0436\u0434\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044e<\/strong>. \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0432\u0435\u0440\u0445 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u0437\u0430\u0439\u043c\u0430. \u042d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0435\u0442 &#171;\u0431\u0443\u0444\u0435\u0440&#187; \u0434\u043b\u044f \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u0439 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u043a\u0442\u0438\u0432\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>. \u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043b\u0438\u043c\u0438\u0442\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e\u0435 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0445 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0439.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0433\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0446\u0435\u043d<\/strong>. \u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0440\u043e\u0447\u043d\u044b\u0435 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u044f \u0440\u044b\u043d\u043e\u0447\u043d\u044b\u0445 \u0446\u0435\u043d, Compound \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0443\u0441\u0440\u0435\u0434\u043d\u0435\u043d\u043d\u044b\u0435 \u0438\u043b\u0438 \u0441\u0433\u043b\u0430\u0436\u0435\u043d\u043d\u044b\u0435 \u0446\u0435\u043d\u044b \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u043b\u043e\u0433\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/strong>. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0443 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u043c\u0435\u0448\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043a\u0430\u0441\u043a\u0430\u0434\u043d\u044b\u0435 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u044f \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c<\/strong>. Compound \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043e \u0441\u0432\u043e\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0444\u043e\u0440\u0443\u043c\u044b \u0438 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0442\u0438. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043e \u0440\u044b\u043d\u043e\u0447\u043d\u044b\u0445 \u0440\u0438\u0441\u043a\u0430\u0445, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u043c\u0438.<\/p>\n<\/li>\n<\/ol>\n<p>\u042d\u0442\u0438 \u043c\u0435\u0440\u044b, \u0432 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0440\u0438\u0441\u043a\u0438 \u043a\u0430\u0441\u043a\u0430\u0434\u043d\u044b\u0445 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0439, \u043d\u043e \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u0441\u0445\u043e\u0434. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430\u043c \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u044b\u0442\u044c \u043e\u0441\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043e \u0440\u0438\u0441\u043a\u0430\u0445 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u043c\u0438 \u0432 \u0437\u0430\u0439\u043c\u0430\u0445 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<h3>\u0412\u044b\u0432\u043e\u0434<\/h3>\n<p>\u041d\u0430 \u044d\u0442\u043e\u0439 \u0445\u043e\u0440\u043e\u0448\u0435\u0439 \u043d\u043e\u0442\u0435 \u0441\u0442\u043e\u0438\u0442 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f. \u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b \u0432\u0441\u0435 \u0441\u0430\u043c\u044b\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u041e\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0434\u043e \u0437\u0430\u0439\u043c\u0430 \u0438 \u043e\u0442 \u0440\u0430\u0441\u0447\u0435\u0442\u043e\u0432 \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u0434\u043e \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0439. \u041d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b Compound \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b \u0442\u0440\u0435\u0442\u044c\u044e \u0432\u0435\u0440\u0441\u0438\u044e. \u0412 \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u0435 &#171;<strong>Comet<\/strong>&#187; \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, \u043d\u043e \u044d\u0442\u043e \u0443\u0436\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f!<\/p>\n<p>\u0421\u043f\u0430\u0441\u0438\u0431\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0441\u0442\u0430\u0442\u044c\u044e \u0434\u043e \u043a\u043e\u043d\u0446\u0430! \u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u0432\u0430\u0448\u0435\u0439 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445:)   <\/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\/811373\/\"> https:\/\/habr.com\/ru\/articles\/811373\/<\/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><strong>Lending \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b<\/strong>\u00a0\u0438\u043b\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f. \u042d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b \u0432 \u0441\u0444\u0435\u0440\u0435 DeFi \u043f\u043e\u0441\u043b\u0435 DEX (Decentralized exchange). Lending \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0431\u0440\u0430\u0442\u044c \u0432 \u0437\u0430\u0439\u043c\u044b \u0430\u043a\u0442\u0438\u0432\u044b.  <\/p>\n<p>\u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, lending \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u043e\u043c \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u043e\u0442\u043e\u0432\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0430\u043a\u0442\u0438\u0432\u044b \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430. \u042d\u0442\u0430 \u0430\u043a\u0442\u0438\u0432\u044b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430\u043c . \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0430\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0440\u043e\u043b\u0438 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430 \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u043e\u043c \u0438 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u043c. \u041e\u043d \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0447\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0434\u0435\u043b\u043a\u0438 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b, \u0430 \u0437\u0430\u0451\u043c\u0449\u0438\u043a\u0443 \u0432\u044b\u0434\u0430\u0442\u044c \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0435 \u0430\u043a\u0442\u0438\u0432\u044b. \u0414\u043b\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u0432 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0434\u0430 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u043c \u0434\u043e\u0445\u043e\u0434\u043e\u043c.  <\/p>\n<p><strong>\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u043d\u043e\u0433\u043e \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f?<\/strong>\u00a0\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b DeFi, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0<a href=\"https:\/\/makerdao.com\/\"><u>MakerDAO<\/u><\/a>, \u043d\u0430\u0445\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0435\u0449\u0435 \u0432 2014 \u0433\u043e\u0434\u0443. \u0412 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u0435 2018 \u0433\u043e\u0434\u0430\u00a0<a href=\"https:\/\/compound.finance\/\"><u>Compound Labs<\/u><\/a>\u00a0\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u043b \u0431\u0440\u0430\u0442\u044c \u0432 \u0437\u0430\u0439\u043c\u044b \u043f\u044f\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043e\u0432: ETH, TUSD, ZRX, BAT \u0438 REP. \u0412 2020 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043a\u0430 \u0440\u0435\u0437\u043a\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u0437-\u0437\u0430 \u043f\u0430\u043d\u0434\u0435\u043c\u0438\u0438. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0445 \u0441\u0442\u0430\u0432\u043e\u043a \u0438 \u0440\u0435\u0437\u043a\u043e\u043c\u0443 \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044e \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u0442\u0438\u0442\u0443\u0442\u0430\u0445. \u0412 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0441\u0442\u0438\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u044b\u043d\u043a\u0430 Compound \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b \u0442\u043e\u043a\u0435\u043d\u00a0<strong>COMP<\/strong>. \u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u043d\u0430\u0447\u0430\u043b\u043e \u0432\u0437\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0440\u043e\u0441\u0442\u0430 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 \u044d\u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u00a0<a href=\"https:\/\/aave.com\/\"><u>Aave<\/u><\/a>.  <\/p>\n<h3>\u0422\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044f<\/h3>\n<p><strong>Borrower<\/strong>\u00a0&#8212; \u0437\u0430\u0435\u043c\u0449\u0438\u043a.<\/p>\n<p><strong>Lender<\/strong>\u00a0&#8212; \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440.<\/p>\n<p><strong>Loan (\u0437\u0430\u0439\u043c)<\/strong>\u00a0&#8212; \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u043e\u043b\u0433 \u0438\u043b\u0438 \u0441\u0443\u043c\u043c\u0430 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432. \u041e\u0431\u044b\u0447\u043d\u043e\u00a0<strong>\u0437\u0430\u0435\u043c\u0449\u0438\u043a<\/strong>\u00a0\u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u043e\u043b\u0433 + \u0432\u044b\u043f\u043b\u0430\u0442\u0438\u0442\u044c \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u044e \u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432.<\/p>\n<p><strong>Interest (\u043f\u0440\u043e\u0446\u0435\u043d\u0442)<\/strong>\u00a0&#8212; \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u00a0<strong>lending \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443<\/strong>\u00a0\u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0435\u043c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0438\u043b\u0438 \u043d\u0430\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u0443 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0432\u0448\u0435\u043c\u0443 \u0441\u0432\u043e\u0438 \u0430\u043a\u0442\u0438\u0432\u044b \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430.<\/p>\n<p><strong>Collateral (\u0437\u0430\u043b\u043e\u0433)<\/strong>\u00a0&#8212; \u044d\u0442\u043e \u0430\u043a\u0442\u0438\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439\u00a0<strong>\u0437\u0430\u0435\u043c\u0449\u0438\u043a<\/strong>\u00a0\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u043b\u044f\u00a0<strong>\u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u0430<\/strong>\u00a0\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0438 \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u043e\u043b\u0433. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442,\u00a0<strong>\u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440<\/strong>\u00a0\u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0441\u043a\u043e\u0432\u0430\u0442\u044c \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c\u00a0<strong>\u0437\u0430\u043b\u043e\u0433<\/strong>. <strong>\u041a\u0440\u0435\u0434\u0438\u0442\u043e\u0440<\/strong>\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u00a0<strong>\u0437\u0430\u043b\u043e\u0433<\/strong>\u00a0\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u0440\u0438\u0441\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e\u00a0<strong>\u0437\u0430\u0435\u043c\u0449\u0438\u043a<\/strong>\u00a0\u043f\u043e\u0433\u0430\u0441\u0438\u0442 \u0437\u0430\u0435\u043c.<\/p>\n<p><strong>Liquidation (\u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u044f)<\/strong>\u00a0&#8212; \u044d\u0442\u043e &#171;\u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438&#187; \u0438\u043b\u0438 \u043f\u0440\u043e\u0434\u0430\u0436\u0430\u00a0<strong>\u0437\u0430\u043b\u043e\u0433\u0430<\/strong>\u00a0\u0434\u043b\u044f \u0432\u044b\u043f\u043b\u0430\u0442\u044b \u043a\u0440\u0435\u0434\u0438\u0442\u0430. \u0415\u0441\u043b\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c\u00a0<strong>\u0437\u0430\u043b\u043e\u0433\u0430<\/strong>\u00a0\u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u0430\u0434\u0430\u0435\u0442 \u043d\u0438\u0436\u0435 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0435\u0441\u043b\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u0440\u0435\u0434\u0438\u0442\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0442\u043e \u0437\u0430\u043b\u043e\u0433 \u0431\u0443\u0434\u0435\u0442 \u00ab\u043b\u0438\u043a\u0432\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u00bb, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043f\u043e\u043d\u0435\u0441\u0442\u0438 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u043e\u0442\u0435\u0440\u0438.<\/p>\n<h3>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b<\/h3>\n<p>\u041a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0442\u043e\u0439 \u0437\u0430\u0439\u043c\u0430 \u0438 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0438\u043c\u0435\u044e\u0442 \u0433\u0438\u0431\u043a\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432, \u0446\u0435\u043b\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u0433\u043e\u0434\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445: \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430, \u0437\u0430\u0451\u043c\u0449\u0438\u043a\u0430 \u0438 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u0430.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p><strong>\u041a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u0435<\/strong>. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0432\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u044b\u0439 \u043f\u0443\u043b (\u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442). \u0412\u0437\u0430\u043c\u0435\u043d \u043e\u043d\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442 LP \u0442\u043e\u043a\u0435\u043d\u044b (\u0442\u043e\u043a\u0435\u043d\u044b \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u0443\u043b\u0430), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u0445 \u0434\u043e\u043b\u044e \u0432 \u043e\u0431\u0449\u0435\u0439 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u0438 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u0443\u043b\u0430. \u041e\u0431\u044b\u0447\u043d\u043e \u0441\u0432\u043e\u0438 \u0430\u043a\u0442\u0438\u0432\u044b \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0441 \u043d\u0430\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u043c\u0438.<\/p>\n<p><strong>\u0417\u0430\u0435\u043c<\/strong>. \u0418\u0437-\u0437\u0430 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0432 DeFi, \u0437\u0430\u0435\u043c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0441\u0432\u0435\u0440\u0445-\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u044f \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u043f\u043e\u0442\u0435\u0440\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0435\u043c\u0449\u0438\u043a \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043b\u0430\u0442\u0438\u0442\u044c \u043a\u0440\u0435\u0434\u0438\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u043d\u0435\u0441\u0442\u0438 \u0437\u0430\u043b\u043e\u0433, \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u043a\u0440\u0435\u0434\u0438\u0442\u0430. \u0418 \u0442\u043e\u0433\u0434\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u043e\u0433\u0430 \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0437\u0430\u0439\u043c\u0443 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043f\u0430\u0434\u0435\u0442, \u0442\u043e \u0437\u0430\u043b\u043e\u0433\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0434\u043e\u043b\u0433\u0430. \u0417\u0430\u0435\u043c\u0449\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u043e\u043b\u0433 + \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0439\u043c\u0430 \u0432 \u043b\u044e\u0431\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0438 \u0437\u0430\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u043b\u043e\u0433.<\/p>\n<p><em>\u0412\u0430\u0436\u043d\u043e!<\/em>\u00a0\u041f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u044b\u0435 \u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u043b\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u0439\u043c\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u0431\u0449\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0432 \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u043e\u043c \u043f\u0443\u043b\u0435 \u0438 \u043e\u0431\u0449\u0435\u0439 \u0441\u0443\u043c\u043c\u044b \u0437\u0430\u0439\u043c\u043e\u0432. \u0421\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u043a \u0437\u0430\u0439\u043c\u0430\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u00a0<strong>\u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>\u00a0(\u0433\u0434\u0435-\u0442\u043e \u044d\u0442\u043e\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0430\u0447\u0435, \u043d\u043e \u0441\u0443\u0442\u044c \u0435\u0433\u043e \u043e\u0434\u043d\u0430). \u0415\u0441\u043b\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442, \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u0430\u044f \u0441\u0442\u0430\u0432\u043a\u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u0440\u0438\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0432 \u0438 \u0441\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u043e\u0432, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c.<\/p>\n<p><strong>\u041b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u044f<\/strong>. \u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u043e\u0433\u0430 \u043c\u043e\u0436\u0435\u0442 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u0441\u044f \u0438\u043b\u0438 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0432 \u0437\u0430\u0439\u043c\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0440\u0430\u0441\u0442\u0438 \u0438 \u0442\u043e\u0433\u0434\u0430 \u0437\u0430\u043b\u043e\u0433\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0439\u043c\u0430. \u0415\u0441\u043b\u0438 \u0437\u0430\u0435\u043c\u0449\u0438\u043a \u043d\u0435 \u043f\u043e\u0433\u0430\u0441\u0438\u0442 \u0434\u043e\u043b\u0433, \u0442\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u043a\u0432\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043d. \u0417\u0430\u0435\u043c\u0449\u0438\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0437\u0430\u043b\u043e\u0433\u0430 \u043d\u0435 \u043f\u0430\u0434\u0430\u043b\u0430 \u043d\u0438\u0436\u0435 \u043f\u043e\u0440\u043e\u0433\u0430 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442, \u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 &#8212;\u00a0<strong>\u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u044b<\/strong>\u00a0\u043c\u043e\u0433\u0443\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043b\u0438\u043a\u0432\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043b\u043e\u0433 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430 \u0434\u043b\u044f \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0437\u0430\u0439\u043c\u0430.<\/p>\n<p><em>\u0412\u0430\u0436\u043d\u043e!<\/em>\u00a0\u041f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0443\u0442\u0435\u043c \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0437\u0430\u043b\u043e\u0433\u0430 \u0438\u043b\u0438 \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u043b\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e.<\/p>\n<p>\u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043d\u0430 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u044e \u0441\u043c\u043e\u0442\u0440\u044f\u0442 \u0432 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u043a\u043b\u044e\u0447\u0435 \u0438 \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0435 \u043c\u043d\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0431\u044b \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b, \u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u043a\u0443 \u0438 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u0432. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0431\u0430\u043b\u0430\u043d\u0441 \u0441\u0438\u043b \u0432 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0435 lending \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e \u0432\u0430\u0436\u043d\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c.<\/p>\n<h2>Compound V2<\/h2>\n<p><strong>Compound<\/strong>\u00a0&#8212; \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u0435\u0440\u0432\u044b\u0445 lending \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 \u0432 DeFi. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0437\u0430\u0438\u043c\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0435\u0437 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430 \u0432 \u0432\u0438\u0434\u0435 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0440\u0433\u0430\u043d\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u0430\u043d\u043a). Compound \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u043e\u0432 \u0438 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0433\u0440\u0443\u043f\u043f\u0443 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0432 EVM \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0445 \u0441\u0435\u0442\u044f\u0445. \u0412\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043b\u0430\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u0435.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0432\u0438\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:<\/p>\n<ul>\n<li>\n<p><strong>\u041a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u044b (Lenders)<\/strong>\u00a0\u2014 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0430\u043a\u0442\u0438\u0432\u044b \u043d\u0430 Compound. \u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0430\u043a\u0442\u0438\u0432\u044b \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f Compound. \u0421\u0442\u0438\u043c\u0443\u043b\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043d\u0430\u0433\u0440\u0430\u0436\u0434\u0435\u043d\u0438\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432.<\/p>\n<\/li>\n<li>\n<p><strong>\u0417\u0430\u0435\u043c\u0449\u0438\u043a\u0438 (Borrowers)<\/strong>\u00a0\u2014 \u0431\u0435\u0440\u0443\u0442 \u0432 \u0437\u0430\u0439\u043c\u044b \u0430\u043a\u0442\u0438\u0432\u044b, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0435 \u0434\u043b\u044f Compound \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0440\u0430\u043c\u0438. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0437\u0430\u043b\u043e\u0433 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u0437\u044f\u0442\u044c \u0437\u0430\u0439\u043c. \u0412 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0437\u0430\u0439\u043c\u0430 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u043d\u0442 \u0437\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0435\u043c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432.<\/p>\n<\/li>\n<\/ul>\n<p><em>\u0412\u0430\u0436\u043d\u043e!<\/em>\u00a0\u0414\u0430\u043b\u044c\u0448\u0435 \u044f \u0431\u0443\u0434\u0443 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043f\u0440\u043e\u00a0<strong>\u0432\u0442\u043e\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e<\/strong>\u00a0Compound!<\/p>\n<h3>\u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b<\/h3>\n<p>\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0432\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol\"><u>\u0421Token.sol<\/u><\/a>. \u041e\u043b\u0438\u0446\u0435\u0442\u0432\u043e\u0440\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b Compound. \u0422\u0430\u043a\u043e\u0439 \u0430\u043a\u0442\u0438\u0432 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 cToken \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f\u00a0<strong>underlying<\/strong>\u00a0(\u0431\u0430\u0437\u043e\u0432\u044b\u043c).<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/Comptroller.sol\"><u>Comptroller.sol<\/u><\/a>. \u0412\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u0440\u043e\u043b\u0438 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u043a\u0430\u043c\u0438, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0437\u0430\u0439\u043c\u0430, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u00a0<strong>CToken<\/strong>.<\/p>\n<figure class=\"full-width\"><\/figure>\n<h4>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e cToken<\/h4>\n<p>\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0432\u0430 \u0442\u0438\u043f\u0430 cToken:<\/p>\n<ol>\n<li>\n<p><strong>CErc20<\/strong>. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u043e\u0439 \u0434\u043b\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 ERC-20.<\/p>\n<\/li>\n<li>\n<p><strong>CEther<\/strong>. \u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u0435\u0440\u0442\u043a\u043e\u0439 \u0434\u043b\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0432\u0430\u043b\u044e\u0442\u044b ETH.<\/p>\n<\/li>\n<\/ol>\n<p>\u041a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CErc20.sol\"><u>CErc20<\/u><\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CEther.sol\"><u>CEther<\/u><\/a>\u00a0\u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u00a0<strong>CToken<\/strong>\u00a0\u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 ERC-20 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0438 \u0441 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0432\u0430\u043b\u044e\u0442\u043e\u0439 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u0414\u043b\u044f \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0432\u0430\u043b\u044e\u0442\u044b CToken \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f\u00a0<strong>\u0441ETH<\/strong>, \u0434\u043b\u044f USDT &#8212;\u00a0<strong>cUSDT<\/strong>\u00a0\u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u00a0<strong>cToken<\/strong>\u00a0\u2014 \u044d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u0443\u0442\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 Compound \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c. \u0414\u043b\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 (\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043b\u0438\u043a\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0438 \u0438\u043b\u0438 \u0437\u0430\u0439\u043c \u0430\u043a\u0442\u0438\u0432\u0430) \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u044d\u0442\u0438\u043c \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u043c. \u0412 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0432\u044b\u0434\u0430\u0435\u0442\u0441\u044f \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442 \u0441\u0430\u043c\u043e\u0433\u043e\u00a0<strong>cToken<\/strong>\u00a0\u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. \u041a\u0430\u0436\u0434\u044b\u0439\u00a0<strong>cToken<\/strong>\u00a0\u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u0435\u0437 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u0412 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438\u00a0<strong>cToken<\/strong>\u00a0\u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u043a\u0442\u0438\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0414\u043b\u044f \u0443\u0447\u0435\u0442\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0432\u0432\u043e\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435:<\/p>\n<ul>\n<li>\n<p>totalBorrows (\u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0432 \u0437\u0430\u0439\u043c\u0435),<\/p>\n<\/li>\n<li>\n<p>totalReserves (\u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430),<\/p>\n<\/li>\n<li>\n<p>initialExchangeRate (\u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0443\u0440\u0441 \u043e\u0431\u043c\u0435\u043d\u0430 cToken \u043d\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e) \u0438 \u0434\u0440\u0443\u0433\u0438\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 Storage \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 cToken \u043c\u043e\u0436\u043d\u043e \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CTokenInterfaces.sol\"><u>\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/u><\/a>. \u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b:\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CTokenInterfaces.sol#L9C10-L9C23\"><u>CTokenStorage<\/u><\/a>,\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CTokenInterfaces.sol#L233\"><u>CErc20Storage<\/u><\/a>.<\/p>\n<p>\u0414\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CToken.sol\"><u>cToken<\/u><\/a>. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430\u0445\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CErc20.sol\"><u>CErc20<\/u><\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CEther.sol\"><u>CEther<\/u><\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b cToken \u0438\u043b\u0438 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u044b \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430\u0445\u00a0<a href=\"https:\/\/github.com\/compound-finance\/compound-protocol\/blob\/master\/contracts\/CTokenInterfaces.sol\"><u>CTokenInterfaces<\/u><\/a>.<\/p>\n<ul>\n<li>\n<p><code>mint()<\/code>\u00a0&#8212; \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432 \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b. \u0412 \u043e\u0431\u043c\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u00a0<strong>cToken<\/strong>\u00a0\u0440\u0430\u0432\u043d\u043e\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u043c\u0443 \u0442\u043e\u043a\u0435\u043d\u0443 \u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0430 exchangeRate (\u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043e\u0431\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u0443\u0440\u0441). \u041d\u0430 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u043d\u0442.<\/p>\n<\/li>\n<li>\n<p><code>redeem()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f. \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u00a0<strong>cToken<\/strong>\u00a0\u0432 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0430\u043a\u0442\u0438\u0432 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.<\/p>\n<\/li>\n<li>\n<p><code>redeemUnderlying()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f. \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u00a0<strong>cToken<\/strong>\u00a0\u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.<\/p>\n<\/li>\n<li>\n<p><code>borrow()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u0439\u043c\u0430 \u0430\u043a\u0442\u0438\u0432\u0430. \u041f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0430\u043a\u0442\u0438\u0432 \u0438\u0437 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u044b \u0434\u043e\u043b\u0433\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e\u0439 \u0441\u0442\u0430\u0432\u043a\u0438 \u0430\u043a\u0442\u0438\u0432\u0430. \u0422\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043b\u043e\u0433\u0430, \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0<code>mint()<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>repayBorrow()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0439\u043c\u0430. \u041f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0430\u043a\u0442\u0438\u0432 \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0434\u043e\u043b\u0433 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p><code>repayBorrowBehalf()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0433\u0430\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0439\u043c\u0430. \u041f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0430\u043a\u0442\u0438\u0432 \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0434\u043e\u043b\u0433 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u0433\u0430\u0441\u0438\u0442\u044c \u0434\u043e\u043b\u0433 \u0437\u0430 \u043c\u0435\u0441\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430.<\/p>\n<\/li>\n<li>\n<p><code>liquidateBorrow()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0446\u0438\u0438 \u043d\u0435\u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u0439\u043c\u0430. \u041d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0441\u0430\u043c\u0438\u043c \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430\u043c, \u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438 (\u043b\u0438\u043a\u0432\u0438\u0434\u0430\u0442\u043e\u0440\u0430\u043c\u0438) \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430.<\/p>\n<\/li>\n<li>\n<p><code>getCashPrior()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430\u00a0<strong>cToken<\/strong>.<\/p>\n<\/li>\n<li>\n<p><code>totalBorrows()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0443\u043c\u043c\u044b \u043d\u0435\u043f\u043e\u0433\u0430\u0448\u0435\u043d\u043d\u044b\u0445 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0440\u044b\u043d\u043a\u043e\u043c \u0432 \u0437\u0430\u0439\u043c\u044b \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<\/li>\n<li>\n<p><code>borrowBalanceCurrent()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0443\u043c\u043c\u044b \u043d\u0435\u043f\u043e\u0433\u0430\u0448\u0435\u043d\u043d\u044b\u0445 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<\/li>\n<li>\n<p><code>balanceOf()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0430\u00a0<strong>cToken<\/strong>\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0432\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u044b \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b.<\/p>\n<\/li>\n<li>\n<p><code>balanceOfUnderlying()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u0432\u043b\u043e\u0436\u0435\u043d \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b. \u0420\u0430\u0432\u0435\u043d \u0431\u0430\u043b\u0430\u043d\u0441\u0443\u00a0<strong>cToken<\/strong>\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u043d\u043e\u043c\u0443 \u043d\u0430 \u043e\u0431\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u0443\u0440\u0441.<\/p>\n<\/li>\n<li>\n<p><code>supplyRatePerBlock()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e\u0439 \u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u043b\u044f \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0437\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0431\u043b\u043e\u043a.<\/p>\n<\/li>\n<li>\n<p><code>borrowRatePerBlock()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043d\u043e\u0439 \u0441\u0442\u0430\u0432\u043a\u0438 \u0434\u043b\u044f \u0437\u0430\u0439\u043c\u0430 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430 \u0443 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 \u0437\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0431\u043b\u043e\u043a.<\/p>\n<\/li>\n<li>\n<p><code>totalReserves()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043e\u0432 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0430\u043a\u0442\u0438\u0432\u0430. \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432 \u0437\u0430\u0435\u043c\u0449\u0438\u043a\u0430 \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u043e\u043c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u043c \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u043c (reserve factor).<\/p>\n<\/li>\n<li>\n<p><code>reserveFactorMantissa()<\/code>\u00a0&#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u0432, \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043d\u0430 \u0440\u0435\u0437\u0435\u0440\u0432\u044b.<\/p>\n<\/li>\n<\/ul>\n<h4>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043f\u0440\u043e comptroller<\/h4>\n<p>\u0412 Compound \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e\u00a0<strong>\u0441Token<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c Compound \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u0437\u0430\u043b\u043e\u0433 \u043e\u0434\u0438\u043d \u0430\u043a\u0442\u0438\u0432 \u0438 \u0432\u0437\u044f\u0442\u044c \u0432 \u0437\u0430\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439.<\/p>\n<p>\u042d\u0442\u043e \u0437\u0432\u0443\u0447\u0438\u0442<\/p>\n<\/div>\n<\/div>\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-375075","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/375075","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=375075"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/375075\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=375075"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=375075"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=375075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}