AccountSet

[ソース]

AccountSetトランザクションは、XRP Ledgerのアカウントのプロパティーを修正します。

AccountSetのJSONの例

{
    "TransactionType": "AccountSet",
    "Account" : "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
    "Fee": "12",
    "Sequence": 5,
    "Domain": "6578616D706C652E636F6D",
    "SetFlag": 5,
    "MessageKey": "03AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB"
}

AccountSet フィールド

共通フィールドに加えて、AccountSetトランザクションは以下のフィールドを使用します。

フィールド JSONの型 内部の型 説明
ClearFlag 数値 UInt32 (省略可) このアカウントについてオプションを無効にするためのフラグの一意識別子。
Domain 文字列 Blob (省略可) このアカウントを保有するドメインのASCII小文字を表現する16進文字列。256バイトを超える長さは使用できません。
EmailHash 文字列 Hash128 (省略可) アバターイメージの生成に使用されるメールアドレスのハッシュ。一般的に、クライアントはGravatar を使用してこのイメージを表示しています。
MessageKey 文字列 Blob (省略可) 暗号化されたメッセージをこのアカウントに送信するための公開鍵です。キーを設定するには、正確に33バイトである必要があり、最初のバイトはキーの種類を示します。secp256k1鍵の場合は0x02または0x03、Ed25519鍵の場合は0xEDです。キーを削除するには、空の値を使用します。
NFTokenMinter 文字列 Blob (省略可) あなたのためにNFTokensをミントすることができる別のアカウント。 (NonFungibleTokensV1_1 amendmentによって追加されました.)
SetFlag 数値 UInt32 (省略可) このアカウントについてオプションを有効にするための整数フラグ。
TransferRate 符号なし整数 UInt32 (省略可) ユーザーがこのアカウントの発行済み通貨を送金するときに請求される手数料。通貨単位の10億分の1で表現されます。手数料なしを意味する特殊なケースの0を除いて、2000000000より大きくしたり、1000000000より小さくしたりすることはできません。
TickSize 符号なし整数 UInt8 (省略可)_このアドレスによって発行されている通貨が関係するオファーに使用する為替レートの呼値の単位。それらのオファーの為替レートは、この有効桁数へと丸められます。有効な値は3から15、または無効にするための0ですTickSize Amendmentによって追加されました)。_
WalletLocator 文字列 Hash256 (省略可) 任意の256ビット値です。指定された場合、この値はアカウントの設定の一部として保存さ れますが、固有の定義や要件を持ちません。
WalletSize 数値 UInt32 (省略可) 使用されません。このフィールドはAccountSetトランザクションで有効ですが、何の機能もありません。。

これらのオプションがいずれも指定されていない場合、AccountSetトランザクションは(取引コストの消却以外に)意味がありません。詳細は、トランザクションのキャンセルまたはスキップを参照してください。

Domain

Domainフィールドは、ドメインのASCII小文字を表す16進文字列で表現します。例えば、ドメインexample.com"6578616D706C652E636F6D"として表現します。

Domainフィールドをアカウントから削除するには、Domainを空文字列に設定してAccountSetを送信します。

アカウントのDomainフィールドには任意のドメインを挿入できます。アカウントとドメインが同一の人物または企業に属していることを証明するには、「双方向リンク」を確立することをお勧めします。

  • 所有するアカウントに対して、所有するドメインをDomainフィールドで設定します。
  • そのドメインのWebサイトで、所有アカウントをリストするテキストファイルをホスティングし、必要に応じて、XRP Ledgerの用途に関するその他の情報も記述します。慣例上、このファイルの名前はxrp-ledger.toml fileとします。

AccountSetのフラグ

アカウントについて、有効または無効にできる複数のオプションが用意されています。アカウントのオプションは、状況に応じてさまざまなタイプのフラグで表現します。

  • AccountSetタイプのトランザクションについては、SetFlagパラメーターとして渡すことでオプションを有効にしたり、ClearFlagパラメーターとして渡すことでオプションを無効にしたりできる複数の「AccountSetフラグ」が用意されています(プレフィクスはasf)。
  • AccountSetタイプのトランザクションについては、Flagsパラメーターとして渡すことでアカウントの特定のオプションを有効または無効にできる複数のトランザクションフラグが用意されています(プレフィクスはtf)。このタイプの利用はお勧めしません。新しいアカウントオプションには、対応するトランザクションフラグ(tf)が存在しません。
  • AccountRootレジャーオブジェクトタイプには、レジャー固有のフラグが用意されています(プレフィクスはlsf)。これらのフラグは、特定のレジャーに含まれている特定のアカウントオプションの状態を表します。これらの設定は、トランザクションによって変更されるまで適用されます。

