×òî òàêîå ñìàðò-êîíòðàêò ïðîñòûìè ñëîâàìè |
Ñìàðò-êîíòðàêò — ýòî ïðîãðàììà, êîòîðàÿ ðàáîòàåò âíóòðè áëîê÷åéíà è àâòîìàòè÷åñêè âûïîëíÿåò çàðàíåå ïðîïèñàííûå äåéñòâèÿ.
Åñëè âûïîëíåíî óñëîâèå A — ïðîèñõîäèò äåéñòâèå B.
Íèêòî íå äîëæåí âðó÷íóþ íàæèìàòü êíîïêó, ïîäòâåðæäàòü îïåðàöèþ ïî ïî÷òå èëè çâîíèòü ìåíåäæåðó. Êîä ñàì ïðîâåðÿåò óñëîâèÿ è âûïîëíÿåò òî, ÷òî â íåãî çàëîæåíî.
Èìåííî íà ñìàðò-êîíòðàêòàõ ðàáîòàåò îãðîìíàÿ ÷àñòü ñîâðåìåííîé êðèïòîèíôðàñòðóêòóðû: òîêåíû, äåöåíòðàëèçîâàííûå áèðæè, DeFi, NFT, blockchain bridges è ìíîæåñòâî äðóãèõ ñåðâèñîâ.
Ïðåäñòàâèì îáû÷íûé àâòîìàò ñ íàïèòêàìè.
Âû:
âíîñèòå äåíüãè;
âûáèðàåòå âîäó;
àâòîìàò ïðîâåðÿåò, äîñòàòî÷íî ëè äåíåã;
åñëè âñ¸ ïðàâèëüíî — âûäà¸ò âîäó.
Ïðîäàâåö íå íóæåí.
Àâòîìàò íå ðåøàåò, íðàâèòñÿ åìó ïîêóïàòåëü èëè íåò. Îí ïðîñòî ðàáîòàåò ïî çàðàíåå çàäàííûì ïðàâèëàì.
Ñìàðò-êîíòðàêò óñòðîåí ïîõîæèì îáðàçîì.
Íàïðèìåð:
åñëè ïîëüçîâàòåëü îòïðàâèë 100 USDT → âûïîëíèòü îáìåí → îòïðàâèòü åìó ðàññ÷èòàííîå êîëè÷åñòâî äðóãîãî òîêåíà.
Âñå óñëîâèÿ ïðîïèñàíû â êîäå çàðàíåå.
Íå íà ñåðâåðå êîíêðåòíîé êîìïàíèè è íå âíóòðè âàøåãî òåëåôîíà.
Îí ðàçâ¸ðíóò â áëîê÷åéíå.
Ó êîíòðàêòà åñòü ñîáñòâåííûé àäðåñ, ïðèìåðíî òàê æå, êàê ó îáû÷íîãî êðèïòîêîøåëüêà.
Ïîëüçîâàòåëü ìîæåò îòïðàâèòü ýòîìó àäðåñó òðàíçàêöèþ è òåì ñàìûì âûçâàòü îïðåäåë¸ííóþ ôóíêöèþ ïðîãðàììû.
Íàïðèìåð:
— ïåðåâåñòè òîêåí;
— îáìåíÿòü àêòèâ;
— âíåñòè ñðåäñòâà;
— çàáðàòü äåïîçèò;
— ïðîãîëîñîâàòü;
— âûïóñòèòü NFT.
Ïîñëå ýòîãî ñåòü âûïîëíÿåò êîä êîíòðàêòà è çàïèñûâàåò ðåçóëüòàò â áëîê÷åéí.
Íàçâàíèå íåìíîãî ñáèâàåò ñ òîëêó.
Ñìàðò-êîíòðàêò äàëåêî íå âñåãäà ÿâëÿåòñÿ þðèäè÷åñêèì êîíòðàêòîì.
 áîëüøèíñòâå ñëó÷àåâ ýòî ïðîñòî ïðîãðàììà.
