區塊鏈應用如何實現資金盤分紅

2021-09-27 01:32:25 字數 3841 閱讀 3566

目前大多數去中心化應用都具有分紅功能,因為分紅能夠幫助應用吸引新使用者加入,增強老使用者粘性。不同於不斷抬高售價的簡單資金盤功能,分紅功能實現比較複雜。本文主要講解目前流行的資金盤分紅功能,以及如何實現。

分紅就是通過已投入的資金來對後流入資金的收取紅利。一般會定義分紅比例,每筆流入資金會拿出分紅比例的金額最為分紅,放入分紅池。這筆資金由當時所有已有資金平均分配。這樣,先投入的資金,除了獲得應用本身提供的價值為,還可以源源不斷的獲得後來資金的紅利,越早投入收益越大,極大地提高了使用者加入的積極性。乙個典型的例子就是eos曾經的現象級應用 - 畫素大師。

應用可以接受多個使用者的資金,每個使用者可以多次投入資金。每筆投資都應平均分配給當時已存的資金,使用者的每筆投資享受的紅利開始時刻都不相同。下面舉例說明這個過程。

次序使用者

投入金額

累計投入金額

分紅金額

使用者1累計投入額

使用者2累計投入額

使用者3累計投入額

使用者1本次分紅額

使用者2本次分紅額

使用者3本次分紅額11

100100

1010000

10002

2100

20010

100100

055033

200400

20100

100200

551042

100500

10100

200200

24453

300800

30100

200500

3.757.518.7561

2001000

20300

200500

641073

2501250

25300

200750

641582

2501500

25300

450750

57.512.5

1500

15042.75

3770.25

由上表可見,用於使用者a投入資金較早,雖然他的投入金額比使用者b少,但卻得到更多的分紅金額。

當使用者數眾多,交易頻繁時,計算每筆交易分紅變得非常困難。即使在中心化系統中,完成它也需要耗費很多資源,更不要說要在去中心化的區塊鏈應用中實現。目前區塊鏈操作無法支援複雜運算,否則會嚴重影響出塊速度和系統響應。

實現區塊鏈應用分紅關鍵有兩點

變推為拉- 採用拉代替推模式,讓使用者主動提取分紅,而非應用發放分紅給使用者。

考慮每筆投入- 針對每筆投入資金計算全域性分紅,而不計算每個使用者分紅。但由於每筆金額只能享受它後面資金的分紅,這裡的重點是需要扣除它前面的全域性分紅值。

具體演算法如下

定義總投入金額total_amount,分紅比例profit_percent,以及總分紅金額profit_amount定義單位分紅值profit_per_amount,即profit_amount / total_amount的單位分紅額度。

定義使用者投入金額user_amount,此值基於使用者,每個使用者的可能都不同。

定義使用者的分紅扣除金額user_profit_mask, 此值基於使用者,每個使用者的可能都不同。

每次使用者投入資金後,假設投入資金為amount1,做如下操作

5.1 計算總投入金額,total_amount = total_amount + amount1

5.2 計算總分紅值,profit_amount = profit_amount + amount1 * profit_percent

5.3 計算本次投入的扣除分紅值,

user_profit_mask = user_profit_mask + amount1 * profit_per_amount

5.4 計算單位分紅值,profit_per_amount = profit_per_amount + profit_amount / total_amount

5.5 計算使用者投入金額,user_amount = user_amount + amount1使用者提取分紅時,做如下操作

6.1 計算使用者分紅值,user_profit_amount = user_amount * profit_per_amount - user_profit_mask

6.2 如果值大於0,將其轉賬給使用者,同時更新分紅扣除值,

user_profit_mask = user_profit_mask + user_profit_amount

根據上面例子計算結果如下表所示,紅色表示每筆資金投入後計算的使用者資料

次序使用者

投入金額

累計投入金額

分紅金額

單位分紅值

使用者1累計投入額

使用者2累計投入額

使用者3累計投入額

使用者1扣除分紅額

使用者2扣除分紅額

使用者3扣除分紅額11

100100

100.10000000

100000

0022

100200

100.15000000

10010000

10033

200400

200.20000000

100100

2000

103042

100500

100.22000000

100200

2000

303053

300800

300.25750000

100200

5000

309661

2001000

200.27750000

300200

50051.530967

3250

1250

250.29750000

300200

75051.5

30165.37582

2501500

250.31416667

300450

75051.5

104.375165.375

使用者1分紅42.75

使用者2分紅37

使用者3分紅70.25

從上表可以看出,每筆資金只需計算和投入使用者相關的資料,最終結果完全正確。

區塊鏈應用場景實現 區塊鏈技術應用開發解決方案

區塊鏈支援下的位元幣已安全執行近七年,足以驗證該技術的可靠性。區塊鏈技術可以在保障內容不被竄改的前提下實現資料的去中心化儲存,可提公升資料安全性 降低資料維護成本 推動組織智慧型化發展,未來有望在銀行 審計 物聯網 醫療 公證 版權管理等領域廣泛應用。下面主要談談區塊鏈技術應用開發解決方案可以實現的...

區塊鏈如何可以實現追本溯源?

溯源一直被認為是區塊鏈行業最先落地的一批應用場景之一,傳統溯源行業歷來存在著資料儲存中心化 資料孤島 竄貨等諸多問題,又因行業本身極度分散化使得溯源難度極高,區塊鏈的出現似乎為溯源行業帶來了一片曙光,其資料的不可篡改 可溯源的特性與溯源行業極其契合,利用區塊鏈技術,我們將建立起一套數字可信體系從而實...

區塊鏈web應用編寫實現控制器

package controller 這個包名是專案結構的資料夾 import 這個是整個專案的結構體檔案 bytes encoding json 這個便是整個專案檔案的sdk了sdk編寫可參照之前文章 這裡是公司錄入乙個資產 func createassets ctx gin.context ma...