หลายคนฟาร์มได้ ขาย reward เป็น อันนี้ผมไม่ห่วง เพราะเรื่องที่ทำแล้วได้เงิน ทุกคนหาทางทำได้ไม่ยากเกินไปอยู่แล้ว แต่การป้องกันเงินทุน ก็เป็นอีกเรื่องที่สำคัญไม่แพ้กัน เพราะว่าเราลงเงิน 1000 ได้ วันละ 1% หรือ APR 365% ก็คือ ได้วันละ 10 สมมุติได้มา 10 วัน เค้าปิดเว็บหนีไป คำถามคือเราทำยังไงต่อ? เราจะเอาเงินออกมาได้มั้ย? แล้วอีก 900 เราที่อยู่ในนั้นล่ะเป็นยังไง? เพราะสุดท้ายถ้าเอาออกมาไม่ได้ นั่นก็คือ ขาดทุนเลย 900 ทันที จากกำไรกลายเป็นขาดทุน
หลักการพื้นฐานคือ เมื่อเราดำเนินการใดๆนั้น เรากำลัง interact กับ smart contract อยู่ แล้วเมื่อได้รับคำสั่งสมบูรณ์ และบันทึกข้อมูลเหล่านั้นลงไปใน blockchain แล้ว ก็จะไม่มีใครมาแก้ไขหรือเปลี่ยนแปลงมันได้อีกตลอดไป ดังนั้น smart contract ใน blockchain คือตัวที่แสดงความจริงมากที่สุด
หน้าเว็บที่เราจิ้มๆใช้งานนั้น เป็นเพียงสะพานเชื่อม ระหว่าง wallet เรา กับ smart contract อีกทีเท่านั้นเอง เราจึงต้องเข้าใจว่า ถ้าวันหนึ่งหน้าเว็บปิดตัวไป เราจะต้อง interact กับ smart contract ตรงๆได้อย่างไร
วิธีง่าย
วิธีนี้จะใช้เครื่องมือที่คนอื่นเค้า implement เอาไว้ให้ ข้อดีก็คือ ง่ายมากๆ แต่ข้อเสียก็คือ เค้าอาจจะไม่มีฟาร์มที่เราไปซิ่งอยู่ เพราะที่เราซิ่งอาจจะเป็น farm เปิดใหม่ เค้าไม่ได้ update เข้าไป ก็ไม่มีให้ใช้นะ
https://vfat.tools/bsc/
อันนี้มีฟาร์มค่อนข้างมาก และมี update เรื่อยๆ วิธีการก็คือ เลือก ฟาร์มที่เราเคยเข้าไป จากนั้นรอโหลด แล้วระบบจะแสดง pool ทั้งหมด เราก็มองหาว่า pool ไหนที่เราเคยลง จากนั้นก็กด Unstake เลย ก็จะทำให้ได้ LP ออกมา แล้วเราก็เอา LP ไปถอดคืน เหมือนอย่างตอนเริ่ม ถ้าเป็น pancakeswap ดูได้ที่นี่
https://jediyield.com/
อันนี้จะมี pool ที่คนไทยนิยมอยู่เยอะ ดังนั้น ก็เข้าไปแล้ว กดที่ My Farm แล้วเลือก platform ที่เราใช้งาน จากนั้นก็กด เครื่องหมายลบ เพื่อ unstake ออกมา แล้วก็เอา LP ไปถอดคืน เหมือนอย่างตอนเริ่ม ถ้าเป็น pancakeswap ดูได้ที่นี่
ถ้าฟาร์มที่เราไปฟาร์มอยู่ ไม่มีในตัวเลือกข้างบนล่ะ?
ก็ต้องใช้ท่าที่ค่อน basic เลย อันนี้ถือว่าเป็นท่าพื้นฐาน ที่คนฟาร์มควรจะทำเป็นเลยล่ะ ช่วยชีวิตผมมาได้หลายรอบล่ะ ถ้าเราเข้าใจ concept ของมัน
หลักการท่า basic เราก็ต้องทำเหมือนกัน คือ 1) unstake LP token ออกมา 2) เอา LP ไปแยกคืน
เตรียม masterChef smart contract address
สำหรับคนที่เป็นสายซิ่ง สิ่งที่ต้องเก็บเอาไว้เสมอ ก็คือ masterChef smart contract address เพราะตัวนี้แหล่ะ สำคัญที่สุด ที่เราจะต้องไปคุยด้วย โดยตรง
วิธีการหา masterChef smart contract address
กดฝาก หรือ ถอนดู ถ้าเว็บยังเปิดได้อยู่ ใน Metamask popup จะมี masterChef อยู่ ก็กด copy มาได้เลย จริงๆ แนะนำว่าครั้งแรกที่กดฝาก ให้ copy เก็บเอาไว้เลย
ถ้าเว็บปิดไปแล้ว ให้ดูจากประวัติการฝาก หรือ เก็บ reward ครั้งล่าสุดก็ได้ อันนี้ ให้หาจาก bscscan ของตัวเองได้เลย
เปิด bscscan.com เพื่อดู masterChef smart contract address
เปิดหน้า bscscan.com แล้วค้นหาด้วย contract address จากข้างบน เลย แล้วกดไปที่ Contract > Read Contract แล้วเลื่อนลงไปหา userInfo
หาให้เจอว่าเราฟาร์มอยู่ที่ Pool ID หมายเลขอะไร และมีมูลค่าฝากเอาไว้เท่าไร
มีสองวิธี วิธีแรก คือ ให้ดูจากประวัติการฝาก หรือ เก็บ reward ครั้งล่าสุดก็ได้ อันนี้ต้องค้นกันเยอะหน่อย ต้องหาให้เจอ แล้วกด Click to see More
จากนั้น Decode Input Data
แล้วเราจะเห็น _pid อย่างกรณีนี้คือ Pool ID หมายเลข 8 ให้เอาเลขไปกรอกขั้นตอนต่อไปเลย
ขั้นตอนต่อมา ซึ่งเราสามารถใช้ขั้นตอนนี้ ในการค้นหา pool ID ที่เราลงไว้ก็ได้ ก็คือ การไล่ตัวเลขไปเรื่อยๆ เริ่มจาก 0 ให้เรากลับไปที่หน้า masterChef Smart Contract ข้างบน แล้วใช้งาน function userInfo จากนั้น กรอกเลข ในช่องแรก เริ่มต้นจาก 0 ช่องที่ 2 ใส่ wallet address ของเราเข้าไป แล้วกด query ถ้าไม่เจอ amount ที่มากกว่า 0 แปลว่า เราไม่ได้อยู่ใน pool id 0 ให้เพิ่มเลขเป็น 1 แล้ววนทำเหมือนเดิม เพิ่มทีละเลข จนกว่าจะเจอมูลค่าที่เราฝากเอาไว้
แต่ผมได้เลขมาแล้ว คือ pid 8 ก็ใส่เข้าไปเลย แล้วกด query
ได้ amount ออกมาแล้ว ตัวเลขนี้ คือทั้งหมดที่เรามี ใน pool นี้ ถ้าใครมีหลาย pool ก็ค่อยๆทำทีละ pool ใจเย็นๆ
ถอน LP ที่ stake เอาไว้ออกมา
ในหน้า masterChef smart contract address เดิม ให้เราไปที่ Write Contract แล้วกด Connect to Web3 ขั้นตอนนี้ จะทำให้ bscscan.com เชื่อมกับ กระเป๋า Metamask เราได้ เพราะเราจะสั่งงาน smart contract ได้ เราต้องใช้กระเป๋าเราในการลงชื่อทำธุรกรรมด้วย
เมื่อ connect แล้ว ให้เรามองหา function withdraw โดยปกติจะมี withdraw ธรรมดากับ emergencyWithdraw ความแตกต่างระหว่างสอง function ก็คือ emergencyWithdraw โดยปกติ จะถอน LP ของเราออกมาทั้งหมดทันที โดยไม่สนว่ามีเท่าไร และไม่สน reward คือตัดทิ้งไปเลย เอาแต่เงินออกมา ส่วน withdraw เราจะเลือกจำนวนที่จะถอนได้ (เหมือนหน้าเว็บที่กด unstake แล้วกรอกเลขได้นั่นแหล่ะ) ก็ใส่ pid เข้าไป อย่างที่เราทดสอบกันก็คือ 8 จากนั้น ก็ใส่ amount ให้เราเอาเลข amount จากข้างบนใส่เข้าไปเลยให้ครบ แล้วกด write
จากนั้นจะได้ popup ก็ confirm ไปเลย หน้าจอนี้บางครั้ง มันจะแสดงว่าใช้ gas fee เยอะมากๆ ไม่ต้องตกใจ กดไปเลย เพราะปกติ จะใช้ไม่เยอะอยู่แล้วในการถอน มันจะใช้ตามที่จำเป็นต้องใช้จริงๆ (หากเห็นว่า error เพราะมีปัญหาในการคำนวณค่า gas fee เท่านั้นเอง)
เพียงเท่านี้ เราก็สามารถ LP Token ออกมาได้แล้ว ขั้นตอนต่อไป ก็แยก LP Token เป็น cryptocurrency ตามเดิม และถ้าใช้ withdraw ธรรมดา ก็จะได้ reward ออกมาด้วย เอาไป swap ขายได้เลย
และส่วนใหญ่เว็บฟาร์มจะสามารถแปลง LP Token กลับมาเป็น cryptocurrency ปกติได้ผ่านทาง Pancakeswap ยกเว้นบางที่ ที่มี DEX (Decentralized Exchange) เป็นของตัวเอง อย่างกรณีของเรานี่คือ Apeswap ที่มี DEX เป็นของตัวเอง แบบนี้จะไม่สามารถเอา LP Token ไปถอดออกที่ pancakeswap ได้ (ดังนั้น ที่ไหนที่เป็น pool ซิ่ง แล้วมี DEX เป็นของตัวเอง ก็ต้องระวังเพิ่มขึ้น)
วิธีถอด LP Token กลับมาเป็น cryptocurrency ตามเดิม กรณี platform มี DEX ของตัวเอง
อันนี้จะยากแล้วครับ
ขั้นแรก หา Router smart contract ให้เจอ
วิธีที่ง่ายที่สุด คือการหาจากประวัติการ add LP ครับ เพราะในนั้นจะมีข้อมูลครบถ้วนมาก ให้เรา copy contract address เอาไว้ แล้วกด Click to see more เพื่อดูรายละเอียดการฝากของเราครับ
กด Decode Input Data
เราจะเห็นข้อมูลหลายอย่างเลย อธิบายได้ดังนี้
tokenA คือ cyptocurrency ตัวหนึ่ง ให้เรากดไปดูได้ว่ามันคืออะไร กรณีนี้คือ BUSD
tokenB คือ cyptocurrency อีกตัวหนึ่ง ไม่ต้องกดรู้ว่า USDC เพราะคู่ PAIR นี้เราเข้าด้วย BUSD-USDC
amountADesired คือ จำนวน BUSD ที่ใส่เข้า pair
amountBDesired คือ จำนวน USDC ที่ใส่เข้า pair
amountAMin คือเลขขั้นต่ำ ถ้าตอนเข้าไปแล้วระบบใช้ BUSD ที่น้อยกว่านี้ อันเนื่องมาจาก สัดส่วนของ pool เปลี่ยนไป ระบบจะ revert ธุรกรรม
amountBMin คือเลขขั้นต่ำ ถ้าตอนเข้าไปแล้วระบบใช้ USDC ที่น้อยกว่านี้ อันเนื่องมาจาก สัดส่วนของ pool เปลี่ยนไป ระบบจะ revert ธุรกรรม
to address ของเรา
deadline คือเวลาที่เรารอธุรกรรม confirm เป็น unixtime (ถ้ารอนานเกินนี้ transaction จะ revert)
เมื่อเราเข้าใจแล้ว ก็ไปที่ Contract > Write Contract > Connect to Web3 เหมือนเดิม คือทำให้ bscscan connect wallet เรา
จากนั้น ไปที่ function removeLiquidity แล้วกรอกค่าลงไป ดังนี้
tokenA คือ address ที่เราได้มาจากข้อบน (BUSD)
tokenB คือ address ที่เราได้มาจากข้อบน (USDC)
liquidity คือ amount LP ที่เรา unstake ออกมาทั้งหมด
amountAMin ใส่ 1 ได้เลย ให้เท่าไรเราเอาหมดแหล่ะ
amountBMin ใส่ 1 ได้เลย ให้เท่าไรเราเอาหมดแหล่ะ
to wallet address ของเรา
deadline ใส่ unix timestamp โดยให้เปิด https://www.unixtimestamp.com/ แล้วปรับเวลาให้ + ชั่วโมงไป 7 ชั่วโมง และ เวลาไป 10 นาที (คือดูให้เวลามากกว่าปัจจุบันประมาณ 10 นาที) แล้วกด convert
จากนั้น กด write ถ้ามี error ไม่ต้องตกใจ ใช้ gas fee เยอะไม่ต้องตกใจ มันใช้ไม่ถึงหรอก มันคำนวณไม่ได้เท่านั้นเอง
เพียงเท่านี้ เราก็ได้เงินคืนแล้ว จบ แยกย้าย
และทั้งหมดนี้ คือสิ่งที่คนทำฟาร์มส่วนใหญ่ทำไม่เป็น เวลาเว็บปิดก็คือทำอะไรไม่ได้อีกเลย แต่ว่าทั้งหมด ก็ไม่ใช่วิธีที่ตายตัวนะ เพราะขึ้นอยู่กับการเขียน smart contract ด้วย แต่ส่วนใหญ่ smart contract จะมีแนวทางเขียนคล้ายๆกันแหล่ะ(เพราะลอกกันมา) เราก็ต้องทำความเข้าใจให้ถ่องแท้ก่อน เพราะถ้าหน้างานไม่ได้เจอแบบนี้ อาจจะไปไม่เป็นเลยก็ได้ อย่างที่ผมเคยเจอคือ ellipsis ตอนนั้นเว็บล่มไปนานประมาณหนึ่ง ผมก็ต้องใช้กระบวนการคล้ายๆ แต่แตกต่างจากแบบนี้ เพื่อเอาเงินออกมาให้ได้นั่นเอง โดย process จะคล้ายๆกัน แต่ชื่อ อาจจะแตกต่างกัน