最終更新:
編集

AccountRoot

[ソース]

AccountRootオブジェクトタイプは、1つのアカウント、そのアカウントの設定、XRP残高を記述します。

AccountRoot JSONの例

{
   "Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
   "AccountTxnID": "0D5FB50FA65C9FE1538FD7E398FFFE9D1908DFA4576D8D7A020040686F93C77D",
   "Balance": "148446663",
   "Domain": "6D64756F31332E636F6D",
   "EmailHash": "98B4375E1D753E5B91627516F6D70977",
   "Flags": 8388608,
   "LedgerEntryType": "AccountRoot",
   "MessageKey": "0000000000000000000000070000000300",
   "OwnerCount": 3,
   "PreviousTxnID": "0D5FB50FA65C9FE1538FD7E398FFFE9D1908DFA4576D8D7A020040686F93C77D",
   "PreviousTxnLgrSeq": 14091160,
   "Sequence": 336,
   "TransferRate": 1004999999,
   "index": "13F1A95D7AAB7108D5CE7EEAF504B2894B8C674E6D68499076441C4837282BF8"
}

AccountRootフィールド

AccountRootオブジェクトのフィールドは次のとおりです。

フィールドJSONの型内部の型必須?説明
Account文字列AccountIDはいこのアカウントを識別するための(クラシック)アドレスです。
AccountTxnID文字列Hash256いいえこのアカウントから直近に送信されたトランザクションの識別ハッシュ。このフィールドは、AccountTxnIDトランザクションフィールドを使うために有効になっていなければなりません。これを有効にするには、asfAccountTxnIDフラグを有効にしたAccountSetトランザクションを送信してください。
AMMID文字列Hash256いいえ(AMM amendment が必要です。) 対応するAMMレジャーエントリのレジャーエントリID。アカウント作成時に設定します。AMM以外のアカウントでは常に省略されます。
Balance文字列Amountいいえアカウントの現在のdrop単位のXRP残高で、文字列で表現されます。
BurnedNFTokens数値UInt32いいえこのアカウントで発行された 非代替性トークン のうち、バーンしたトークンの総数を表します。この数値は常に MintedNFTokens と同じかそれ以下となります。
Domain文字列VariableLengthいいえこのアカウントに関連付けられたドメイン。JSONでは、ドメインのASCII表現を16進数で表現します。256バイトを超える長さは使用できません
EmailHash文字列Hash128いいえメールアドレスのmd5ハッシュ。クライアントはこれを使用してサービス内でGravatarなどのアバターを検索できます。
Flags数値UInt32はいこのアカウントに対して有効になっているブールフラグのビットマップ。
LedgerEntryType文字列UInt16はい0x0061で文字列AccountRootにマッピングされ、AccountRootオブジェクトであることを示します。
MessageKey文字列VariableLengthいいえこのアカウントに暗号化されたメッセージを送信するために使用することができる公開鍵です。JSONでは、16進数で指定します。33バイトであることが必要で、最初の1バイトは鍵の種類を表します。secp256k1鍵の場合は0x02または0x03、Ed25519鍵の場合は0xEDとなります。
MintedNFTokens数値UInt32いいえこのアカウントによって、またはこのアカウントのためにMintされた非代替性トークン の合計数。
NFTokenMinter文字列AccountIDいいえこのアカウントに代わって非代替性トークンをミントできる別のアカウントを表します。
OwnerCount数値UInt32はいレジャーでこのアカウントが所有しており、アカウント所有者の準備金に資金を付与するオブジェクトの数。
PreviousTxnID文字列Hash256はい最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。
PreviousTxnLgrSeq数値UInt32はい最後にこのオブジェクトを変更したトランザクションが記録されたレジャーインデックス
RegularKey文字列AccountIDいいえこのアカウントのトランザクションに署名するときにマスターキーの代わりに使用できるキーペアのアドレス。この値を変更するにはSetRegularKeyトランザクションを使用してください。
Sequence数値UInt32はいこのアカウントの有効な次のトランザクションのシーケンス番号 を表します。
TicketCount数値UInt32いいえこのアカウントが台帳に保有するチケットの数です。これは、アカウントが一度に250 チケットという上限以内に留まることを保証するために自動的に更新されます。このフィールドは、チケットの数がゼロの場合は省略されます。 (TicketBatch amendmentにより追加されました)
TickSize数値UInt8いいえこのアドレスが発行した通貨が関わるオファーの為替レートに使用する有効桁数。有効な値は3以上15以下です。TickSize Amendmentにより追加されました。)
TransferRate数値UInt32いいえこのアカウントが発行した通貨を他のユーザが相互に送金する際に、これらのユーザに請求する送金手数料
WalletLocator文字列Hash256いいえユーザが設定できる任意の256bit値。
WalletSize数値UInt32いいえ未使用。(コード上ではこのフィールドをサポートしていますが、設定する方法はありません)。

AMMの特殊なAccountRootエントリ

(AMM amendment が必要です。)

