Claimable Balance

 

Pi Network的鎖倉是透過「Claimable Balance」功能來實現。

 

Claimable Balance把付款“拆分”為兩部分,發送的帳戶只管發送,接收的帳戶只管接收。

 

聽起來好像怪怪的,付款不就是這樣嗎?不然還要怎樣?不!還真的不是這樣呢,一般付款是發送和接收同時發生,而不是分成兩個步驟。

 

而且在Stellar網路上的標準支付中,你若要發送資產給別人,除了原生代幣XLM以外,接收者都必須為你發送的資產啟用信任線(Trustline)。在Pi網路中,無須信任的資產則是Pi幣。

 

當進行標準付款但未啟用信任線時,發送人將收到錯誤消息,因為網路不允許他們發送付款。儘管這對發送人來說很麻煩,因為必須要求每位接收者啟用資產信任線,但卻是一項重要的安全功能,這意味著使用者不會被迫接受他們不想要的資產,錢包不會被不信任的垃圾資產淹沒。

 

Claimable Balance可以幫助避免這些問題,並將錢包的安全性掌握在你手中。Claimable Balance將付款拆成「發送」與「接收」兩部分,這意味著有人可以向你發送一筆你沒有啟用信任線的資產的付款,而你再來決定是否要接受它。當接受時,信任線會自動建立。

 

P.S. Claimable Balance仍然會產生新的問題,如果沒有人接受資產,它將永遠保留在區塊上,佔用空間、造成網路效能下降。這裡有一篇討論:

https://groups.google.com/g/stellar-dev/c/BpLxedn4Gpg

 

Claimable Balance如何操作?

 

Claimable Balance將付款分為兩部分:

 

l   1部分:發送賬戶使用Create Claimable Balance操作建立付款(建立ClaimableBalanceEntry),本質上是在鏈上進行質押。

 

帳戶可以通過建立一個ClaimableBalanceEntry來啟動「發送」,將指定數量的資產移動到ClaimableBalanceEntry內,並且指定數個Claimant(包含接收帳戶及時間限制)

 

(請注意,一旦您建立了ClaimableBalanceEntry,您將無法再次使用這些資產,除非您已將自己設置為申領人之一。)

 

Claimable Balance可以設計多種時間限制,例如:

1.      使用相對時間 - Claimable Balance建立後,必須經過多少秒才能執行Claim(申領)Pi就是利用這種方式來鎖倉。

2.      使用絕對時間 - 設定可以執行Claim的最後期限。

3.      要滿足多個條件 - 如必須經過X分鐘,並且需要在Y日期之前執行Claim

4.      只要滿足其中一個條件 - X分鐘過去 "" Y日期之後執行Claim

5.      在特定情況下不能執行Claim - 如在經過X時間之前不能執行Claim

 

l   2部分:目標賬戶或申領人使用Claim Claimable Balance操作接受ClaimableBalanceEntry

 

只要知道Balance ID,任何帳戶都能執行Claim,但需要在鏈上進行Claimant比對,不只帳戶的地址必須符合,時間限制也必須符合,才可以接收資產。

 

Claimable Balance只能被申領一次。如果您列出了10Claimant,那麼首先Claim成功的人將收到全部資產。一旦Claim成功,ClaimableBalanceEntry也會從網路中被刪除。

 

鏈上資料說明

 

來看看GBIKRRKXD53UHTOYEMVW4XZN6S73ONFBMPODVOX3YRYNWSZDDRIGKUSJ這個帳戶的例子好了。為什麼看他呢?因為他在2022/7/15 18:05時,於馬來西亞用18.5Pi換了一台總價5800馬幣的Intel i7-12700電腦,這消息可是傳遍了整個Pi圈。

 

https://minepi.com/blockexplorer/tx/2943d3f5a5fc810e366ca9a627ef1f85a9c25bc0e3585215bc7304b53cb8855c

 

GABT是專門為先鋒建立錢包(帳戶)以及鎖倉的帳戶。當它建立GBIK之後,也執行了兩次Create Claimable Balance操作,可以點右邊JSON看內容(從下往上看)

 

第一個JSON

https://api.mainnet.minepi.com/operations/14754277813653526

 

第二個JSON

https://api.mainnet.minepi.com/operations/14754277813653527

 

由以上訊息可以發現幾件事:

1.      遷移主網的14天等待期也是透過Claimable Balance來實現。

2.      官方有一個GC5R帳戶,在這14天等待期內,如果發現有問題,可以透過它來收回Pi幣。

3.      這個案例是鎖倉50%,鎖倉時間1年。但為什麼扣除14天等待期後,不是365天,而是363.7天?這是為了避免許多先鋒同時釋放他們的鎖倉,所以有一個提早結束的隨機天數。鎖1年的,最多可能提前1個月結束鎖倉。

 

再來是看Claim Claimable Balance操作

https://minepi.com/blockexplorer/tx/bfe5445d5e9dc1ee85637c834e03f71a8c6ca5e5a75343f7e798c18f474add41

 

JSON內容

https://api.mainnet.minepi.com/operations/15742790306639873

 

重點是怎麼知道Balance ID?它並不會隨著Create Claimable Balance的交易回應一起傳回來,但我們仍可透過一些搜索條件(例如來源帳戶或申領人地址)來搜索Balance ID。可是目前Pi Block Explorer並沒有提供搜尋Balance ID的功能,應該是CT幫我們把Balance ID寫在錢包的遷移功能裡了。

 

後記

 

台灣時間2022/10/14的晚上,突然有大量先鋒通過KYC,也執行了主網清單第7項「遷移到主網」。但隔天卻發現KYC狀態被退回,原來是CT搞烏龍,不小心把一大群先鋒的KYC狀態改為完成,發現搞錯後,又改了回來。

 

但是如果已經執行了「遷移到主網」,會發生什麼事?

 

首先,錢包已經建立了(裡面只有1 Pi),這是不可逆的,除非CT放大絕招--回溯區塊(代價是這幾天正常的交易也都消失),否則錢包建了就是建了,已經可以接受別人轉Pi幣進來,有Pi幣後當然也可以用來支付。

 

第二,2022/10/26鏈上發現GC5R帳戶頻繁的執行Claim Claimable Balance操作,就是CT趁著14天的等待期在領回這些Pi幣。

 

P.S.我不會把這個情況稱為「回溯」,因為打從一開始,這些Pi幣就沒進到先鋒的錢包內,區塊鏈上的資料並沒有被修改。

 

回首頁