Tất cả bài viết
Hướng dẫn

Cài đặt trượt giá trên Solana: chọn con số nào

Đặt trượt giá quá chặt thì lệnh swap bị hủy, quá rộng thì bot sandwich ăn phần chênh. Cách chọn con số theo độ sâu pool, theo route và theo số ví chạy.

13 phút đọc J Tools Editorial
Minh họa biên tập về mức chấp nhận trượt giá khi swap token trên Solana, đặt trần hẹp cạnh trần rộng

Mỗi lệnh swap trên Solana chỉ có đúng một con số bạn phải tự quyết. Đặt trượt giá quá chặt thì giao dịch bị hủy ngay trên chuỗi, bạn mất phí mạng mà không nhận được token nào. Đặt quá rộng thì con bot đang canh pool sẽ ăn phần chênh đó.

Câu 0,5% dùng được cho mọi thứ, thứ mà ai cũng chép lại từ Discord, là lựa chọn lười ngay khi bạn bước ra khỏi cặp SOL/USDC. Mức trượt giá đúng đến từ ba thứ: lệnh của bạn chiếm bao nhiêu phần của pool, token đó biến động ra sao gần đây, và pool đang chịu bao nhiêu áp lực từ bot.

Bài này đi qua việc mức chặn đó thật sự ngăn điều gì, con số nào hợp với loại token nào, và vì sao một mức trần duy nhất hiếm khi cứu được hết các ví trong công cụ swap nhiều ví cùng lúc.

Trượt giá là gì và khác price impact ở đâu

Trượt giá là khoảng co giãn về giá mà bạn cho phép trước khi lệnh swap tự hủy. Giống như nói trước rằng tôi mua ổ bánh mì giá 3 đô, nhưng nếu vượt 3 đô 30 xu thì hủy lệnh. Đặt chặt là siết điều kiện giá, đặt rộng là tăng khả năng khớp nhưng chịu rủi ro khớp ở giá tệ hơn.

Dù swap trên Jupiter, Raydium, Orca hay Meteora, mức trần này đều hiện dưới dạng phần trăm trên giao diện. Nếu số token bạn nhận về rơi xuống dưới cái sàn đó thì hủy toàn bộ. Tài liệu về giao dịch của Solana ghi rõ cả hai vế: một giao dịch thành công hoặc revert nguyên khối, và phí bị trừ trong cả hai trường hợp.

Nhiều người gộp trượt giá với price impact, nhưng hai khái niệm này trả lời hai câu hỏi khác nhau. Price impact là thứ chính lệnh của bạn gây ra cho pool, và tính được trước khi ký. Trượt giá là vùng đệm cho mọi thứ nằm ngoài tầm kiểm soát, giữa lúc thấy báo giá và lúc lệnh lên chuỗi.

Công thức nhẩm: trượt giá bằng price impact cộng thêm một khoảng đệm nhỏ. Khoảng đệm đó phụ thuộc vào sân chơi. Cặp SOL/USDC sâu chỉ cần 0,1% đến 0,2%, còn memecoin vừa ra lò có thể cần 2% đến 5%.

Phép kiểm tra này chạy trên chuỗi, không phải trong giao diện ví. Bất cứ thứ gì làm giá dịch chuyển giữa giây bạn nhìn thấy báo giá và giây lệnh khớp đều tính vào hạn mức bạn đặt.

Quá chặt thì hủy lệnh, quá rộng thì nuôi bot

Giả sử bạn đặt 0,1% cho một token đang chạy nhanh. Trong nửa giây giữa báo giá và lúc khớp, giá trôi 0,12%. Sàn của bạn vỡ và lệnh bị hủy. Chi phí thật không phải khoản phí, mà là nhịp bị lỡ.

Nếu hai phút sau giá chạy thêm 8%, quãng thời gian ngồi chỉnh con số cho đúng chính là cú vào lệnh đã mất. Phía ngược lại cũng đắt không kém.

Mở trượt giá lên 5% rồi gửi một lệnh mua 50 SOL, con bot canh pool sẽ đọc lệnh của bạn trước. Nó mua chặn phía trước để đẩy giá lên, để lệnh của bạn khớp ở mức đã bị đẩy, rồi bán ngay và bỏ túi phần chênh. Trên chuỗi, giao dịch vẫn hiện là thành công, vì giá chưa bao giờ vượt trần bạn đặt.

