AccountSet
AccountSetトランザクションは、XRP Ledgerのアカウントのプロパティーを修正します。
AccountSetのJSONの例
{
"TransactionType": "AccountSet",
"Account" : "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
"Fee": "12",
"Sequence": 5,
"Domain": "6578616D706C652E636F6D",
"SetFlag": 5,
"MessageKey": "03AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB"
}
AccountSet Fields
In addition to the common fields, a AccountSet transaction uses the following fields:
| フィールド | JSONの型 | 内部の型 | 説明 |
|---|---|---|---|
| ClearFlag | 数値 | UInt32 | (省略可) このアカウントについてオプションを無効にするためのフラグの一意識別子。 |
| Domain | 文字列 | Blob | (省略可) このアカウントを保有するドメインのASCII小文字を表現する16進文字列。 |
| EmailHash | 文字列 | Hash128 | (省略可) アバターイメージの生成に使用されるメールアドレスのハッシュ。一般的に、クライアントはGravatar を使用してこのイメージを表示しています。 |
| MessageKey | 文字列 | Blob | (省略可) 暗号化されたメッセージをこのアカウントに送信するための公開鍵。 |
| SetFlag | 数値 | UInt32 | (省略可) このアカウントについてオプションを有効にするための整数フラグ。 |
| TransferRate | 符号なし整数 | UInt32 | (省略可) ユーザーがこのアカウントの発行済み通貨を送金するときに請求される手数料。通貨単位の10億分の1で表現されます。手数料なしを意味する特殊なケースの0を除いて、2000000000より大きくしたり、1000000000より小さくしたりすることはできません。 |
| TickSize | 符号なし整数 | UInt8 | (省略可)_このアドレスによって発行されている通貨が関係するオファーに使用する為替レートの呼値の単位。それらのオファーの為替レートは、この有効桁数へと丸められます。有効な値は3から15、または無効にするための0です(TickSize Amendmentが必要です)。_ |
| WalletLocator | 文字列 | Hash256 | (省略可) 使用されません。 |
| WalletSize | 数値 | UInt32 | (省略可) 使用されません。 |
これらのオプションがいずれも指定されていない場合、AccountSetトランザクションは(取引コストの消却以外に)意味がありません。詳細は、トランザクションのキャンセルまたはスキップを参照してください。
Domain
Domainフィールドは、ドメインのASCII小文字を表す16進文字列で表現します。例えば、ドメインexample.comは"6578616D706C652E636F6D"として表現します。
Domainフィールドをアカウントから削除するには、Domainを空文字列に設定してAccountSetを送信します。
アカウントのDomainフィールドには任意のドメインを挿入できます。アカウントとドメインが同一の人物または企業に属していることを証明するには、「双方向リンク」を確立することをお勧めします。
- 所有するアカウントに対して、所有するドメインを
Domainフィールドで設定します。 - そのドメインのWebサイトで、所有アカウントをリストするテキストファイルをホスティングし、必要に応じて、XRP Ledgerの用途に関するその他の情報も記述します。慣例上、このファイルの名前は
ripple.txtとします。例については、https://ripple.com/ripple.txt を参照してください。 注意: 中間者攻撃を防止するには、最新のTLS証明書を使用してHTTPSでWebサイトを提供します。
AccountSetのフラグ
アカウントについて、有効または無効にできる複数のオプションが用意されています。アカウントのオプションは、状況に応じてさまざまなタイプのフラグで表現します。
AccountSetタイプのトランザクションについては、SetFlagパラメーターとして渡すことでオプションを有効にしたり、ClearFlagパラメーターとして渡すことでオプションを無効にしたりできる複数の「AccountSetフラグ」が用意されています(プレフィクスはasf)。AccountSetタイプのトランザクションについては、Flagsパラメーターとして渡すことでアカウントの特定のオプションを有効または無効にできる複数のトランザクションフラグが用意されています(プレフィクスはtf)。このタイプの利用はお勧めしません。新しいアカウントオプションには、対応するトランザクションフラグ(tf)が存在しません。AccountRootレジャーオブジェクトタイプには、レジャー固有のフラグが用意されています(プレフィクスはlsf)。これらのフラグは、特定のレジャーに含まれている特定のアカウントオプションの状態を表します。これらの設定は、トランザクションによって変更されるまで適用されます。
アカウントのフラグを有効または無効にする手段としてお勧めするのは、AccountSetトランザクションのSetFlagパラメーターとClearFlagパラメーターを使用する方法です。AccountSetのフラグは、名前がasfで始まります。
どのフラグも、デフォルトでは無効になっています。
使用できるAccountSetのフラグは、以下のとおりです。
| フラグの名前 | 10進値 | 対応するレジャーフラグ | 説明 |
|---|---|---|---|
| asfAccountTxnID | 5 | (なし) | このアカウントの直近のトランザクションのIDを追跡します。AccountTxnIDについては必須です。 |
| asfDefaultRipple | 8 | lsfDefaultRipple | このアカウントのトラストラインでのリップリングをデフォルトで有効にします。 |
| asfDepositAuth | 9 | lsfDepositAuth | このアカウントに対してDeposit Authorizationを有効にします (DepositAuth Amendmentが必要)。 |
| asfDisableMaster | 4 | lsfDisableMaster | マスターキーペアの使用を禁止します。レギュラーキーや署名者リストなど、トランザクションに署名するための別の手段がアカウントで設定されている場合のみ有効にできます。 |
| asfDisallowXRP | 3 | lsfDisallowXRP | XRPがこのアカウントに送信されないようにします(rippledではなくクライアントアプリケーションによって履行されます)。 |
| asfGlobalFreeze | 7 | lsfGlobalFreeze | このアカウントによって発行されたすべての資産を凍結します。 |
| asfNoFreeze | 6 | lsfNoFreeze | 個々のトラストラインの凍結またはGlobal Freezeの無効化の機能を永続的に放棄します。このフラグは、有効にした後は無効にできません。 |
| asfRequireAuth | 2 | lsfRequireAuth | このアドレスによって発行された残高をユーザーが保持することについて、承認を要求します。アドレスにトラストラインが接続されていない場合のみ有効にできます。 |
| asfRequireDest | 1 | lsfRequireDestTag | トランザクションをこのアカウントに送信するための宛先タグを要求します。 |
asfDisableMasterフラグまたはasfNoFreezeフラグを有効にするには、マスターキーペアで署名することによってトランザクションを承認する必要があります。レギュラーキーペアやマルチ署名を使用することはできません。レギュラーキーペアまたはマルチ署名を使用すると、asfDisableMasterを無効にする(つまり、マスターキーペアを再び有効にする)ことができます。
以下のトランザクションフラグはAccountSetタイプのトランザクションに固有のもので、同様の目的を果たしますが、使用することはお勧めしません。
| フラグの名前 | 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の支払いを禁止または抑止します。
TransferRate
TransferRateフィールドは、ユーザーの発行する通貨を相手方が送金するときに請求する手数料を指定します。詳細は、送金手数料を参照してください。
rippledのWebSocketおよびJSON-RPCのAPIでは、TransferRate(相手方に10億単位の通貨を送金するのに必要な金額)は整数で表現します。例えば、送金手数料が20%である場合、値を1200000000と表現します。 値を1000000000未満にすることはできません(この値未満にした場合、トランザクションの送信について金銭の引き渡しが発生することになり、攻撃に利用されるおそれがあります)。1000000000の短縮形として、手数料なしを意味する0を指定できます。