Swap protocol กด approve แล้ว swap ระบบทำอะไรให้เราบ้างซิ ?

Nonthasak L. | MetaWarden #173
3 min readJul 1, 2021

--

สงสัยเหมือนผมกันบ้างแม๊ะ …​ เวลาที่เราจะแลก Token เพื่อที่จะเอาไปแลกเป็น LPToken แล้วเอาไปลง Farm ต่อ ..​ ตอน Swap ที่เราต้องกดปุ่ม Approve Token ที่จะ swap แล้วก็กดปุ่ม Swap

เกิดอะไรขึ้นบ้างหลังจากกดมันไปแล้ว ?

ด้วยความที่อยากรู้ล้วนๆ ..​บวกกับแค้นที่เก็บมังคุดไปขายพ่อค้าแล้วไม่ได้ราคา !! (เกี่ยวป๊ะ ..​?) ก็เลยเอา Transaction ที่ผมเคย Swap BUSD ไปเป็น USDT เพื่อที่จะเอาไปฟาร์ม คู่ Stable Coin ของ WardenSwap มาเล่าให้ฟังครับ

ที่ Warden Swap ในบทความนี้ผมจะไป Swap BUSD เป็น USDT ผมจะต้องทำ 2 Transactions คือ Approve BUSD (ใน Warden เขาใช้คำว่า Unlock Token)ให้กับ Warden Swap เพื่อให้เขาเอา BUSD ของเราไป Swap ได้ แล้วต่อไปก็กดเพื่อให้ Warden Swap Protocol ทำการ Swap ให้เรา

Swap ในความหมายที่ผมเข้าใจก็คือ การแลกเปลี่ยน

Unlock Token หรือ Approve Token รูปตัวอย่าง

หลังจากกด Unlock Token ปั๊บบบ !!!

พอเรากด Confirm Transaction จ่ายค่า gas แล้วเราจะสามารถที่จะไปดู Transaction ที่ BSCscan.com ไปดู Transaction แรกกัน ! ที่ Metamask ไปตามรูปเลยนะ

ดู Transaction ของ Wallet ของเราบน BSCscan.com

จากรูปจะเห็นว่า metamask สร้าง transaction ส่งไปที่ address ของ BUSD smart contract เป็น contract ของเหรียญ busd ไปเรียก function อันนี้

ใน transaction จะมีสิ่งที่เรียกว่า playload ซึ่งเป็นข้อมูลที่จะส่ง ชื่อ function ที่เราจะใช้ แล้วก็ข้อมูลที่ function นั้นต้องการไปในรูปแบบเลขฐาน 16 ไปให้ smart contract

พร้อมกับส่งข้อมูล spender เป็น address ของ Warden Protocol smart contract แล้วก็จำนวน BUSD ที่เราจะให้ WardenSwap เอาไปใช้ได้ (ตรงนี้ปกติแล้วถ้าเราได้ไม่ได้ Edit Permission มันจะเป็นการยอมให้แบบ infinity ถ้า Token ในกระเป๋าเราเยอะอย่าลืม Revoke) เป็นอันว่าจบ Transaction Approve Token

approve token ไม่ได้เกิดขึ้นใน wallet แต่เกิดขึ้นที่ smart contract ของ token นั้น หมายความว่า จริงๆ แล้วเหรียญไม่ได้อยู่ใน wallet แต่ อยู่ใน smart contract ของ token นั้น wallet ทำหน้าที่เอาจำนวนเหรียญที่ตรงกับ address ของ wallet เรามาให้เราดูว่ามีอยู่เท่าไหร่

พอเรากด Unlock Token เสร็จแล้ว (ถ้าไม่ Revoke เราจะไม่ต้องมา unlock ใหม่) เราจะมา

Swapppppppp !!!! กดเล๊ย !