Bot sandwich săn đúng những lệnh lớn có trượt giá rộng. Gửi một lệnh to trên cặp sâu như SOL/USDC với trần 5% là tự thông báo rằng có tiền chờ sẵn ở đây. Trên pool sâu, giữ trần thật chặt. Và đừng bao giờ kéo lên 50%: con số đó nghĩa là khớp ở bất kỳ giá nào, và nó chưa từng đúng trong tình huống thực tế nào.

Độ sâu pool quyết định con số

Chất lỏng màu hổ phách chảy êm qua cái phễu miệng rộng bên trái và tràn ra khỏi cái phễu miệng hẹp bên phải, đối chiếu thanh khoản sâu với thanh khoản mỏng

Đừng đọc trượt giá theo kiểu tôi chịu lỗ được bao nhiêu. Câu hỏi thật là lệnh của chính bạn sẽ đẩy giá trên pool này lên bao nhiêu. Nếu lệnh mua bằng 1% số tiền đang nằm trong pool, price impact sẽ nhỏ và trần có thể giữ chặt.

Nếu bạn lấy 10% pool, đường cong giá sẽ tự đẩy lên ít nhất 10% chỉ vì lệnh của bạn. Trần phải phủ được phần đó, nếu không lệnh revert.

Trước một lệnh lớn, nhìn độ sâu và cách phân bổ holder nhanh hơn là đoán con số. Công cụ snapshot holder token cho thấy lượng token đang nằm ở đâu, còn công cụ thêm và rút thanh khoản đọc độ sâu pool ngay tại thời điểm hiện tại. Nếu chữ độ sâu còn lạ, đọc cách đọc độ sâu pool thanh khoản Solana trước.

Mức trượt giá theo từng tình huống

Các con số dưới đây là ý kiến từ thực chiến, không phải luật của giao thức. Luôn đọc kèm price impact hiện trực tiếp trên màn hình.

Tình huốngMức gợi ýVì sao
Stablecoin sang stablecoin (USDC và USDT)0,1% đến 0,3%Pool rất sâu, gần như không biến động
SOL/USDC, lệnh nhỏ tới trung bình0,5% đến 1%Pool sâu, nhưng áp lực sandwich là có thật
SOL với token cỡ vừa, ví dụ JTO1% đến 2%Thanh khoản tạm ổn, giá vẫn chạy
SOL với memecoin đã đứng được, như BONK, WIF2% đến 5%Biến động cao, độ sâu trung bình
SOL với memecoin vừa rời Pump.fun5% đến 15%Pool rất mỏng, quăng mạnh theo từng phút

Nếu vào lệnh bằng một ví, công cụ swap một ví mở sẵn ô trượt giá để bạn gõ tay thay vì để Auto chọn. Nếu đường đi có một chặng wSOL, công cụ bọc SOL thành wSOL gói trước, để chỉ còn một lần kiểm tra thay vì hai.

Route quyết định nhiều hơn chính token

Cùng một token có thể cần tới ba con số khác nhau, tùy vào nơi lệnh thật sự khớp. Mỗi route định giá bằng một cỗ máy khác nhau, nên mức hợp lý ở chỗ này thành liều lĩnh ở chỗ kia.

RouteGiá được đặt ra saoMức khởi điểmTác động ước chừng của lệnh mua 5 SOL
Pool AMM như RaydiumTỷ lệ giữa hai phía dự trữ (x nhân y bằng k)Pool sâu 0,5% đến 1%, pool mỏng 3% đến 8%Khoảng 1% nếu phía SOL giữ chừng 500 SOL, khoảng 8% nếu chỉ chừng 60 SOL
Router JupiterChia nhỏ lệnh ra nhiều pool0,3% đến 1% cho phần lớn lệnh cỡ vừaChia sang ba pool, tổng tác động có thể rơi về khoảng 0,5%
Bonding curve của Pump.funMỗi lệnh mua đẩy giá kế tiếp lên cao hơn5% đến 15%Trên curve mới, 5 SOL có thể đẩy chừng 8% đến 12%

Đi hết một ví dụ. Bạn mua cùng một token bằng 5 SOL. Qua pool Raydium sâu, giá khớp bám sát báo giá nên 1% là thoải mái. Qua Jupiter, lệnh bị chia nhỏ, impact hiển thị giảm xuống và 0,5% vẫn khớp. Nhưng nếu route đổi vào giây chót thì ước tính lệch, nên đừng đặt trượt giá về 0.

