アルゴランド報酬 ー 技術概要
ここでは、アルゴランド・ソースコードに報酬モデルがどのように実装されているのか、そしてそれがトークンホルダーにどのように作用するのかについて説明することを目的としています。報酬に対する考え方や金額に関する質問については、アルゴランド財団ウェブサイトをご覧ください。
アルゴランド・インク(Algorand Inc)社はアルゴランド・ブロックチェーン・プロトコルを開発した当事者ですので、報酬メカニズムがどのように実装されたかについての洞察を提供するユニークな立場にあります。ここでは、報酬の計算方法、報酬の支払い方法、報酬データの表示方法、およびいくつかの実務的な事柄について説明します。
定義
-
最小獲得単位(MEU:Minimum Earning Unit):報酬を獲得する資格を得るためにユーザーのアドレスに保有されている必要のあるステークの量。現在のMEUは1 Algoです。
-
ユーザー獲得単位(UEU:User Earning Units):ユーザーのステークをMEUで割って計算される分離数値。
-
合計獲得単位(TEU:Total Earning Units):システム内のすべてのUEUを合計することにより計算される離散数値。
-
報酬プール:報酬を支払うためだけに使用されるアルゴランドのアドレス(737777777777777777777777777777777777777777777777777UFEJ2CI)にあるステークの量。アルゴランド財団はこのアドレスに資金を提供する責任があります。
-
報酬期間:ブロック報酬計算間のブロック数。各報酬期間中のブロックごとの報酬は、新しい報酬期間を開始するために再計算されるまで固定されます。現在、報酬期間は50万ブロックに設定されています。
概要
-
1 MEU以上を含むすべてのアドレスに報酬が与えられます。
-
アルゴランド財団は、特定の報酬期間に一定量のトークンを報酬プールに預けます(https://algorand.foundation/token-dynamicsを参照)。
-
報酬プールのトークンの数を報酬期間のブロック数で割って、報酬期間のブロックごとの固定報酬額を決定します。
-
各ブロックがブロックチェーンに書き込まれると、ブロックごとの報酬額は、合計ステークと比較した各自のステークの量に基づいて、すべてのトークン所有者に分配されます。
-
ブロックごとの報酬額の個人シェアは、トークンの獲得または喪失に基づいて変わります。
-
これらの報酬はアルゴランド・ネットワークに蓄積され、特定のアカウントに関係する取引が確認された際に、その特定のアカウントによって請求されます。取引に関係するアドレスは、送信者、受信者、およびCloseRemainderToアドレス(存在する場合)です。
報酬の計算方法
ブロックごとの固定報酬は、「報酬プール/報酬期間」として計算されます。
*この計算は、報酬期間の開始時に一度だけ行われることに注意してください。
TEUは、各ブロックのシステム内のすべてのUEUを合計することにより、ブロックごとに計算されます。
各ブロックの各ユーザーの報酬は、「UEU/TEU」x ブロックごとの固定報酬として計算されます。この計算は、アカウント残高の変化を考慮して、すべてのユーザーのブロックごとに実行されます。
報酬の分配方法
Algoの分割可能な最小単位はmicroAlgo(10 ^ -6)です。ブロックごとに報酬を計算しますが、そのブロックの報酬からfull microAlgoを獲得しないMEUのアカウントがあるブロックが出てきます。したがって、アルゴランド・プロトコルは、MEUが1 full microAlgoの報酬を獲得するとすぐに、アカウントの保留中の報酬に追加します。前のブロックで分配されるはずだったものの、報酬額がmicroAlgoより少なかったため分配されなかった報酬を追跡するために、ブロックヘッダーは「frac」値を維持します。前のブロックのfrac値は、ブロックによって付与された報酬に加算されるため、最終的には、これらの小さな残りの報酬でも分配されることになります。
報酬の配布時期: アルゴランド・プロトコルは、すべてのブロックで報酬を計算しますが、MEUがfull micro-Algoを獲得して、対象となるすべてのアカウントに報酬を追加できるようになるまで、数ブロックかかる場合があります。配布時期は、システム内のTEUの関数です。すべてのトークンが流通している場合、TEUは最大10B(100億)になります。各ブロックで20 Algoが報酬として配布されると仮定すると、獲得単位ごとに1 microAlgoを蓄積するには500ブロックが必要です。5秒ごとにブロックが生成されると、500 x 5秒= 41分ごとに報酬が支払われることになります。
例:アルゴランド報酬プロトコルの簡単な例を見てみましょう。
TEUが10M(1,000万)であり、各ブロックが1 Algoを報酬として分配すると仮定します。
1 Algo/10MはmicroAlgoより小さいため、ヘッダーの報酬値は最初は増加しません。代わりに、最初の各9ブロックについて、ヘッダーに記録されたfrac値が0から9に増加します。10番目のブロックでは、10 Algoが実行されます(「frac」ヘッダーから9 Algo、前のブロックからの残りと10個目のブロックの報酬1 Algo)。したがって、10番目のブロックのブロックヘッダーには、「獲得」値が1に設定されます。これは、すべての獲得単位が1 microAlgoを獲得することを意味します。報酬残高がない場合、「frac」値は0に設定されます。
アルゴランド・ブロックチェーンからの報酬データの引出し方
各ブロックには次の値が含まれ、SDK、curl、またはREST APIを使用して照会できます(たとえば、/ v1 / block / {round})。
-
報酬:ジェネシス以来獲得したMEUあたりのmicroAlgoの量。
-
レート:そのブロックの報酬総額。
-
Frac:Algoの分割可能な最小単位はmicroAlgae(10 ^ -6)です。ただし、ブロックごとに報酬を計算するため、MEUのアカウントがfull microAlgoを獲得できない場合があります。この値は、full microAlgoに達してユーザーに支払われまでその数を保持します。
アカウントの保留中の報酬、請求された報酬、および残高の詳細は照会できます。これは、SDKS、curl、またはREST APIを使用して実行できます。これらはすべて、RESTパス/ v1 / account / {address}を使用します。
アカウントを照会すると、4つの報酬と残高関連の値が見つかります。
-
Amount:ユーザーの残高+未請求の保留中の報酬を示す数値。
-
Amountwithoutpendingrewards:この数値は、未請求の保留中報酬のないユーザーの残高を示します。
-
Pendingrewards:この数は、未請求の保留中報酬を示します。
-
Rewards:この数は、このアカウントが時間の経過とともに獲得した報酬の合計を示します。
取引が発生すると報酬が請求されるため、その取引から請求された報酬もクエリに使用できます。これは、SDK、curl、またはREST API(/ v1 / account / {address} / transaction / {txid}など)を使用して実行できます。
取引を照会すると、3つの報酬関連値が見つかります。
-
closerewards(オプション):整数CloseRewardsは、この取引の一部としてCloseRemainderToアカウントに適用される未請求の保留中の報酬の量です。形式:uint64
-
torewards(オプション):整数ToRewardsは、この取引の一部としてToアカウントに適用される未請求の保留中の報酬の量です。形式:uint64
-
fromrewards(オプション):整数FromRewardsは、この取引の一部としてFromアカウントに適用される保留中の報酬の量です。形式:uint64
請求されていない保留中の報酬は、アドレスが取引のTo、From、またはCloseパラメーターに含まれている場合、そのアドレスによって請求されます。つまり、最初に未請求の保留中報酬を請求せずに取引することは不可能です。請求すべき未請求の保留中報酬がある場合、それらは取引に記録され、その取引を照会すると利用可能になります。
ユーザー向けの報酬FAQについては、https://algorand.foundation/rewards-faqをご参照下ださい。
Algorand Inc.およびその関連会社は、アルゴランド財団とは別の独立した組織です。 Algorand Inc.は現在、ブロックチェーン・プロトコルの開発に関してアルゴランド財団にサービスを提供しています。
https://www.algorand.com/resources/blog/rewards-technical-overview