หลังจากที่เราใส่จำนวน BUSD ที่จะ Swap แล้วรอมันจะคำนวน USDT ให้ว่าได้เท่าไหร่ พร้อมกับบอกว่ามันไป Swap ที่ไหนในช่อง Router (ขอเรทดีๆ หน่อยนา) จากนั้นเราก็กด swap แล้วก็ confirm transaction .. แล้วเหรียญ USDT ก็จะวิ่งเข้า wallet เรา !! แจ่ม … ไปไหนมามั่งละนั่นอ่ะ …​?

ปุ่ม Swap

ไปดู Transaction ใน BSCScan.com กัน!

Swap Token Transfer

…​ขอโทษนะคับ ..​

ไปไหนมามั่งวะเนี่ยะะะะะะะ !!!

ถ้าเราดูที่ (To) มันจะบอกแค่ว่าเราใช้งาน smart contract ที่ address 0x…610a มันก็คือ WardenSwap smart contract แล้วเราส่ง BUSD ของเราไปทางไหน ?

ไปดู transaction ที่เราส่งหน่อยว่าเราส่ง payload เป็นอะไรไป ?

นี่ไง ..​เราส่ง BUSD ของเราไปที่ function trade ใน warden swap smart contract แหละ

warden swap trade function diagram

function trade นี้จะเอา BUSD ไป swap เป็น USDT ให้ผม เย้! ง่ายจัดดด เดี๋ยยย ว!

ยังไม่จบแค่นี้ !

ทำไม Token มันส่งไปไหนหลายที่จัง ? ทั้งๆ ที่บอกเราว่า ติดต่อกับ contract แค่อันเดียวคืองี้นะ

การ swap อันนี้ที่ผมได้ไปศึกษามา ก็คือว่า เราจะส่ง BUSD ไปให้ warden swap protocol แล้ว BUSD จะถูกส่งจาก Warden Swap Protocol ไปที่ WardenNervRouter แล้ว router จะเอา BUSD ของเราไป Swap จริงๆ ที่ smart contract ที่ชื่อว่า Swap แล้วส่ง USDT ที่ swap แล้ว ย้อนกลับมาที่ Warden Swap Protocol กลับมาที่ function trade ของเราอีกครั้ง แต่รอบนี้กลับมาในรูปแบบของ USDT จากนั้นทาง Warden Swap ก็จะเก็บ Fee ไปโดยจะสังเกตุได้จาก from .. to อันดับรองสุดท้ายที่มันหายไปนิดนึง (แต่ตรงนี้ ถ้าเราถือ Wad token เอาไว้ 100 wad ใน wallet จะไม่เสีย ถ้าเข้าใจไม่ผิดนะคับ) หลังจากเก็บ fee โดยหักออกจาก USDT ที่ swap กลับมา จานั้นก็จะส่งที่เหลือหลังหัก fee แล้ว จาก Warden Swap เข้า Wallet ของเรานั่นเอง

จบแล้วครับสำหรับการเรียนรู้เรื่องของสิ่งที่เกิดขึ้นทั้งหมด (เท่าที่ความรู้ของผมจะอำนวย) ที่เกิดขึ้นเวลาที่เรา Swap Token ขอคำแนะนำ ติชมด้วยนะครับ ตรงไหนผิดรบกวนทุกคนช่วยกันแก้ให้ถูก อาจจะคอมเม้น หรือ inbox มาทางไหนสักทางก็ได้ครับ

คาวหน้า ..​เฮ้ย ! คราวหน้า จะมาเรื่องอะไร ..​มาแล้วเดี๋ยวบอกละกัน

ขอบ-พระ-คุณ ที่อ่านจนจบ

--

--

Nonthasak L. | MetaWarden #173
Nonthasak L. | MetaWarden #173

Written by Nonthasak L. | MetaWarden #173

เกษตรกรที่สนใจการเขียนโปรแกรม และทำให้งานสวนง่ายขึ้นอีก Solidity + Web3 DEV , NFT Addict— self taught developer

No responses yet