Còn với một coin vẫn đang chạy trên bonding curve, chính 5 SOL đó tự đẩy giá lên. Đặt chặt hơn mức tác động của bản thân đường cong thì phần lớn chỉ dẫn tới revert, chưa kể các lệnh mua vào trước bạn trong cùng một block đã leo đường cong sẵn rồi.

Khi coin tốt nghiệp, nó chuyển sang một pool bình thường, và coin tốt nghiệp giao dịch trên PumpSwap kể lại đoạn bàn giao đó. Khác biệt giữa các route thì nằm trong bài so sánh Jupiter, Raydium và Orca.

Chế độ Auto và cái bẫy 0,5% dùng được mọi lúc

Chế độ Auto của Jupiter đọc biến động gần đây rồi tự chọn mức trượt giá. Trên pool sâu và các cặp stablecoin, con số nó đưa ra thường hợp lý. Vấn đề nằm ở memecoin vừa chuyển sàn: Auto hay nhảy lên vùng 5% đến 15% trong khi price impact thật của lệnh chỉ 2%.

Một mức trần rộng như vậy biến bạn thành mục tiêu sandwich hấp dẫn về mặt số học. Auto không biết hai thứ: quy mô lệnh của bạn và mật độ bot trên đúng pool đó. Cách bot rình token mới nằm trong bài sniper bot hoạt động ra sao.

Câu 0,5% dùng được mọi lúc cũng vậy. Trường hợp duy nhất nó đúng là một lệnh SOL/USDC cỡ trung bình, pool sâu, route có chống MEV. Ra ngoài phạm vi đó thì nó hỏng gần như mọi nơi.

Trên memecoin, 0,5% revert. Trên một lệnh mua 100K USDC, riêng price impact của lệnh đã có thể vượt 0,5%. Trên một đợt chạy nhiều ví, nó làm nửa số ví phía sau revert.

Trước mỗi lệnh, hãy tự hỏi ba câu: tôi lấy bao nhiêu phần của pool, pool này chịu bao nhiêu áp lực bot, và tôi đang chạy bao nhiêu ví. Mức trượt giá đúng nằm trong ba câu trả lời đó.

Nhiều ví, một mức trần

Một hàng hình ví xếp nối nhau, vài cái đầu sáng rõ và những cái sau mờ dần, nằm dưới một đường cong giá đi lên từ trái sang phải

Hình dung một đợt mở bán với 200 ví cùng nhắm vào một token. Bộ điều phối swap nhiều ví nhận đúng một mức trần rồi áp cho mọi ví trong lượt chạy. Cái bẫy là pool dịch chuyển giữa ví số một và ví số hai trăm.

Đặt đủ chặt để ví số một khớp đẹp thì ví số hai trăm revert. Đặt đủ rộng để cứu ví số hai trăm thì bạn tặng luôn cơ hội sandwich cho con bot đang chờ ở ví số một.

Hai cách làm thực tế: thiết kế mức trần theo cái ví tệ nhất ở cuối lượt và chấp nhận vài ví đầu trả đắt hơn một chút, hoặc chia lượt chạy thành hai ba đợt rồi đặt lại trần theo trạng thái pool sống ở mỗi đợt.

Nếu phải mua cùng một token từ nhiều ví trong cùng một block, công cụ gộp lệnh thành bundle đóng gói toàn bộ lệnh vào một bundle duy nhất, thu hẹp khe thời gian mà bot front-run có thể dùng.

Lỗi slippage tolerance exceeded nghĩa là gì

Khi Phantom báo slippage tolerance exceeded, nghĩa là giá đã vượt qua cái sàn bạn đặt trong quãng giữa báo giá và lúc lệnh khớp. Lệnh swap làm đúng điều bạn bảo nó làm: hủy để bảo vệ bạn khỏi một mức khớp tệ hơn. Đó là hàng rào đang chạy, không phải lỗi.

Ba nguyên nhân hay gặp nhất:

  1. Pool mỏng hoặc chạy nhanh. Token mới mở thường dịch vài phần trăm mỗi block. Một mức trần kiểu stablecoin không theo kịp, nên cái sàn vỡ trước khi giao dịch xong.
  2. Báo giá cũ. Ngồi lại ở màn hình xác nhận vài giây là pool đã đi tiếp mà không chờ bạn. Làm mới báo giá rồi ký ngay.
  3. Không đủ SOL trả phí. Đây là một kiểu hỏng khác nhưng rất dễ nhầm. Nếu ví không gánh nổi phí mạng cộng phí nền tảng, giao dịch hỏng ngay ở bước mô phỏng, và ví có thể hiện ra một cảnh báo chung chung thay vì thông báo về trượt giá.

