提交交易
Fountainhead 提供为每位用户提供独立的 SWQoS 端口,帮助用户交易更快的上链。
注意:暂时并没有防夹保护。
提交交易的基本步骤如下:
1. 选择提交的区域
Fountainhead 目前在AMS,FRA和NY三个地区提供接收用户交易的接口,你需要选择最近的区域来提交,分别如下:
具体域名请参考 用户后台 的分配域名(以下是示例域名)
- https://landing-ams.fountainhead.land
- https://landing-fra.fountainhead.land
- https://landing-ny.fountainhead.land
在一些特殊情况下,如狙击,你需要同时提交交易到这三个接口。
2. 在交易中添加一条转账指令
Fountainhead 收取最低0.001 SOL的tip作为加速费用,你需要在交易中添加一条如下的转账指令:
// typescript
// legacy
const transaction = new Transaction();
const toAddress = new PublicKey('Landw8nr6tjdZr1wwNHDqAY9T5jpB1fcbZzzqath3o1');
const instruction = SystemProgram.transfer({
fromPubkey: fromWallet.publicKey,
toPubkey: toAddress,
lamports: 0.001 * 1e9, // 0.001 SOL
});
transaction.add(instruction);
建议将这条转账指令作为交易的第一条指令,这将会对你交易上链速度有所帮助。
只有转账到以下地址的交易会被正确接收:
- Land5LvHLLtucKoMVMGRZLJkW1ix6grAwXckxTYtddK
- Land9fkdtUScHh8PPsNCU9hWMDPGufReqPJbEJXPWQi
- Land9GpvNq3PaHEBpGP375SkiA2CYiDwmdMV7vNi5FK
- LandHm73CRBQ27CPixDbziuoAT4XhPozCBk7X4qkaZj
- LandjpLZM3Kbon4DfEiR3mjDEpB8bTVoZwrZLq4mVvX
- LandmT7iTEY1wyoxDPiN6WwES17DtFCVtQWrM5kdKFD
- LandtvZUb6ePyMBoPnn3mknNZvDxNGgDbHytbdh4MdF
- LandUP5rRXzCHFdEH8XMT5hzSBDG7acgqRMQQzpN3jQ
- LandW5wqpobM3V67n9qJMofsbgaukbp2SY4v4qgoAPs
- Landw8nr6tjdZr1wwNHDqAY9T5jpB1fcbZzzqath3oc
3. 添加优先费
SWQoS是一个快速通道,在交易中添加合理的优先费可以使得你的交易更快的被确认。优先费的为 CU*每CU价格
,价格单位为microLamports。
1 SOL = 1e9 Lamports 1 Lamports = 1e6 microLamports
以下是一个0.01 SOL 优先费的示例,CU为200000(默认),每CU价格为50000000 microLamports:
// typescript
// legacy
// CU数量
const computeUnitLimitInstruction = ComputeBudgetProgram.setComputeUnitLimit({
units: 200000,
});
transaction.add(computeUnitLimitInstruction);
// CU价格
const computeUnitPriceInstruction = ComputeBudgetProgram.setComputeUnitPrice({
microLamports: 50*1e6
});
transaction.add(computeUnitPriceInstruction);
4. 提交交易
Fountainhead SWQoS 接口仅接收 base64 编码的交易,示例如下:
// post
curl https://landing-ams.fountainhead.land -s -X POST -H "Content-Type: application/json" -d '
{
"id": 1,
"jsonrpc": "2.0",
"method": "sendTransaction",
"params": [
"<base64Transaction>",
{
"encoding": "base64"
}
]
}'
// typescript
// legacy
const connection = new Connection("https://landing-ams.fountainhead.land", "processed");
const rawTransaction = transaction.serialize();
const base64Transaction = rawTransaction.toString('base64');
const signature = await connection.sendEncodedTransaction(base64Transaction, {
skipPreflight: true
});
如果你想让交易更快的上链,推荐使用 "processed" 和 "skipPreflight: true " 参数。
5. 白名单和速率限制
我们使用白名单和请求速率限制的方法来管理。白名单可以在Fountainhead后台自行添加,速率限制可以联系Fountainhead工作人员根据用量定制。