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
を無効にする(つまり、マスターキーペアを再び有効にする)ことができます。
以下のトランザクションフラグは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
を指定できます。
詳細は、送金手数料をご覧ください。