Îáû÷íûé äîãîâîð ìîæåò ãîâîðèòü:
ïîñëå ïîëó÷åíèÿ îïëàòû ïðîäàâåö îáÿçàí îòïðàâèòü òîâàð.
Íî äîãîâîð ñàì íè÷åãî íå îòïðàâèò.
Ñìàðò-êîíòðàêò ñïîñîáåí íåïîñðåäñòâåííî âûïîëíèòü äåéñòâèå, åñëè îíî ñóùåñòâóåò âíóòðè áëîê÷åéíà.
Íàïðèìåð:
ïðèø¸ë òîêåí A → îòïðàâèòü òîêåí B.
Òî åñòü îáû÷íûé äîãîâîð îïèñûâàåò îáÿçàòåëüñòâà ñòîðîí, à ñìàðò-êîíòðàêò ìîæåò àâòîìàòè÷åñêè ðåàëèçîâàòü ÷àñòü ëîãèêè.
Äîïóñòèì, ïîëüçîâàòåëü õî÷åò ïîìåíÿòü ETH íà USDT ÷åðåç äåöåíòðàëèçîâàííóþ áèðæó.
Îí âûáèðàåò:
ETH → USDT
è íàæèìàåò Swap.
Çà èíòåðôåéñîì ïðîèñõîäèò ãîðàçäî áîëüøå:
êîøåë¸ê ïîäêëþ÷àåòñÿ ê ñìàðò-êîíòðàêòó → ïîëüçîâàòåëü ðàçðåøàåò îïåðàöèþ → êîíòðàêò ïîëó÷àåò äàííûå → ïðîâåðÿåò óñëîâèÿ → âûïîëíÿåò îáìåí → ðåçóëüòàò çàïèñûâàåòñÿ â áëîê÷åéí.
Òî åñòü íà DEX îáû÷íî íåò ñîòðóäíèêà, êîòîðûé âðó÷íóþ ïðèíèìàåò âàø ETH è îòïðàâëÿåò îáðàòíî USDT.
Ýòó ðîëü âûïîëíÿåò êîä.
À åñëè íóæåí îáû÷íûé îáìåí ñ ïîíÿòíûì ðàñ÷¸òîì è ïîääåðæêîé ìåíåäæåðà, ìîæíî èñïîëüçîâàòü rexex — çäåñü ïîëüçîâàòåëü ðàáîòàåò íå íàïðÿìóþ ñî ñìàðò-êîíòðàêòîì, à ÷åðåç îáìåííûé ñåðâèñ.
Ñìàðò-êîíòðàêò ìîæåò ñîäåðæàòü ðàçíûå êîìàíäû — ôóíêöèè.
Óñëîâíî:
transfer() — ïåðåâåñòè òîêåí;
swap() — âûïîëíèòü îáìåí;
deposit() — âíåñòè àêòèâ;
withdraw() — âûâåñòè;
approve() — ðàçðåøèòü äðóãîìó êîíòðàêòó ðàáîòàòü ñ îïðåäåë¸ííûì êîëè÷åñòâîì òîêåíîâ.
Ïîëüçîâàòåëü îáû÷íî íå âèäèò êîä.
Èíòåðôåéñ ïðåâðàùàåò ýòè ôóíêöèè â ïîíÿòíûå êíîïêè:
Send
Swap
Deposit
Approve
Íî òåõíè÷åñêè ïðè íàæàòèè êíîïêè êîøåë¸ê âûçûâàåò îïðåäåë¸ííóþ ôóíêöèþ êîíòðàêòà.
Ýòî îäèí èç ìîìåíòîâ, êîòîðûé ÷àñòî íåïîíÿòåí íîâè÷êàì.
Äîïóñòèì, ó âàñ åñòü USDT è âû õîòèòå îáìåíÿòü åãî ÷åðåç äåöåíòðàëèçîâàííûé ñåðâèñ.
Ñìàðò-êîíòðàêò íå ìîæåò ïðîñòî âçÿòü âàøè òîêåíû.
Ñíà÷àëà âû äîëæíû äàòü åìó ðàçðåøåíèå.
Ïîýòîìó ïîÿâëÿåòñÿ òðàíçàêöèÿ:
Approve USDT
Ïîñëå íå¸ êîíòðàêò ïîëó÷àåò ïðàâî èñïîëüçîâàòü òîêåíû â ðàìêàõ âûäàííîãî ðàçðåøåíèÿ.
È òîëüêî çàòåì âûïîëíÿåòñÿ:
Swap USDT → äðóãîé àêòèâ.
Ïîëó÷àåòñÿ, âèçóàëüíî ïîëüçîâàòåëü äåëàåò îäèí îáìåí, à òåõíè÷åñêè ìîæåò ïîäïèñàòü äâå îòäåëüíûå òðàíçàêöèè.
È çà îáå ìîæåò ïîòðåáîâàòüñÿ ñåòåâàÿ êîìèññèÿ.
Ðàçðåøåíèå ìîæíî âûäàòü:
— íà êîíêðåòíóþ ñóììó;
èëè
— íà î÷åíü áîëüøîé îáú¸ì.
Íåêîòîðûå ïðèëîæåíèÿ ïðîñÿò ïðàêòè÷åñêè íåîãðàíè÷åííûé allowance, ÷òîáû ïðè ñëåäóþùåé îïåðàöèè ïîëüçîâàòåëþ íå ïðèøëîñü ñíîâà äåëàòü Approve.
Ýòî óäîáíî.
Íî åñëè ñàì êîíòðàêò îêàæåòñÿ ñêîìïðîìåòèðîâàí èëè ïîëüçîâàòåëü ïîäêëþ÷èòñÿ ê ìîøåííè÷åñêîìó ïðèëîæåíèþ, ñëèøêîì øèðîêîå ðàçðåøåíèå ìîæåò ñòàòü ïðîáëåìîé.
Ïîýòîìó ïåðåä ïîäïèñüþ âàæíî ñìîòðåòü, êàêîìó êîíòðàêòó è êàêèå ïðàâà âû äà¸òå.
Íå ïðîñòî ïîòîìó, ÷òî îí ñóùåñòâóåò.
Íî åñëè ïîëüçîâàòåëü äàë êîíòðàêòó ñîîòâåòñòâóþùåå ðàçðåøåíèå è êîä ïðåäóñìàòðèâàåò âîçìîæíîñòü ïåðåâîäà òîêåíîâ, êîíòðàêò ìîæåò èñïîëüçîâàòü ýòîò allowance â ðàìêàõ ñâîèõ ïðàâèë.
Èìåííî ïîýòîìó îïàñíî áåçäóìíî íàæèìàòü:
Approve
Confirm
Sign
íà íåèçâåñòíûõ ñàéòàõ.
Êðèïòîêîøåë¸ê íå âñåãäà ñïîñîáåí îáúÿñíèòü ÷åëîâå÷åñêèì ÿçûêîì âñå ïîñëåäñòâèÿ ïîäïèñûâàåìîé îïåðàöèè.
Êîãäà ñìàðò-êîíòðàêòó íóæíî âûïîëíèòü äåéñòâèå îò âàøåãî èìåíè, êîøåë¸ê ïîêàçûâàåò çàïðîñ.
Âû ïîäòâåðæäàåòå åãî ïðèâàòíûì êëþ÷îì.
Ñàì êëþ÷ íèêóäà íå îòïðàâëÿåòñÿ.
Ñîçäà¸òñÿ öèôðîâàÿ ïîäïèñü, ïîäòâåðæäàþùàÿ:
âëàäåëåö ýòîãî àäðåñà ðàçðåøèë îïåðàöèþ.
Ïîñëå ýòîãî òðàíçàêöèÿ ïåðåäà¸òñÿ â áëîê÷åéí.
Ïîýòîìó ñìàðò-êîíòðàêòó íå íóæíà âàøà seed-ôðàçà.
Åñëè êàêîé-òî ñàéò ïðîñèò ââåñòè 12 èëè 24 ñëîâà «äëÿ ïîäêëþ÷åíèÿ ê êîíòðàêòó» — ýòî íå íîðìàëüíàÿ ðàáîòà Web3.
Çàâèñèò îò òîãî, êàê îí ñîçäàí.
Íåêîòîðûå êîíòðàêòû ôàêòè÷åñêè íåèçìåíÿåìûå.
Äðóãèå èñïîëüçóþò ñïåöèàëüíóþ àðõèòåêòóðó, ïîçâîëÿþùóþ îáíîâëÿòü ëîãèêó.
Ïîýòîìó ôðàçà:
«ñìàðò-êîíòðàêò íåëüçÿ èçìåíèòü»
ñëèøêîì êàòåãîðè÷íà.
Ïðàâèëüíåå ñêàçàòü:
âîçìîæíîñòü îáíîâëåíèÿ çàâèñèò îò àðõèòåêòóðû êîíêðåòíîãî ïðîåêòà.
È äëÿ ïîëüçîâàòåëÿ ýòî âàæíàÿ äåòàëü.
Åñëè êîíòðàêò upgradeable, íóæíî ïîíèìàòü, êòî èìååò ïðàâî ìåíÿòü åãî ëîãèêó.
Ðàçðàáîò÷èêè.
Îíè ïèøóò êîä, òåñòèðóþò åãî è ðàçâîðà÷èâàþò â âûáðàííîì áëîê÷åéíå.
Íàïðèìåð, â ýêîñèñòåìå Ethereum øèðîêî èñïîëüçóåòñÿ ÿçûê Solidity.
Ïîñëå ïóáëèêàöèè ó êîíòðàêòà ïîÿâëÿåòñÿ blockchain-àäðåñ.
Äàëüøå ïîëüçîâàòåëè è äðóãèå ïðîãðàììû ìîãóò ñ íèì âçàèìîäåéñòâîâàòü.
Ïðè÷¸ì îäèí ñìàðò-êîíòðàêò ìîæåò âûçûâàòü äðóãîé.
Èç-çà ýòîãî ñîâðåìåííûå DeFi-ïðèëîæåíèÿ èíîãäà ñîñòîÿò èç öåëîé ñèñòåìû âçàèìîñâÿçàííûõ êîíòðàêòîâ.
USDT, USDC è îãðîìíîå êîëè÷åñòâî äðóãèõ àêòèâîâ â ðÿäå ñåòåé ñóùåñòâóþò èìåííî áëàãîäàðÿ ñìàðò-êîíòðàêòàì.
Íàïðèìåð, ERC20-òîêåí â Ethereum — ýòî êîíòðàêò, êîòîðûé õðàíèò ëîãèêó:
— êòî êàêèì êîëè÷åñòâîì òîêåíîâ âëàäååò;
— êàê èõ ïåðåâîäèòü;
— êàêèå ðàçðåøåíèÿ âûäàíû;
— êàêèå äîïîëíèòåëüíûå ôóíêöèè ïðåäóñìîòðåíû ðàçðàáîò÷èêîì.
Ïîýòîìó êîãäà âû ïåðåâîäèòå òîêåí, òåõíè÷åñêè ÷àñòî âçàèìîäåéñòâóåòå íå ïðîñòî ñ «ìîíåòîé», à ñ êîíòðàêòîì ýòîãî òîêåíà.
Bitcoin ïîÿâèëñÿ ðàíüøå ñîâðåìåííîãî ïðåäñòàâëåíèÿ î ñìàðò-êîíòðàêòàõ.
 í¸ì òîæå åñòü ïðîãðàììèðóåìûå óñëîâèÿ ðàñõîäîâàíèÿ ìîíåò, íî âîçìîæíîñòè ãîðàçäî áîëåå îãðàíè÷åíû ïî ñðàâíåíèþ ñ ïëàòôîðìàìè âðîäå Ethereum.
