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

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


