想像你想要發起一個鏈上的投票,呼籲所有人參與這項投票。那你得先做一個網站、設計前端樣貌、撰寫後端程式碼、部署全端服務、最後將您的網址發到推特上叫大家一起來投票。然後你的投票人得點擊你分享的連結、等待瀏覽器跳轉到您的頁面、點擊右上角的按鈕連結錢包、掃視過一遍網站UI後在您的網站上操作投票。縱使這些流程現在聽起來非常正常,不是本來就應該這樣嗎?錯!現在透過Actions & Blinks,無論對開發者還是大眾來說一切都會變得更輕鬆快速。你不再需要花費大量時間設計前端,你的用戶也不再需要跳轉瀏覽器頁面,直接在看到你的貼文後一鍵點擊按鈕就可以進行鏈上交互!
什麼是Actions & Blinks呢?Solana Action (Actions) 是一種符合特定格式的API,會回傳solana transactions給使用者並讓錢包自動跳出簽名訊息,簽名後回傳的transactions就會被上傳到Solana鏈上執行。而Blockchain links (Blinks) 則是將一個Actions轉化成一個網址的技術,讓Actions可以被當作一般的網址被分享在社群媒體或聊天室中。當Phantom偵測到網頁或App中出現一個Blinks時,會立即觸發該Blinks對應到的Actions (GET request),讓網頁上原本該顯示的一串網址變成一個好看的小視窗,並且視窗中又帶有Blinks的按鈕,點擊後就會觸發該Blinks對應到的Actions (POST request),這時就會回傳一串鏈上交易讓使用者簽名執行。(如圖一)
圖一(原文在發布的時候應為:We made a ... @ZeusNetworkHQ https://dial.to/? action=solana-action:https://action-blink-example.zeusnetwork .xyz /api/actions/airdrop
但後面的網址被Actions & Blinks轉換成精美的小視窗了,所以看起來就像圖中那樣)
而為什麼Actions & Blinks可以做到這件事呢?這得從他的工作流程圖(圖二)說起:
Actions 工作流程圖(圖二)
圖中可以看到三個角色:User, Action Client, Action Provider,其中Action Client就是Phantom,而Action Provider則是該Actions開發者所架起的後端伺服器。如同前面提到的,當Action Client偵測到Blinks的出現時,就會向該Blinks對應到的Action Provider發送GET request(即圖二中紅色框),而Action Provider會回傳一個特定格式的response,這時Action Client就會根據這response將原本的連結文字轉化成精美的視窗(即圖二中黃色框)。而在這些視窗中可能會有可以讓使用者點擊的按鈕,當使用者點擊這些按鈕時,Action Client向對應到的Action Provider發送POST request(即圖二中藍色框)在Action Provider收到傳來的訊息後,會執行POST的程式碼,將一包待簽名的transaction回傳給Action Client,這時Action Client就會跳出簽名通知(即圖二中綠色框)最後當使用者簽名完畢後這筆被打包的交易就會送到Solana鏈上被執行(即圖二中紫色框)程式碼的實踐請見我的另一篇文章。
但其實Action Client並不會針對所有的Blinks都有反應,目前(2024/08)想要成功在推特上顯示的Blinks必須經過dialect的審核。Dialect是發明Actions & Blinks的公司,因此目前必須到這裡提交您已經部署的Blinks連結,等待幾天收到通過審核的信後才行如果過程中有任何問題都可以加入他們的Discord發起一個ticket向他們回報,他們的回覆蠻快的,我當時遇到的問題是收到審核通過信但在推特上依然無法顯示Blinks,回報問題後三天內就解決了。
雖然一切聽起來都很完美,但我認為還是有一個小問題就是這個服務目前依然有過於中心化的問題,就是在必須通過dialect審核的這部分,如果dialect就是不想讓你的Blinks被大家看到,那就無法顯示在推特上,期待之後能夠有更去中心化的模式來支持Blinks這個技術,讓所有人都能更順利快速的建立起屬於自己的Blinks!