Ethereum èçíà÷àëüíî ñîçäàâàëñÿ êàê áîëåå óíèâåðñàëüíàÿ ñðåäà, ãäå ðàçðàáîò÷èêè ìîãóò çàïóñêàòü ñëîæíûå ïðîãðàììû ïîâåðõ áëîê÷åéíà.
Îòñþäà è îãðîìíîå êîëè÷åñòâî:
— DeFi;
— òîêåíîâ;
— NFT;
— DAO;
— lending-ïðîòîêîëîâ;
— blockchain bridges.
Íà öåíòðàëèçîâàííîé áèðæå ïîëüçîâàòåëü îáû÷íî äîâåðÿåò àêòèâû ñàìîé ïëàòôîðìå.
DEX ðàáîòàåò èíà÷å.
Êîøåë¸ê ïîëüçîâàòåëÿ âçàèìîäåéñòâóåò ñî ñìàðò-êîíòðàêòàìè.
Âìåñòî óñëîâíîãî ñîòðóäíèêà èëè âíóòðåííåé áàçû áèðæè åñòü ïðîãðàììíûå ïðàâèëà:
ïîëüçîâàòåëü ïðåäîñòàâëÿåò àêòèâ → êîíòðàêò ðàññ÷èòûâàåò ðåçóëüòàò → âûïîëíÿåòñÿ îáìåí.
 íåêîòîðûõ DEX ëèêâèäíîñòü ïîñòóïàåò îò äðóãèõ ïîëüçîâàòåëåé, êîòîðûå âíåñëè ñâîè àêòèâû â liquidity pools.
È óïðàâëåíèå òàêèìè ïóëàìè òîæå ïðîèñõîäèò ÷åðåç ñìàðò-êîíòðàêòû.
Ïðåäñòàâèì ïóë:
USDT + ETH
Ïîëüçîâàòåëè çàðàíåå âíåñëè â íåãî îáà àêòèâà.
Òåïåðü äðóãîìó ÷åëîâåêó íå îáÿçàòåëüíî èñêàòü êîíêðåòíîãî ïðîäàâöà ETH.
Îí âçàèìîäåéñòâóåò ñ ïóëîì ÷åðåç ñìàðò-êîíòðàêò.
Êîíòðàêò ðàññ÷èòûâàåò, ñêîëüêî ETH ìîæíî ïîëó÷èòü çà îïðåäåë¸ííîå êîëè÷åñòâî USDT, è âûïîëíÿåò îïåðàöèþ ïî ñâîåé ôîðìóëå.
| Êîììåíòèðîâàòü | « Ïðåä. çàïèñü — Ê äíåâíèêó — Ñëåä. çàïèñü » | Ñòðàíèöû: [1] [Íîâûå] |