Cách sửa hiếm khi là kéo lên 50%. Nâng trần lên từng nấc cho khớp với pool, làm mới báo giá, và với những cú vào lệnh bắt buộc xong trong một block thì dùng cách chạy nguyên khối để thu hẹp khoảng giữa báo giá và lúc khớp. Tham số này được định nghĩa trong tài liệu dành cho nhà phát triển của Jupiter.

Câu hỏi thường gặp về trượt giá

Nên đặt 1% hay 5%?

Pool trả lời câu này, không phải một quy tắc chung. Trên cặp sâu và nhiều khối lượng, 0,5% đến 1% vừa khớp vừa chặn được giá xấu. Trên token mới, pool mỏng hoặc còn trên bonding curve, 1% cứ revert liên tục và vùng thực tế là 3% đến 5%. Nếu một lệnh chỉ đi được khi vượt 5%, pool đang rất mỏng, hãy thu nhỏ lệnh thay vì nới trần.

Chế độ Auto có an toàn không?

Với các lệnh thông thường trên pool sâu, Auto thường chọn một mức hợp lý. Rủi ro nằm ở token biến động mạnh hoặc pool mỏng, nơi Auto mở trần rộng hơn hẳn price impact thật của lệnh và biến bạn thành mồi sandwich dễ ăn. Khi mua token mới hoặc vào lệnh lớn, hãy tự gõ con số.

Chạy nhiều ví thì đặt mức trần thế nào?

Một mức trần áp cho mọi ví, nhưng giá trôi dần khi các ví khớp lần lượt, nên ví cuối cùng nhìn thấy mức giá tệ nhất. Hãy tính trần theo cái ví cuối đó, hoặc chia lượt chạy thành hai ba đợt và đặt lại trần từ pool sống ở mỗi đợt. Gộp các lệnh mua vào một bundle sẽ thu hẹp thêm phần trôi này.

Trượt giá khác price impact ở điểm nào?

Price impact là lực chính lệnh của bạn tạo ra trên pool, tính được trước khi ký. Trượt giá là vùng đệm cho lực do người khác tạo ra giữa báo giá và lúc khớp. Vì thế trượt giá luôn phải nằm cao hơn price impact một chút. Nếu màn hình báo impact 2% mà bạn đặt trần 0,5%, lệnh revert trước cả khi chạm tới lớp bot.

Vì sao lệnh swap cứ revert mãi?

Phần lớn rơi vào một trong ba: pool mỏng hoặc nhanh tới mức dịch vài phần trăm mỗi block, báo giá cũ vì ngồi lâu ở màn hình xác nhận, hoặc không còn đủ SOL trả phí. Trường hợp cuối chẳng liên quan gì tới trượt giá, nhưng ví có thể hiện một cảnh báo trông rất giống. Nâng trần một nấc, làm mới báo giá, rồi thử lại.

Đặt trượt giá quá cao thì chuyện gì xảy ra?

Lệnh vẫn thành công, nhưng giá khớp tệ đi. Một mức trần rộng là lời nhắn cho bot biết nó được phép đẩy giá tới đâu. Riêng 50% nghĩa là khớp ở bất kỳ giá nào, nên nó không đúng trong tình huống nào cả. Ngay cả memecoin vừa ra lò cũng không cần khoảng rộng tới mức ấy.

Con số còn lại phải chọn trước khi ký

Trượt giá không có một con số đúng duy nhất. Nó là quyết định được tính lại cho từng lệnh. Ngày bạn dán chặt mình vào một giá trị mặc định là ngày bạn hoặc ngồi trong phòng chờ, hoặc xếp hàng cho bot.

Trước khi ký còn một con số nữa phải chọn, và bài priority fee Solana nên trả bao nhiêu nói về đúng con số đó. Muốn lọc token lừa đảo ra trước khi bàn tới mức trần, hãy xem tám bước kiểm tra token Solana.

J
Tác giả
J Tools Editorial

Bài viết từ đội ngũ J tools.

Xem tất cả bài viết của J Tools Editorial →

Bài viết liên quan