アカウントのフラグを有効または無効にする手段としてお勧めするのは、AccountSetトランザクションのSetFlagパラメーターとClearFlagパラメーターを使用する方法です。AccountSetのフラグは、名前がasfで始まります。

どのフラグも、デフォルトでは無効になっています。

使用できるAccountSetのフラグは、以下のとおりです。

フラグの名前 10進値 対応するレジャーフラグ 説明
asfAccountTxnID 5 (なし) このアカウントの直近のトランザクションのIDを追跡します。AccountTxnIDについては必須です。
asfAuthorizedNFTokenMinter 10 (なし) このアカウントの代わりに、別のアカウントが非代替性トークン(NFToken)をミントすることを許可するために使用します。認可されたアカウントをAccountRootオブジェクトのNFTokenMinterフィールドで指定します。認可されたアカウントを削除するには、このフラグを有効にしてNFTokenMinterフィールドを省略します。 (NonFungibleTokensV1_1 amendmentによって追加されました。)
asfDefaultRipple 8 lsfDefaultRipple このアカウントのトラストラインでのリップリングをデフォルトで有効にします。
asfDepositAuth 9 lsfDepositAuth このアカウントに対してDeposit Authorizationを有効にします DepositAuth Amendmentによって追加されました)。
asfDisableMaster 4 lsfDisableMaster マスターキーペアの使用を禁止します。レギュラーキー署名者リストなど、トランザクションに署名するための別の手段がアカウントで設定されている場合のみ有効にできます。
asfDisallowIncomingCheck 13 lsfDisallowIncomingCheck チェックの着信をブロックします。(DisallowIncoming amendment が必要です。)
asfDisallowIncomingNFTokenOffer 12 lsfDisallowIncomingNFTokenOffer NFTokenOffersの着信をブロックします。(DisallowIncoming amendment が必要です)
asfDisallowIncomingPayChan 14 lsfDisallowIncomingPayChan ペイメントチャネルの着信をブロックします。(DisallowIncoming amendment が必要です)
asfDisallowIncomingTrustline 15 lsfDisallowIncomingTrustline トラストラインの着信をブロックします。(DisallowIncoming amendment が必要です)
asfDisallowXRP 3 lsfDisallowXRP XRPがこのアカウントに送信されないようにします(勧告的なもので、XRP Ledgerのプロトコルでは強制されません)。
asfGlobalFreeze 7 lsfGlobalFreeze このアカウントによって発行されたすべての資産を凍結します。
asfNoFreeze 6 lsfNoFreeze 個々のトラストラインの凍結またはGlobal Freezeの無効化の機能を永続的に放棄します。このフラグは、有効にした後は無効にできません。
asfRequireAuth 2 lsfRequireAuth このアドレスによって発行された残高をユーザーが保持することについて、承認を要求します。アドレスにトラストラインが接続されていない場合のみ有効にできます。
asfRequireDest 1 lsfRequireDestTag トランザクションをこのアカウントに送信するための宛先タグを要求します。

asfDisableMasterフラグまたはasfNoFreezeフラグを有効にするには、マスターキーペアで署名することによってトランザクションを承認する必要があります。レギュラーキーペアやマルチ署名を使用することはできません。レギュラーキーペアまたはマルチ署名を使用すると、asfDisableMasterを無効にする(つまり、マスターキーペアを再び有効にする)ことができます。新規: rippled 0.28.0

以下のトランザクションフラグはAccountSetタイプのトランザクションに固有のもので、同様の目的を果たしますが、使用することはお勧めしません。限られたスペースのため、いくつかの設定には関連する tf フラグがありません。また、新しい tf フラグは AccountSet トランザクションタイプには追加されていません。一つのトランザクションで複数の設定を有効にするには、tfフラグとasfフラグを組み合わせて使用することができます。

