項目專屬RPC
介紹
Scutum的項目專屬RPC可以為Ethereum和BSC上的DEX、Bot、Wallet和DApp等訂單流項目提供MEV保護,支持返利至項目方用戶地址或項目方指定地址。
相比錢包用戶通用RPC,項目專屬RPC會為每個訂單流項目方提供專屬的RPC URL,支持可視化自定義RPC域名、交易披露、返利地址和Revert保護等參數,便於項目方低成本快速集成RPC。
如何將RPC集成到項目中
1. 配置RPC
在blockrazor.io完成註冊並登錄控制台
在Scutum模塊下點擊RPC配置頁,查看專屬RPC的配置信息
點擊 更新,進入配置更新頁,根據需求調整參數,參數含義見如下表格
默認RPC URL
每個賬號默認自動生成1個Ethereum RPC和1個BSC RPC。默認RPC由系統自動生成,URL無法修改
自定義RPC URL
自定義RPC URL支持修改三級域名,可用於向項目的終端用戶推廣,引導用戶在錢包中添加自定義RPC
披露
系統默認將交易的hash和logs分享給Searcher,分享字段越多獲得返利的可能性越大,請在評估交易隱私披露必要性後謹慎操作
返利地址
默認返利地址為tx.origin,即會將返利返給交易的發起者,可修改為固定返利地址(EOA)
Revert保護
默認開revert保護,如交易在實際執行中發現revert,則不會納入區塊。為確保快速納入區塊,建議在以太坊的交易中設置一定的priority fee。
點擊 確認,系統將實時更新RPC配置
2.集成RPC
找到配置文件或代碼:打開項目工程,在DApp項目中找到配置RPC節點的文件或代碼段。這可能是一個配置文件,如.env、config.js、truffle-config.js等,或者是直接在代碼中硬編碼
修改RPC URL:將配置文件或代碼中的RPC URL修改為Scutum RPC URL
測試連接:更改後,在本地運行DApp或相應的測試腳本來確保新的RPC URL可以正常工作,可以使用如
web3.eth.net.isListening()
或ethers.provider.pollingInterval
等方法來檢查連接是否成功部署更新:如測試通過,可以將變更部署至生產環境
// 引入Web3
const Web3 = require('web3');
// 創建web3實例並連接到RPC URL
const web3 = new Web3('https://ethereum-rpc.publicnode.com'); // 可在此处将RPC URL替换为Scutum RPC URL
// 檢查連接
web3.eth.net.isListening()
.then((listening) => {
console.log('Web3 connected: ', listening);
})
.catch((err) => {
console.error('Web3 connection error: ', err);
});
3. 查詢交易
在Scutum模塊下點擊【返利】查看返利情況,點擊【交易】查看項目交易情況
eth_sendRawTransaction
Scutum的eth_sendRawTransaction
兼容原生的JSON-RPC方法,无需进行额外修改。如需修改交易披露、返利地址和revert保护等参数,可前往控制台配置专属RPC。
請求參數
-
是
bytes
"0xd46e……445675"
raw tx
請求示例
curl -X POST -H "Content-Type: application/json" --data '{
"id": 1,
"jsonrpc": "2.0",
"method": "eth_sendRawTransaction",
"params": [
"0xd46e……445675"
]
}' https://bsc.blockrazor.xyz
返回示例
正常
{
"id":1,
"jsonrpc": "2.0",
"result": "0xe670……527331"
}
異常
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32000,
"message": "rlp: element is larger than containing list"
}
}
eth_sendMevBundle
訂單流項目方可以向項目專屬RPC發送bundle,方法名為eth_sendMevBundle
。
在BSC中,eth_sendMevBundle
允許在bundle中包含0 gwei的交易,但bundle中交易(public mempool中的交易除外)的平均gasPrice仍需不小於0.1 gwei。由於BSC的多個頭部builder對該模式具有倾向性,建議構建0 gwei的交易。
請求參數
bundle
txs
是
[]bytes
[ "0xf84a……e54284" ]
raw txs,最多允許設置50筆
revertingTxHashes
否
[]hash
["0x1f23……0abb1e"]
允許revert的交易哈希,是txs的子集
maxBlockNumber
是
uint64
39177941
該bundle有效的最大區塊號
refundAddress
否
address
"0x9abae1b279a4be25aeae49a33e807cdd3ccffa0c"
如hint中存在值為true的交易字段,則需要設置本字段,地址需为EOA
hint
hint針對txs中的交易設置披露信息,如果設為true則視為披露該交易字段,false視為不披露該交易字段,如不設置,則默認為false。
hash
否
bool
true
交易哈希
from
否
bool
false
交易的發起方地址
to
否
bool
false
交易的接收方地址
value
否
bool
false
交易value
nonce
否
bool
false
交易nonce
calldata
否
bool
false
交易calldata
functionSelector
否
bool
false
合約函數簽名哈希的前4個字節
logs
否
bool
true
交易在執行過程中拋出的事件日誌(該字段聯動設置是否披露狀態對象的數據變化)
請求示例
curl -X POST -H "Content-Type: application/json" --data '{
"id": 1
"jsonrpc": "2.0",
"method": "eth_sendMevBundle",
"params": [{
"txs": ["0xf84a8080808080808193a0437a5584216e68d1ff5bd7803161865e058f9bf4637fd1391213eac03ae64444a00df12bffe475d5dd8cc1544b72ee280471f1dcb5173827ba41eb25cfc3e54284"],
"revertingTxHashes": [],
"maxBlockNumber": 39177941,
"hint": {
"hash": true,
"from": false,
"to": false,
"value": false,
"nonce": false,
"calldata": false,
"functionSelector": false,
"logs": true
},
"refundAddress": "0x9abae1b279a4be25aeae49a33e807cdd3ccffa0c"
}]
}'<ETH_NODE_URL>
返回示例
正常
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x11111111..."
}
異常
{
"jsonrpc": "2.0",
"id": 1,
"jsonerror": {
"code": -38000,
"message": "nonce too low: address 0x9Abae1b279A4Be25AEaE49a33e807cDd3cCFFa0C, tx: 0 state: 45"
}
}
Last updated