紋波交易序列可以有間隙嗎?
我想知道具有序列號的瑞波交易是否會被接受為瑞波網路中的有效交易?
例如,如果我有一個序列號為 123 的付款 Tx,然後想創建另一個序列號為 200 的交易,它會通過嗎?
另外,我知道交易序列號不能降序,所以我無法送出序列為 100 的 Tx。這是否正確?
對於要處理的事務,它必須使用下一個可用的序列號(由account_info返回)。
如果其他有效的簽名交易的序列號太小(與先前使用的序列號匹配),則保證該交易永遠不會有效並且會產生錯誤,並且應該被接收它的伺服器丟棄。
如果其他有效的簽名交易使用的序列號(目前)太高,則該交易目前無效並會產生錯誤,但交易可能會變得有效(並且伺服器可能會保留並在那時自動嘗試應用該交易)。一旦使用了帳戶上“失去的”序列號,任何已經看到簽名交易的東西都可以重播它。此類交易被稱為進行中的交易,其結果是不確定的,直到賬戶具有包含在完全驗證分類帳中的序列號的交易(可能是僅用於消耗/推進序列號的No-OP 交易)或完全賬本序列至少與LastLedgerSequence一樣高的已驗證賬本可以看到簽名交易中指定的內容。
來自<https://ripple.com/wiki/Transactions#Use_as_a_NOP>:
當多個事務尚未完成(已知為正在進行中),並且發生本地錯誤使得有後續事務在進行中時,後續事務將暫時失敗,直到消耗本地故障使用的序列號。如果交易未包含在完全驗證的分類帳中,則該交易正在進行中,但也不能保證不包含。
…
進行中的交易稍後可能會被任何擁有它們的人重播。對於可預測性和可靠性來說,使用壞事務的序列號並重播正在進行的事務直到它們最終確定是很重要的。
並來自<https://ripple.com/wiki/Transactions#Basic_Transaction_Format>:
LastLedgerSequence(可選)
交易可以出現在其中的最高有效分類帳編號。如果指定了此編號,並且在分類帳達到指定分類帳序列號時不包含該交易,則認為該交易已失敗並且將不再有效。
所以具體來說,
例如,如果我有一個序列號為 123 的付款 Tx,然後想創建另一個序列號為 200 的交易,它會通過嗎?
直到具有序列 124 到 199 的事務通過。在此之前,伺服器將報告此類事務的“缺少序列號”錯誤。在將序列 200 的某些交易應用到您的帳戶之前,您無法知道某處的某處在他們看到您的序列 199 交易時不會重新送出您的“舊”簽名支付交易(即即使您收到錯誤交易也可能是稍後應用)。
另外,我知道交易序列號不能降序,所以我無法送出序列為 100 的 Tx。
這樣的交易總是會得到一個“過去的序列號”錯誤並且永遠不會有效。