Solana 多對多轉賬:錢包一對一配對
配對錢包轉賬喺 Solana 上點行:一行一筆交易,每筆 0.001 SOL,仲有寧願跳過成行都唔削減金額嘅 rent 規則。

喺 Solana 上一次過搬一大批付款有三種做法,而呢三種一直俾人溝埋一齊講。多發工具由一個錢包付俾一份名單。歸集工具將好多個錢包收埋入一個。剩低嗰種情況,前面兩種都表達唔到。
一筆多對多轉賬,令每個發送方留住自己嘅收款方。錢包 7 付俾錢包 7,第八個付俾第八個,兩者互相唔知對方存在。
聽落好似係枝節。實際上,呢個係資金只得一個出處,同四十個各自獨立嘅出處之間嘅分別。
- 一行就係一筆交易。嗰行嘅發送錢包,承擔嗰行全部開支。
- 平台費每筆轉賬 0.001 SOL,網絡費 0.000005 SOL。
- 從來未持有過該代幣嘅收款方,仲要加 0.00203928 SOL 嘅 rent 按金。
- 過唔到檢查嘅行會成行跳過,唔會將金額削落去。
批量轉賬嘅三種形態
多發工具係一對多。一個錢包,一份收款名單,一個付款方。空投要嘅就係呢種形態。
批量歸集工具係多對一。二十個錢包,一個目的地,行完之後所有餘額落喺同一處。
多對多工具係第三種形態,亦係唯一識得配對關係嗰種。第一行有第一行嘅出處,第二行係另一個出處。冇公用資金池,行同行之間亦唔會互相補位。
一行要使幾多
喺多對多轉賬入面,一行上面最多擺住三項開支,全部由嗰行嘅發送錢包承擔。冇公用嘅出資帳戶,所以一個連自己嗰行都蓋唔住嘅錢包,亦唔會向上一行借。網絡嗰項係每個簽名 5000 lamport 嘅基礎費,Solana 自己嘅手續費文檔將呢條數算得好清楚。
| 項目 | SOL 模式 | 代幣模式 |
|---|---|---|
| 平台費 | 0.001 SOL | 0.001 SOL |
| 網絡費 | 0.000005 SOL | 0.000005 SOL |
| 收款方嘅代幣帳戶 | 唔涉及 | 0.00203928 SOL,而且淨係喺嗰個收款方從未持有過呢種代幣嘅時候 |
第三行值得睇兩次,因為絆住人嘅正正係佢。將一個 SPL 代幣發去一個從未掂過佢嘅地址,等於新開一個帳戶去裝佢,而 Solana 要為呢個帳戶收一筆 rent 按金。呢筆按金大約係網絡費嘅二百倍,係平台費嘅兩倍。
一百個新收款方,呢項就佔咗成張單裡面大約 0.204 SOL,而同樣條件下平台費停喺 0.1。按金唔會銷毀:佢留喺收款方嘅代幣帳戶裡面,日後邊個關咗呢個帳戶就退返俾邊個。
被跳過嘅行
多對多喺簽名之前會行兩道檢查,兩道都係將行攔低,而唔係改動佢。
第一道係簡單算術。如果發送錢包蓋唔住自己嘅金額加手續費,再加上可能要開嘅代幣帳戶,嗰行就會打上標記,原樣留住。唔會有半截發咗出去嘅情況。
第二道古怪啲,亦值得搞清楚,因為第一次見佢好似係 bug。Solana 唔准留低一個餘額大過零、但又低過免 rent 門檻嘅帳戶。普通錢包呢個門檻係 0.00089088 SOL,出自 Solana 嘅帳戶文檔裡面嗰條公式。
將帳戶徹底清空係准許嘅。喺裡面留低 0.0005 SOL 就唔准。將錢包推入呢道罅嘅行會標成 rent dust,就咁留住唔發。
點解唔索性削少啲金額
另一條路係將金額一路削到裝得落,噉樣仲差。個數字係人自己填入去嘅。一個唔出聲就發另一個數字嘅工具,係之後再對唔到任何一張表嘅工具。
要就將餘額成筆發走,要就將金額降到剩返嗰啲越過門檻。預覽會預先講清邊幾行受影響,工具亦會喺簽任何嘢之前,用一次調用將所有目標帳戶查一次。
一行一筆交易,點解呢點緊要
多對多將每一行都做成自己獨立嘅交易,所以冧咗嗰行淨係冧自己。換成將所有嘢堆入一筆交易嘅批次,第 30 行嘅錯誤會將前面 29 行一齊帶走。
呢樣係有代價嘅:四十對就係四十個簽名同四十筆平台費。換返嚟嘅係一份可以逐行讀嘅結果。想知呢啲交易入得幾快,數字擺咗喺 Solana 優先費要俾幾多嗰篇。
幾時多對多先至係啱嘅形態
輪換錢包對大多數人嚟講係最實在嘅答案。手上一批錢包帶住唔想再帶落去嘅歷史,用錢包批量生成器整一批新嘅,然後想舊錢包 7 淨係俾錢新錢包 7,其他一律唔郁。
第二種係付款名單,付款方逐行變。幾個項目,幾個金庫,一張表。多發工具根本表達唔到,因為佢嘅出處啱啱只得一個。
第三種係快照之後嘅再分配,每個持有者由一個事先指派俾佢嘅錢包付款。分之前點讀嗰份分佈,寫咗喺代幣持倉分佈點分析裡面。
名單要點準備
多對多嘅第一趟先用兩行行一次。結果表會話返俾你聽,一行實際使咗幾多,連代幣帳戶按金一齊計埋,然後先至去發兩千行。
順手亦查一查收款方係咪已經持有呢種代幣。一半係舊持有者嘅名單,按金嗰項會直接砍一半,而喺一百行嘅規模上,佢就係成張單裡面最大嘅一個數字。
開行之前將邊個錢包付邊一行記低。行完之後再去還原呢份對應關係,比而家聽落煩好多,尤其係當發送錢包啱啱先生成、仲未有可以辨認嘅歷史嘅時候。
關於餘額最後講一句:每個發送錢包裡面留嘅錢,要比佢嗰行嘅金額多少少。掐住小數尾位配嘅話,rent 檢查會將嗰行搬開,你要重新俾錢佢,比一開頭就留返鬆動位仲慢。
名單大咗之後會變嘅嘢
十行嘅時候,上面呢啲都仲係舒服嘅道理。多對多行到兩千行,有兩件事變成真正嘅工作,而且都發生喺工具以外。
第一件係俾錢。每個發送錢包喺開行之前都要備好自己嘅金額加手續費,冇邊一行可以幫另一行墊住。即係話要先行一趟分發,通常由一個金庫出,而且寧願留鬆動位都好過掐住嚟計。
第二件係事後對數。四十行睇吓張表就得。兩千行就會想將結果匯出,同原本嗰張表逐行核對,因為被跳過嘅行喺瀏覽器裡面根本唔會出現:佢哋作為交易從未存在過。
仲有一個冇咁明顯嘅效果。如果名單裡面新收款方同舊收款方溝埋,每行成本就唔係恆定,攞頭十行計出嚟嘅平均值,會俾一個同總數唔似嘅數字。數吓有幾多個收款方要新開帳戶,淨係將呢個數乘以 0.00203928 SOL。
常見問題
呢個同將多發工具行好多次有咩分別?
多發工具每行一次,出處啱啱只得一個。四十個出處就係四十次運行,加埋四十次人手切換錢包。喺呢度係行一次,四十行。
失敗嘅行會唔會產生費用?
唔會。過唔到預檢嘅行根本唔會簽名,所以網絡費同平台費都唔會出現。
發送方同收款方可唔可以重疊?
可以。同一個錢包可以喺某一行發出、喺另一行收到。每一行各自查各自。
點解我嗰行被標成 rent dust?
因為發送錢包剩返嘅餘額會落喺零同 0.00089088 SOL 之間。將餘額成筆發走,或者將金額降低。
淨係發代幣嘅錢包又使唔使有 SOL?
要。就算搬嘅係代幣,網絡費同平台費一樣係用 SOL 俾。
配對嘅數量有冇上限?
實際攔住你嘅係準備工夫,唔係工具本身:每個發送錢包都要事先備好錢。
一句話點決定
如果張表有一欄寫住付款方,要嘅就係多對多呢種形態。如果所有行都由同一個錢包出,噉就用多發工具,俾一次而唔係四十次。若果少咗一行,先睇 rent 門檻,再去估係咪出咗 bug。關於呢個門檻,租金餘額不足點算嗰篇寫得仔細啲。