フラグの名前 16進値 10進値 後継のAccountSetのフラグ
tfRequireDestTag 0x00010000 65536 asfRequireDest(SetFlag)
tfOptionalDestTag 0x00020000 131072 asfRequireDest(ClearFlag)
tfRequireAuth 0x00040000 262144 asfRequireAuth(SetFlag)
tfOptionalAuth 0x00080000 524288 asfRequireAuth(ClearFlag)
tfDisallowXRP 0x00100000 1048576 asfDisallowXRP(SetFlag)
tfAllowXRP 0x00200000 2097152 asfDisallowXRP(ClearFlag)

注意: トランザクションに含まれているtfフラグとasfフラグの数値は、レジャーに含まれている静的なアカウントに設定された値と合致しません。レジャーに含まれているアカウントのフラグを読み取るには、AccountRootフラグを参照してください。

着信トランザクションのブロック

目的が不明確な着信トランザクションは、顧客による誤りを識別し、誤りに応じて、アカウントへの払い戻しや残高の調整を実施しなければならない場合がある金融機関にとって、不都合な存在です。asfRequireDestフラグとasfDisallowXRPフラグは、理由が不明確な状態で資金が誤って送金されることのないよう、ユーザーを保護することを目的としています。

例えば、宛先タグは通常、金融機関が支払いを受領したときに、保有しているどの残高に入金するのかを識別するために使用されます。宛先タグが省略されていると、入金先のアカウントが明確でない場合があり、払い戻しが必要になるなどの問題が発生します。asfRequireDestタグを使用すると、着信するすべての支払いに宛先タグが必ず設定され、他のユーザーから、宛先の不明な支払いが誤って送金される問題が発生しにくくなります。

XRP以外の通貨に関しては、それらの通貨のトラストラインを作成しないことで、無用な支払いの受入れを防止できます。XRPでは信頼が必須ではないことから、ユーザーによるアカウントへのXRPの送金を抑止するには、asfDisallowXRPフラグを使用します。ただし、このフラグによってアカウントが使用不可になる場合があるため、rippledでは適用されません(このフラグを無効にしたトランザクションを送信するための十分なXRPがアカウントになかった場合、アカウントは完全に使用不可になります)。代わりに、クライアントアプリケーションでは、asfDisallowXRPフラグが有効なアカウントへのXRPの支払いを禁止または抑止します。

すべての 支払いの着信をブロックしたい場合、Deposit Authorizationを有効にすることができます。これは、あなたのアカウントが準備金要件を下回らない限り、たとえXRPであっても、あらゆるトランザクションからの送金をブロックします。

DisallowIncoming amendment が有効化されている場合、着信するすべてのチェック、NFTokenOffer、ペイメントチャネル、およびトラストラインをブロックするオプションもあります。これらのオブジェクトを着信することは一般的に無害ですが、アカウントを削除することができなくなる場合があり、自分が作成したオブジェクトのリストに予期しないオブジェクトが混ざり混乱することがあります。オブジェクトの着信をブロックするには、次のアカウントフラグのいずれかを使用します。

  • asfDisallowIncomingCheck - チェックオブジェクト用
  • asfDisallowIncomingNFTOffer - NFTokenOfferオブジェクト用
  • asfDisallowIncomingPayChan - PayChannelオブジェクト用
  • asfDisallowIncomingTrustline - RippleState(トラストライン)オブジェクト用

これらのレジャーエントリを作成するトランザクションが発生する場合、宛先アカウントに対応するフラグが有効になっている場合、トランザクションはtecNO_PERMISSIONという結果コードで失敗します。Deposit Authorizationとは異なり、これらの設定は一般的に支払いを受け取ることを妨げません。また、この設定を有効にしても、自分自身がこれらのタイプのオブジェクトを作成することを妨げません(もちろん、トランザクションの宛先がこの設定を使用している場合を除きます)。

TransferRate

TransferRateフィールドは、ユーザーの発行する通貨を相手方が送金するときに請求する手数料を指定します。

HTTPおよびWebSocketのAPIでは、TransferRate(相手方に10億単位の通貨を送金するのに必要な金額)は整数で表現します。例えば、送金手数料が20%である場合、値を1200000000と表現します。 値を1000000000未満にすることはできません(この値未満にした場合、トランザクションの送信について金銭の引き渡しが発生することになり、攻撃に利用されるおそれがあります)。1000000000の短縮形として、手数料なしを意味する0を指定できます。

詳細は、送金手数料を参照してください。