試想一下。
你想到一個不錯的區塊鏈創業想法,通過SAFT(Simple Agreement for Future Tokens,未來代幣簡單協議)融到了風投融資。你開始研究決定釋放安排和代幣價值。你不想流動性釋放的太快,所以你為種子輪投資者設定了3年的釋放期,私募輪設定了32個月的釋放期。你要怎樣安全、高效地把這些代幣釋放到他們的錢包中呢
一個種常見的做法,是項目方創建一個代幣領取網站,讓投資者可以隨著釋放節奏領取他們的代幣。這一做法的好處是由投資者支付交易費用。不過,如果直接每天發送給投資者將會更加高效,但經濟上這種方法可行嗎?讓我們一起來討論下。
以Only1為例,我們有超過900個地址在3年的時間中每天進行代幣發放。如果我們在以太坊上來進行這些交易,保守地假設10美元的交易費,單單在交易費上我們也要花費約1000萬美元。在Solana,交易費為0.00025美元,總費用只有250美元。這正是為何未來的Web 3.0社交和元宇宙需要建立在如Solana這樣的可擴展區塊鏈上的原因。
通過Solana程序進行分發
或許一個最為顯而易見的選擇是,部署一個Solana程序,由其來向白名單的地址轉賬釋放的代幣。在此基礎上,你還需要一個簡單的一鍵式頁面來實現領取功能。
用戶將支付交易費,但你需要支付部署費和任何釋放計劃調整產生的更新費用(新輪次、錢包地址變更等)。
這裡的主要缺點是,如果你的釋放計劃非常複雜,比如像下圖這樣,那麼這一解決方案並不靈活。
從左到右、從下向上文字依次為:種子輪、鎖定6個月以後、釋放代幣量
另一個你可能面臨的問題會在你的投資者數量非常大的時候出現。例如,如果你的投資者之一是一個DAO,則意味著近一千個錢包。這時候,你需要考慮你是否會針對他們每一個人調整釋放安排,如果情況有所變動(例如地址),更新的流程將是怎樣的。
通過多簽名申領
另一種選擇可能更靈活,那就是通過授權者的簽名實現領取過程。釋放錢包的私鑰存儲在一個服務器上(最好是通過AWS Secret Manager這樣的密碼存儲解決方案)。用戶創建一筆交易領取代幣,服務器驗證這一特定用戶是否有資格進行這一交易。如果有,服務器則用釋放錢包秘鑰簽署這一交易。在這一情景下,交易有兩重簽名,用戶被指定為費用支付方。
這一方法讓我們在創建不同的釋放安排和場景時有更多靈活性。但由於交易需要在不同的電腦上進行簽署,你需要處理耐久隨機數(Durable Nonce),而這需要另一個並不輕鬆的解決方案。
從左到右文字依次是:用戶簽署一筆交易->服務器APP檢查用戶是否有資格進行這筆交易->服務器通過釋放錢包私鑰簽署交易->服務器發送交易給Solana
空投
Solana非常好。它速度快,並且發送交易成本極低,而且也具有每天都進行交易的穩定性。你可能認為如果你用空投的方式進行分發會需要支付很多交易費。讓我們看一看Only1釋放錢包的一次數據吧。
圖上文字:您花費0.43077◎的Solana交易費。目前相當於97.74美元。您使用了43077000 Lamport的費用,發送了86091筆交易,每筆交易平均費用為5004 Lamport。其中5個交易失敗了,消耗了您0.00005◎(0.01美元)。
如果你想要查看你的錢包的類似數據,你可以訪問https://fees.solar/ 。
8.6萬筆交易只花費了97美元。這是非常多的交易!還好我們建立在Solana上。從時間上來看,基礎部署只需要花費30分鐘的時間。如果你想要採用空投的方法,一個需要注意的問題是:
1. 對所有信息進行日誌記錄。
2. 分批發送。這樣做,如果你是用的是官方主網-Beta末端你不會被封掉,而所有接收方也能同時收到交易(10分鐘內)。
3. 不要使用WebSockets等待確認。
4. 交易發送後檢查幾分鐘,交易是否確認。如果沒有,再次發送。
5. 設置好讓其按照一定安排在雲端運行:比如一天/週/月一次。理想的情況是,部署以後你就不需要再動它了。
6. 在你開始執行前,檢查下從你的釋放錢包發送的區塊鏈上此前確認的交易。
7. 保留變更錢包地址的選擇,讓程序可以整合多個接收地址,將其視為一個。
8. 設置一個Slack/Telegram機器人,通知這一操作的狀態,告知釋放錢包資金是否已用盡。
空投對於Only1來說是明顯更好的方式,因為其具有靈活性,易於調整。但是每個項目都有所不同,對於我們而言非常好的方案可能不適用於你的項目。
如果你有任何問題,或想要分享你的經驗,歡迎給我們留言。
感謝閱讀!
關於Dan Lilienblum,Only1首席技術官
此前為幣安和Dash高級軟件工程師。擁有數學碩士學位,以往從事數學建模。隨後加入和推出了多個初創早期項目。自2017年進入加密領域。