Witajcie w serii pt. „Sekrety blockchain-u”. Będzie to seria krótkich poradników w języku polskim których celem będzie ułatwienie Wam, zarówno początkującym jak i średniozaawansowanym uczestnikom rynku, życie w przestrzeni krypto. Dziś przedstawimy jedną ze sztuczek która pomoże Wam lepiej działać ze smart kontraktami.
Kapryśny blockchain to powszechny problem
Wyobraźmy sobie dwie hipotetyczne sytuacje, z którymi prawdopodobnie wielu z Was się spotkało:
Scenariusz numer 1: Planujecie szybki zakup / sprzedaż niezlistowanej na oficjalnej giełdzie kryptowaluty, ale zanim udaje Wam się to zrobić cena gwałtownie rośnie lub spada.
Scenariusz numer 2: Planujecie wymintować wyczekiwany token NFT, ale zanim Wam się to udaje wszystkie tokeny trafiają już do portfeli innych osób
Scenariusz numer 3: Planujecie odebrać airdrop i sprzedać go na lokalnych maksimach, ale wiele osób chce zrobić to jednocześnie i nie udaje Wam się.
Brzmi znajomo? prawdopodobnie tak.
Wszędzie tam, gdzie panuje duży ruch, każda zaoszczędzona sekunda jest na wagę złota. Istnieje wiele „mądrych sztuczek” którymi wspomagają się najlepsi, ale kilka z nich jest ewidentnie elementarnych. Takim podstawowym trikiem jest wstępne zatwierdzanie transakcji, czyli tzw. pre-approvals.
Wstępne zatwierdzanie transakcji
Do czego one służą? prawdopodobnie zauważyliście, iż kiedy chcecie wejść w jakąś interakcję ze smart kontraktem korzystając z kryptowalut znajdujących się na Waszych portfelach krypto (jak MetaMask), to najpierw zostajecie poproszeni o zezwolenie MetaMaskowi na wydanie określonych tokenów w określonej liczbie na danej stronie / kontrakcie, a dopiero potem potwierdzacie adekwatną transakcję. Bardzo łatwo ograniczyć ten proces do zaledwie jednej czynności – zatwierdzania transakcji – wymaga to jednak pewnych działań z wyprzedzeniem na blockchain explorerze, np. Etherscan.
Posłużymy się przykładem pre-approvali stablecoinów, takich jak USDC. Oznacza to, iż chcemy gdzieś użyć nasze tokeny USDC i chcemy mieć możliwość ich użycia szybciej niż inni.
W tym celu wyszukujemy adres kontraktu naszego tokena USDC (można go znaleźć klikając na token w MetaMasku i wybierając z menu w prawym górnym rogu opcję „Token details„):
Następnie wchodzimy do blockchain explorera Etherscan i wyszukujemy interesujący nas kontrakt:
https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Kolejnym krokiem jest wybranie zakładek Contract -> Write as Proxy
Naszym oczom powinny ukazać się dwie rubryki do wypełnienia: spender (address) oraz value (uint256).
W polu spender (address) wklejamy adres kontraktu projektu który docelowo będzie pobierał nasze tokeny (w tym przypadku USDC) z portfela. Niestety nie zawsze mamy go pod ręką, szczególnie o ile projekt jest nowy.
W polu value (uint256) z kolei wpisujemy ile maksymalnie tokenów będziemy chcieli wykorzystać. Trzeba zaznaczyć, iż wpisujemy tutaj interesującą nas wartość (np. 1000 dla tysiąca tokenów USDC) oraz mnożymy ją o 1018.
Przerażające? Nie do końca. Etherscan zrobi to za nas. W tym celu wpisujemy 1000 oraz klikamy ikonę ➕
Następnie z rozwijanego menu wybieramy opcję 1018. Efekt powinien wyglądać tak:
Ostatnimi krokami będzie podłączenie naszego portfela do Etherscan. Klikamy w „Connect to Web3„, zatwierdzamy wyskakujące na górze strony ostrzeżenie i z rozwijanej listy wybieramy interesujący nas portfel (zazwyczaj MetaMask). o ile po tych operacjach pojawi się zielone światło i komunikat „Connected – Web3” – gratulacje, jesteście już na mecie.
Następnie klikacie w przycisk „Write„, sprawdzacie i potwierdzacie transakcję w MetaMasku.
To wszystko! Przy najbliższej interakcji z interesującym Was kontraktem (tym, który wpisaliście w polu „spender (address)” będziecie mieli przewagę w postaci ominięcia całkowicie jednej z dwóch transakcji.