自動マーケットメーカー(AMM)は、AMMの詳細の一部を追跡するためのAMMレジャーエントリに加えて、LPトークンを発行しAMMプール内の資産を保持するためにAccountRootレジャーエントリを使用します。AMMに関連するAccountRootのアドレスは、AMMが作成される前にユーザがそのアドレスを特定し資金を提供できないように、ランダム化されています。AMMのAccountRootは、通常のアカウントとは異なり、以下のような設定で作成されます。

  • lsfDisableMaster 有効 : トランザクションへ署名する手段はありません。これにより、誰もそのアカウントを直接操作することができず、トランザクションを送信することができなくなります。
  • lsfRequireAuth 有効 : 事前承認されているアカウントは存在しません。これにより、AMMアカウントに資産を追加する唯一の方法は、AMMDepositトランザクションを使用することであることが保証されます。
  • lsfDefaultRipple 有効 : ユーザ間でAMMのLPトークンを送信したり、取引したりすることが可能になります。

さらに、AMMのAccountRootエントリには以下の特別なルールが適用されます。

  • このAMM向けの特殊なアカウントは、準備金要件の対象外ですが、AMMのプール内の2つの資産のうちの1つであれば、XRPを保有することができます。
  • チェック、エスクロー、ペイメントチャネルの宛先にはできません。そのようなエントリを作成するトランザクションは結果コードtecNO_PERMISSIONで失敗します。
  • ユーザはAMMのLPトークン以外のためにトラストラインを作成することはできません。そのようなトラストラインを作成するトランザクションは結果コードtecNO_PERMISSIONで失敗します。(AMMはそのプール内のトークンを保持するために2つのトラストラインを持っており、プール内の他の資産がXRPの場合は1つのトラストラインを持っています)。
  • Clawback Amendmentも有効になっている場合においても、トークンの発行者はAMMから資金を回収することはできません。

LPトークンは他のトークンと同様に動作しますが、これらのトークンはAMM関連のトランザクションでも使用することができます。AMMの残高や、AMMに影響を与えたトランザクションの履歴は、通常のアカウントと同じように確認することができます。

AccountRootのフラグ

AccountRootフラグの多くは、AccountSetトランザクションで変更できるオプションに対応しています。ただし、レジャーで使用されるビット値は、トランザクションでそれらのフラグを有効または無効にするために使用される値とは異なります。レジャーのフラグは lsf` で始まる名前を持ちます。

AccountRootオブジェクトはFlagsフィールドに以下のフラグを指定できます。

フラグ名16進数値10進数値対応するAccountSetのフラグ説明
lsfAllowTrustLineClawback0x800000002147483648asfAllowTrustLineClawbackこのアカウントのClawbackを有効にします。 (Clawback Amendmentが必要です。)
lsfDefaultRipple0x008000008388608asfDefaultRippleこのアドレスのトラストラインでデフォルトでripplingを有効にします。発行アドレスに必要です。他のアドレスでの使用は推奨されません。
lsfDepositAuth0x0100000016777216asfDepositAuthこのアカウントは、アカウントが送信するトランザクションと、事前承認されたアカウントからの資金だけを受領します。(DepositAuthが有効になっています。)
lsfDisableMaster0x001000001048576asfDisableMasterこのアカウントのトランザクションの署名にマスターキーを使用することを禁止します。
lsfDisallowIncomingCheck0x08000000134217728asfDisallowIncomingCheckこのアカウントを宛先とするチェックの作成をブロックします。 (DisallowIncoming Amendmentにより追加されました。)
lsfDisallowIncomingNFTokenOffer0x0400000067108864asfDisallowIncomingNFTokenOfferこのアカウントを宛先とするNFTokenオファーの作成をブロックします。 (DisallowIncoming Amendmentにより追加されました。)
lsfDisallowIncomingPayChan0x10000000268435456asfDisallowIncomingPayChanこのアカウントを宛先とするペイメントチャネルの作成をブロックします。 (DisallowIncoming Amendmentにより追加されました。)
lsfDisallowIncomingTrustline0x20000000536870912asfDisallowIncomingTrustlineこのアカウントに対するトラストラインの作成をブロックします。 (DisallowIncoming Amendmentにより追加されました。)
lsfDisallowXRP0x00080000524288asfDisallowXRPクライアントアプリケーションはこのアカウントにXRPを送金しないでください。rippledにより強制されるものではありません。
lsfGlobalFreeze0x004000004194304asfGlobalFreezeこのアドレスが発行するすべての資産が凍結されます。
lsfNoFreeze0x002000002097152asfNoFreezeこのアドレスは、このアドレスに接続しているトラストラインを凍結できません。一度有効にすると、無効にできません。
lsfPasswordSpent0x0001000065536(なし)このアカウントは無料のSetRegularKeyトランザクションを使用しています。
lsfRequireAuth0x00040000262144asfRequireAuthこのアカウントは、他のユーザがこのアカウントのトークンを保有することを個別に承認する必要があります。
lsfRequireDestTag0x00020000131072asfRequireDest受信ペイメントには宛先タグの指定が必要です。

AccountRootの準備金

AccountRootエントリの準備金は、特別なAMM AccountRootの場合を除き、現在の基本準備金である10 XRPです。

このXRPは他人に送ることはできませんが、トランザクションコストの一部として利用することができます。

AccountRoot IDのフォーマット

AccountRootエントリのIDは、以下の値がこの順序で連結されているSHA-512ハーフです。

  • Accountスペースキー(0x0061
  • アカウントのAccountID