Typefully

Sending Tokens Safely: A Guide for MetaMask Users

Avatar

Share

 • 

2 years ago

 • 

View on X

🇵🇱 Jeśli kiedykolwiek wysłałeś/aś tokeny: 📌nie do tego odbiorcy co chciałeś/aś 📌na adres kontraktu np. tokena lub innego z którego nie można ich wycofać 📌na adres multisig na nie tej sieci co trzeba 👨‍💻 Ten wątek jest dla Ciebie
Tradycyjnie wygląda to tak: 1. Otwierasz @MetaMask i wybierasz portfel z którego wyślesz tokeny 2. Wybierasz token i wklejasz adres odbiorcy... ‼️ w tym momencie wkrada się niepewność: czy to poprawny adres odbiorcy❓ czy może środki trafią gdzie indziej 🙁 3. Approve & Send
Można to zrobić bezpieczniej (nie koniecznie łatwiej) i wykorzystać funkcję transferFrom, która musi być ujęte w każdej implementacji ERC-20.
Załóżmy, że chcemy do kogoś wysłać $USDC po sieci @arbitrum stosując nowe podejście należałoby to zrobić w następujący sposób: 1. Wchodzimy na @arbiscan i szukamy $USDC lub bezpośrednio poprzez link: arbiscan.io/token/0xaf88d065e77c8cc2239327c5edb3a432268e5831 (istotna jest tutaj liczba Decimals - tutaj 6)
2. Przechodzimy do zakładki "Contract / Write as Proxy" (jeśli robimy to dla innego tokena, który nie jest Proxy, wybieramy po prostu Write) 3. Wybieramy Connect to Web3 i łączymy się swoim portfelem z @arbiscan , przechodzimy do zakładki Approve:
W polu spender, podajmy adres, któremu chcemy pozwolić pobrać z naszego portfela liczbę tokenów zgodną z wartością w polu value (pamiętamy o 6 miejsca po przecinku w tym przypadku $USDC) Tutaj po wybraniu Write, dajemy zgodę adresowi 0x..t0m3k na pobranie z naszego walletu $1
4. Następnie odbiorca musi wejść pod ten sam adres $USDC na @arbiscan : arbiscan.io/token/0xaf88d065e77c8cc2239327c5edb3a432268e5831#writeProxyContract Jego interesuje zakładka transferFrom
W ten sposób odbiorca (0x..t0m3k) pobierze z adresu (0x..d4wc4) maksymalnie taką liczbę tokenów $USDC na jaką pozwolił wcześniej (0x..d4wc4) korzystając z mechanimu allowance / approve 5. Odbiorca wybiera Write generując i wysyłając transakcje.
Jakie są benefity tego karkołomnego rozwiązania: 🟢to posiadacz danych tokenów określa ile i komu pozwala pobrać 🟢odbiorca może pobrać raz wszystko, lub kilka razy po części 🟢nikt nie uprawniony nie pobierze tych tokenów
🟢jeśli adres odbiorcy zostanie skompromitowany, dawca może po prostu skorzystać z @RevokeCash 🟢jeśli dawca pomyli adresy odbiorcy, odbiorca mu przekaże, że nie może pobrać tokenów, wtedy dawca zrobi revoke i prześle ponownie approve na nowy, poprawny adres
🤓 Szczerze mówiąc można by ten proces ubrać w jakiś ciekawy UI i pozwolić w ten sposób bezpieczniej i łatwiej przesyłać tokeny użytkownikom
Avatar

📈 Tom Kowalczyk

@tomkowalczyk

Building on #blockchain... Turning ideas into products Thick face, black heart practitioner ⚡#cryptocurrency🕵🏻#research 🔑#security