mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-19 19:25:51 +00:00
Merge remote-tracking branch 'upstream/master' into ja-deep-freeze
This commit is contained in:
@@ -9,7 +9,7 @@ parent: contribute.html
|
||||
## 報告する
|
||||
詐欺に遭ったと思ったら、詐欺の手口や詐欺業者について、できるだけ早く、できるだけ多くの情報を集めるようにしてください。どのように行動すべきかは以下の方法を確認してください。
|
||||
|
||||
{% admonition type="warning" name="注意" %}誰もXRP Ledgerのアカウントを凍結したり、トランザクションを元に戻したりすることはできません。これはXRP Ledgerブロックチェーンの分散型設計によるものです。{% /admonition %}
|
||||
{% admonition type="warning" name="注意" %}誰もXRP Ledgerのアカウントをフリーズしたり、トランザクションを元に戻したりすることはできません。これはXRP Ledgerブロックチェーンの分散型設計によるものです。{% /admonition %}
|
||||
|
||||
1. [Xrplorerの調査チーム](https://xrplorer.com/forensics/submit)に詐欺業者のウォレットアドレスを提出してください。
|
||||
|
||||
@@ -17,14 +17,14 @@ parent: contribute.html
|
||||
|
||||
2. 最寄りの警察署に通報してください。詐欺業者が捕まれば、お金を取り戻せる場合があります。
|
||||
|
||||
3. 詐欺業者が取引所にXRPを送金した場合は、必ず取引所のサポートチームに連絡してください。取引所は詐欺業者の口座を凍結することができます。以下は、いくつかの有名な取引所のサポートリンクです。
|
||||
3. 詐欺業者が取引所にXRPを送金した場合は、必ず取引所のサポートチームに連絡してください。取引所は詐欺業者の口座をフリーズすることができます。以下は、いくつかの有名な取引所のサポートリンクです。
|
||||
|
||||
- [Binance](https://www.binance.com/en/support)
|
||||
- [Coinbase](https://help.coinbase.com/)
|
||||
- [Uphold](https://support.uphold.com/hc/en-us/requests/new)
|
||||
- [Bitrue](https://www.bitrue.com/exchange-web/footer/contactus.html)
|
||||
|
||||
4. 詐欺業者がXRP Ledger上でXRPを他のトークンと交換した場合、そのトークンの発行者に連絡してください。発行者は[詐欺業者のトラストラインを凍結する](../docs/tutorials/how-tos/use-tokens/freeze-a-trust-line.md)ことができるかもしれません。
|
||||
4. 詐欺業者がXRP Ledger上でXRPを他のトークンと交換した場合、そのトークンの発行者に連絡してください。発行者は[詐欺業者のトラストラインをフリーズする](../docs/tutorials/how-tos/use-tokens/freeze-a-trust-line.md)ことができるかもしれません。
|
||||
|
||||
詐欺業者の報告に関する詳細は、[Xrplorer Forensicsのヘルプ](https://xrplorer.com/forensics/help)をご覧ください。
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ XRP Ledgerは、複数の[暗号署名アルゴリズム](#署名アルゴリズ
|
||||
|
||||
- マスターキーペアを無効化する。
|
||||
|
||||
- [凍結](../tokens/fungible-tokens/freezes.md#no-freeze)の機能を永久に放棄する。
|
||||
- [フリーズ](../tokens/fungible-tokens/freezes.md#no-freeze)の機能を永久に放棄する。
|
||||
|
||||
- トランザクションコスト0XRPの特別な[キーリセットトランザクション](../transactions/transaction-cost.md#key-resetトランザクション)を送信する。
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Checksは[Escrow](escrow.md)と[Payment Channel](../../tutorials/how-tos/use-spe
|
||||
|
||||
* Checksではトークンを送金できます。Payment ChannelとEscrowで送金できるのはXRPのみです。
|
||||
|
||||
* Checksは資金を凍結しません。Payment ChannelとEscrowでは、送金元が発行したクレームでXRPが清算されるか(Payment Channel)、または有効期限切れまたはCrypto-conditionsによってXRPがリリースされる(Escrow)までは、そのXRPを使用できません。
|
||||
* Checksは資金をフリーズしません。Payment ChannelとEscrowでは、送金元が発行したクレームでXRPが清算されるか(Payment Channel)、または有効期限切れまたはCrypto-conditionsによってXRPがリリースされる(Escrow)までは、そのXRPを使用できません。
|
||||
|
||||
* EscrowではXRPを自分自身に送金できます。ChecksではXRPを自身に送金することはできません。
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ XRP Ledgerのすべての変更がそうであるように、取引を行うに
|
||||
|
||||
XRP Ledgerは、成行注文、指値注文、レバレッジ取引などの概念をネイティブに表現するものではありません。カスタムトークンやOfferのプロパティをクリエイティブに利用することで、いくつかは実現できるかもしれません。
|
||||
|
||||
分散型システムであるXRP Ledgerは、取引に関わる[アカウント](../../accounts/index.md)の背後にいる実際の人々や組織に関する情報を一切持っていません。また、ユーザや発行者は、様々な種類の裏付け資産を表すトークンの取引を規制するために、関連する法律に従う必要があります。[凍結](../fungible-tokens/freezes.md)や[認可トラストライン](../fungible-tokens/authorized-trust-lines.md)などの機能は、発行者が関連法規を順守できるよう意図しています。
|
||||
分散型システムであるXRP Ledgerは、取引に関わる[アカウント](../../accounts/index.md)の背後にいる実際の人々や組織に関する情報を一切持っていません。また、ユーザや発行者は、様々な種類の裏付け資産を表すトークンの取引を規制するために、関連する法律に従う必要があります。[フリーズ](../fungible-tokens/freezes.md)や[認可トラストライン](../fungible-tokens/authorized-trust-lines.md)などの機能は、発行者が関連法規を順守できるよう意図しています。
|
||||
|
||||
## 関連項目
|
||||
|
||||
|
||||
@@ -46,8 +46,8 @@ Offerオブジェクトは、他のオファーやクロスカレンシー決済
|
||||
|
||||
- 所有者が売却する資産を一切保有しなくなった場合。
|
||||
- オーナーがその資産を再度取得すると、オファーに資金が供給されるようになります。
|
||||
- 売却する資産が[凍結されたトラストライン](../fungible-tokens/freezes.md)に含まれるトークンである場合。
|
||||
- トラストラインが凍結解除されると、オファーは再び資金が供給されるようになります。
|
||||
- 売却する資産が[フリーズされたトラストライン](../fungible-tokens/freezes.md)に含まれるトークンである場合。
|
||||
- トラストラインがフリーズ解除されると、オファーは再び資金が供給されるようになります。
|
||||
- オファーが新しいトラストラインを作成する必要があるが、オーナーがその[準備金](../../accounts/reserves.md)の増加に伴う十分なXRPを持っていない場合。
|
||||
- オーナーが追加のXRPを調達するか、準備金の必要量が減少すると、オファーは自動的に使用可能になります。
|
||||
- オファーが失効した場合。([オファーの有効期限](#オファーの有効期限)を参照)
|
||||
|
||||
@@ -13,7 +13,7 @@ XRP Ledgerの認可トラストライン機能により、発行者は、発行
|
||||
|
||||
認可トラストライン機能を使用するには、発行アドレスで**RequireAuth**フラグを有効にします。その後、他のアカウントは、あなたがそのアカウントのトラストラインをあなたの発行アカウントに承認した場合にのみ、あなたが発行したトークンを保持することができます。
|
||||
|
||||
発行アドレスから[TrustSetトランザクション][]を送信し、自分のアカウントと認可するアカウントとの間のトラストラインを設定することで、トラストラインを認可することができます。トラストラインを認可した後、その認可を取り消すことはできません。(ただし、必要に応じてトラストラインを[凍結](freezes.md)することは可能です)。
|
||||
発行アドレスから[TrustSetトランザクション][]を送信し、自分のアカウントと認可するアカウントとの間のトラストラインを設定することで、トラストラインを認可することができます。トラストラインを認可した後、その認可を取り消すことはできません。(ただし、必要に応じてトラストラインを[フリーズ](freezes.md)することは可能です)。
|
||||
|
||||
トラストラインを認可するためのトランザクションは、発行アドレスの署名が必要であり、残念ながらそのアドレスのリスクエクスポージャーが増加することを意味します。
|
||||
|
||||
@@ -116,7 +116,7 @@ POST http://localhost:8088/
|
||||
|
||||
- **コンセプト:**
|
||||
- [Deposit Authorization](../../accounts/depositauth.md)
|
||||
- [トークンの凍結](freezes.md)
|
||||
- [トークンのフリーズ](freezes.md)
|
||||
- **リファレンス:**
|
||||
- [account_linesメソッド][]
|
||||
- [account_infoメソッド][]
|
||||
|
||||
@@ -6,29 +6,29 @@ seo:
|
||||
labels:
|
||||
- トークン
|
||||
---
|
||||
# トークンの凍結に関するよくある誤解
|
||||
# トークンのフリーズに関するよくある誤解
|
||||
|
||||
PayPalのような中央集権的なサービスがアカウントを停止して資金にアクセスできないようにするのと同様に、Ripple社などがXRPを凍結することができるというのはよくある誤解です。XRP Ledgerには[凍結機能](freezes.md)がありますが、これは発行トークンにのみ使用可能で、XRPには使用できません。 **XRPを凍結することは誰にもできません**。
|
||||
PayPalのような中央集権的なサービスがアカウントを停止して資金にアクセスできないようにするのと同様に、Ripple社などがXRPをフリーズすることができるというのはよくある誤解です。XRP Ledgerには[フリーズ機能](freezes.md)がありますが、これは発行トークンにのみ使用可能で、XRPには使用できません。 **XRPをフリーズすることは誰にもできません**。
|
||||
|
||||
XRP Ledgerのトークンは、[XRPとは根本的に異なる](../../../references/protocol/data-types/currency-formats.md#comparison)ものです。トークンは常にトラストライン上に存在し、それは凍結される可能性があります。XRPはアカウントに含まれており、凍結されることはありません。
|
||||
XRP Ledgerのトークンは、[XRPとは根本的に異なる](../../../references/protocol/data-types/currency-formats.md#comparison)ものです。トークンは常にトラストライン上に存在し、それはフリーズされる可能性があります。XRPはアカウントに含まれており、フリーズされることはありません。
|
||||
|
||||
## XRPは単なるRipple社のトークンではないのか?
|
||||
|
||||
いいえ、XRPはトークンとは異なります。XRPはXRP Ledger上の唯一のネイティブアセットであり、XRP Ledger上で取引を行うために必要なものです。XRPにはカウンタパーティが存在しません。つまり、誰かがXRPを保有するとき、その人は負債を保有しているのではなく、実際の通貨であるXRPを保有しているのです。この事実により、 _**<u>XRPはいかなる団体や個人によっても凍結することができません</u>**_ 。
|
||||
いいえ、XRPはトークンとは異なります。XRPはXRP Ledger上の唯一のネイティブアセットであり、XRP Ledger上で取引を行うために必要なものです。XRPにはカウンタパーティが存在しません。つまり、誰かがXRPを保有するとき、その人は負債を保有しているのではなく、実際の通貨であるXRPを保有しているのです。この事実により、 _**<u>XRPはいかなる団体や個人によってもフリーズすることができません</u>**_ 。
|
||||
|
||||
## Ripple社またはXRP Ledger財団は私のトークンを凍結することができますか?
|
||||
## Ripple社またはXRP Ledger財団は私のトークンをフリーズすることができますか?
|
||||
|
||||
XRP Ledgerは分散型であり、Ripple社やXRP Ledger財団、そして他のいかなる存在もそれをコントロールすることはできません。
|
||||
|
||||
あるトークンの発行者は、 _そのトークンに限定して_ あなたのトラストラインを凍結することができます。あなたのアカウントの他の部分や、異なる発行者のトークンを凍結することはできませんし、あなたがXRP Ledgerを使うのを止めることもできないのです。
|
||||
あるトークンの発行者は、 _そのトークンに限定して_ あなたのトラストラインをフリーズすることができます。あなたのアカウントの他の部分や、異なる発行者のトークンをフリーズすることはできませんし、あなたがXRP Ledgerを使うのを止めることもできないのです。
|
||||
|
||||
さらに、トークン発行者は、トークンを凍結する能力を自主的かつ永久的に放棄することができます。この["No Freeze"](freezes.md#no-freeze)設定は、他者がトークンの使用を止めることができないという意味で、トークンがより実際の現金のように振る舞うことを想定しています。
|
||||
さらに、トークン発行者は、トークンをフリーズする能力を自主的かつ永久的に放棄することができます。この["No Freeze"](freezes.md#no-freeze)設定は、他者がトークンの使用を止めることができないという意味で、トークンがより実際の現金のように振る舞うことを想定しています。
|
||||
|
||||
|
||||
## しかし、Ripple社がJed McCaleb氏のXRPを凍結したと聞きましたが?
|
||||
## しかし、Ripple社がJed McCaleb氏のXRPをフリーズしたと聞きましたが?
|
||||
|
||||
これは、2015年から2016年にかけて実際に起こった事件の誤報です。2013年にRipple社の創業者で同社を退社したJed McCaleb氏は、100万USドル以上のXRPをカストディ取引所であるBitstampで売却しようと試みました。Ripple社の代理人は、この売却はJed氏とRipple社が2014年に締結した契約に違反すると主張しました。Ripple社の要求により、[BitstampはJedのBitstampアカウントを凍結](https://www.coindesk.com/markets/2015/04/02/1-million-legal-fight-ensnares-ripple-bitstamp-and-jed-mccaleb/)し、裁判に持ち込まれました。この裁判は[最終的に和解](https://www.coindesk.com/markets/2016/02/12/ripple-settles-1-million-lawsuit-with-former-executive-and-founder/)となり、双方がその結果に納得したと表明しています。
|
||||
これは、2015年から2016年にかけて実際に起こった事件の誤報です。2013年にRipple社の創業者で同社を退社したJed McCaleb氏は、100万USドル以上のXRPをカストディ取引所であるBitstampで売却しようと試みました。Ripple社の代理人は、この売却はJed氏とRipple社が2014年に締結した契約に違反すると主張しました。Ripple社の要求により、[BitstampはJedのBitstampアカウントをフリーズ](https://www.coindesk.com/markets/2015/04/02/1-million-legal-fight-ensnares-ripple-bitstamp-and-jed-mccaleb/)し、裁判に持ち込まれました。この裁判は[最終的に和解](https://www.coindesk.com/markets/2016/02/12/ripple-settles-1-million-lawsuit-with-former-executive-and-founder/)となり、双方がその結果に納得したと表明しています。
|
||||
|
||||
注目すべきは、この「凍結」はXRP Ledger上で起こったものではなく、XRP Ledgerの凍結機能を使ったものでもないことです。他のカストディアン取引所と同様に、Bitstampはユーザのアカウントを凍結し、特にそれらの資金が法的紛争に巻き込まれている場合、取引や資金の引き出しを停止する権限を持っています。
|
||||
注目すべきは、この「フリーズ」はXRP Ledger上で起こったものではなく、XRP Ledgerのフリーズ機能を使ったものでもないことです。他のカストディアン取引所と同様に、Bitstampはユーザのアカウントをフリーズし、特にそれらの資金が法的紛争に巻き込まれている場合、取引や資金の引き出しを停止する権限を持っています。
|
||||
|
||||
一方、XRP Ledgerの[分散型取引所](../decentralized-exchange/index.md)で取引する場合は、自分で資産を管理するので、XRPの取引を止めることは誰にもできないのです。
|
||||
|
||||
@@ -6,39 +6,39 @@ seo:
|
||||
labels:
|
||||
- トークン
|
||||
---
|
||||
# トークンの凍結
|
||||
# トークンのフリーズ
|
||||
|
||||
発行者は発行したトークンをXRP Ledgerで凍結することができます。**これはXRP LedgerのネイティブアセットであるXRPには適用されません。**
|
||||
発行者は発行したトークンをXRP Ledgerでフリーズすることができます。**これはXRP LedgerのネイティブアセットであるXRPには適用されません。**
|
||||
|
||||
特定のケースでは、法的要件への準拠や、疑わしい活動の調査のために、取引所またはゲートウェイが、XRP以外のトークンの残高を急きょ凍結することがあります。
|
||||
特定のケースでは、法的要件への準拠や、疑わしい活動の調査のために、取引所またはゲートウェイが、XRP以外のトークンの残高を急きょフリーズすることがあります。
|
||||
|
||||
{% admonition type="success" name="ヒント" %}誰もXRP LedgerのXRPを凍結することはできません。しかし、カストディアル取引所は、自らの裁量で常に保管資金を凍結することができます。詳しくは、[凍結に関するよくある誤解](common-misconceptions-about-freezes.md)をご覧ください。{% /admonition %}
|
||||
{% admonition type="success" name="ヒント" %}誰もXRP LedgerのXRPをフリーズすることはできません。しかし、カストディアル取引所は、自らの裁量で常に保管資金をフリーズすることができます。詳しくは、[フリーズに関するよくある誤解](common-misconceptions-about-freezes.md)をご覧ください。{% /admonition %}
|
||||
|
||||
凍結については、3種類の設定があります。
|
||||
フリーズについては、3種類の設定があります。
|
||||
|
||||
* [**Individual Freeze(個別の凍結)**](#individual-freeze) - 1件の取引相手を凍結します。
|
||||
* [**Global Freeze(全体の凍結)**](#global-freeze) - 取引相手全員を凍結します。
|
||||
* [**No Freeze(凍結機能の放棄)**](#no-freeze) - 個々の取引相手の凍結機能と、Global Freeze機能を永久に放棄します。
|
||||
* [**Individual Freeze(個別のフリーズ)**](#individual-freeze) - 1件の取引相手をフリーズします。
|
||||
* [**Global Freeze(全体のフリーズ)**](#global-freeze) - 取引相手全員をフリーズします。
|
||||
* [**No Freeze(フリーズ機能の放棄)**](#no-freeze) - 個々の取引相手のフリーズ機能と、Global Freeze機能を永久に放棄します。
|
||||
|
||||
凍結対象の残高がプラス、マイナスにかかわらず、すべての凍結設定を行うことができます。通貨イシュアーまたは通貨保持者のいずれかがトラストラインを凍結できますが、通貨保持者がイシュアーを凍結しても、その影響はわずかです。
|
||||
フリーズ対象の残高がプラス、マイナスにかかわらず、すべてのフリーズ設定を行うことができます。通貨イシュアーまたは通貨保持者のいずれかがトラストラインをフリーズできますが、通貨保持者がイシュアーをフリーズしても、その影響はわずかです。
|
||||
|
||||
|
||||
## Individual Freeze
|
||||
|
||||
**Individual Freeze**機能は、[トラストライン](index.md)に関する設定です。発行アドレスがIndividual Freeze設定を有効にすると、そのトラストラインの通貨に対して以下のルールが適用されます。
|
||||
|
||||
* 凍結されたトラストラインの両当事者間の直接決済は、凍結後も可能です。
|
||||
* そのトラストラインの取引相手は、イシュアーへ直接支払う場合を除き、凍結されたトラストラインの残高を減らすことはできません。取引相手は、凍結されたイシュアンスを直接イシュアーに送信することだけが可能です。
|
||||
* 取引相手は、凍結されたトラストライン上で引き続きその他の当事者からの支払を受け取ることができます。
|
||||
* 取引相手が凍結されたトラストライン上のトークンの売りオファーを出した場合、[資金不足とみなされます](../decentralized-exchange/offers.md#オファーのライフサイクル)。
|
||||
* フリーズされたトラストラインの両当事者間の直接決済は、フリーズ後も可能です。
|
||||
* そのトラストラインの取引相手は、イシュアーへ直接支払う場合を除き、フリーズされたトラストラインの残高を減らすことはできません。取引相手は、フリーズされたイシュアンスを直接イシュアーに送信することだけが可能です。
|
||||
* 取引相手は、フリーズされたトラストライン上で引き続きその他の当事者からの支払を受け取ることができます。
|
||||
* 取引相手がフリーズされたトラストライン上のトークンの売りオファーを出した場合、[資金不足とみなされます](../decentralized-exchange/offers.md#オファーのライフサイクル)。
|
||||
|
||||
再確認: トラストラインではXRPは保持されません。XRPは凍結できません。
|
||||
再確認: トラストラインではXRPは保持されません。XRPはフリーズできません。
|
||||
|
||||
金融機関は、疑わしい活動を行う取引相手や、金融機関の利用規約に違反する取引相手にリンクしているトラストラインを凍結できます。金融機関は、同機関が運用する、XRP Ledgerに接続されているその他のシステムにおいても、その取引相手を凍結する必要があります。(凍結しないと、アドレスから金融機関経由で支払を送金することで、望ましくない活動を行うことが依然として可能となります。)
|
||||
金融機関は、疑わしい活動を行う取引相手や、金融機関の利用規約に違反する取引相手にリンクしているトラストラインをフリーズできます。金融機関は、同機関が運用する、XRP Ledgerに接続されているその他のシステムにおいても、その取引相手をフリーズする必要があります。(フリーズしないと、アドレスから金融機関経由で支払を送金することで、望ましくない活動を行うことが依然として可能となります。)
|
||||
|
||||
各個別アドレスは金融機関とのトラストラインを凍結できます。これは金融機関とその他のユーザの間の取引には影響しません。ただし、他のアドレス([運用アドレス](../../accounts/account-types.md)を含む)からその個別アドレスに対しては、その金融機関のイシュアンスを送信できなくなります。このようなIndividual Freezeは、オファーには影響しません。
|
||||
各個別アドレスは金融機関とのトラストラインをフリーズできます。これは金融機関とその他のユーザの間の取引には影響しません。ただし、他のアドレス([運用アドレス](../../accounts/account-types.md)を含む)からその個別アドレスに対しては、その金融機関のイシュアンスを送信できなくなります。このようなIndividual Freezeは、オファーには影響しません。
|
||||
|
||||
Individual Freezeは1つの通貨にのみ適用されます。特定の取引相手の複数通貨を凍結するには、アドレスが各通貨のトラストラインで、個別にIndividual Freezeを有効にする必要があります。
|
||||
Individual Freezeは1つの通貨にのみ適用されます。特定の取引相手の複数通貨をフリーズするには、アドレスが各通貨のトラストラインで、個別にIndividual Freezeを有効にする必要があります。
|
||||
|
||||
[No Freeze](#no-freeze)設定を有効にしている場合、アドレスはIndividual Freeze設定を有効にできません。
|
||||
|
||||
@@ -47,9 +47,9 @@ Individual Freezeは1つの通貨にのみ適用されます。特定の取引
|
||||
|
||||
**Global Freeze**機能は、アドレスに設定できます。発行アドレスがGlobal Freeze機能を有効にすると、その発行アドレスのすべてのトークンに対して以下のルールが適用されます:
|
||||
|
||||
* 凍結された発行アドレスのすべての取引相手は、イシュアーに直接支払う場合を除き、凍結されたアドレスへのトラストラインの残高を減らすことができません。(これはすべての[運用アドレス](../../accounts/account-types.md)にも影響します。)
|
||||
* 凍結された発行アドレスの取引相手は、発行アドレスとの直接的な支払の送受信を引き続き行うことができます。
|
||||
* 凍結アドレスによるトークンの売りオファーはすべて、[資金不足とみなされます](../decentralized-exchange/offers.md#オファーのライフサイクル)。
|
||||
* フリーズされた発行アドレスのすべての取引相手は、イシュアーに直接支払う場合を除き、フリーズされたアドレスへのトラストラインの残高を減らすことができません。(これはすべての[運用アドレス](../../accounts/account-types.md)にも影響します。)
|
||||
* フリーズされた発行アドレスの取引相手は、発行アドレスとの直接的な支払の送受信を引き続き行うことができます。
|
||||
* フリーズアドレスによるトークンの売りオファーはすべて、[資金不足とみなされます](../decentralized-exchange/offers.md#オファーのライフサイクル)。
|
||||
|
||||
再確認: アドレスはXRPを発行できません。Global FreezeはXRPには適用されません。
|
||||
|
||||
@@ -57,25 +57,25 @@ Individual Freezeは1つの通貨にのみ適用されます。特定の取引
|
||||
|
||||
また、金融機関が新しい[発行アドレス](../../accounts/account-types.md)への移行や、営業の停止を予定している場合にも、Global Freezeを有効にすることが有用です。これにより、特定の時点で資金がロックされるため、ユーザは他の通貨で取引することができなくなります。
|
||||
|
||||
Global Freezeは、当該アドレスによって発行および保有されている _すべての_ 通貨に適用されます。1つの通貨のみに対してGlobal Freezeを有効にすることはできません。一部の通貨のみを凍結できるようにしたい場合は、通貨ごとに異なるアドレスを使用してください。
|
||||
Global Freezeは、当該アドレスによって発行および保有されている _すべての_ 通貨に適用されます。1つの通貨のみに対してGlobal Freezeを有効にすることはできません。一部の通貨のみをフリーズできるようにしたい場合は、通貨ごとに異なるアドレスを使用してください。
|
||||
|
||||
アドレスのGlobal Freeze設定はいつでも有効にできます。ただし、アドレスの[No Freeze](#no-freeze)設定を有効にすると、Global Freezeを _無効にする_ ことはできません。
|
||||
|
||||
|
||||
## No Freeze
|
||||
|
||||
**No Freeze**機能をアドレスに設定すると、取引相手が発行した通貨を凍結する機能を永久に放棄します。この機能を使用すれば、企業は自社が発行した資金を「物理的なお金のように」扱うことができます。これにより、企業は顧客どうしがその資金を取引することに介入できなくなります。
|
||||
**No Freeze**機能をアドレスに設定すると、取引相手が発行した通貨をフリーズする機能を永久に放棄します。この機能を使用すれば、企業は自社が発行した資金を「物理的なお金のように」扱うことができます。これにより、企業は顧客どうしがその資金を取引することに介入できなくなります。
|
||||
|
||||
確認事項: XRPはすでに凍結できません。No Freeze機能は、XRP Ledgerで発行された他の通貨にのみ適用されます。
|
||||
確認事項: XRPはすでにフリーズできません。No Freeze機能は、XRP Ledgerで発行された他の通貨にのみ適用されます。
|
||||
|
||||
No Freeze設定には次の2つの効果があります。
|
||||
|
||||
* 発行アドレスは、すべての取引相手とのトラストラインに対してIndividual Freezeを有効にできなくなります。
|
||||
* 発行アドレスは、Global Freezeを有効にしてグローバル凍結を施行できますが、Global Freezeを _無効にする_ ことはできません。
|
||||
* 発行アドレスは、Global Freezeを有効にしてグローバルフリーズを施行できますが、Global Freezeを _無効にする_ ことはできません。
|
||||
|
||||
XRP Ledgerは金融機関に対し、その発行資金が表す債務を履行することを強制できません。このため、Global Freezeを有効にする機能を放棄しても顧客を保護できません。ただし、Global Freezeを _無効にする_ 機能を放棄することで、Global Freeze機能が一部の顧客に対して不当に適用されないようにすることができます。
|
||||
|
||||
No Freeze設定は、アドレスに対して発行される通貨と、アドレスから発行される通貨のすべてに適用されます。一部の通貨のみを凍結できるようにしたい場合は、通貨ごとに異なるアドレスを使用してください。
|
||||
No Freeze設定は、アドレスに対して発行される通貨と、アドレスから発行される通貨のすべてに適用されます。一部の通貨のみをフリーズできるようにしたい場合は、通貨ごとに異なるアドレスを使用してください。
|
||||
|
||||
No Freeze設定は、アドレスのマスターキーのシークレットキーにより署名されたトランザクションでのみ有効にできます。[レギュラーキー](../../../references/protocol/transactions/types/setregularkey.md)または[マルチシグトランザクション](../../accounts/multi-signing.md)を使用してNo Freezeを有効にすることはできません。
|
||||
|
||||
@@ -83,13 +83,13 @@ No Freeze設定は、アドレスのマスターキーのシークレットキ
|
||||
|
||||
# 関連項目
|
||||
|
||||
- [凍結コードの例](https://github.com/XRPLF/xrpl-dev-portal/tree/master/_code-samples/freeze)
|
||||
- [フリーズコードの例](https://github.com/XRPLF/xrpl-dev-portal/tree/master/_code-samples/freeze)
|
||||
- **コンセプト:**
|
||||
- [トラストラインとトークンの発行](index.md)
|
||||
- **Tutorials:**
|
||||
- [No Freezeを有効化](../../../tutorials/how-tos/use-tokens/enable-no-freeze.md)
|
||||
- [Global Freezeの実行](../../../tutorials/how-tos/use-tokens/enact-global-freeze.md)
|
||||
- [トラストラインの凍結](../../../tutorials/how-tos/use-tokens/freeze-a-trust-line.md)
|
||||
- [トラストラインのフリーズ](../../../tutorials/how-tos/use-tokens/freeze-a-trust-line.md)
|
||||
- **References:**
|
||||
- [account_linesメソッド][]
|
||||
- [account_infoメソッド][]
|
||||
|
||||
@@ -73,11 +73,11 @@ KYC(Know Your Customer)やAML(Anti-Money Laundering)などのコンプライア
|
||||
|
||||
### Freezeフラグ
|
||||
|
||||
保有者アカウント内のステーブルコインを凍結することができます。これは、詐欺行為が疑われる場合、または保有を強制する場合に行うことができます。個々のトラストラインを凍結することも、グローバルに凍結することもできます。
|
||||
保有者アカウント内のステーブルコインをフリーズすることができます。これは、詐欺行為が疑われる場合、または保有を強制する場合に行うことができます。個々のトラストラインをフリーズすることも、グローバルにフリーズすることもできます。
|
||||
|
||||
逆に、トークンを凍結する能力を永久に放棄する「No Freeze」を設定することもできます。これにより、発行者がトークン同士の取引を妨害でき無くなるという意味で、そのステーブルコインはより現実の通貨に近くなります。
|
||||
逆に、トークンをフリーズする能力を永久に放棄する「No Freeze」を設定することもできます。これにより、発行者がトークン同士の取引を妨害でき無くなるという意味で、そのステーブルコインはより現実の通貨に近くなります。
|
||||
|
||||
[トークンの凍結](../freezes.md)をご覧ください。
|
||||
[トークンのフリーズ](../freezes.md)をご覧ください。
|
||||
|
||||
|
||||
### Clawbackフラグ
|
||||
|
||||
@@ -52,7 +52,7 @@ XRP Ledgerにおけるトークンは、[XRPと異なる性質](../../references
|
||||
|
||||
必要なトラストラインが設定されていれば、誰でも[Paymentトランザクション][]を送信することでトークンを発行することができます。トークンを発行者に送り返せば、トークンを「burn」することができます。また、発行者の設定により、[クロスカレンシー支払い](../payment-types/cross-currency-payments.md)やトレードでトークンをさらに生み出せるケースもあります。
|
||||
|
||||
発行者は、ユーザがトークンを送金する際に自動で差し引かれる「送金手数料」(transfer-fees.html)を設定することができます。発行者は、自分のトークンを含む取引レートの[ティックサイズ](decentralized-exchange/ticksize.md)を定義することもできます。発行者と一般アカウントのどちらも、トラストラインを[凍結](fungible-tokens/freezes.md)することができ、トラストライン内のトークンの使用方法を制限することができます。( XRPにはこのいずれも適用されません。)
|
||||
発行者は、ユーザがトークンを送金する際に自動で差し引かれる「送金手数料」(transfer-fees.html)を設定することができます。発行者は、自分のトークンを含む取引レートの[ティックサイズ](decentralized-exchange/ticksize.md)を定義することもできます。発行者と一般アカウントのどちらも、トラストラインを[フリーズ](fungible-tokens/freezes.md)することができ、トラストライン内のトークンの使用方法を制限することができます。( XRPにはこのいずれも適用されません。)
|
||||
|
||||
トークン発行の技術的な手順については、[代替可能トークンの発行](../../tutorials/how-tos/use-tokens/issue-a-fungible-token.md) をご覧ください。
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ _トランザクション(取引)_ は、XRP Ledgerを変更する唯一の
|
||||
署名の種類に関係なく、あらゆるタイプのトランザクションを承認できます。ただし、次の例外があります。
|
||||
|
||||
* マスター秘密鍵だけが[マスター公開鍵](../../references/protocol/transactions/types/accountset.md)を無効にできます。
|
||||
* マスター秘密鍵だけが[凍結機能を永続的に放棄](../tokens/fungible-tokens/freezes.md#no-freeze)できます。
|
||||
* マスター秘密鍵だけが[フリーズ機能を永続的に放棄](../tokens/fungible-tokens/freezes.md#no-freeze)できます。
|
||||
* アドレスからトランザクションに署名する最後の方法を削除することはできません。
|
||||
|
||||
マスターキーとレギュラーキーペアについて詳しくは、[暗号鍵](../accounts/cryptographic-keys.md)をご覧ください。
|
||||
|
||||
@@ -30,7 +30,7 @@ XRPはXRP Ledgerにて使用可能な暗号通貨です。
|
||||
|
||||
暗号通貨は _代替可能トークン_ です。 _代替可能_ とは、あるトークンを同じ価値の他のトークンに置き換えることができるという意味です。郵便切手は代替可能(相対的な価値が一致し、交換可能)であるため、手紙を出すのに50セントかかる場合、25セント切手を2枚使うか、10セント切手を5枚使って郵便料金を支払うことが出来ます。
|
||||
|
||||
暗号通貨は分散型でもあります。通貨を管理する中央機関がないのです。一度でもトランザクションがブロックチェーンに登録されると、それを変更することはできません。暗号通貨を検閲することは困難です。システムが十分に分散化されている限り、誰もトランザクションをロールバックしたり、残高を凍結したり、誰かが分散化されたデジタル資産を使うことをブロックしたりすることはできません。あらゆる参加者の間で大きな合意がなければルールが変更されることはありません。
|
||||
暗号通貨は分散型でもあります。通貨を管理する中央機関がないのです。一度でもトランザクションがブロックチェーンに登録されると、それを変更することはできません。暗号通貨を検閲することは困難です。システムが十分に分散化されている限り、誰もトランザクションをロールバックしたり、残高をフリーズしたり、誰かが分散化されたデジタル資産を使うことをブロックしたりすることはできません。あらゆる参加者の間で大きな合意がなければルールが変更されることはありません。
|
||||
|
||||
暗号通貨が投資家や開発者にとって魅力的なのは、単一の事業者が「電源を切って」暗号通貨を消滅させることができないからです。
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ labels:
|
||||
| `send_currencies` | 文字列の配列 | このアカウントが送金できる通貨の[通貨コード][]の配列。 |
|
||||
| `validated` | ブール値 | `true`の場合、このデータは検証済みレジャーから取得されます。 |
|
||||
|
||||
{% admonition type="info" name="注記" %}アカウントが送金または受領できる通貨は、アカウントのトラストラインのチェックに基づいて定義されます。アカウントに通貨のトラストラインがあり、残高を増額できる余裕がある場合、その通貨を受領できます。トラストラインの残高を減らせる場合、アカウントはその通貨を送金できます。このメソッドでは、トラストラインが[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)または承認されているかどうかは確認 _されません_ 。{% /admonition %}
|
||||
{% admonition type="info" name="注記" %}アカウントが送金または受領できる通貨は、アカウントのトラストラインのチェックに基づいて定義されます。アカウントに通貨のトラストラインがあり、残高を増額できる余裕がある場合、その通貨を受領できます。トラストラインの残高を減らせる場合、アカウントはその通貨を送金できます。このメソッドでは、トラストラインが[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)または承認されているかどうかは確認 _されません_ 。{% /admonition %}
|
||||
|
||||
## 考えられるエラー
|
||||
|
||||
|
||||
@@ -223,8 +223,8 @@ rippled account_info rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn validated
|
||||
| `disallowIncomingPayChan` | 真偽値 | `true`の場合、このアカウントは第三者からの[ペイメントチャンネル](../../../../concepts/payment-types/payment-channels.md)の作成を許可していません。 _([DisallowIncoming amendment][]が必要です)_ |
|
||||
| `disallowIncomingTrustline` | 真偽値 | `true`の場合、このアカウントは第三者が[トラストライン](../../../../concepts/tokens/fungible-tokens/index.md)を作ることを許可していません。 _([DisallowIncoming amendment][]が必要です)_ |
|
||||
| `disallowIncomingXRP` | 真偽値 | `true`の場合、このアカウントは他者からXRPを受け取りたくありません。(これは参考情報であり、プロトコルレベルでは強制されません) |
|
||||
| `globalFreeze` | 真偽値 | `true`の場合、このアカウントによって発行されたすべてのトークンは現在凍結されています。 |
|
||||
| `noFreeze` | 真偽値 | `true`の場合、このアカウントは個々のトラストラインを凍結したり、グローバル凍結を行う機能を永久に放棄しています。詳細は[No Freeze](../../../../concepts/tokens/fungible-tokens/freezes.md#no-freeze)をご覧ください。 |
|
||||
| `globalFreeze` | 真偽値 | `true`の場合、このアカウントによって発行されたすべてのトークンは現在フリーズされています。 |
|
||||
| `noFreeze` | 真偽値 | `true`の場合、このアカウントは個々のトラストラインをフリーズしたり、グローバルフリーズを行う機能を永久に放棄しています。詳細は[No Freeze](../../../../concepts/tokens/fungible-tokens/freezes.md#no-freeze)をご覧ください。 |
|
||||
| `passwordSpent` | 真偽値 | `false`の場合、このアカウントはトランザクションコスト0の特別な[キーリセットトランザクション](../../../../concepts/transactions/transaction-cost.md#key-resetトランザクション)を送信できます。プロトコルはこのフラグを自動的にオン/オフします。 |
|
||||
| `requireAuthorization` | 真偽値 | `true`の場合、このアカウントは[認可トラストライン](../../../../concepts/tokens/fungible-tokens/authorized-trust-lines.md)を使って、発行するトークンを保持できる人を制限しています。 |
|
||||
| `requireDestinationTag` | 真偽値 | `true`の場合、このアカウントは受け取るすべての支払いに[宛先タグ](../../../../tutorials/how-tos/manage-account-settings/require-destination-tags.md)をリクエストしています。 |
|
||||
|
||||
@@ -435,8 +435,8 @@ rippled account_lines r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59
|
||||
| `no_ripple_peer` | 真偽値 | (省略される場合があります)`true`の場合、ピアアカウントはこのトラストラインで[No Rippleフラグ](../../../../concepts/tokens/fungible-tokens/rippling.md)を有効にしています。もし`false`なら、このアカウントはNo Rippleフラグを無効にしていますが、このアカウントはDefault Rippleフラグも無効にしているため、[デフォルト値](../../../protocol/ledger-data/ledger-entry-types/ripplestate.md#所有者の準備金への資金供給)とはみなされません。省略された場合、そのアカウントはこのトラストラインのNo Rippleフラグが無効で、Default Rippleが有効です。{% badge href="https://github.com/XRPLF/rippled/releases/tag/1.7.0" %}更新: rippled 1.7.0{% /badge %} |
|
||||
| `authorized` | 真偽値 | (省略される場合があります)このアカウントが[このトラストラインを承認した](../../../../concepts/tokens/fungible-tokens/authorized-trust-lines.md)場合は、`true`。省略されている場合は、`false`と同じです。 |
|
||||
| `peer_authorized` | 真偽値 | (省略される場合があります)ピアアカウントが[このトラストラインを承認した](../../../../concepts/tokens/fungible-tokens/authorized-trust-lines.md)場合は`true`。省略されている場合は、`false`と同じです。 |
|
||||
| `freeze` | 真偽値 | (省略される場合があります)このアカウントがこのトラストラインを[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)した場合は`true`。省略されている場合は、`false`と同じです。 |
|
||||
| `freeze_peer` | 真偽値 | (省略される場合があります)ピアアカウントがこのトラストラインを[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)した場合は、`true`。省略されている場合は、`false`と同じです。 |
|
||||
| `freeze` | 真偽値 | (省略される場合があります)このアカウントがこのトラストラインを[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)した場合は`true`。省略されている場合は、`false`と同じです。 |
|
||||
| `freeze_peer` | 真偽値 | (省略される場合があります)ピアアカウントがこのトラストラインを[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)した場合は、`true`。省略されている場合は、`false`と同じです。 |
|
||||
|
||||
## 考えられるエラー
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ Clioの`ledger`コマンドは、[rippledのledgerコマンド](../ledger-method
|
||||
|
||||
| `Field` | 値 | 説明 |
|
||||
|:--------------|:------|:----------------------------------------------------|
|
||||
| `owner_funds` | 文字列 | このレジャーのすべてのトランザクションの実行後に、このOfferCreateトランザクションを送信する`Account`が保有する`TakerGets`通貨の額。この通貨額が[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)されているかどうかはチェックされません。 |
|
||||
| `owner_funds` | 文字列 | このレジャーのすべてのトランザクションの実行後に、このOfferCreateトランザクションを送信する`Account`が保有する`TakerGets`通貨の額。この通貨額が[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)されているかどうかはチェックされません。 |
|
||||
|
||||
リクエストで`”diff": true`を指定した場合、レスポンスにはオブジェクト`diff`が含まれます。このオブジェクトのフィールドは以下の通りです。
|
||||
|
||||
|
||||
@@ -138,7 +138,7 @@ rippled ledger current
|
||||
|
||||
| `Field` | 値 | 説明 |
|
||||
|:--------------|:-------|:----------------------------------------------------|
|
||||
| `owner_funds` | 文字列 | このレジャーのすべてのトランザクションの実行後に、このOfferCreateトランザクションを送信する`Account`が保有する`TakerGets`通貨の額。この通貨額が[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)されているかどうかはチェックされません。 |
|
||||
| `owner_funds` | 文字列 | このレジャーのすべてのトランザクションの実行後に、このOfferCreateトランザクションを送信する`Account`が保有する`TakerGets`通貨の額。この通貨額が[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)されているかどうかはチェックされません。 |
|
||||
|
||||
## 考えられるエラー
|
||||
|
||||
|
||||
@@ -211,8 +211,8 @@ _([AMM amendment][]により追加されました。)_
|
||||
| `amm_account` | 文字列 | AMMアカウントの[アドレス][]です。 |
|
||||
| `amount` | [通貨額][] | AMMのプールにある1つの資産の合計額。(注記:リクエストに指定した`asset` _または_ `asset2`になります。) |
|
||||
| `amount2` | [通貨額][] | AMMのプール内の他の資産の合計額。(注意:リクエストに指定した`asset` _または_ `asset2`になります。) |
|
||||
| `asset_frozen` | 真偽値 | _(XRPの場合、省略)_ `true`の場合、`amount`の通貨は現在[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)されています。 |
|
||||
| `asset2_frozen` | 真偽値 | _(XRPの場合、省略)_ `true`の場合、`amount2`の通貨は現在[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)されています。 |
|
||||
| `asset_frozen` | 真偽値 | _(XRPの場合、省略)_ `true`の場合、`amount`の通貨は現在[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)されています。 |
|
||||
| `asset2_frozen` | 真偽値 | _(XRPの場合、省略)_ `true`の場合、`amount2`の通貨は現在[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)されています。 |
|
||||
| `auction_slot` | オブジェクト | _(省略される場合があります)_ 存在する場合、現在のオークションスロットの所有者を記述した[オークションスロットオブジェクト](#オークションスロットオブジェクト)です。 |
|
||||
| `lp_token` | [通貨額][] | このAMMのLPトークンの発行残高の合計。リクエスト時に`account`フィールドで流動性プロバイダを指定した場合、その流動性プロバイダが保有するこのAMMのLPトークンの量です。 |
|
||||
| `trading_fee` | 数値 | AMMの現在の取引手数料。単位は1/100,000で、1は0.001%の手数料に相当します。 |
|
||||
|
||||
@@ -563,7 +563,7 @@ labels:
|
||||
|
||||
| `Field` | 値 | 説明 |
|
||||
| :------------------------ | :----- | ---- |
|
||||
| `transaction.owner_funds` | 文字列 | このOfferCreateトランザクションを送信する`Account`が、このトランザクション実行後に有する`TakerGets`通貨の金額。この通貨額が[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)されているかどうかはチェックされません。<br>[API v2][]では`tx_json.owner_funds`に変更されました。 |
|
||||
| `transaction.owner_funds` | 文字列 | このOfferCreateトランザクションを送信する`Account`が、このトランザクション実行後に有する`TakerGets`通貨の金額。この通貨額が[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)されているかどうかはチェックされません。<br>[API v2][]では`tx_json.owner_funds`に変更されました。 |
|
||||
|
||||
|
||||
## Book Changesストリーム
|
||||
|
||||
@@ -24,7 +24,7 @@ XRP Ledgerには2種類の通貨、XRPと[トークン](../../../concepts/tokens
|
||||
| 最小値: `0` (負の値はありません) | 最小値: `-9999999999999999e80` ゼロでない絶対値の最小値: `1000000000000000e-96`
|
||||
| 最大値 `100000000000` (10<sup>11</sup>) XRP (`100000000000000000` (10<sup>17</sup>) "drops") | 最大値 `9999999999999999e80` |
|
||||
| 最小の精度: "drop" (0.000001 XRP) | 小数点以下15桁の精度 |
|
||||
| [凍結](../../../concepts/tokens/fungible-tokens/freezes.md)できません | 発行者は残高を[凍結](../../../concepts/tokens/fungible-tokens/freezes.md)することができます |
|
||||
| [フリーズ](../../../concepts/tokens/fungible-tokens/freezes.md)できません | 発行者は残高を[フリーズ](../../../concepts/tokens/fungible-tokens/freezes.md)することができます |
|
||||
| 送金手数料はかかりません。XRP同士の支払いは常に直接行われます | 間接的な[パス](../../../concepts/tokens/fungible-tokens/paths.md)を取ることができ、各発行者は一定の[送金手数料](../../../concepts/tokens/transfer-fees.md)を請求できます |
|
||||
| [ペイメントチャンネル](../../../concepts/payment-types/payment-channels.md)と[エスクロー](../../../concepts/payment-types/escrow.md)で使用できます | ペイメントチャネルやエスクローには対応していません |
|
||||
|
||||
|
||||
@@ -98,8 +98,8 @@ AccountRootオブジェクトは`Flags`フィールドに以下のフラグを
|
||||
| `lsfDisallowIncomingPayChan` | `0x10000000` | 268435456 | `asfDisallowIncomingPayChan` | このアカウントを宛先とするペイメントチャネルの作成をブロックします。 _([DisallowIncoming Amendment][]により追加されました。)_ |
|
||||
| `lsfDisallowIncomingTrustline` | `0x20000000` | 536870912 | `asfDisallowIncomingTrustline` | このアカウントに対するトラストラインの作成をブロックします。 _([DisallowIncoming Amendment][]により追加されました。)_ |
|
||||
| `lsfDisallowXRP` | `0x00080000` | 524288 | `asfDisallowXRP` | クライアントアプリケーションはこのアカウントにXRPを送金しないでください。`rippled`により強制されるものではありません。 |
|
||||
| `lsfGlobalFreeze` | `0x00400000` | 4194304 | `asfGlobalFreeze` | このアドレスが発行するすべての資産が凍結されます。 |
|
||||
| `lsfNoFreeze` | `0x00200000` | 2097152 | `asfNoFreeze` | このアドレスは、このアドレスに接続しているトラストラインを凍結できません。一度有効にすると、無効にできません。 |
|
||||
| `lsfGlobalFreeze` | `0x00400000` | 4194304 | `asfGlobalFreeze` | このアドレスが発行するすべての資産がフリーズされます。 |
|
||||
| `lsfNoFreeze` | `0x00200000` | 2097152 | `asfNoFreeze` | このアドレスは、このアドレスに接続しているトラストラインをフリーズできません。一度有効にすると、無効にできません。 |
|
||||
| `lsfPasswordSpent` | `0x00010000` | 65536 | (なし) | このアカウントは無料のSetRegularKeyトランザクションを使用しています。 |
|
||||
| `lsfRequireAuth` | `0x00040000` | 262144 | `asfRequireAuth` | このアカウントは、他のユーザがこのアカウントのトークンを保有することを個別に承認する必要があります。 |
|
||||
| `lsfRequireDestTag` | `0x00020000` | 131072 | `asfRequireDest` | 受信ペイメントには宛先タグの指定が必要です。 |
|
||||
|
||||
@@ -45,7 +45,7 @@ labels:
|
||||
| `tecINVARIANT_FAILED` | 147 | このトランザクションを実行しようとしたところ、不変性チェックが失敗しました。[EnforceInvariants Amendment][]により追加されました。このエラーを再現できる場合は、[問題を報告](https://github.com/XRPLF/rippled/issues)してください。 |
|
||||
| `tecKILLED` | 150 | [OfferCreateトランザクション][]がtfFillOrKillフラグを指定しましたが、トランザクションを確定できなかったため、このトランザクションは取り消されました。_([fix1578 Amendment][]により追加されました。)_ |
|
||||
| `tecMAX_SEQUENCE_REACHED` | 153 | シーケンス番号フィールドはすでに最大値に達しています。これには`MintedNFTokens`フィールドも含まれます。 _([NonFungibleTokensV1_1 amendment][]により追加されました。)_ |
|
||||
| `tecNEED_MASTER_KEY` | 142 | このトランザクションはマスターキーを必要とする変更([マスターキーの無効化または残高凍結能力の放棄](../types/accountset.md#accountsetのフラグ)など)を試みました。|
|
||||
| `tecNEED_MASTER_KEY` | 142 | このトランザクションはマスターキーを必要とする変更([マスターキーの無効化または残高フリーズ能力の放棄](../types/accountset.md#accountsetのフラグ)など)を試みました。|
|
||||
| `tecNFTOKEN_BUY_SELL_MISMATCH` | 155 | [NFTokenAcceptOfferトランザクション][]は、非代替性トークンの購入と売却に関する対応しないオファーをマッチングさせようとしました。 _([NonFungibleTokensV1_1 amendment][]により追加されました。)_ |
|
||||
| `tecNFTOKEN_OFFER_TYPE_MISMATCH` | 156 | トランザクションで指定されたオファーのうち、1つまたは複数について、オファーの種類が適切ではありませんでした。(例えば、`NFTokenSellOffer`フィールドに購入オファーが指定されていました。) _([NonFungibleTokensV1_1 amendment][]により追加されました。)_ |
|
||||
| `tecNO_ALTERNATIVE_KEY` | 130 | トランザクションが唯一の[トランザクション承認](../../../../concepts/transactions/index.md#トランザクションの承認)メソッドを削除しようとしました。これは、レギュラーキーを削除する[SetRegularKeyトランザクション][]、SignerListを削除する[SignerListSetトランザクション][]、またはマスターキーを無効にする[AccountSetトランザクション][]である可能性があります。(`rippled` 0.30.0より前のバージョンでは、このトランザクションは`tecMASTER_DISABLED`と呼ばれていました。) |
|
||||
|
||||
@@ -82,8 +82,8 @@ AccountSetトランザクションは、[XRP Ledgerのアカウント](../../led
|
||||
| `asfDisallowIncomingPayChan` | 14 | `lsfDisallowIncomingPayChan` | ペイメントチャネルの着信をブロックします。_([DisallowIncoming amendment][] が必要です)_。 |
|
||||
| `asfDisallowIncomingTrustline` | 15 | `lsfDisallowIncomingTrustline` | トラストラインの着信をブロックします。_([DisallowIncoming amendment][] が必要です)_。 |
|
||||
| `asfDisallowXRP` | 3 | `lsfDisallowXRP` | XRPがこのアカウントに送信されないようにします(勧告的なもので、XRP Ledgerのプロトコルでは強制されません)。 |
|
||||
| `asfGlobalFreeze` | 7 | `lsfGlobalFreeze` | このアカウントによって発行されたすべての資産を[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)します。 |
|
||||
| `asfNoFreeze` | 6 | `lsfNoFreeze` | [個々のトラストラインの凍結またはGlobal Freezeの無効化](../../../../concepts/tokens/fungible-tokens/freezes.md)の機能を永続的に放棄します。このフラグは、有効にした後は無効にできません。 |
|
||||
| `asfGlobalFreeze` | 7 | `lsfGlobalFreeze` | このアカウントによって発行されたすべての資産を[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)します。 |
|
||||
| `asfNoFreeze` | 6 | `lsfNoFreeze` | [個々のトラストラインのフリーズまたはGlobal Freezeの無効化](../../../../concepts/tokens/fungible-tokens/freezes.md)の機能を永続的に放棄します。このフラグは、有効にした後は無効にできません。 |
|
||||
| `asfRequireAuth` | 2 | `lsfRequireAuth` | このアドレスによって発行された残高をユーザが保持することについて、承認を要求します。アドレスにトラストラインが接続されていない場合のみ有効にできます。 |
|
||||
| `asfRequireDest` | 1 | `lsfRequireDestTag` | トランザクションをこのアカウントに送信するための宛先タグを要求します。 |
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ AMMを表す[AMMエントリ][]と[特殊なAccountRootエントリ](../../ledge
|
||||
| `terNO_ACCOUNT` | リクエストで参照されたいずれかのアカウントが存在しません。|
|
||||
| `tecNO_AUTH` | 送信者は資産(`Amount`または`Amount2`)のいずれかを保有する権限がありません。 |
|
||||
| `tecNO_LINE` | 送信者は資産(`Amount`または`Amount2`)のうちいずれか1つに対するトラストラインを保有していません。 |
|
||||
| `tecFROZEN` | 資産(`Amount`または`Amount2`)の少なくとも1つが現在[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)されています。 |
|
||||
| `tecFROZEN` | 資産(`Amount`または`Amount2`)の少なくとも1つが現在[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)されています。 |
|
||||
| `tecUNFUNDED_AMM` | 送信者は`Amount`と`Amount2`で指定された金額をAMMに入金するための十分な資金を保有していません。 |
|
||||
| `tecAMM_EXISTS` | この通貨ペアを扱っているAMMが既に存在しています。 |
|
||||
|
||||
|
||||
@@ -128,7 +128,7 @@ AMMDepositトランザクションは、以下のような[`Flags`フィール
|
||||
| `tecAMM_EMPTY` | 現在、AMM は資産を保有していないため、通常の入金はできません。代わりに、空のAMMの場合の特殊な入金を行う必要があります。 |
|
||||
| `tecAMM_NOT_EMPTY` | トランザクションで`tfTwoAssetIfEmpty`が指定されましたが、AMMは空ではありませんでした。 |
|
||||
| `tecAMM_FAILED` | 預け入れの条件が成立しませんでした。例えば、`EPrice`フィールドに指定された実効価格が低すぎる場合など。 |
|
||||
| `tecFROZEN` | トランザクションは[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)されているトークンを預けようとしました。 |
|
||||
| `tecFROZEN` | トランザクションは[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)されているトークンを預けようとしました。 |
|
||||
| `tecINSUF_RESERVE_LINE` | このトランザクションの送信者は、この処理による[準備金要件](../../../../concepts/accounts/reserves.md)の増加の対象であり、LPトークンを保持するための新しいトラストラインが必要で、そのための追加の所有者準備金分のXRPを保有していないためと思われます。 |
|
||||
| `tecUNFUNDED_AMM` | 送信者の残高が、指定された預け入れを行うのに十分な量ではありません。 |
|
||||
| `temBAD_AMOUNT` | トランザクションで指定された金額が無効です。例えば、金額がマイナスなど。 |
|
||||
|
||||
@@ -114,7 +114,7 @@ AMMWithdrawトランザクションは、以下のように[`Flags`フィール
|
||||
| `tecAMM_BALANCE` | トランザクションによって、プールから1つの資産をすべて引き出そうとしている、もしくは`tfWithdrawAll`の場合に端数処理によって0以外の金額が残ってしまっています。 |
|
||||
| `tecAMM_FAILED` | 例えば、`EPrice`フィールドに指定された有効価格が低過ぎる場合など、出金に関する条件が成立しませんでした。 |
|
||||
| `tecAMM_INVALID_TOKENS` | トークンペアのAMMが存在しないか、計算の結果、引き出し額がゼロに丸められました。 |
|
||||
| `tecFROZEN` | トランザクションは[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)されたトークンを引き出そうとしました。 |
|
||||
| `tecFROZEN` | トランザクションは[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)されたトークンを引き出そうとしました。 |
|
||||
| `tecINSUF_RESERVE_LINE` | トランザクションの送信者は、このトランザクションを処理するための[準備金要件](../../../../concepts/accounts/reserves.md)の増加に対応できません。おそらく、引き出される資産の1つを保持するために少なくとも1つの新しいトラストラインが必要ですが、新しいトラストラインのための追加の所有者準備金分のXRPを持っていないためでしょう。 |
|
||||
| `tecNO_AUTH` | 送信者は、引き出し資産のいずれかを保有する権限を有していません。 |
|
||||
| `temMALFORMED` | トランザクションで無効なフィールドの組み合わせが指定されました。[AMMWithdrawモード](#ammwithdrawモード)をご覧ください。 |
|
||||
|
||||
@@ -45,7 +45,7 @@ _([Checks Amendment][]が必要です)_
|
||||
- `Destination`がトランザクションの送信者である場合、トランザクションは結果コード`temREDUNDANT`で失敗します。
|
||||
- `Destination`[アカウント](../../../../concepts/accounts/index.md)がレジャーに存在していない場合、トランザクションは結果コード`tecNO_DST`で失敗します。
|
||||
- `Destination`アカウントでRequireDestフラグが有効であるが、トランザクションに`DestinationTag`フィールドが含まれていない場合、トランザクションは結果コード`tecDST_TAG_NEEDED`で失敗します。
|
||||
- `SendMax`に[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)されているトークンが指定されている場合、トランザクションは結果コード`tecFROZEN`で失敗します。
|
||||
- `SendMax`に[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)されているトークンが指定されている場合、トランザクションは結果コード`tecFROZEN`で失敗します。
|
||||
- トランザクションの`Expiration`が過去の日時である場合、トランザクションは結果コード`tecEXPIRED`で失敗します。
|
||||
- Checkの追加後に送金元が[所有者準備金](../../../../concepts/accounts/reserves.md#所有者準備金)条件を満たすのに十分なXRPを保有していない場合、トランザクションは結果コード`tecINSUFFICIENT_RESERVE`で失敗します。
|
||||
- Checkの送金元または送金先のいずれかがレジャーでこれ以上のオブジェクトを所有できない場合、トランザクションは結果コード`tecDIR_FULL`で失敗します。
|
||||
|
||||
@@ -98,7 +98,7 @@ _([NonFungibleTokensV1_1 amendment][]により追加されました)_
|
||||
| `temMALFORMED` | トランザクションのフォーマットが正しくありません。たとえば、`NFTokenSellOffer`と`NFTokenBuyOffer`のどちらも指定されていないか、`NFTokenBrokerFee`に負の値が指定されています。|
|
||||
| `tecCANT_ACCEPT_OWN_NFTOKEN_OFFER` | 購入者と販売者が同じアカウントになっています。 |
|
||||
| `tecEXPIRED` | トランザクションで指定されたオファーの有効期限が既に切れています。 |
|
||||
| `tecINSUFFICIENT_FUNDS` | 購入者が申し出た金額を全額持っていない。購入額がXRPで指定されている場合、[所有者準備金](../../../../concepts/accounts/reserves.md)が原因である可能性があります。購入額がトークンである場合、トークンが[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md) されていることが原因と考えられます。 |
|
||||
| `tecINSUFFICIENT_FUNDS` | 購入者が申し出た金額を全額持っていない。購入額がXRPで指定されている場合、[所有者準備金](../../../../concepts/accounts/reserves.md)が原因である可能性があります。購入額がトークンである場合、トークンが[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md) されていることが原因と考えられます。 |
|
||||
| `tecINSUFFICIENT_PAYMENT` | ブローカーモードにおいて、提示された購入額は、`BrokerFee` _および_ `NFToken`の売却コストを支払うには十分な額ではありません。 |
|
||||
| `tecOBJECT_NOT_FOUND` | トランザクションで指定されたオファーがレジャーに存在しません。 |
|
||||
| `tecNFTOKEN_BUY_SELL_MISMATCH` | ブローカーモードにおいて、2つのオファーが有効なマッチングではありません。例えば、販売者が購入者の提示額よりも高い金額を提示している、購入と売却のオファーが異なる通貨で提示されている、販売者が購入者や ブローカーとは異なる販売先を指定している、などです。 |
|
||||
|
||||
@@ -59,14 +59,14 @@ NFTokenCreateOfferタイプのトランザクションは、以下のように[`
|
||||
| `temBAD_EXPIRATION` | 指定された`Expiration`は無効です(例:`0`)。 |
|
||||
| `tecDIR_FULL` | 送信者がレジャーにすでにあまりにも多くのオブジェクトを所有しているか、またはこのトークンの売買のオファーがあまりにも多く存在しています。 |
|
||||
| `tecEXPIRED` | 指定された`Expiration`の時間は既に経過しています。 |
|
||||
| `tecFROZEN` | `Amount`はトークンで、このオファーからトークンを受け取るトラストラインは[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)されています。これは売却者のトラストラインか、`NFToken`の発行者のトラストライン(`NFToken`に送金手数料がある場合)である可能性があります。 |
|
||||
| `tecFROZEN` | `Amount`はトークンで、このオファーからトークンを受け取るトラストラインは[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)されています。これは売却者のトラストラインか、`NFToken`の発行者のトラストライン(`NFToken`に送金手数料がある場合)である可能性があります。 |
|
||||
| `tecINSUFFICIENT_RESERVE` | 送信者はこのオファーを提示した後、[所有者準備金](../../../../concepts/accounts/reserves.md)を満たすのに十分なXRPを持っていません。 |
|
||||
| `tecNO_DST` | `Destination`に指定されたアカウントがレジャーに存在しません。 |
|
||||
| `tecNO_ENTRY` | `NFToken`フィールドで指定したアカウントは所有していません。 |
|
||||
| `tecNO_ISSUER` | `Amount`フィールドで指定した発行者が存在しません。 |
|
||||
| `tecNO_LINE` | `Amount`フィールドはトークンですが、`NFToken`の発行者はそのトークンのトラストラインを持っておらず、`NFToken`は[`lsfTrustLine`フラグ](../../data-types/nftoken.md#nftoken-フラグ)が有効ではありません。 |
|
||||
| `tecNO_PERMISSION` | `Destination`アカウントが着信する NFTokenOffer をブロックします。 _([DisallowIncoming amendment][] が必要です。)_
|
||||
| `tecUNFUNDED_OFFER` | 購入オファーの場合、送信者は`Amount`フィールドで指定された通貨を利用可能です。もし`Amount`がXRPである場合、これは準備不足によるものかもしれません。もし`Amount`がトークンである場合、これは[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)されている可能性があります。 |
|
||||
| `tecUNFUNDED_OFFER` | 購入オファーの場合、送信者は`Amount`フィールドで指定された通貨を利用可能です。もし`Amount`がXRPである場合、これは準備不足によるものかもしれません。もし`Amount`がトークンである場合、これは[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)されている可能性があります。 |
|
||||
| `tefNFTOKEN_IS_NOT_TRANSFERABLE` | `NFToken`は[`lsfTransferable`フラグ](../../data-types/nftoken.md#nftoken-flags)が無効になっており、このトランザクションでは`NFToken`を発行者に転送したり発行者から転送したりすることはできません。 |
|
||||
|
||||
{% raw-partial file="/docs/_snippets/common-links.md" /%}
|
||||
|
||||
@@ -59,7 +59,7 @@ Paymentトランザクションタイプは、いくつかの異なるタイプ
|
||||
| Paymentの種類 | `Amount` | `SendMax` | `Paths` | `Address` = `Destination`? | 説明 |
|
||||
| :--------------------------------- | :---------------------------------- | :---------------------------------- | :--------- | :------------------------- | ---- |
|
||||
| [XRP同士の直接支払い][] | 文字列 (XRP) | 省略 | 省略 | いいえ | アカウント間でへ直接XRPを送金します。常に正確な金額を送信します。基本的な[取引コスト](../../../../concepts/transactions/transaction-cost.md)以外の手数料は適用されません。 |
|
||||
| [発行通貨の作成・償還][] | オブジェクト | オブジェクト (任意) | 任意 | いいえ | XRP Ledgerに追跡されているXRP以外の通貨や資産の量を増減させます。[送金手数料](../../../../concepts/tokens/transfer-fees.md)と[凍結](../../../../concepts/tokens/fungible-tokens/freezes.md)は、直接送金・換金する際には適用されません。 |
|
||||
| [発行通貨の作成・償還][] | オブジェクト | オブジェクト (任意) | 任意 | いいえ | XRP Ledgerに追跡されているXRP以外の通貨や資産の量を増減させます。[送金手数料](../../../../concepts/tokens/transfer-fees.md)と[フリーズ](../../../../concepts/tokens/fungible-tokens/freezes.md)は、直接送金・換金する際には適用されません。 |
|
||||
| [クロスカレンシー(通貨間)決済][] | オブジェクト (非XRP) / 文字列 (XRP) | オブジェクト (非XRP) / 文字列 (XRP) | 通常は必須 | いいえ | 発行された通貨を保有者から別の保有者に送信します。`Amount`と`SendMax`の両方をXRPにすることはできません。これらの支払いは、発行者を介して[リップリング](../../../../concepts/tokens/fungible-tokens/rippling.md)し、トランザクションがパスセットを指定した場合、複数の仲介者を介してより長い[パス](../../../../concepts/tokens/fungible-tokens/paths.md)を取ることができます。トランザクション形式には、発行者が設定した[送金手数料](../../../../concepts/tokens/transfer-fees.md) が適用されます。これらのトランザクションは、異なる通貨間や、場合によっては同じ通貨コードで異なる発行者の通貨間を接続するために、[分散型取引所](../../../../concepts/tokens/decentralized-exchange/index.md)のオファーを利用します。 |
|
||||
| [Partial payment][] | オブジェクト (非XRP) / 文字列 (XRP) | オブジェクト (非XRP) / 文字列 (XRP) | 通常は必須 | いいえ | 任意の通貨を特定の金額まで送ります。[`tfPartialPayment` フラグ](#paymentのフラグ)を使用します。トランザクションが成功するための最小値を指定する `DeliverMin` 値を含めることができます。トランザクションが `DeliverMin` を指定しない場合、_任意の正の値_ を指定して成功させることができる。 |
|
||||
| 通貨変換 | オブジェクト (非XRP) / 文字列 (XRP) | オブジェクト (非XRP) / 文字列 (XRP) | 必須 | はい | [分散型取引所](../../../../concepts/tokens/decentralized-exchange/index.md)のオファーを消費して、ある通貨を別の通貨に交換し、[裁定取引](https://ja.wikipedia.org/wiki/%E8%A3%81%E5%AE%9A%E5%8F%96%E5%BC%95)の機会を得ることが出来ます。`Amount`と `SendMax` の両方を XRP にすることはできません。[Data API](../../../data-api.md) は、このタイプの取引を "payment" ではなく、"exchange" として追跡しています。 |
|
||||
|
||||
@@ -66,7 +66,7 @@ XRPは、XRP Ledgerの _アカウント_ ( _ウォレット_ や _アドレス
|
||||
|
||||
<!-- STYLE_OVERRIDE: hot wallet, warm wallet, cold wallet, wallet -->
|
||||
|
||||
Rippleが推奨するベストプラクティスに従い、Alpha Exchangeは、XRP Ledgerに最低2つのアカウントを作成する必要があります。シークレットキーが悪用された場合の危険を最小限にとどめるため、Rippleでは、[ _コールドアカウント_ 、 _ホットアカウント_ 、 _ウォームアカウント_ ](https://ripple.com/build/issuing-operational-addresses/)(それぞれコールドウォレット、ホットウォレット、ウォームウォレットとも呼ばれる)の作成をお勧めしています。コールド/ホット/ウォームのモデルは、セキュリティと利便性のバランスをとるためのものです。XRPを上場する取引所は、以下のアカウントを作成する必要があります。
|
||||
Rippleが推奨するベストプラクティスに従い、Alpha Exchangeは、XRP Ledgerに最低2つのアカウントを作成する必要があります。シークレットキーが悪用された場合の危険を最小限にとどめるため、Rippleでは、[ _コールドアカウント_ 、 _ホットアカウント_ 、 _ウォームアカウント_ ](../../concepts/accounts/account-types.md)(それぞれコールドウォレット、ホットウォレット、ウォームウォレットとも呼ばれる)の作成をお勧めしています。コールド/ホット/ウォームのモデルは、セキュリティと利便性のバランスをとるためのものです。XRPを上場する取引所は、以下のアカウントを作成する必要があります。
|
||||
|
||||
* 大部分のXRPと顧客の資金を維持する[ _コールドウォレット_ ](../../concepts/accounts/account-types.md#発行アドレス)。取引所にとって、これはユーザが[預入れ](#取引所へのxrpの入金)をするアドレスです。 セキュリティを最適化するため、このアカウントのシークレットキーはオフラインにする必要があります。
|
||||
|
||||
|
||||
@@ -141,16 +141,16 @@ How to transparently report the current number of stablecoins held in reserve.
|
||||
|
||||
### トラストラインのFreeze
|
||||
|
||||
XRP Ledgerでトークンを発行する場合、_No Freeze_ 設定を有効にすることで、XRP Ledgerのトークン凍結機能を利用することを永久に停止することができます。(注意点として、これは発行されたトークンにのみ適用され、XRPには適用されません)。
|
||||
XRP Ledgerでトークンを発行する場合、_No Freeze_ 設定を有効にすることで、XRP Ledgerのトークンフリーズ機能を利用することを永久に停止することができます。(注意点として、これは発行されたトークンにのみ適用され、XRPには適用されません)。
|
||||
|
||||
_No Freeze_ 設定を有効にしない場合、アカウントが疑わしい動きを示したり、金融機関の利用規約に違反したりした場合、問題を解決する間、トラストラインを凍結する選択肢があります。
|
||||
_No Freeze_ 設定を有効にしない場合、アカウントが疑わしい動きを示したり、金融機関の利用規約に違反したりした場合、問題を解決する間、トラストラインをフリーズする選択肢があります。
|
||||
|
||||
[トラストラインの凍結](../../concepts/tokens/fungible-tokens/freezes.md)をご覧ください。
|
||||
[トラストラインのフリーズ](../../concepts/tokens/fungible-tokens/freezes.md)をご覧ください。
|
||||
|
||||
|
||||
### Global Freeze
|
||||
|
||||
不審な活動の兆候が見られた場合、アカウントをグローバルに凍結し、ユーザがトークンを相互に送信したり、分散型取引所でトークンを取引したりできないようにすることができます。
|
||||
不審な活動の兆候が見られた場合、アカウントをグローバルにフリーズし、ユーザがトークンを相互に送信したり、分散型取引所でトークンを取引したりできないようにすることができます。
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -17,13 +17,18 @@ labels:
|
||||
|
||||
| 名前 | 登場 | ステータス |
|
||||
|:----------------------------------|:-----------|:------------------------------------|
|
||||
| [AMMClawback][] | v2.3.0 | {% badge href="https://xrpl.org/blog/2024/rippled-2.3.0" %}投票中: 2024-11-26{% /badge %} |
|
||||
| [DynamicNFT][] | v2.4.0 | {% badge href="https://xrpl.org/blog/2025/rippled-2.4.0" %}投票中: 2025-03-06{% /badge %} |
|
||||
| [DeepFreeze][] | v2.4.0 | {% badge href="https://livenet.xrpl.org/transactions/976281D793337FF5377A36409F2A1432DADAB64DB5064E12E71B1AC491EA3021" %}有効: 2025-05-04{% /badge %} |
|
||||
| [PermissionedDomains][] | v2.4.0 | {% badge href="https://xrpl.org/blog/2025/rippled-2.4.0" %}投票中: 2025-03-06{% /badge %} |
|
||||
| [fixFrozenLPTokenTransfer][] | v2.4.0 | {% badge href="https://xrpl.org/blog/2025/rippled-2.4.0" %}投票中: 2025-03-06{% /badge %} |
|
||||
| [fixInvalidTxFlags][] | v2.4.0 | {% badge href="https://xrpl.org/blog/2025/rippled-2.4.0" %}投票中: 2025-03-06{% /badge %} |
|
||||
| [AMMClawback][] | v2.3.0 | {% badge href="https://livenet.xrpl.org/transactions/8672DFD11FCF79F8E8F92E300187E8E533899ED8C8CF5AFB1A9C518195C16261" %}有効: 2025-01-30{% /badge %} |
|
||||
| [Credentials][] | v2.3.0 | {% badge href="https://xrpl.org/blog/2024/rippled-2.3.0" %}投票中: 2024-11-26{% /badge %} |
|
||||
| [fixAMMv1_2][] | v2.3.0 | {% badge href="https://xrpl.org/blog/2024/rippled-2.3.0" %}投票中: 2024-11-26{% /badge %} |
|
||||
| [fixEnforceNFTokenTrustline][] | v2.3.0 | {% badge href="https://xrpl.org/blog/2024/rippled-2.3.0" %}投票中: 2024-11-26{% /badge %} |
|
||||
| [fixInnerObjTemplate2][] | v2.3.0 | {% badge href="https://xrpl.org/blog/2024/rippled-2.3.0" %}投票中: 2024-11-26{% /badge %} |
|
||||
| [fixNFTokenPageLinks][] | v2.3.0 | {% badge href="https://xrpl.org/blog/2024/rippled-2.3.0" %}投票中: 2024-11-26{% /badge %} |
|
||||
| [fixReducedOffersV2][] | v2.3.0 | {% badge href="https://xrpl.org/blog/2024/rippled-2.3.0" %}投票中: 2024-11-26{% /badge %} |
|
||||
| [fixAMMv1_2][] | v2.3.0 | {% badge href="https://livenet.xrpl.org/transactions/71D5031A5BD927BDFE424E51699E69F2784097D615D0852BF20C168BA9B5EA76" %}有効: 2025-01-30{% /badge %} |
|
||||
| [fixEnforceNFTokenTrustline][] | v2.3.0 | {% badge href="https://livenet.xrpl.org/transactions/606FA84C4BA30F67582C11A39BBFC11A9D994E114CD515E9F63FC7D8701A8ED9" %}有効: 2025-01-30{% /badge %} |
|
||||
| [fixInnerObjTemplate2][] | v2.3.0 | {% badge href="https://livenet.xrpl.org/transactions/426314C8BC64BA339E97E53B278602ADC44F115056274BF7971F694C9A8AF946" %}有効: 2025-01-30{% /badge %} |
|
||||
| [fixNFTokenPageLinks][] | v2.3.0 | {% badge href="https://livenet.xrpl.org/transactions/2D9A29768A7FA4BAC01DF1941380077E304785279E5E49267EC269F53ABADF5A" %}有効: 2025-01-30{% /badge %} |
|
||||
| [fixReducedOffersV2][] | v2.3.0 | {% badge href="https://livenet.xrpl.org/transactions/6D325D5EFF8230F1FECA3EE6418C9678637F3F56B0CA247013F70B3BDCFE75C8" %}有効: 2025-01-30{% /badge %} |
|
||||
| [MPTokensV1][] | v2.3.0 | {% badge href="https://xrpl.org/blog/2024/rippled-2.3.0" %}投票中: 2024-11-26{% /badge %} |
|
||||
| [NFTokenMintOffer][] | v2.3.0 | {% badge href="https://xrpl.org/blog/2024/rippled-2.3.0" %}投票中: 2024-11-26{% /badge %} |
|
||||
| [fixXChainRewardRounding][] | v2.2.0 | {% badge href="https://xrpl.org/blog/2024/rippled-2.2.0" %}投票中: 2024-06-04{% /badge %} |
|
||||
@@ -170,7 +175,7 @@ labels:
|
||||
| Amendment | AMMClawback |
|
||||
| :----------------------------- | :--------------------------------------------------------------- |
|
||||
| Amendment ID | 726F944886BCDF7433203787E93DD9AA87FAB74DFE3AF4785BA03BEFC97ADA1F |
|
||||
| ステータス | 投票中 |
|
||||
| ステータス | 有効 |
|
||||
| デフォルトの投票(最新の安定版) | いいえ |
|
||||
| Amendment前の機能は廃止? | いいえ |
|
||||
|
||||
@@ -178,7 +183,7 @@ labels:
|
||||
|
||||
- **AMMClawback** - トークンにClawbackが有効になっている場合、発行者は、AMMに預けられたトークンをClawbackできるようになります。
|
||||
|
||||
AMMDepositトランザクションタイプを修正し、AMMに凍結されたトークンを預けることを防ぎます。
|
||||
AMMDepositトランザクションタイプを修正し、AMMにフリーズされたトークンを預けることを防ぎます。
|
||||
|
||||
詳細については、[XLS-73: AMMClawback specification](https://github.com/XRPLF/XRPL-Standards/discussions/212)をご覧ください。
|
||||
|
||||
|
||||
@@ -478,8 +478,8 @@ Trust Lines: トラストライン
|
||||
No spamming of wallets without permission.: 許可なくウォレットにスパムを送信することはありません。
|
||||
Authorized Trustlines: 認可トラストライン
|
||||
Control who can hold your tokens with allowlisting.: ホワイトリスト形式で誰がトークンを保持できるかを制御します。
|
||||
Freeze & Clawbacks: 凍結とクローバック
|
||||
Freeze: 凍結
|
||||
Freeze & Clawbacks: フリーズとクローバック
|
||||
Freeze: フリーズ
|
||||
If you see signs of suspicious activity, you can suspend trading of your token while investigating the issue.: 不審な活動の兆候が見られた場合は、問題を調査する間、トークンの取引を停止することができます。
|
||||
Clawback: クローバック
|
||||
"Recover tokens distributed to accounts in error: for example, reclaim funds sent to an account sanctioned for illegal activity.": 誤ってアカウントに送信されたトークンを回収することができます。たとえば、違法行為に対して制裁を受けたアカウントに送金された資金を回収します。
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
"https-browserify": "^1.0.0",
|
||||
"stream-browserify": "^3.0.0",
|
||||
"stream-http": "^3.2.0",
|
||||
"vite": "^4.5.13"
|
||||
"vite": "^4.5.14"
|
||||
},
|
||||
"dependencies": {
|
||||
"dotenv": "^16.0.3",
|
||||
|
||||
@@ -679,10 +679,10 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
||||
|
||||
vite@^4.5.13:
|
||||
version "4.5.13"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.13.tgz#778534a947112c6c455e89737730fae5d458a294"
|
||||
integrity sha512-Hgp8IF/yZDzKsN1hQWOuQZbrKiaFsbQud+07jJ8h9m9PaHWkpvZ5u55Xw5yYjWRXwRQ4jwFlJvY7T7FUJG9MCA==
|
||||
vite@^4.5.14:
|
||||
version "4.5.14"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.14.tgz#2e652bc1d898265d987d6543ce866ecd65fa4086"
|
||||
integrity sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==
|
||||
dependencies:
|
||||
esbuild "^0.18.10"
|
||||
postcss "^8.4.27"
|
||||
|
||||
208
_code-samples/modular-tutorials/account-support.js
Normal file
208
_code-samples/modular-tutorials/account-support.js
Normal file
@@ -0,0 +1,208 @@
|
||||
// ******************************************************
|
||||
// ************* Get the Preferred Network **************
|
||||
// ******************************************************
|
||||
|
||||
function getNet() {
|
||||
let net
|
||||
if (document.getElementById("tn").checked) net = "wss://s.altnet.rippletest.net:51233/"
|
||||
if (document.getElementById("dn").checked) net = "wss://s.devnet.rippletest.net:51233/"
|
||||
return net
|
||||
} // End of getNet()
|
||||
|
||||
// *******************************************************
|
||||
// ************* Get Account *****************************
|
||||
// *******************************************************
|
||||
|
||||
async function getAccount() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
resultField.value = `===Getting Account===\n\nConnected to ${net}.`
|
||||
try {
|
||||
let faucetHost = null
|
||||
const my_wallet = (await client.fundWallet(null, { faucetHost})).wallet
|
||||
const newAccount = [my_wallet.address, my_wallet.seed]
|
||||
return (newAccount)
|
||||
}
|
||||
catch (error) {
|
||||
console.error('===Error getting account:', error);
|
||||
results += `\nError: ${error.message}\n`
|
||||
resultField.value = results
|
||||
throw error; // Re-throw the error to be handled by the caller
|
||||
}
|
||||
finally {
|
||||
// Disconnect from the client
|
||||
await client.disconnect();
|
||||
}
|
||||
} // End of getAccount()
|
||||
|
||||
async function getNewAccount1() {
|
||||
account1address.value = "=== Getting new account. ===\n\n"
|
||||
account1seed.value = ""
|
||||
const accountInfo= await getAccount()
|
||||
account1address.value = accountInfo[0]
|
||||
account1seed.value = accountInfo[1]
|
||||
}
|
||||
|
||||
async function getNewAccount2() {
|
||||
account2address.value = "=== Getting new account. ===\n\n"
|
||||
account2seed.value = ""
|
||||
const accountInfo= await getAccount()
|
||||
account2address.value = accountInfo[0]
|
||||
account2seed.value = accountInfo[1]
|
||||
}
|
||||
|
||||
// *****************************************************
|
||||
// ********** Get Account from Seed ********************
|
||||
// *****************************************************
|
||||
|
||||
async function getAccountFromSeed(my_seed) {
|
||||
const net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = '===Finding wallet.===\n\n'
|
||||
resultField.value = results
|
||||
try {
|
||||
const wallet = xrpl.Wallet.fromSeed(my_seed)
|
||||
const address = wallet.address
|
||||
results += "===Wallet found.===\n\n"
|
||||
results += "Account address: " + address + "\n\n"
|
||||
resultField.value = results
|
||||
return (address)
|
||||
}
|
||||
catch (error) {
|
||||
console.error('===Error getting account from seed:', error);
|
||||
results += `\nError: ${error.message}\n`
|
||||
resultField.value = results
|
||||
throw error; // Re-throw the error to be handled by the caller
|
||||
}
|
||||
finally {
|
||||
// Disconnect from the client
|
||||
await client.disconnect();
|
||||
}
|
||||
} // End of getAccountFromSeed()
|
||||
|
||||
// *****************************************************
|
||||
// ********** Get Account from Seed1 *******************
|
||||
// *****************************************************
|
||||
|
||||
async function getAccountFromSeed1() {
|
||||
account1address.value = await getAccountFromSeed(account1seed.value)
|
||||
}
|
||||
|
||||
// *****************************************************
|
||||
// ********** Get Account from Seed2 *******************
|
||||
// *****************************************************
|
||||
|
||||
async function getAccountFromSeed2() {
|
||||
account2address.value = await getAccountFromSeed(account2seed.value)
|
||||
}
|
||||
|
||||
// *****************************************************
|
||||
// ************ Gather Account Info ********************
|
||||
// *****************************************************
|
||||
|
||||
function gatherAccountInfo() {
|
||||
let accountData = account1name.value + "\n" + account1address.value + "\n" + account1seed.value + "\n"
|
||||
accountData += account2name.value + "\n" + account2address.value + "\n" + account2seed.value
|
||||
resultField.value = accountData
|
||||
}
|
||||
|
||||
// *****************************************************
|
||||
// ********** Distribute Account Info ******************
|
||||
// *****************************************************
|
||||
|
||||
function distributeAccountInfo() {
|
||||
let accountInfo = resultField.value.split("\n")
|
||||
account1name.value = accountInfo[0]
|
||||
account1address.value = accountInfo[1]
|
||||
account1seed.value = accountInfo[2]
|
||||
account2name.value = accountInfo[3]
|
||||
account2address.value = accountInfo[4]
|
||||
account2seed.value = accountInfo[5]
|
||||
}
|
||||
|
||||
// *****************************************************
|
||||
// ************ Populate Active Form 1 *****************
|
||||
// *****************************************************
|
||||
|
||||
function populate1() {
|
||||
accountNameField.value = account1name.value
|
||||
accountAddressField.value = account1address.value
|
||||
accountSeedField.value = account1seed.value
|
||||
getXrpBalance()
|
||||
}
|
||||
|
||||
// *****************************************************
|
||||
// ************ Populate Active Form 2 *****************
|
||||
// *****************************************************
|
||||
|
||||
function populate2() {
|
||||
accountNameField.value = account2name.value
|
||||
accountAddressField.value = account2address.value
|
||||
accountSeedField.value = account2seed.value
|
||||
getXrpBalance()
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
// **************** Get XRP Balance *********************
|
||||
// *******************************************************
|
||||
|
||||
async function getXrpBalance() {
|
||||
const net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `\n===Getting XRP balance...===\n\n`
|
||||
resultField.value = results
|
||||
try {
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
const balance = await client.getXrpBalance(wallet.address)
|
||||
results += accountNameField.value + " current XRP balance: " + balance + "\n\n"
|
||||
xrpBalanceField.value = await client.getXrpBalance(accountAddressField.value)
|
||||
resultField.value = results
|
||||
}
|
||||
catch (error) {
|
||||
console.error('Error getting XRP balance:', error);
|
||||
results += `\nError: ${error.message}\n`
|
||||
resultField.value = results
|
||||
throw error; // Re-throw the error to be handled by the caller
|
||||
}
|
||||
finally {
|
||||
// Disconnect from the client
|
||||
await client.disconnect();
|
||||
}
|
||||
} // End of getXrpBalance()
|
||||
|
||||
// *******************************************************
|
||||
// ************** Get Token Balance *********************
|
||||
// *******************************************************
|
||||
|
||||
async function getTokenBalance() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `===Connected to ${net}.===\n===Getting account token balance...===\n\n`
|
||||
resultField.value += results
|
||||
try {
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
const balance = await client.request({
|
||||
command: "gateway_balances",
|
||||
account: wallet.address,
|
||||
ledger_index: "validated",
|
||||
})
|
||||
results = accountNameField.value + "\'s token balance(s): " + JSON.stringify(balance.result, null, 2) + "\n"
|
||||
resultField.value += results
|
||||
xrpBalanceField.value = (await client.getXrpBalance(wallet.address))
|
||||
}
|
||||
catch (error) {
|
||||
console.error('Error getting token balance:', error);
|
||||
results = `\nError: ${error.message}\n`
|
||||
resultField.value += results
|
||||
throw error; // Re-throw the error to be handled by the caller
|
||||
}
|
||||
finally {
|
||||
// Disconnect from the client
|
||||
await client.disconnect();
|
||||
}
|
||||
} // End of getTokenBalance()
|
||||
|
||||
201
_code-samples/modular-tutorials/base-module.html
Normal file
201
_code-samples/modular-tutorials/base-module.html
Normal file
@@ -0,0 +1,201 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>XRPL Base Module</title>
|
||||
<link href='https://fonts.googleapis.com/css?family=Work Sans' rel='stylesheet'>
|
||||
<link href="modular-tutorials.css" rel="stylesheet">
|
||||
<script src='https://unpkg.com/xrpl@4.1.0/build/xrpl-latest.js'></script>
|
||||
<script src="account-support.js"></script>
|
||||
<script src='send-xrp.js'></script>
|
||||
</head>
|
||||
|
||||
<!-- ************************************************************** -->
|
||||
<!-- ********************** The Form ****************************** -->
|
||||
<!-- ************************************************************** -->
|
||||
|
||||
<body>
|
||||
<h1>XRPL Base Module</h1>
|
||||
<form id="theForm">
|
||||
<span class="tooltip" tooltip-data="Choose the XRPL host server for your account.">
|
||||
Choose your ledger instance:
|
||||
</span>
|
||||
|
||||
<input type="radio" id="dn" name="server" value="wss://s.devnet.rippletest.net:51233" checked>
|
||||
<label for="dn">Devnet</label>
|
||||
|
||||
<input type="radio" id="tn" name="server" value="wss://s.altnet.rippletest.net:51233">
|
||||
<label for="tn">Testnet</label>
|
||||
<br /><br />
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount1()">Get New Account 1</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed1()">Get Account 1 From Seed</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount2()">Get New Account 2</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed2()">Get Account 2 From Seed</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account."><label for="account1name">Account 1 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1name" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account.">
|
||||
<label for="account2name">Account 2 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2name" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account1address">Account 1 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1address" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account2address">Account 2 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2address" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account1seed">Account 1 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1seed" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account2seed">Account 2 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2seed" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr />
|
||||
<table>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Name of the currently selected account.">
|
||||
<label for="accountNameField">Account Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountNameField" size="40" readonly></input>
|
||||
<input type="radio" id="account1" name="accounts" value="account1">
|
||||
<label for="account1">Account 1</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Address of the currently selected account.">
|
||||
<label for="accountAddressField">Account Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountAddressField" size="40" readonly></input>
|
||||
<input type="radio" id="account2" name="accounts" value="account2">
|
||||
<label for="account2">Account 2</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Seed of the currently selected account.">
|
||||
<label for="accountSeedField">Account Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountSeedField" size="40" readonly></input>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="XRP balance for the currently selected account.">
|
||||
<label for="xrpBalanceField">XRP Balance</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="xrpBalanceField" size="40" readonly></input>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="sendXRP()">Send XRP</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Amount of XRP to send.">
|
||||
<label for="amountField">Amount</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="amountField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="getXrpBalance()">Get XRP Balance</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Destination account address where XRP is sent.">
|
||||
<lable for="destinationField">Destination</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="destinationField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="getTokenBalance()">Get Token Balance</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<p align="right">
|
||||
<textarea id="resultField" cols="80" rows="20"></textarea>
|
||||
</p>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="gatherAccountInfo()">Gather Account Info</button><br/>
|
||||
<button type="button" onClick="distributeAccountInfo()">Distribute Account Info</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
<script>
|
||||
const radioButtons = document.querySelectorAll('input[type="radio"]');
|
||||
radioButtons.forEach(radio => {
|
||||
radio.addEventListener('change', function() {
|
||||
if (this.value === 'account1') {
|
||||
populate1()
|
||||
} else if (this.value === 'account2') {
|
||||
populate2()
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
280
_code-samples/modular-tutorials/create-conditional-escrow.html
Normal file
280
_code-samples/modular-tutorials/create-conditional-escrow.html
Normal file
@@ -0,0 +1,280 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Create a Conditional Escrow</title>
|
||||
<link href='https://fonts.googleapis.com/css?family=Work Sans' rel='stylesheet'>
|
||||
<link href="modular-tutorials.css" rel="stylesheet">
|
||||
<script src='https://unpkg.com/xrpl@4.1.0/build/xrpl-latest.js'></script>
|
||||
<script src="account-support.js"></script>
|
||||
<script src="create-time-escrow.js"></script>
|
||||
<script src='create-conditional-escrow.js'></script>
|
||||
<script>
|
||||
if (typeof module !== "undefined") {
|
||||
const xrpl = require('xrpl')
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<!-- ************************************************************** -->
|
||||
<!-- ********************** The Form ****************************** -->
|
||||
<!-- ************************************************************** -->
|
||||
|
||||
<body>
|
||||
<h1>Create a Conditional Escrow</h1>
|
||||
<form id="theForm">
|
||||
<span class="tooltip" tooltip-data="Choose the XRPL host server for your account.">
|
||||
Choose your ledger instance:
|
||||
</span>
|
||||
|
||||
<input type="radio" id="dn" name="server" value="wss://s.devnet.rippletest.net:51233" checked>
|
||||
<label for="dn">Devnet</label>
|
||||
|
||||
<input type="radio" id="tn" name="server" value="wss://s.altnet.rippletest.net:51233">
|
||||
<label for="tn">Testnet</label>
|
||||
<br /><br />
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount1()">Get New Account 1</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed1()">Get Account 1 From Seed</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount2()">Get New Account 2</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed2()">Get Account 2 From Seed</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account."><label for="account1name">Account 1 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1name" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account.">
|
||||
<label for="account2name">Account 2 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2name" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account1address">Account 1 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1address" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account2address">Account 2 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2address" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account1seed">Account 1 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1seed" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account2seed">Account 2 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2seed" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr />
|
||||
<table>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Name of the currently selected account.">
|
||||
<label for="accountNameField">Account Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountNameField" size="40" readonly></input>
|
||||
<input type="radio" id="account1" name="accounts" value="account1">
|
||||
<label for="account1">Account 1</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Address of the currently selected account.">
|
||||
<label for="accountAddressField">Account Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountAddressField" size="40" readonly></input>
|
||||
<input type="radio" id="account2" name="accounts" value="account2">
|
||||
<label for="account2">Account 2</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Seed of the currently selected account.">
|
||||
<label for="accountSeedField">Account Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountSeedField" size="40" readonly></input>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="XRP balance for the currently selected account.">
|
||||
<label for="xrpBalanceField">XRP Balance</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="xrpBalanceField" size="40" readonly></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Amount of XRP to send.">
|
||||
<label for="amountField">Amount</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="amountField" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Destination account address where the escrow is sent.">
|
||||
<lable for="destinationField">Destination</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="destinationField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="createConditionalEscrow()">Create Escrow</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Condition code used to begin the escrow transaction.">
|
||||
<lable for="escrowConditionField">Escrow Condition</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="escrowConditionField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="getEscrows()">Get Escrows</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Fullfillment code to complete the escrow transaction.">
|
||||
<lable for="escrowFulfillmentField">Escrow Fulfillment</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="escrowFulfillmentField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="finishConditionalEscrow()">Finish Escrow</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Escrow cancel time, in seconds.">
|
||||
<lable for="escrowCancelDateField">Escrow Cancel Time</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="escrowCancelDateField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="cancelEscrow()">Cancel Escrow</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Escrow sequence number, used when finishing the escrow.">
|
||||
<lable for="escrowSequenceNumberField">Escrow Sequence Number</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="escrowSequenceNumberField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getTransaction()">Get Transaction</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Escrow owner, the account that created the escrow.">
|
||||
<lable for="escrowOwnerField">Escrow Owner</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="escrowOwnerField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Transaction number, used with the Get Transaction button.">
|
||||
<lable for="transactionField">Transaction</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="transactionField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<p align="right">
|
||||
<textarea id="resultField" cols="80" rows="20"></textarea>
|
||||
</p>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="gatherAccountInfo()">Gather Account Info</button><br/>
|
||||
<button type="button" onClick="distributeAccountInfo()">Distribute Account Info</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
<script>
|
||||
const radioButtons = document.querySelectorAll('input[type="radio"]');
|
||||
radioButtons.forEach(radio => {
|
||||
radio.addEventListener('change', function() {
|
||||
if (this.value === 'account1') {
|
||||
populate1()
|
||||
} else if (this.value === 'account2') {
|
||||
populate2()
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
86
_code-samples/modular-tutorials/create-conditional-escrow.js
Normal file
86
_code-samples/modular-tutorials/create-conditional-escrow.js
Normal file
@@ -0,0 +1,86 @@
|
||||
// *******************************************************
|
||||
// ************* Create Conditional Escrow ***************
|
||||
// *******************************************************
|
||||
|
||||
async function createConditionalEscrow() {
|
||||
|
||||
//------------------------------------------------------Connect to the Ledger
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
const sendAmount = amountField.value
|
||||
let results = `===Connected to ${net}===\n===Creating conditional escrow.===\n\n`
|
||||
resultField.value = results
|
||||
let escrow_cancel_date = new Date()
|
||||
escrow_cancel_date = addSeconds(parseInt(escrowCancelDateField.value))
|
||||
|
||||
// ------------------------------------------------------- Prepare transaction
|
||||
try {
|
||||
const escrowTx = await client.autofill({
|
||||
"TransactionType": "EscrowCreate",
|
||||
"Account": wallet.address,
|
||||
"Amount": xrpl.xrpToDrops(sendAmount),
|
||||
"Destination": destinationField.value,
|
||||
"CancelAfter": escrow_cancel_date,
|
||||
"Condition": escrowConditionField.value
|
||||
})
|
||||
|
||||
// ------------------------------------------------ Sign prepared instructions
|
||||
const signed = wallet.sign(escrowTx)
|
||||
|
||||
// -------------------------------------------------------- Submit signed blob
|
||||
const tx = await client.submitAndWait(signed.tx_blob)
|
||||
results = "\n=== *** Sequence Number (Save!): " + tx.result.tx_json.Sequence
|
||||
results += "\n\n===Balance changes===\n" +
|
||||
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
|
||||
xrpBalanceField.value = (await client.getXrpBalance(wallet.address))
|
||||
resultField.value += results
|
||||
}
|
||||
catch (error) {
|
||||
results += "\n===Error: " + error.message
|
||||
resultField.value = results
|
||||
}
|
||||
finally {
|
||||
// -------------------------------------------------------- Disconnect
|
||||
client.disconnect()
|
||||
}
|
||||
} // End of createTimeEscrow()
|
||||
|
||||
// *******************************************************
|
||||
// ************** Finish Conditional Escrow **************
|
||||
// *******************************************************
|
||||
|
||||
async function finishConditionalEscrow() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `===Connected to ${net}===\n===Fulfilling conditional escrow.===\n`
|
||||
resultField.value = results
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
try {
|
||||
// ------------------------------------------------------- Prepare transaction
|
||||
const prepared = await client.autofill({
|
||||
"TransactionType": "EscrowFinish",
|
||||
"Account": accountAddressField.value,
|
||||
"Owner": escrowOwnerField.value,
|
||||
"OfferSequence": parseInt(escrowSequenceNumberField.value),
|
||||
"Condition": escrowConditionField.value,
|
||||
"Fulfillment": escrowFulfillmentField.value
|
||||
})
|
||||
const signed = wallet.sign(prepared)
|
||||
const tx = await client.submitAndWait(signed.tx_blob)
|
||||
results += "\n===Balance changes===" +
|
||||
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
|
||||
resultField.value = results
|
||||
xrpBalanceField.value = (await client.getXrpBalance(wallet.address))
|
||||
}
|
||||
catch (error) {
|
||||
results += "\n===Error: " + error.message + ".===\n"
|
||||
resultField.value = results
|
||||
}
|
||||
finally {
|
||||
// -------------------------------------------------------- Disconnect
|
||||
client.disconnect()
|
||||
}
|
||||
} // End of finisConditionalEscrow()
|
||||
249
_code-samples/modular-tutorials/create-offer.html
Normal file
249
_code-samples/modular-tutorials/create-offer.html
Normal file
@@ -0,0 +1,249 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Create Offers</title>
|
||||
<link href='https://fonts.googleapis.com/css?family=Work Sans' rel='stylesheet'>
|
||||
<link href="modular-tutorials.css" rel="stylesheet">
|
||||
<script src='https://unpkg.com/xrpl@4.1.0/build/xrpl-latest.js'></script>
|
||||
<script src="account-support.js"></script>
|
||||
<script src='send-xrp.js'></script>
|
||||
<script src='create-offer.js'></script>
|
||||
<script>
|
||||
if (typeof module !== "undefined") {
|
||||
const xrpl = require('xrpl')
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<!-- ************************************************************** -->
|
||||
<!-- ********************** The Form ****************************** -->
|
||||
<!-- ************************************************************** -->
|
||||
|
||||
<body>
|
||||
<h1>Create Offers</h1>
|
||||
<form id="theForm">
|
||||
<span class="tooltip" tooltip-data="Choose the XRPL host server for your account.">
|
||||
Choose your ledger instance:
|
||||
</span>
|
||||
|
||||
<input type="radio" id="dn" name="server" value="wss://s.devnet.rippletest.net:51233" checked>
|
||||
<label for="dn">Devnet</label>
|
||||
|
||||
<input type="radio" id="tn" name="server" value="wss://s.altnet.rippletest.net:51233">
|
||||
<label for="tn">Testnet</label>
|
||||
<br /><br />
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount1()">Get New Account 1</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed1()">Get Account 1 From Seed</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount2()">Get New Account 2</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed2()">Get Account 2 From Seed</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account."><label for="account1name">Account 1 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1name" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account.">
|
||||
<label for="account2name">Account 2 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2name" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account1address">Account 1 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1address" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account2address">Account 2 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2address" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account1seed">Account 1 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1seed" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account2seed">Account 2 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2seed" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr />
|
||||
<table>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Name of the currently selected account.">
|
||||
<label for="accountNameField">Account Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountNameField" size="40" readonly></input>
|
||||
<input type="radio" id="account1" name="accounts" value="account1">
|
||||
<label for="account1">Account 1</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Address of the currently selected account.">
|
||||
<label for="accountAddressField">Account Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountAddressField" size="40" readonly></input>
|
||||
<input type="radio" id="account2" name="accounts" value="account2">
|
||||
<label for="account2">Account 2</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Seed of the currently selected account.">
|
||||
<label for="accountSeedField">Account Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountSeedField" size="40" readonly></input>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="XRP balance for the currently selected account.">
|
||||
<label for="xrpBalanceField">XRP Balance</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="xrpBalanceField" size="40" readonly></input>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<h4 align="center">Taker Pays</h4>
|
||||
</td>
|
||||
<td>
|
||||
<h4 align="center">Taker Gets</h4>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Currency codes for the Pay and Get offers.">
|
||||
<lable for="payCurrencyField">Currency Code</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="payCurrencyField" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="getCurrencyField" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="createOffer()">Create Offer</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Issuers of the offered currencies.">
|
||||
<lable for="payIssuerField">Issuer</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="payIssuerField" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="getIssuerField" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getOffers()">Get Offers</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Amounts of offered currencies.">
|
||||
<lable for="amountField">Amount</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="payAmountField" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="getAmountField" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="cancelOffer()">Cancel Offer</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Sequence number of the offer.">
|
||||
<lable for="offerSequenceField">Offer Sequence</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="offerSequenceField" size="40"></input>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
<button type="button" onClick="getTokenBalance()">Get Token Balance</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<p align="right">
|
||||
<textarea id="resultField" cols="80" rows="20"></textarea>
|
||||
</p>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="gatherAccountInfo()">Gather Account Info</button><br/>
|
||||
<button type="button" onClick="distributeAccountInfo()">Distribute Account Info</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
<script>
|
||||
const radioButtons = document.querySelectorAll('input[type="radio"]');
|
||||
radioButtons.forEach(radio => {
|
||||
radio.addEventListener('change', function() {
|
||||
if (this.value === 'account1') {
|
||||
populate1()
|
||||
} else if (this.value === 'account2') {
|
||||
populate2()
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
121
_code-samples/modular-tutorials/create-offer.js
Normal file
121
_code-samples/modular-tutorials/create-offer.js
Normal file
@@ -0,0 +1,121 @@
|
||||
/***********************************
|
||||
*********** Create Offer **********
|
||||
**********************************/
|
||||
|
||||
async function createOffer() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `===Connected to ${net}, getting wallet....===\n`
|
||||
resultField.value = results
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
try {
|
||||
if (getCurrencyField.value == 'XRP') {
|
||||
takerGets = xrpl.xrpToDrops(getAmountField.value)
|
||||
}
|
||||
else {
|
||||
takerGetsString = '{"currency": "' + getCurrencyField.value + '",\n' +
|
||||
'"issuer": "' + getIssuerField.value + '",\n' +
|
||||
'"value": "' + getAmountField.value + '"}'
|
||||
takerGets = JSON.parse(takerGetsString)
|
||||
}
|
||||
|
||||
if (payCurrencyField.value == 'XRP') {
|
||||
takerPays = xrpl.xrpToDrops(payAmountField.value)
|
||||
} else {
|
||||
takerPaysString = '{"currency": "' + payCurrencyField.value + '",\n' +
|
||||
'"issuer": "' + payIssuerField.value + '",\n' +
|
||||
'"value": "' + payAmountField.value + '"}'
|
||||
takerPays = JSON.parse(takerPaysString)
|
||||
}
|
||||
const prepared = await client.autofill({
|
||||
"TransactionType": "OfferCreate",
|
||||
"Account": wallet.address,
|
||||
"TakerGets": takerGets,
|
||||
"TakerPays": takerPays
|
||||
})
|
||||
const signed = wallet.sign(prepared)
|
||||
const tx = await client.submitAndWait(signed.tx_blob)
|
||||
results = '\n\n===Offer created===\n\n' +
|
||||
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
|
||||
resultField.value += results
|
||||
xrpBalanceField.value = (await client.getXrpBalance(wallet.address))
|
||||
} catch (err) {
|
||||
console.error('Error creating offer:', err);
|
||||
results = `\nError: ${err.message}\n`
|
||||
resultField.value += results
|
||||
throw err; // Re-throw the error to be handled by the caller
|
||||
}
|
||||
finally {
|
||||
// Disconnect from the client
|
||||
client.disconnect()
|
||||
}
|
||||
} // End of createOffer()
|
||||
|
||||
/***********************************
|
||||
************ Get Offers ***********
|
||||
**********************************/
|
||||
|
||||
async function getOffers() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `===Connected to ' + ${net}, getting offers....===\n`
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
resultField.value = results
|
||||
results += '\n\n=== Offers ===\n'
|
||||
let offers
|
||||
try {
|
||||
offers = await client.request({
|
||||
method: "account_offers",
|
||||
account: wallet.address,
|
||||
ledger_index: "validated"
|
||||
})
|
||||
results = JSON.stringify(offers, null, 2)
|
||||
resultField.value += results
|
||||
} catch (err) {
|
||||
console.error('Error getting offers:', err);
|
||||
results = `\nError: ${err.message}\n`
|
||||
resultField.value += results
|
||||
throw err; // Re-throw the error to be handled by the caller
|
||||
}
|
||||
finally {
|
||||
client.disconnect()
|
||||
}
|
||||
}// End of getOffers()
|
||||
|
||||
/***********************************
|
||||
*********** Cancel Offer **********
|
||||
**********************************/
|
||||
async function cancelOffer() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `===Connected to ${net}, canceling offer.===\n`
|
||||
resultField.value = results
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
try {
|
||||
// OfferSequence is the _seq_ value from getOffers.
|
||||
const prepared = await client.autofill({
|
||||
"TransactionType": "OfferCancel",
|
||||
"Account": wallet.address,
|
||||
"OfferSequence": parseInt(offerSequenceField.value)
|
||||
})
|
||||
const signed = wallet.sign(prepared)
|
||||
const tx = await client.submitAndWait(signed.tx_blob)
|
||||
results += "\nOffer canceled. Balance changes: \n" +
|
||||
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
|
||||
resultField.value = results
|
||||
xrpBalanceField.value = (await client.getXrpBalance(wallet.address))
|
||||
}
|
||||
catch (err) {
|
||||
console.error('Error canceling offer:', err);
|
||||
results = `\nError: ${err.message}\n`
|
||||
resultField.value += results
|
||||
throw err; // Re-throw the error to be handled by the caller
|
||||
}
|
||||
finally {
|
||||
// Disconnect from the client
|
||||
client.disconnect()
|
||||
}
|
||||
}// End of cancelOffer()
|
||||
269
_code-samples/modular-tutorials/create-time-escrow.html
Normal file
269
_code-samples/modular-tutorials/create-time-escrow.html
Normal file
@@ -0,0 +1,269 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Create a Time-based Escrow</title>
|
||||
<link href='https://fonts.googleapis.com/css?family=Work Sans' rel='stylesheet'>
|
||||
<link href="modular-tutorials.css" rel="stylesheet">
|
||||
<script src='https://unpkg.com/xrpl@4.1.0/build/xrpl-latest.js'></script>
|
||||
<script src="account-support.js"></script>
|
||||
<script src='create-time-escrow.js'></script>
|
||||
<script>
|
||||
if (typeof module !== "undefined") {
|
||||
const xrpl = require('xrpl')
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<!-- ************************************************************** -->
|
||||
<!-- ********************** The Form ****************************** -->
|
||||
<!-- ************************************************************** -->
|
||||
|
||||
<body>
|
||||
<h1>Create a Time-based Escrow</h1>
|
||||
<form id="theForm">
|
||||
<span class="tooltip" tooltip-data="Choose the XRPL host server for your account.">
|
||||
Choose your ledger instance:
|
||||
</span>
|
||||
|
||||
<input type="radio" id="dn" name="server" value="wss://s.devnet.rippletest.net:51233" checked>
|
||||
<label for="dn">Devnet</label>
|
||||
|
||||
<input type="radio" id="tn" name="server" value="wss://s.altnet.rippletest.net:51233">
|
||||
<label for="tn">Testnet</label>
|
||||
<br /><br />
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount1()">Get New Account 1</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed1()">Get Account 1 From Seed</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount2()">Get New Account 2</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed2()">Get Account 2 From Seed</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account."><label for="account1name">Account 1 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1name" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account.">
|
||||
<label for="account2name">Account 2 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2name" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account1address">Account 1 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1address" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account2address">Account 2 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2address" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account1seed">Account 1 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1seed" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account2seed">Account 2 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2seed" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr />
|
||||
<table>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Name of the currently selected account.">
|
||||
<label for="accountNameField">Account Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountNameField" size="40" readonly></input>
|
||||
<input type="radio" id="account1" name="accounts" value="account1">
|
||||
<label for="account1">Account 1</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Address of the currently selected account.">
|
||||
<label for="accountAddressField">Account Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountAddressField" size="40" readonly></input>
|
||||
<input type="radio" id="account2" name="accounts" value="account2">
|
||||
<label for="account2">Account 2</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Seed of the currently selected account.">
|
||||
<label for="accountSeedField">Account Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountSeedField" size="40" readonly></input>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="XRP balance for the currently selected account.">
|
||||
<label for="xrpBalanceField">XRP Balance</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="xrpBalanceField" size="40" readonly></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Amount of XRP to send.">
|
||||
<label for="amountField">Amount</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="amountField" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Destination account address where the escrow is sent.">
|
||||
<lable for="destinationField">Destination</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="destinationField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="createTimeBasedEscrow()">Create Time-based Escrow</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Escrow finish time, in seconds.">
|
||||
<lable for="escrowFinishTimeField">Escrow Finish Time</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="escrowFinishTimeField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="getEscrows()">Get Escrows</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Escrow cancel time, in seconds.">
|
||||
<lable for="escrowCancelTimeField">Escrow Cancel Time</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="escrowCancelTimeField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="finishTimeBasedEscrow()">Finish Time-based Escrow</button>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Escrow sequence number, used when finishing the escrow.">
|
||||
<lable for="escrowSequenceNumberField">Escrow Sequence Number</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="escrowSequenceNumberField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="cancelEscrow()">Cancel Escrow</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Escrow owner, the account that created the escrow.">
|
||||
<lable for="escrowOwnerField">Escrow Owner</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="escrowOwnerField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getTransaction()">Get Transaction</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Transaction number, used with the Get Transaction button.">
|
||||
<lable for="transactionField">Transaction</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="transactionField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<p align="right">
|
||||
<textarea id="resultField" cols="80" rows="20"></textarea>
|
||||
</p>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="gatherAccountInfo()">Gather Account Info</button><br/>
|
||||
<button type="button" onClick="distributeAccountInfo()">Distribute Account Info</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
<script>
|
||||
const radioButtons = document.querySelectorAll('input[type="radio"]');
|
||||
radioButtons.forEach(radio => {
|
||||
radio.addEventListener('change', function() {
|
||||
if (this.value === 'account1') {
|
||||
populate1()
|
||||
} else if (this.value === 'account2') {
|
||||
populate2()
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
177
_code-samples/modular-tutorials/create-time-escrow.js
Normal file
177
_code-samples/modular-tutorials/create-time-escrow.js
Normal file
@@ -0,0 +1,177 @@
|
||||
// *******************************************************
|
||||
// ************* Add Seconds to Current Date *************
|
||||
// *******************************************************
|
||||
|
||||
function addSeconds(numOfSeconds, date = new Date()) {
|
||||
date.setSeconds(date.getSeconds() + numOfSeconds);
|
||||
date = Math.floor(date / 1000)
|
||||
date = date - 946684800
|
||||
|
||||
return date;
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
// ************* Create Time-based Escrow ****************
|
||||
// *******************************************************
|
||||
|
||||
async function createTimeBasedEscrow() {
|
||||
//-------------------------------------------- Prepare Finish and Cancel Dates
|
||||
let escrow_finish_date = new Date()
|
||||
let escrow_cancel_date = new Date()
|
||||
escrow_finish_date = addSeconds(parseInt(escrowFinishTimeField.value))
|
||||
escrow_cancel_date = addSeconds(parseInt(escrowCancelTimeField.value))
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `===Connected to ${net}.===\n\n===Creating time-based escrow.===\n`
|
||||
resultField.value = results
|
||||
try {
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
const sendAmount = amountField.value
|
||||
const escrowTx = await client.autofill({
|
||||
"TransactionType": "EscrowCreate",
|
||||
"Account": wallet.address,
|
||||
"Amount": xrpl.xrpToDrops(sendAmount),
|
||||
"Destination": destinationField.value,
|
||||
"FinishAfter": escrow_finish_date,
|
||||
"CancelAfter": escrow_cancel_date
|
||||
})
|
||||
const signed = wallet.sign(escrowTx)
|
||||
const tx = await client.submitAndWait(signed.tx_blob)
|
||||
results += "\n===Success! === *** Save this sequence number: " + tx.result.tx_json.Sequence
|
||||
xrpBalanceField.value = (await client.getXrpBalance(wallet.address))
|
||||
resultField.value = results
|
||||
}
|
||||
catch (error) {
|
||||
results += "\n===Error: " + error.message
|
||||
resultField.value = results
|
||||
}
|
||||
finally {
|
||||
client.disconnect()
|
||||
}
|
||||
} // End of createTimeEscrow()
|
||||
|
||||
// *******************************************************
|
||||
// ***************** Finish Time- Based Escrow ***********
|
||||
// *******************************************************
|
||||
|
||||
async function finishTimeBasedEscrow() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `===Connected to ${net}. Finishing escrow.===\n`
|
||||
resultField.value = results
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
try {
|
||||
const prepared = await client.autofill({
|
||||
"TransactionType": "EscrowFinish",
|
||||
"Account": accountAddressField.value,
|
||||
"Owner": escrowOwnerField.value,
|
||||
"OfferSequence": parseInt(escrowSequenceNumberField.value)
|
||||
})
|
||||
const signed = wallet.sign(prepared)
|
||||
const tx = await client.submitAndWait(signed.tx_blob)
|
||||
results += "\n===Balance changes===" +
|
||||
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
|
||||
resultField.value = results
|
||||
xrpBalanceField.value = (await client.getXrpBalance(wallet.address))
|
||||
}
|
||||
catch (error) {
|
||||
results += "\n===Error: " + error.message + "==="
|
||||
resultField.value = results
|
||||
}
|
||||
finally {
|
||||
client.disconnect()
|
||||
}
|
||||
} // End of finishTimeBasedEscrow()
|
||||
|
||||
// *******************************************************
|
||||
// ******************* Get Escrows ***********************
|
||||
// *******************************************************
|
||||
|
||||
async function getEscrows() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `\n===Connected to ${net}.\nGetting account escrows.===\n`
|
||||
resultField.value = results
|
||||
try {
|
||||
const escrow_objects = await client.request({
|
||||
"id": 5,
|
||||
"command": "account_objects",
|
||||
"account": accountAddressField.value,
|
||||
"ledger_index": "validated",
|
||||
"type": "escrow"
|
||||
})
|
||||
results += JSON.stringify(escrow_objects.result, null, 2)
|
||||
resultField.value = results
|
||||
}
|
||||
catch (error) {
|
||||
results += "\nError: " + error.message
|
||||
resultField.value = results
|
||||
}
|
||||
finally {
|
||||
client.disconnect()
|
||||
}
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
// ************** Get Transaction Info *******************
|
||||
// *******************************************************
|
||||
|
||||
async function getTransaction() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `\n===Connected to ${net}.===\n===Getting transaction information.===\n`
|
||||
resultField.value = results
|
||||
try {
|
||||
const tx_info = await client.request({
|
||||
"id": 1,
|
||||
"command": "tx",
|
||||
"transaction": transactionField.value,
|
||||
})
|
||||
results += JSON.stringify(tx_info.result, null, 2)
|
||||
resultField.value = results
|
||||
}
|
||||
catch (error) {
|
||||
results += "\nError: " + error.message
|
||||
resultField.value = results
|
||||
}
|
||||
finally {
|
||||
client.disconnect()
|
||||
}
|
||||
} // End of getTransaction()
|
||||
|
||||
// *******************************************************
|
||||
// ****************** Cancel Escrow **********************
|
||||
// *******************************************************
|
||||
|
||||
async function cancelEscrow() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `\n===Connected to ${net}. Cancelling escrow.===`
|
||||
resultField.value = results
|
||||
try {
|
||||
const prepared = await client.autofill({
|
||||
"TransactionType": "EscrowCancel",
|
||||
"Account": accountAddressField.value,
|
||||
"Owner": escrowOwnerField.value,
|
||||
"OfferSequence": parseInt(escrowSequenceNumberField.value)
|
||||
})
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
const signed = wallet.sign(prepared)
|
||||
const tx = await client.submitAndWait(signed.tx_blob)
|
||||
results += "\n===Balance changes: " +
|
||||
JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
|
||||
resultField.value = results
|
||||
}
|
||||
catch (error) {
|
||||
results += "\n===Error: " + error.message
|
||||
resultField.value = results
|
||||
}
|
||||
finally {
|
||||
client.disconnect()
|
||||
}
|
||||
}
|
||||
24
_code-samples/modular-tutorials/five-bells.cjs
Normal file
24
_code-samples/modular-tutorials/five-bells.cjs
Normal file
@@ -0,0 +1,24 @@
|
||||
const cc = require('five-bells-condition');
|
||||
const crypto = require('crypto');
|
||||
|
||||
// 1. Generate a random 32-byte seed
|
||||
const preimageData = crypto.randomBytes(32);
|
||||
|
||||
// 2. Create a PreimageSha256 fulfillment object
|
||||
const fulfillment = new cc.PreimageSha256();
|
||||
|
||||
// 3. Set the preimage
|
||||
fulfillment.setPreimage(preimageData);
|
||||
|
||||
// 4. Generate the condition (binary)
|
||||
const conditionBinary = fulfillment.getConditionBinary();
|
||||
|
||||
// 5. Generate the fulfillment (binary)
|
||||
const fulfillmentBinary = fulfillment.serializeBinary();
|
||||
|
||||
// Convert to hex for easier use
|
||||
const conditionHex = conditionBinary.toString('hex').toUpperCase();
|
||||
const fulfillmentHex = fulfillmentBinary.toString('hex').toUpperCase();
|
||||
|
||||
console.log('Condition (hex):', conditionHex);
|
||||
console.log('Fulfillment (hex):', fulfillmentHex);
|
||||
150
_code-samples/modular-tutorials/modular-tutorials.css
Normal file
150
_code-samples/modular-tutorials/modular-tutorials.css
Normal file
@@ -0,0 +1,150 @@
|
||||
body {
|
||||
font-family: "Inter", sans-serif;
|
||||
padding: 20px;
|
||||
background: #abe2ff;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
td {
|
||||
padding-left: 25px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
input,
|
||||
button {
|
||||
padding: 6px;
|
||||
margin-bottom: 8px;
|
||||
border: none
|
||||
}
|
||||
|
||||
input:read-only {
|
||||
background-color:rgb(11, 96, 132);
|
||||
color:white;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
font-weight: bold;
|
||||
font-family: "Work Sans", sans-serif;
|
||||
background-color: #006aff;
|
||||
-webkit-text-fill-color: white;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: #0555c5;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
/* The switch - the box around the slider */
|
||||
.switch {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 30px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
/* Hide default HTML checkbox */
|
||||
.switch input {
|
||||
opacity: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/* The slider */
|
||||
.slider {
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: #ccc;
|
||||
-webkit-transition: .4s;
|
||||
transition: .4s;
|
||||
}
|
||||
|
||||
.slider:before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
height: 13px;
|
||||
width: 13px;
|
||||
left: 4px;
|
||||
bottom: 2px;
|
||||
background-color: white;
|
||||
-webkit-transition: .4s;
|
||||
transition: .4s;
|
||||
}
|
||||
|
||||
input:checked+.slider {
|
||||
background-color: #2196F3;
|
||||
}
|
||||
|
||||
input:focus+.slider {
|
||||
box-shadow: 0 0 1px #2196F3;
|
||||
}
|
||||
|
||||
input:checked+.slider:before {
|
||||
-webkit-transform: translateX(13px);
|
||||
-ms-transform: translateX(13px);
|
||||
transform: translateX(13px);
|
||||
}
|
||||
|
||||
/* Rounded sliders */
|
||||
.slider.round {
|
||||
border-radius: 17px;
|
||||
}
|
||||
|
||||
.slider.round:before {
|
||||
border-radius: 50%;
|
||||
}
|
||||
.tooltip {
|
||||
position: relative;
|
||||
border-bottom: 1px dotted black;
|
||||
}
|
||||
|
||||
.tooltip:before {
|
||||
content: attr(tooltip-data);
|
||||
position: absolute;
|
||||
width: 250px;
|
||||
background-color: #006aff;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 15px;
|
||||
line-height: 1.1;
|
||||
border-radius: 5px;
|
||||
z-index: 1;
|
||||
opacity: 0;
|
||||
transition: opacity .5s;
|
||||
bottom: 125%;
|
||||
left: 50%;
|
||||
margin-left: -60px;
|
||||
font-size: 0.70em;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.tooltip:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 75%;
|
||||
left: 50%;
|
||||
margin-left: -5px;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
opacity: 0;
|
||||
transition: opacity .5s;
|
||||
border-color: #000 transparent transparent transparent;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.tooltip:hover:before,
|
||||
.tooltip:hover:after {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
BIN
_code-samples/modular-tutorials/payment-modular-tutorials.zip
Normal file
BIN
_code-samples/modular-tutorials/payment-modular-tutorials.zip
Normal file
Binary file not shown.
247
_code-samples/modular-tutorials/send-checks.html
Normal file
247
_code-samples/modular-tutorials/send-checks.html
Normal file
@@ -0,0 +1,247 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Send Checks</title>
|
||||
<link href='https://fonts.googleapis.com/css?family=Work Sans' rel='stylesheet'>
|
||||
<link href="modular-tutorials.css" rel="stylesheet">
|
||||
<script src='https://unpkg.com/xrpl@4.1.0/build/xrpl-latest.js'></script>
|
||||
<script src="account-support.js"></script>
|
||||
<script src='send-xrp.js'></script>
|
||||
<script src='send-currency.js'></script>
|
||||
<script src='send-checks.js'></script>
|
||||
<script>
|
||||
if (typeof module !== "undefined") {
|
||||
const xrpl = require('xrpl')
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<!-- ************************************************************** -->
|
||||
<!-- ********************** The Form ****************************** -->
|
||||
<!-- ************************************************************** -->
|
||||
|
||||
<body>
|
||||
<h1>Send Checks</h1>
|
||||
<form id="theForm">
|
||||
<span class="tooltip" tooltip-data="Choose the XRPL host server for your account.">
|
||||
Choose your ledger instance:
|
||||
</span>
|
||||
|
||||
<input type="radio" id="dn" name="server" value="wss://s.devnet.rippletest.net:51233" checked>
|
||||
<label for="dn">Devnet</label>
|
||||
|
||||
<input type="radio" id="tn" name="server" value="wss://s.altnet.rippletest.net:51233">
|
||||
<label for="tn">Testnet</label>
|
||||
<br /><br />
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount1()">Get New Account 1</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed1()">Get Account 1 From Seed</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount2()">Get New Account 2</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed2()">Get Account 2 From Seed</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account."><label for="account1name">Account 1 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1name" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account.">
|
||||
<label for="account2name">Account 2 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2name" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account1address">Account 1 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1address" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account2address">Account 2 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2address" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account1seed">Account 1 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1seed" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account2seed">Account 2 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2seed" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr />
|
||||
<table>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Name of the currently selected account.">
|
||||
<label for="accountNameField">Account Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountNameField" size="40" readonly></input>
|
||||
<input type="radio" id="account1" name="accounts" value="account1">
|
||||
<label for="account1">Account 1</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Address of the currently selected account.">
|
||||
<label for="accountAddressField">Account Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountAddressField" size="40" readonly></input>
|
||||
<input type="radio" id="account2" name="accounts" value="account2">
|
||||
<label for="account2">Account 2</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Seed of the currently selected account.">
|
||||
<label for="accountSeedField">Account Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountSeedField" size="40" readonly></input>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="XRP balance for the currently selected account.">
|
||||
<label for="xrpBalanceField">XRP Balance</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="xrpBalanceField" size="40" readonly></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Currency code for the check.">
|
||||
<lable for="currencyField">Currency Code</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="currencyField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="sendCheck()">Send Check</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Issuing account for the currency.">
|
||||
<lable for="issuerField">Issuer</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="issuerField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="cashCheck()">Cash Check</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Amount of XRP to send.">
|
||||
<label for="amountField">Amount</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="amountField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="getChecks()">Get Checks</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Destination account address where XRP is sent.">
|
||||
<lable for="destinationField">Destination</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="destinationField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="cancelCheck()">Cancel Check</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Check ID.">
|
||||
<lable for="checkIdField">Check ID</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="checkIdField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="getTokenBalance()">Get Token Balance</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<p align="right">
|
||||
<textarea id="resultField" cols="80" rows="20"></textarea>
|
||||
</p>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="gatherAccountInfo()">Gather Account Info</button><br/>
|
||||
<button type="button" onClick="distributeAccountInfo()">Distribute Account Info</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
<script>
|
||||
const radioButtons = document.querySelectorAll('input[type="radio"]');
|
||||
radioButtons.forEach(radio => {
|
||||
radio.addEventListener('change', function() {
|
||||
if (this.value === 'account1') {
|
||||
populate1()
|
||||
} else if (this.value === 'account2') {
|
||||
populate2()
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
152
_code-samples/modular-tutorials/send-checks.js
Normal file
152
_code-samples/modular-tutorials/send-checks.js
Normal file
@@ -0,0 +1,152 @@
|
||||
// *******************************************************
|
||||
// ***************** Send Check **************************
|
||||
// *******************************************************
|
||||
async function sendCheck() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
results = `\n===Connected to ${net}.===\n===Sending check.===\n`
|
||||
resultField.value = results
|
||||
try {
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
let check_amount = amountField.value
|
||||
if (currencyField.value != "XRP") {
|
||||
check_amount = {
|
||||
"currency": currencyField.value,
|
||||
"value": amountField.value,
|
||||
"issuer": wallet.address
|
||||
}
|
||||
}
|
||||
const send_check_tx = {
|
||||
"TransactionType": "CheckCreate",
|
||||
"Account": wallet.address,
|
||||
"SendMax": check_amount,
|
||||
"Destination": destinationField.value
|
||||
}
|
||||
const check_prepared = await client.autofill(send_check_tx)
|
||||
const check_signed = wallet.sign(check_prepared)
|
||||
results = '\n===Sending ' + amountField.value + ' ' + currencyField.
|
||||
value + ' to ' + destinationField.value + '.===\n'
|
||||
resultField.value += results
|
||||
const check_result = await client.submitAndWait(check_signed.tx_blob)
|
||||
if (check_result.result.meta.TransactionResult == "tesSUCCESS") {
|
||||
results += '===Transaction succeeded===\n\n'
|
||||
resultField.value += JSON.stringify(check_result.result, null, 2)
|
||||
xrpBalanceField.value = (await client.getXrpBalance(wallet.address))
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
results = `Error sending transaction: ${error}`
|
||||
resultField.value += results
|
||||
}
|
||||
finally {
|
||||
client.disconnect()
|
||||
}
|
||||
} // end of sendCheck()
|
||||
|
||||
// *******************************************************
|
||||
// ********************* Get Checks **********************
|
||||
// *******************************************************
|
||||
|
||||
async function getChecks() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `\n===Connected to ${net}.===\n===Getting account checks.===\n\n`
|
||||
resultField.value = results
|
||||
try {
|
||||
const check_objects = await client.request({
|
||||
"id": 5,
|
||||
"command": "account_objects",
|
||||
"account": accountAddressField.value,
|
||||
"ledger_index": "validated",
|
||||
"type": "check"
|
||||
})
|
||||
resultField.value += JSON.stringify(check_objects.result, null, 2)
|
||||
} catch (error) {
|
||||
results = `Error getting checks: ${error}`
|
||||
resultField.value += results
|
||||
}
|
||||
finally {
|
||||
client.disconnect()
|
||||
}
|
||||
} // End of getChecks()
|
||||
|
||||
// *******************************************************
|
||||
// ******************** Cash Check **********************
|
||||
// *******************************************************
|
||||
|
||||
async function cashCheck() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
results = `\n===Connected to ${net}.===\n===Cashing check.===\n`
|
||||
resultField.value = results
|
||||
try {
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
let check_amount = amountField.value
|
||||
if (currencyField.value != "XRP") {
|
||||
check_amount = {
|
||||
"value": amountField.value,
|
||||
"currency": currencyField.value,
|
||||
"issuer": issuerField.value
|
||||
}
|
||||
}
|
||||
const cash_check_tx = {
|
||||
"TransactionType": "CheckCash",
|
||||
"Account": wallet.address,
|
||||
"Amount": check_amount,
|
||||
"CheckID": checkIdField.value
|
||||
}
|
||||
const cash_prepared = await client.autofill(cash_check_tx)
|
||||
const cash_signed = wallet.sign(cash_prepared)
|
||||
results = ' Receiving ' + amountField.value + ' ' + currencyField.value + '.\n'
|
||||
resultField.value += results
|
||||
const check_result = await client.submitAndWait(cash_signed.tx_blob)
|
||||
if (check_result.result.meta.TransactionResult == "tesSUCCESS") {
|
||||
results = '===Transaction succeeded===\n' + JSON.stringify(check_result.result, null, 2)
|
||||
resultField.value += results
|
||||
}
|
||||
xrpBalanceField.value = (await client.getXrpBalance(wallet.address))
|
||||
} catch (error) {
|
||||
results = `Error sending transaction: ${error}`
|
||||
resultField.value += results
|
||||
}
|
||||
finally {
|
||||
client.disconnect()
|
||||
}
|
||||
} // end of cashCheck()
|
||||
|
||||
// *******************************************************
|
||||
// **************** Cancel Check *************************
|
||||
// *******************************************************
|
||||
|
||||
async function cancelCheck() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
results = `\n===Connected to ${net}.===\n===Cancelling check.===\n`
|
||||
resultField.value = results
|
||||
try {
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
const cancel_check_tx = {
|
||||
"TransactionType": "CheckCancel",
|
||||
"Account": wallet.address,
|
||||
"CheckID": checkIdField.value
|
||||
}
|
||||
const cancel_prepared = await client.autofill(cancel_check_tx)
|
||||
const cancel_signed = wallet.sign(cancel_prepared)
|
||||
const check_result = await client.submitAndWait(cancel_signed.tx_blob)
|
||||
if (check_result.result.meta.TransactionResult == "tesSUCCESS") {
|
||||
results += `===Transaction succeeded===\n${check_result.result.meta.TransactionResult}`
|
||||
resultField.value = results
|
||||
}
|
||||
xrpBalanceField.value = (await client.getXrpBalance(wallet.address))
|
||||
} catch (error) {
|
||||
results = `Error sending transaction: ${error}`
|
||||
resultField.value += results
|
||||
}
|
||||
finally {
|
||||
client.disconnect()
|
||||
}
|
||||
} // end of cancelCheck()
|
||||
229
_code-samples/modular-tutorials/send-currency.html
Normal file
229
_code-samples/modular-tutorials/send-currency.html
Normal file
@@ -0,0 +1,229 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Send Currency</title>
|
||||
<link href='https://fonts.googleapis.com/css?family=Work Sans' rel='stylesheet'>
|
||||
<link href="modular-tutorials.css" rel="stylesheet">
|
||||
<script src='https://unpkg.com/xrpl@4.1.0/build/xrpl-latest.js'></script>
|
||||
<script src="account-support.js"></script>
|
||||
<script src='send-xrp.js'></script>
|
||||
<script src='send-currency.js'></script>
|
||||
<script>
|
||||
if (typeof module !== "undefined") {
|
||||
const xrpl = require('xrpl')
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<!-- ************************************************************** -->
|
||||
<!-- ********************** The Form ****************************** -->
|
||||
<!-- ************************************************************** -->
|
||||
|
||||
<body>
|
||||
<h1>Send Currency</h1>
|
||||
<form id="theForm">
|
||||
<span class="tooltip" tooltip-data="Choose the XRPL host server for your account.">
|
||||
Choose your ledger instance:
|
||||
</span>
|
||||
|
||||
<input type="radio" id="dn" name="server" value="wss://s.devnet.rippletest.net:51233" checked>
|
||||
<label for="dn">Devnet</label>
|
||||
|
||||
<input type="radio" id="tn" name="server" value="wss://s.altnet.rippletest.net:51233">
|
||||
<label for="tn">Testnet</label>
|
||||
<br /><br />
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount1()">Get New Account 1</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed1()">Get Account 1 From Seed</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount2()">Get New Account 2</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed2()">Get Account 2 From Seed</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account."><label for="account1name">Account 1 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1name" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account.">
|
||||
<label for="account2name">Account 2 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2name" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account1address">Account 1 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1address" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account2address">Account 2 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2address" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account1seed">Account 1 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1seed" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account2seed">Account 2 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2seed" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr />
|
||||
<table>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Name of the currently selected account.">
|
||||
<label for="accountNameField">Account Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountNameField" size="40" readonly></input>
|
||||
<input type="radio" id="account1" name="accounts" value="account1">
|
||||
<label for="account1">Account 1</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Address of the currently selected account.">
|
||||
<label for="accountAddressField">Account Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountAddressField" size="40" readonly></input>
|
||||
<input type="radio" id="account2" name="accounts" value="account2">
|
||||
<label for="account2">Account 2</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Seed of the currently selected account.">
|
||||
<label for="accountSeedField">Account Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountSeedField" size="40" readonly></input>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="XRP balance for the currently selected account.">
|
||||
<label for="xrpBalanceField">XRP Balance</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="xrpBalanceField" size="40" readonly></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Currency code for the trust line.">
|
||||
<lable for="currencyField">Currency Code</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="currencyField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="createTrustLine()">Create Trust Line</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Issuing account for the currency.">
|
||||
<lable for="issuerField">Issuer</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="issuerField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="sendCurrency()">Send Currency</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Amount of XRP to send.">
|
||||
<label for="amountField">Amount</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="amountField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="getTokenBalance()">Get Token Balance</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Destination account address where XRP is sent.">
|
||||
<lable for="destinationField">Destination</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="destinationField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<p align="right">
|
||||
<textarea id="resultField" cols="80" rows="20"></textarea>
|
||||
</p>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="gatherAccountInfo()">Gather Account Info</button><br/>
|
||||
<button type="button" onClick="distributeAccountInfo()">Distribute Account Info</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
<script>
|
||||
const radioButtons = document.querySelectorAll('input[type="radio"]');
|
||||
radioButtons.forEach(radio => {
|
||||
radio.addEventListener('change', function() {
|
||||
if (this.value === 'account1') {
|
||||
populate1()
|
||||
} else if (this.value === 'account2') {
|
||||
populate2()
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
96
_code-samples/modular-tutorials/send-currency.js
Normal file
96
_code-samples/modular-tutorials/send-currency.js
Normal file
@@ -0,0 +1,96 @@
|
||||
// *******************************************************
|
||||
// ***************** Create TrustLine ********************
|
||||
// *******************************************************
|
||||
|
||||
async function createTrustLine() {
|
||||
const net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = "\nConnected. Creating trust line.\n"
|
||||
resultField.value = results
|
||||
try {
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
const trustSet_tx = {
|
||||
"TransactionType": "TrustSet",
|
||||
"Account": accountAddressField.value,
|
||||
"LimitAmount": {
|
||||
"currency": currencyField.value,
|
||||
"issuer": issuerField.value,
|
||||
"value": amountField.value
|
||||
}
|
||||
}
|
||||
const ts_prepared = await client.autofill(trustSet_tx)
|
||||
const ts_signed = wallet.sign(ts_prepared)
|
||||
resultField.value = results
|
||||
const ts_result = await client.submitAndWait(ts_signed.tx_blob)
|
||||
if (ts_result.result.meta.TransactionResult == "tesSUCCESS") {
|
||||
results += '\n===Trustline established between account\n' +
|
||||
accountAddressField.value + "\nand account\n" + issuerField.value + '.'
|
||||
resultField.value = results
|
||||
} else {
|
||||
results += `\n===Transaction failed: ${ts_result.result.meta.TransactionResult}`
|
||||
resultField.value = results
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
console.error('Error creating trust line:', error);
|
||||
results += `\n===Error: ${error.message}\n`
|
||||
resultField.value = results
|
||||
throw error; // Re-throw the error to be handled by the caller
|
||||
}
|
||||
finally {
|
||||
// Disconnect from the client
|
||||
await client.disconnect();
|
||||
}
|
||||
} //End of createTrustline()
|
||||
|
||||
// *******************************************************
|
||||
// *************** Send Issued Currency ******************
|
||||
// *******************************************************
|
||||
|
||||
async function sendCurrency() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
results = 'Connecting to ' + getNet() + '....'
|
||||
resultField.value = results
|
||||
await client.connect()
|
||||
results += '\nConnected.'
|
||||
resultField.value = results
|
||||
try {
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
const send_currency_tx = {
|
||||
"TransactionType": "Payment",
|
||||
"Account": wallet.address,
|
||||
"Amount": {
|
||||
"currency": currencyField.value,
|
||||
"value": amountField.value,
|
||||
"issuer": issuerField.value
|
||||
},
|
||||
"Destination": destinationField.value
|
||||
}
|
||||
const pay_prepared = await client.autofill(send_currency_tx)
|
||||
const pay_signed = wallet.sign(pay_prepared)
|
||||
results += `\n\n===Sending ${amountField.value} ${currencyField.value} to ${destinationField.value} ...`
|
||||
resultField.value = results
|
||||
const pay_result = await client.submitAndWait(pay_signed.tx_blob)
|
||||
if (pay_result.result.meta.TransactionResult == "tesSUCCESS") {
|
||||
results += '\n===Transaction succeeded.'
|
||||
resultField.value = results
|
||||
getTokenBalance()
|
||||
} else {
|
||||
results += `\n===Transaction failed: ${pay_result.result.meta.TransactionResult}\n`
|
||||
resultField.value = results
|
||||
}
|
||||
xrpBalanceField.value = (await client.getXrpBalance(wallet.address))
|
||||
}
|
||||
catch (error) {
|
||||
console.error('Error sending transaction:', error);
|
||||
results += `\nError: ${error.message}\n`
|
||||
resultField.value = results
|
||||
throw error; // Re-throw the error to be handled by the caller
|
||||
}
|
||||
finally {
|
||||
// Disconnect from the client
|
||||
await client.disconnect();
|
||||
}
|
||||
} // end of sendCurrency()
|
||||
218
_code-samples/modular-tutorials/send-mpt.html
Normal file
218
_code-samples/modular-tutorials/send-mpt.html
Normal file
@@ -0,0 +1,218 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Send MPT</title>
|
||||
<link href='https://fonts.googleapis.com/css?family=Work Sans' rel='stylesheet'>
|
||||
<link href="modular-tutorials.css" rel="stylesheet">
|
||||
<script src='https://unpkg.com/xrpl@4.1.0/build/xrpl-latest.js'></script>
|
||||
<script src="account-support.js"></script>
|
||||
<script src='send-mpt.js'></script>
|
||||
<script>
|
||||
if (typeof module !== "undefined") {
|
||||
const xrpl = require('xrpl')
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<!-- ************************************************************** -->
|
||||
<!-- ********************** The Form ****************************** -->
|
||||
<!-- ************************************************************** -->
|
||||
|
||||
<body>
|
||||
<h1>Send MPT</h1>
|
||||
<form id="theForm">
|
||||
<span class="tooltip" tooltip-data="Choose the XRPL host server for your account.">
|
||||
Choose your ledger instance:
|
||||
</span>
|
||||
|
||||
<input type="radio" id="dn" name="server" value="wss://s.devnet.rippletest.net:51233" checked>
|
||||
<label for="dn">Devnet</label>
|
||||
|
||||
<input type="radio" id="tn" name="server" value="wss://s.altnet.rippletest.net:51233">
|
||||
<label for="tn">Testnet</label>
|
||||
<br /><br />
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount1()">Get New Account 1</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed1()">Get Account 1 From Seed</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getNewAccount2()">Get New Account 2</button>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="getAccountFromSeed2()">Get Account 2 From Seed</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account."><label for="account1name">Account 1 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1name" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Arbitrary human-readable name for the account.">
|
||||
<label for="account2name">Account 2 Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2name" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account1address">Account 1 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1address" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Identifying address for the account.">
|
||||
<label for="account2address">Account 2 Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2address" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account1seed">Account 1 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account1seed" size="40"></input>
|
||||
</td>
|
||||
<td>
|
||||
<span class="tooltip" tooltip-data="Seed for deriving public and private keys for the account.">
|
||||
<label for="account2seed">Account 2 Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="account2seed" size="40"></input>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr />
|
||||
<table>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Name of the currently selected account.">
|
||||
<label for="accountNameField">Account Name</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountNameField" size="40" readonly></input>
|
||||
<input type="radio" id="account1" name="accounts" value="account1">
|
||||
<label for="account1">Account 1</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Address of the currently selected account.">
|
||||
<label for="accountAddressField">Account Address</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountAddressField" size="40" readonly></input>
|
||||
<input type="radio" id="account2" name="accounts" value="account2">
|
||||
<label for="account2">Account 2</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Seed of the currently selected account.">
|
||||
<label for="accountSeedField">Account Seed</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="accountSeedField" size="40" readonly></input>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="XRP balance for the currently selected account.">
|
||||
<label for="xrpBalanceField">XRP Balance</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="xrpBalanceField" size="40" readonly></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Issuance ID of the MPT you want to trade.">
|
||||
<lable for="mptIdField">MPT Issuance ID</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="mptIdField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="authorizeMPT()">Authorize MPT</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Number of MPTs to send.">
|
||||
<label for="amountField">Amount</label>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="amountField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td>
|
||||
<button type="button" onClick="sendMPT()">Send MPT</button>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<span class="tooltip" tooltip-data="Destination account address for MPT transfer.">
|
||||
<lable for="destinationField">Destination</lable>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" id="destinationField" size="40"></input>
|
||||
<br>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="getMPTs()">Get MPTs</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<p align="right">
|
||||
<textarea id="resultField" cols="80" rows="20"></textarea>
|
||||
</p>
|
||||
</td>
|
||||
<td align="left" valign="top">
|
||||
<button type="button" onClick="gatherAccountInfo()">Gather Account Info</button><br/>
|
||||
<button type="button" onClick="distributeAccountInfo()">Distribute Account Info</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
<script>
|
||||
let radioButtons = document.querySelectorAll('input[type="radio"]');
|
||||
radioButtons.forEach(radio => {
|
||||
radio.addEventListener('change', function() {
|
||||
if (this.value === 'account1') {
|
||||
populate1()
|
||||
} else if (this.value === 'account2') {
|
||||
populate2()
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
113
_code-samples/modular-tutorials/send-mpt.js
Normal file
113
_code-samples/modular-tutorials/send-mpt.js
Normal file
@@ -0,0 +1,113 @@
|
||||
// *******************************************************
|
||||
// ********************* Send MPT ************************
|
||||
// *******************************************************
|
||||
|
||||
async function sendMPT() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `===Connected to ${net}. Sending MPT.===\n`
|
||||
resultField.value = results
|
||||
try {
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
const mpt_issuance_id = mptIdField.value
|
||||
const mpt_quantity = amountField.value
|
||||
const send_mpt_tx = {
|
||||
"TransactionType": "Payment",
|
||||
"Account": wallet.address,
|
||||
"Amount": {
|
||||
"mpt_issuance_id": mpt_issuance_id,
|
||||
"value": mpt_quantity,
|
||||
},
|
||||
"Destination": destinationField.value,
|
||||
}
|
||||
const pay_prepared = await client.autofill(send_mpt_tx)
|
||||
const pay_signed = wallet.sign(pay_prepared)
|
||||
results = `\n===Sending ${mpt_quantity} ${mpt_issuance_id} to ${destinationField.value} ...`
|
||||
resultField.value += results
|
||||
const pay_result = await client.submitAndWait(pay_signed.tx_blob)
|
||||
results = '\n\n===Transaction succeeded.\n'
|
||||
results += JSON.stringify(pay_result.result, null, 2)
|
||||
resultField.value += results
|
||||
} catch (error) {
|
||||
results = `Error sending MPT: ${error}`
|
||||
resultField.value += results
|
||||
}
|
||||
finally {
|
||||
client.disconnect()
|
||||
}
|
||||
} // end of sendMPT()
|
||||
|
||||
// *******************************************************
|
||||
// ******************** Get MPTs *************************
|
||||
// *******************************************************
|
||||
|
||||
async function getMPTs() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = ''
|
||||
resultField.value = `===Connected to ${net}. Getting MPTs.===`
|
||||
|
||||
try {
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
const mpts = await client.request({
|
||||
command: "account_objects",
|
||||
account: wallet.address,
|
||||
ledger_index: "validated",
|
||||
type: "mptoken"
|
||||
})
|
||||
let JSONString = JSON.stringify(mpts.result, null, 2)
|
||||
let JSONParse = JSON.parse(JSONString)
|
||||
let numberOfMPTs = JSONParse.account_objects.length
|
||||
let x = 0
|
||||
while (x < numberOfMPTs){
|
||||
results += "\n\n===MPT Issuance ID: " + JSONParse.account_objects[x].MPTokenIssuanceID
|
||||
+ "\n===MPT Amount: " + JSONParse.account_objects[x].MPTAmount
|
||||
x++
|
||||
}
|
||||
results += "\n\n" + JSONString
|
||||
resultField.value += results
|
||||
} catch (error) {
|
||||
results = `===Error getting MPTs: ${error}`
|
||||
resultField.value += results
|
||||
}
|
||||
finally {
|
||||
client.disconnect()
|
||||
}
|
||||
} // End of getMPTs()
|
||||
|
||||
// **********************************************************************
|
||||
// ****** MPTAuthorize Transaction ***************************************
|
||||
// **********************************************************************
|
||||
|
||||
async function authorizeMPT() {
|
||||
let net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `===Connected to ${net}. Authorizing MPT.===\n`
|
||||
resultField.value = results
|
||||
try {
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
const mpt_issuance_id = mptIdField.value
|
||||
const auth_mpt_tx = {
|
||||
"TransactionType": "MPTokenAuthorize",
|
||||
"Account": wallet.address,
|
||||
"MPTokenIssuanceID": mpt_issuance_id,
|
||||
}
|
||||
const auth_prepared = await client.autofill(auth_mpt_tx)
|
||||
const auth_signed = wallet.sign(auth_prepared)
|
||||
results += `\n\n===Sending authorization.===\n`
|
||||
resultField.value = results
|
||||
const auth_result = await client.submitAndWait(auth_signed.tx_blob)
|
||||
results = '\n===Transaction succeeded===\n\n'
|
||||
resultField.value += results
|
||||
results += `\n\n` + JSON.stringify(auth_result.result, null, 2)
|
||||
} catch (error) {
|
||||
results = `===Error authorizing MPT: ${error}`
|
||||
resultField.value = results
|
||||
} finally {
|
||||
resultField.value = results
|
||||
}
|
||||
client.disconnect()
|
||||
} // end of MPTAuthorize()
|
||||
37
_code-samples/modular-tutorials/send-xrp.js
Normal file
37
_code-samples/modular-tutorials/send-xrp.js
Normal file
@@ -0,0 +1,37 @@
|
||||
// *******************************************************
|
||||
// ******************** Send XRP *************************
|
||||
// *******************************************************
|
||||
async function sendXRP() {
|
||||
const net = getNet()
|
||||
const client = new xrpl.Client(net)
|
||||
await client.connect()
|
||||
let results = `===Connected to ${net}.===\n\nSending XRP.\n`
|
||||
resultField.value = results
|
||||
try {
|
||||
const wallet = xrpl.Wallet.fromSeed(accountSeedField.value)
|
||||
const sendAmount = amountField.value
|
||||
// -------------------------------------------------------- Prepare transaction
|
||||
const prepared_tx = await client.autofill({
|
||||
"TransactionType": "Payment",
|
||||
"Account": wallet.address,
|
||||
"Amount": xrpl.xrpToDrops(sendAmount),
|
||||
"Destination": destinationField.value
|
||||
})
|
||||
// ------------------------------------------------- Sign prepared instructions
|
||||
const signed = wallet.sign(prepared_tx)
|
||||
// -------------------------------------------------------- Submit signed blob
|
||||
const tx = await client.submitAndWait(signed.tx_blob)
|
||||
results += JSON.stringify(xrpl.getBalanceChanges(tx.result.meta), null, 2)
|
||||
resultField.value = results
|
||||
xrpBalanceField.value = (await client.getXrpBalance(wallet.address))
|
||||
} catch (error) {
|
||||
console.error('Error sending transaction:', error);
|
||||
results += `\nError: ${error.message}\n`
|
||||
resultField.value = results
|
||||
throw error; // Re-throw the error to be handled by the caller
|
||||
}
|
||||
finally {
|
||||
// Disconnect from the client
|
||||
await xrplClient.disconnect();
|
||||
}
|
||||
} // End of sendXRP()
|
||||
@@ -27,8 +27,8 @@ async function mintToken() {
|
||||
// ----------------------------------------------------- Submit signed blob
|
||||
const tx = await client.submitAndWait(transactionJson, { wallet: standby_wallet} )
|
||||
const nfts = await client.request({
|
||||
method: "account_nfts",
|
||||
account: standby_wallet.classicAddress
|
||||
"method": "account_nfts",
|
||||
"account": standby_wallet.classicAddress
|
||||
})
|
||||
|
||||
// ------------------------------------------------------- Report results
|
||||
|
||||
@@ -11,9 +11,9 @@ author: Rome Reginelli
|
||||
---
|
||||
# Dev Portal Adds rippled APIs
|
||||
|
||||
Today, the [Ripple Dev Portal](https://developers.ripple.com/) gets a big boost of content and usability. The new additions to our development portal include thorough and tested documentation of all the public API methods for our core server software, ‘rippled’, alongside a host of improvements in styling and formatting, as well as new introductory material to give you direction in navigating the sea of Ripple technology.
|
||||
Today, the Ripple Dev Portal gets a big boost of content and usability. The new additions to our development portal include thorough and tested documentation of all the public API methods for our core server software, ‘rippled’, alongside a host of improvements in styling and formatting, as well as new introductory material to give you direction in navigating the sea of Ripple technology.
|
||||
|
||||
This update brings very crucial content into the fold of documentation that's thorough, complete, and software-tested. Today, you can access [full specs and usage information for all 20+ public methods in the rippled WebSocket API](https://developers.ripple.com/rippled-api.html).
|
||||
This update brings very crucial content into the fold of documentation that's thorough, complete, and software-tested. Today, you can access [full specs and usage information for all 20+ public methods in the rippled WebSocket API](/docs/references/http-websocket-apis/public-api-methods).
|
||||
|
||||
<!-- BREAK -->
|
||||
|
||||
|
||||
@@ -8,8 +8,10 @@ markdown:
|
||||
---
|
||||
# Do You Have What It Takes to Be a Gateway?
|
||||
|
||||
We're proud to announce the first release of [our new Gateway Guide](https://developers.ripple.com/become-an-xrp-ledger-gateway.html), a comprehensive manual to operating a gateway in the Ripple network. Whether you're trying to understand [how a gateway makes revenue](https://developers.ripple.com/become-an-xrp-ledger-gateway.html#fees-and-revenue-sources), or how to use the [authorized accounts](https://developers.ripple.com/become-an-xrp-ledger-gateway.html#authorized-trust-lines) feature, or even just [what a warm wallet is](https://developers.ripple.com/issuing-and-operational-addresses.html), the gateway guide has you covered.
|
||||
We're proud to announce the first release of our new Gateway Guide, a comprehensive manual to operating a gateway in the Ripple network. Whether you're trying to understand how a gateway makes revenue, or how to use the authorized accounts feature, or even just what a warm wallet is, the gateway guide has you covered.
|
||||
|
||||
The guide comes with step-by-step, diagrammed explanations of typical gateway operations, a hefty [list of precautions](https://developers.ripple.com/become-an-xrp-ledger-gateway.html#precautions) to make your gateway safer, and concrete examples of all the API calls you need to perform in order to get your gateway accounts set up and secure.
|
||||
The guide comes with step-by-step, diagrammed explanations of typical gateway operations, a hefty list of precautions to make your gateway safer, and concrete examples of all the API calls you need to perform in order to get your gateway accounts set up and secure.
|
||||
|
||||
We're proud of all the work we've done to make the business of running a gateway easier, but there's still more work to do. If you have any questions, comments, or ideas, please send feedback to <developers@ripple.com> - or post it on our forums. We'd love to hear from you!
|
||||
|
||||
> _Editor's note, 2025: This guide is now obsolete and removed. For the nearest modern equivalent, see the [Stablecoin Issuer use case](/docs/use-cases/tokenization/stablecoin-issuer)._
|
||||
|
||||
@@ -20,7 +20,7 @@ The Data API also includes a lot of new capabilities, including:
|
||||
- a new endpoint to show account balance changes
|
||||
- new metrics in transaction stats
|
||||
|
||||
We are making these changes quickly and are focusing our resources on building out and testing new endpoints. Documentation for the Data API will soon be available on [ripple.com/build](http://ripple.com/build). The API will live at [data.ripple.com](http://data.ripple.com). In the meantime, you can look through the [Data API in GitHub](https://github.com/ripple/rippled-historical-database/blob/develop/README.md).
|
||||
We are making these changes quickly and are focusing our resources on building out and testing new endpoints. Documentation for the Data API will soon be available on `ripple.com/build`. The API will live at `data.ripple.com`. In the meantime, you can look through the [Data API in GitHub](https://github.com/ripple/rippled-historical-database/blob/develop/README.md).
|
||||
|
||||
Because we are pulling all of the data endpoints under one API, we are shutting down some of our underutilized endpoints that are relying on infrastructure we are not moving forward with. The first shutdown will be CouchDB on August 19th, which we used early on for Ripple Charts. We are replacing some of the endpoints that hit CouchDB in the Data API, but other, less frequently used calls are being removed. In the next few months, we will also be shutting down the Ripple Charts API and replacing aspects of that by expanding the Data API. The Historical Database API – version one – will live in parallel to the Data API as we make this transition. It will be deprecated by the end of the year.
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ markdown:
|
||||
|
||||
At Ripple Labs, our goal is to expand the size and diversity of the Ripple consensus network by enabling people to easily run rippled validators and understand how those validators perform. We aim to create a network where validating participants are well known and respected by gathering and publicizing identity information of validators in addition to performance statistics.
|
||||
|
||||
Today, we are excited to announce the launch of the Ripple Validator Registry at [xrpcharts.ripple.com/#/validators](https://xrpcharts.ripple.com/#/validators). The Validator Registry gathers and publishes data for all network validators, enabling rippled operators to determine which validators to trust. An [http-based API](https://data.ripple.com/v2/network/validators) is also available for dynamically constructing rippled configurations.
|
||||
Today, we are excited to announce the launch of the Ripple Validator Registry at `xrpcharts.ripple.com/#/validators`. The Validator Registry gathers and publishes data for all network validators, enabling rippled operators to determine which validators to trust. An http-based API is also available for dynamically constructing rippled configurations. _[2025 Update: See <https://livenet.xrpl.org/network/validators> for the modern equivalent of the validator registry.]_
|
||||
|
||||
|
||||
## Build a UNL
|
||||
@@ -25,6 +25,6 @@ The Validator Registry provides several metrics for each validator based on upti
|
||||
- disagreement - the percentage of ledgers validated by the validator that did not pass consensus
|
||||
|
||||
### Identity
|
||||
Network participants are unlikely to trust validators without knowing who is operating them. To address this concern, validator operators can associate their validator with a web domain that they operate by following the steps on the [Ripple Dev Portal](https://ripple.com/build/rippled-apis/rippled-setup/#domain-verification). The Validator Registry verifies these domains and lists them with the validators.
|
||||
Network participants are unlikely to trust validators without knowing who is operating them. To address this concern, validator operators can associate their validator with a web domain that they operate by following the steps for [Domain Verification](https://xrpl.org/docs/references/xrp-ledger-toml#domain-verification). The Validator Registry verifies these domains and lists them with the validators.
|
||||
|
||||
As the consensus network continues to grow, we hope the Validator Registry plays a key role in decentralizing and strengthening the network through open data.
|
||||
|
||||
@@ -12,14 +12,14 @@ markdown:
|
||||
|
||||
The Data team is proud to announce the release of the [Ripple Data API v2.2](https://github.com/ripple/rippled-historical-database/releases/tag/v2.2.0)! This release includes lots of new features, including a total of 15 new methods, improvements in data quality, and documentation.
|
||||
|
||||
One of the biggest changes in the new version is the incorporation of data relating to the Ripple network itself. This includes expanded information on [validator reports](https://ripple.com/build/data-api-v2/#get-daily-validator-reports), [network topology](https://ripple.com/build/data-api-v2/#get-topology), and the [XRP transaction costs](https://ripple.com/build/data-api-v2/#get-transaction-costs) currently being paid to the network. You can interact with all of the new methods using our [Data API Tool](https://ripple.com/build/data-api-tool/).
|
||||
One of the biggest changes in the new version is the incorporation of data relating to the Ripple network itself. This includes expanded information on validator reports, network topology, and the XRP transaction costs currently being paid to the network. You can interact with all of the new methods using our Data API Tool.
|
||||
|
||||
Also part of the new release is a method to calculate the [distribution of XRP](https://ripple.com/build/data-api-v2/#get-xrp-distribution) from Ripple (the company) to others, along with the total amount of XRP in existence. The [XRP Portal](https://ripple.com/xrp-portal/) is already using the new method to report the most recent totals automatically.
|
||||
Also part of the new release is a method to calculate the distribution of XRP from Ripple (the company) to others, along with the total amount of XRP in existence. The XRP Portal is already using the new method to report the most recent totals automatically.
|
||||
|
||||
For more information, check out the following resources:
|
||||
|
||||
* [Data API Docs in the Ripple Developer Center](https://ripple.com/build/data-api-v2/)
|
||||
* [Data API source code](https://github.com/ripple/rippled-historical-database)
|
||||
* [Data visualizations on Ripple Charts](https://xrpcharts.ripple.com/)
|
||||
|
||||
_\[Update: Data API docs and Data visualizations on Ripple Charts are no longer available. The links have been removed.\]_
|
||||
|
||||
We look forward to seeing what you developers can do with all this data!
|
||||
|
||||
@@ -10,7 +10,7 @@ markdown:
|
||||
---
|
||||
# The Flow Amendment is Now Available
|
||||
|
||||
The Flow Amendment became available on the Ripple Consensus Ledger in ledger 24,970,753 [(2016-10-21T19:47:22Z)](https://xrpcharts.ripple.com/#/transactions/C06CE3CABA3907389E4DD296C5F31C73B1548CC20BD7B83416C78CD7D4CD38FC).
|
||||
The Flow Amendment became available on the Ripple Consensus Ledger in ledger 24,970,753 [(2016-10-21T19:47:22Z)](https://livenet.xrpl.org/transactions/C06CE3CABA3907389E4DD296C5F31C73B1548CC20BD7B83416C78CD7D4CD38FC).
|
||||
|
||||
This amendment replaces the payment processing engine with a more robust and efficient rewrite called the Flow engine. The new payments engine adds no new features, but improves efficiency and robustness in payment handling.
|
||||
|
||||
@@ -21,23 +21,23 @@ This amendment replaces the payment processing engine with a more robust and eff
|
||||
|
||||
## Impact of Not Upgrading
|
||||
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.33.0 or later, immediately, then your server will become [amendment blocked](https://ripple.com/build/amendments/#amendment-blocked), meaning that your server:
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.33.0 or later, immediately, then your server will become [amendment blocked](/docs/concepts/networks-and-servers/amendments#amendment-blocked-servers), meaning that your server:
|
||||
|
||||
* Cannot determine the validity of a ledger
|
||||
* Cannot submit or process transactions
|
||||
* Does not participate in the consensus process
|
||||
* Does not vote on future amendments
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
For other platforms, please [compile version 0.33.0 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.33.0 from source](https://github.com/XRPLF/rippled/tree/0.33.0/Builds).
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Forum _(Shut down. Formerly `forum.ripple.com`)_
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: <support@ripple.com>
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -10,7 +10,7 @@ markdown:
|
||||
---
|
||||
# The Flow Amendment Will Soon Be Available
|
||||
|
||||
A majority of `rippled` validators voted to enable the [Flow Amendment](https://ripple.com/build/amendments/#flow), which is scheduled to become active on the protocol on Thursday, 2016-10-20. This amendment replaces the payment processing engine with a more robust and efficient rewrite called the Flow engine. The new payments engine adds no new features, but improves efficiency and robustness in payment handling.
|
||||
A majority of `rippled` validators voted to enable the [Flow Amendment](/resources/known-amendments.md#flow), which is scheduled to become active on the protocol on Thursday, 2016-10-20. This amendment replaces the payment processing engine with a more robust and efficient rewrite called the Flow engine. The new payments engine adds no new features, but improves efficiency and robustness in payment handling.
|
||||
|
||||
## Action Required
|
||||
|
||||
@@ -18,7 +18,7 @@ A majority of `rippled` validators voted to enable the [Flow Amendment](https://
|
||||
|
||||
## Impact of Not Upgrading
|
||||
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.33.0 by Thursday, 2016-10-20, when Flow is expected to be enabled via Amendment, then your server will become [amendment blocked](https://ripple.com/build/amendments/#amendment-blocked), meaning that your server:
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.33.0 by Thursday, 2016-10-20, when Flow is expected to be enabled via Amendment, then your server will become [amendment blocked](/docs/concepts/networks-and-servers/amendments#amendment-blocked-servers), meaning that your server:
|
||||
|
||||
* Cannot determine the validity of a ledger
|
||||
* Cannot submit or process transactions
|
||||
@@ -27,17 +27,17 @@ If you operate a `rippled` server but don’t upgrade to version 0.33.0 by Thurs
|
||||
|
||||
If the Flow amendment is vetoed or does not pass, then your server will not become amendment blocked and should continue to operate.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
For other platforms, please [compile version 0.33.0-hf1 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.33.0-hf1 from source](https://github.com/XRPLF/rippled/blob/0.33.0-hf1/Builds).
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -10,7 +10,7 @@ markdown:
|
||||
---
|
||||
# The Flow Amendment is Open for Voting
|
||||
|
||||
Originally introduced in `rippled` [version 0.32.1](https://developers.ripple.com/blog/2016/rippled-0.32.1.html), but later [vetoed](https://developers.ripple.com/blog/2016/flowv2-vetoed.html) after a flaw was discovered in the code while testing, the new [Flow Amendment](https://ripple.com/build/amendments/#flow) is now open for voting. This amendment replaces the payment processing engine with a more robust and efficient rewrite called the Flow engine. The new payments engine adds no new features, but improves efficiency and robustness in payment handling.
|
||||
Originally introduced in `rippled` [version 0.32.1](/blog/2016/rippled-0.32.1.md), but later [vetoed](/blog/2016/flowv2-vetoed.md) after a flaw was discovered in the code while testing, the new [Flow Amendment](/resources/known-amendments.md#flow) is now open for voting. This amendment replaces the payment processing engine with a more robust and efficient rewrite called the Flow engine. The new payments engine adds no new features, but improves efficiency and robustness in payment handling.
|
||||
|
||||
|
||||
## Action Required
|
||||
@@ -19,7 +19,7 @@ Originally introduced in `rippled` [version 0.32.1](https://developers.ripple.co
|
||||
|
||||
## Impact of Not Upgrading
|
||||
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.33.0 by Thursday, 2016-10-20, when Flow is expected to be enabled via Amendment, then your server will become [amendment blocked](https://ripple.com/build/amendments/#amendment-blocked), meaning that your server:
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.33.0 by Thursday, 2016-10-20, when Flow is expected to be enabled via Amendment, then your server will become [amendment blocked](/docs/concepts/networks-and-servers/amendments#amendment-blocked-servers), meaning that your server:
|
||||
|
||||
* Cannot determine the validity of a ledger
|
||||
* Cannot submit or process transactions
|
||||
@@ -28,16 +28,16 @@ If you operate a `rippled` server but don’t upgrade to version 0.33.0 by Thurs
|
||||
|
||||
If the Flow amendment is vetoed or does not pass, then your server will not become amendment blocked and should continue to operate.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
For other platforms, please [compile version 0.33.0-hf1 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.33.0-hf1 from source](https://github.com/XRPLF/rippled/blob/0.33.0-hf1/Builds).
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -10,7 +10,7 @@ markdown:
|
||||
---
|
||||
# The FlowV2 Amendment Was Vetoed
|
||||
|
||||
The `rippled` team found a flaw in FlowV2 while testing. As a result, the Ripple network has [vetoed](https://ripple.com/build/amendments/#amendment-voting) the new payment engine amendment. [Originally](https://developers.ripple.com/blog/2016/rippled-0.32.1.html), the [FlowV2 amendment](https://ripple.com/build/amendments/#flowv2) was planned to replace `rippled`’s payment processing engine with a more robust and efficient implementation. It was previously expected to become active on Wednesday, 2016-08-24.
|
||||
The `rippled` team found a flaw in FlowV2 while testing. As a result, the Ripple network has [vetoed](/docs/concepts/networks-and-servers/amendments#amendment-voting) the new payment engine amendment. [Originally](/blog/2016/rippled-0.32.1.md), the [FlowV2 amendment](/resources/known-amendments.md#flowv2) was planned to replace `rippled`’s payment processing engine with a more robust and efficient implementation. It was previously expected to become active on Wednesday, 2016-08-24.
|
||||
|
||||
A corrected version of the payment processing engine has been created and is now undergoing further testing. It is scheduled to be included in a future version of `rippled` as an amendment called [Flow](https://github.com/seelabs/rippled/blob/6466629f935821583eeddadbd06fabd9ea0875d0/src/ripple/app/main/Amendments.cpp#L50-L51).
|
||||
|
||||
@@ -28,11 +28,11 @@ To veto the amendment, add the following, single line, under the `[veto_amendmen
|
||||
|
||||
## Learn, Ask Questions, and Discuss
|
||||
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing: <https://ripple.com/build/>
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
### Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* The Ripple Dev Blog: <https://developers.ripple.com/blog/>
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: <support@ripple.com>
|
||||
* XRP Chat: <http://www.xrpchat.com>
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -10,7 +10,7 @@ markdown:
|
||||
---
|
||||
# The FlowV2 Amendment is Open for Voting
|
||||
|
||||
The [FlowV2 Amendment](https://ripple.com/build/amendments/#flowv2) is now open for voting. This amendment replaces the payment processing engine with a more robust and efficient rewrite called the FlowV2 engine. The new version of the payment processing engine is intended to follow the same rules as the old engine. However, the new engine occasionally produces different results due to floating point rounding.
|
||||
The [FlowV2 Amendment](/resources/known-amendments.md#flowv2) is now open for voting. This amendment replaces the payment processing engine with a more robust and efficient rewrite called the FlowV2 engine. The new version of the payment processing engine is intended to follow the same rules as the old engine. However, the new engine occasionally produces different results due to floating point rounding.
|
||||
|
||||
The FlowV2 Engine also makes it easier to improve and expand the payment engine with further Amendments. Ripple’s validators will vote in favor of the FlowV2 amendment. We expect the new feature to become active on Wednesday, 2016-08-24.
|
||||
|
||||
@@ -24,17 +24,17 @@ If you operate a `rippled` server, you should upgrade to version 0.32.1 by Wedne
|
||||
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.32.1 by Wednesday, 2016-08-24 (when FlowV2 is expected to become available via Amendment) then your server will become "amendment blocked" and unable to process transactions or evaluate the validity of ledgers.
|
||||
|
||||
For instruction on updating `rippled` on supported platforms, see: <https://ripple.com/build/rippled-setup/#updating-rippled>
|
||||
For instruction on updating `rippled` on supported platforms, see: </docs/infrastructure/installation/update-rippled-automatically-on-linux>
|
||||
|
||||
For other platforms, please compile version 0.32.1 from source. For details, see <https://github.com/ripple/rippled/tree/master/Builds>
|
||||
For other platforms, please [compile version 0.32.1 from source](https://github.com/XRPLF/rippled/tree/0.32.1/Builds).
|
||||
|
||||
## Learn, Ask Questions, and Discuss
|
||||
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing: <https://ripple.com/build/>
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
## Other Resources
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* The Ripple Dev Blog: <https://developers.ripple.com/blog/>
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* XRP Chat: <http://www.xrpchat.com>
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -12,11 +12,13 @@ markdown:
|
||||
|
||||
Ripple is proud to announce an improved, unified interface to the Ripple Consensus Ledger: the new **RippleAPI**! RippleAPI merges ripple-lib and Ripple-REST into a single high-level interface for JavaScript that is fully-documented, fully-tested, schema-validated, stateless, and easier to use.
|
||||
|
||||
> _Editor's note: RippleAPI is obsolete. This post has been edited to remove dead links, but otherwise preserved in its original form. For a modern equivalent, see [xrpl.js](https://js.xrpl.org/)._
|
||||
|
||||
If you’re excited to get started with the new RippleAPI right away, jump right in with the following resources:
|
||||
|
||||
1. [RippleAPI Beginners Guide](https://ripple.com/build/rippleapi-beginners-guide/) - A tutorial that introduces the basics of RippleAPI, even if you have minimal prior experience writing JavaScript applications.
|
||||
2. [RippleAPI Reference](https://ripple.com/build/rippleapi/) - A thorough reference of all methods and features contained in the new API.
|
||||
3. [Sample Code](https://github.com/ripple/ripple-lib/tree/develop/docs/samples) - Additional code samples for a growing variety of use cases.
|
||||
1. **RippleAPI Beginners Guide** - A tutorial that introduces the basics of RippleAPI, even if you have minimal prior experience writing JavaScript applications.
|
||||
2. **RippleAPI Reference** - A thorough reference of all methods and features contained in the new API.
|
||||
3. **Sample Code** - Additional code samples for a growing variety of use cases.
|
||||
4. [`ripple-lib` on GitHub](https://github.com/ripple/ripple-lib) - The RippleAPI source code is available under an open-source license so you can freely download, modify, and contribute back to the project.
|
||||
|
||||
For more information on how and why we built RippleAPI, read on.
|
||||
@@ -33,7 +35,7 @@ In order to better focus our efforts as a company, as well as providing a better
|
||||
|
||||
Unfortunately, all good things come to an end, and this is the end of the line for Ripple-REST. We are no longer developing or supporting Ripple-REST, and we recommend you migrate your applications away from it. Fortunately, RippleAPI also includes an [experimental REST-like HTTP API](https://github.com/ripple/ripple-lib/blob/0.17.1/src/index.js#L7-L8), although this interface is currently unsupported.
|
||||
|
||||
Meanwhile, the [`rippled` APIs](https://ripple.com/build/rippled-apis/) continue to provide an alternative method of interacting with the Ripple Consensus Ledger, providing maximum power at a cost of increased complexity, so you can choose the tradeoffs that are best for your use case.
|
||||
Meanwhile, the [`rippled` APIs](/docs/references/http-websocket-apis) continue to provide an alternative method of interacting with the Ripple Consensus Ledger, providing maximum power at a cost of increased complexity, so you can choose the tradeoffs that are best for your use case.
|
||||
|
||||
## Source Code Improvements
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ markdown:
|
||||
---
|
||||
# Multi-Signing Now Available #
|
||||
|
||||
As [predicted previously](https://developers.ripple.com/blog/2016/multisign-reminder.html), multi-signing became available on the Ripple Consensus Ledger this afternoon in Pacific time ([2016-06-27T11:34:41Z](https://xrpcharts.ripple.com/#/transactions/168F8B15F643395E59B9977FC99D6310E8708111C85659A9BAF8B9222EEAC5A7), to be exact).
|
||||
As [predicted previously](/blog/2016/multisign-reminder), multi-signing became available on the Ripple Consensus Ledger this afternoon in Pacific time ([2016-06-27T11:34:41Z](https://xrpcharts.ripple.com/#/transactions/168F8B15F643395E59B9977FC99D6310E8708111C85659A9BAF8B9222EEAC5A7), to be exact).
|
||||
|
||||
Multi-signing provides more flexibility for sending transactions from your Ripple address. You can use multi-signing alongside a master key pair or regular key pair, or you can disable your other keys and use multi-signing exclusively. You can set and update a list of up to 8 signers, with customizable weights and quorum enabling many different use cases. The members of your signer list can be any Ripple addresses, whether they're funded addresses in the ledger or not.
|
||||
|
||||
@@ -25,20 +25,20 @@ The Ripple Consensus Ledger's multi-signing feature also allows signers to indep
|
||||
|
||||
1. Include the signer's address in your SignerList.
|
||||
2. Fund the signer's address in the ledger.
|
||||
3. Assign a [Regular Key Pair](https://ripple.com/build/transactions/#setregularkey) to the signer's address and disable its master key. (Funded addresses can only sign using their master key pair if it's not disabled.)
|
||||
3. [Assign a Regular Key Pair](/docs/tutorials/how-tos/manage-account-settings/assign-a-regular-key-pair) to the signer's address and disable its master key. (Funded addresses can only sign using their master key pair if it's not disabled.)
|
||||
4. Have that signer use its regular key pair to contribute to your multi-signatures.
|
||||
|
||||
|
||||
## Further Reading ##
|
||||
|
||||
- [Multi-Signing Summary](https://ripple.com/build/transactions/#multi-signing)
|
||||
- [How to Multi-Sign](https://ripple.com/build/how-to-multi-sign/)
|
||||
- [MultiSign Amendment](https://ripple.com/build/amendments/#multisign)
|
||||
- [Multi-Signing Summary](/docs/concepts/accounts/multi-signing)
|
||||
- [How to Multi-Sign](/docs/tutorials/how-tos/manage-account-settings/send-a-multi-signed-transaction)
|
||||
- [MultiSign Amendment](/resources/known-amendments.md#multisign)
|
||||
|
||||
|
||||
## Other resources: ##
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* The Ripple Dev Blog: <https://developers.ripple.com/blog/>
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: [support@ripple.com](mailto:support@ripple.com)
|
||||
* XRP Chat: <http://www.xrpchat.com/>
|
||||
|
||||
@@ -12,8 +12,8 @@ markdown:
|
||||
|
||||
The multi-signing amendment is currently supported by the majority of voting validators on Ripple, and is scheduled to become active on the protocol on Monday, **2016-06-27**. For more information, please see the multi-signing documentation in the Ripple Developer Portal:
|
||||
|
||||
* [How to Multi-Sign](https://ripple.com/build/how-to-multi-sign/)
|
||||
* [MultiSign Amendment Information](https://ripple.com/build/amendments/#multisign)
|
||||
* [How to Multi-Sign](/docs/tutorials/how-tos/manage-account-settings/send-a-multi-signed-transaction)
|
||||
* [MultiSign Amendment Information](/resources/known-amendments.md#multisign)
|
||||
|
||||
To continue receiving updates about the `rippled` server, please subscribe to the Ripple Server Google Group:
|
||||
|
||||
|
||||
@@ -13,5 +13,5 @@ markdown:
|
||||
The latest version of `rippled`, the core server of the Ripple Consensus Ledger, is here! Version 0.30.1 contains lots of small features and improvements, including updates to account\_offers, server\_info, peer subscriptions, and more. It also adds several optimizations to the consensus process that have already led to a dramatic increase in the number of ledgers validated per day! Learn more:
|
||||
|
||||
- See the full [rippled 0.30.1 Release Notes](https://github.com/ripple/rippled/releases/0.30.1).
|
||||
- See our [installation instructions](https://ripple.com/build/rippled-setup/#installing-rippled) to set up `rippled` yourself.
|
||||
- Visit the [Developer Center](https://ripple.com/build/) for more information on how to use the Ripple Consensus Ledger.
|
||||
- See our [installation instructions](/docs/infrastructure/installation) to set up `rippled` yourself.
|
||||
- Visit the Developer Center for more information on how to use the Ripple Consensus Ledger.
|
||||
|
||||
@@ -23,8 +23,8 @@ The `rippled` team is proud to announce a bundle of related news items:
|
||||
|
||||
We recommend all users, especially validators, upgrade as soon as possible:
|
||||
|
||||
* For Red Hat Enterprise Linux 7 or CentOS, you can [update to the new version using `yum`](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
* For other platforms, please [compile the new version from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
* For Red Hat Enterprise Linux 7 or CentOS, you can [update to the new version using `yum`](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
* For other platforms, please [compile the new version from source](https://github.com/XRPLF/rippled/tree/0.31.2/Builds).
|
||||
* For more information, see the `rippled` [0.31.2 release notes](https://github.com/ripple/rippled/releases/tag/0.31.2) and [0.31.0 release notes](https://github.com/ripple/rippled/releases/tag/0.31.0) on GitHub.
|
||||
|
||||
## Amendments System ##
|
||||
@@ -33,11 +33,11 @@ Amendments are a new feature introduced in `rippled` 0.31.0. The Amendments syst
|
||||
|
||||
The next amendment, MultiSign, introduces a way to authorize transactions using multiple signatures, for greater security and flexibility.
|
||||
|
||||
For more information, see [Amendments in the Ripple Developer Center](https://ripple.com/build/amendments/).
|
||||
For more information, see [Amendments](/docs/concepts/networks-and-servers/amendments).
|
||||
|
||||
## Transaction Cost Changes ##
|
||||
|
||||
We have brought two significant changes to [transaction costs](https://ripple.com/build/transaction-cost/) in the `rippled` 0.31 releases. First, the FeeEscalation amendment changed the way the network escalates transaction costs under load. Second, `rippled` 0.31.2 has decreased the minimum transaction cost back to its previous value of 0.00001 XRP (10 drops).
|
||||
We have brought two significant changes to [transaction costs](/docs/concepts/transactions/transaction-cost) in the `rippled` 0.31 releases. First, the FeeEscalation amendment changed the way the network escalates transaction costs under load. Second, `rippled` 0.31.2 has decreased the minimum transaction cost back to its previous value of 0.00001 XRP (10 drops).
|
||||
|
||||
Previously, transaction costs tended to spike rapidly when the network was under load and drop quickly when the backlog was processed, causing network volatility. As a temporary fix, Ripple configured the official validating servers to always report a load multiplier of 1000 or more. This effectively increased transaction costs from 0.00001 XRP to 0.01 XRP.
|
||||
|
||||
@@ -53,8 +53,9 @@ The `rippled` team is excited to announce that the next feature to be enabled by
|
||||
|
||||
Ripple plans to configure its validators to start voting in favor of the MultiSign amendment on 2016-06-13. If the feature maintains a majority for two weeks after that, multi-signing will become an active part of the protocol starting **2016-06-27**.
|
||||
|
||||
For more information, see the following articles in the Ripple Developer Center:
|
||||
For more information, see the following articles:
|
||||
|
||||
* [MultiSign Amendment](https://ripple.com/build/amendments/#multisign)
|
||||
* [Multi-Signing transaction reference](https://ripple.com/build/transactions/#multi-signing)
|
||||
* [How to Multi-Sign Tutorial](https://ripple.com/build/how-to-multi-sign/)
|
||||
* [MultiSign Amendment](/resources/known-amendments.md#multisign)
|
||||
* [Multi-Signing Overview](/docs/concepts/accounts/multi-signing)
|
||||
* [Tutorial - Set Up Multi-Signing](/docs/tutorials/how-tos/manage-account-settings/set-up-multi-signing)
|
||||
* [Tutorial - Send a Multi-Signed Transaction](/docs/tutorials/how-tos/manage-account-settings/send-a-multi-signed-transaction)
|
||||
|
||||
@@ -14,8 +14,8 @@ Ripple is proud to announce the release of `rippled` version 0.32.0. This releas
|
||||
|
||||
Highlights of this release include:
|
||||
|
||||
* The transaction queue now supports batching and can hold up to 10 transactions per account, allowing users to queue multiple transactions for processing when the network load is high. This encourages liquidity for XRP since important transactions now have a more reliable way of getting into the ledger. For more information, see [Queued Transactions](https://ripple.com/build/transaction-cost/#queued-transactions) in the Ripple Developer Portal.
|
||||
* The `server_info` and `server_state` commands now include information on transaction cost multipliers. Customers who want to robustly submit transactions now have additional tools for accurately setting the fee based on changing network conditions. Furthermore, the `fee` command is now available to unprivileged users. For more information, see the [`rippled` API Method Reference](https://ripple.com/build/rippled-apis/#api-methods) in the Ripple Developer Portal.
|
||||
* The transaction queue now supports batching and can hold up to 10 transactions per account, allowing users to queue multiple transactions for processing when the network load is high. This encourages liquidity for XRP since important transactions now have a more reliable way of getting into the ledger. For more information, see [Transaction Queue](/docs/concepts/transactions/transaction-queue).
|
||||
* The `server_info` and `server_state` commands now include information on transaction cost multipliers. Customers who want to robustly submit transactions now have additional tools for accurately setting the fee based on changing network conditions. Furthermore, the `fee` command is now available to unprivileged users. For more information, see the [`rippled` API Method Reference](/docs/references/http-websocket-apis).
|
||||
* There's a new WebSocket implementation based on [Beast](https://github.com/vinniefalco/Beast). Use of this implementation is optional. A future version of `rippled` will make this WebSocket implementation the default, with the old implementation removed.
|
||||
|
||||
Read the complete [release notes in GitHub](https://github.com/ripple/rippled/releases/tag/0.32.0).
|
||||
@@ -29,30 +29,32 @@ Read the complete [release notes in GitHub](https://github.com/ripple/rippled/re
|
||||
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.32.0, your server might lose synchronization with the rest of the upgraded network for brief periods of time. That is, the local view of ledgers may be slightly behind the rest of the network.
|
||||
|
||||
For instruction on updating rippled on supported platforms, please see [Updating `rippled`](https://ripple.com/build/rippled-setup/#updating-rippled) in the Ripple Developer Center.
|
||||
For instruction on updating rippled on supported platforms, please see [Updating `rippled`](/docs/infrastructure/installation/update-rippled-automatically-on-linux) in the Ripple Developer Center.
|
||||
|
||||
The md5sum for the rpm is: **1b37fd80fd869e42a715f17a9e30c81a**.
|
||||
The md5sum for the source rpm is: **d43f4d371416b213d6197fb1c630cf44**.
|
||||
|
||||
For other platforms, please compile version 0.32.0 from source. See [`rippled` Build Instructions](https://github.com/ripple/rippled/tree/master/Builds) for details.
|
||||
For other platforms, please [compile version 0.32.0 from source](https://github.com/XRPLF/rippled/tree/0.32.0/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit d22eb0caa25ecfbd373cc9af0347e56031a23646
|
||||
Author: seelabs <scott.determan@yahoo.com>
|
||||
Date: Fri Jun 24 11:30:09 2016 -0400
|
||||
```text
|
||||
commit d22eb0caa25ecfbd373cc9af0347e56031a23646
|
||||
Author: seelabs <scott.determan@yahoo.com>
|
||||
Date: Fri Jun 24 11:30:09 2016 -0400
|
||||
|
||||
Set version to 0.32.0
|
||||
Set version to 0.32.0
|
||||
```
|
||||
|
||||
## Network Update ##
|
||||
The Ripple operations team plans to deploy version 0.32.0 to all rippled servers under its operational control, including private clusters, starting at 1:00 PM PDT on Wednesday, 2016-06-29. The deployment is expected to complete within 4 hours.
|
||||
|
||||
## Learn, ask questions, and discuss ##
|
||||
Ripple supported documentation including detailed example API calls and web tools for API testing are located on the Ripple Developer Portal: <https://ripple.com/build/>
|
||||
Ripple supported documentation including detailed example API calls and web tools for API testing are located on the Ripple Developer Portal.
|
||||
|
||||
### Other resources: ###
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* The Ripple Dev Blog: <https://developers.ripple.com/blog/>
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: [support@ripple.com](mailto:support@ripple.com)
|
||||
* XRP Chat: <http://www.xrpchat.com/>
|
||||
|
||||
@@ -15,7 +15,7 @@ Ripple is proud to announce the release of `rippled` version 0.32.1, which intro
|
||||
Highlights of this release include:
|
||||
|
||||
* A new, optional WebSocket implementation based on [Beast](https://github.com/vinniefalco/Beast). See below for details.
|
||||
* An improved version of the payment code, which we expect to be available via an [Amendment named "FlowV2"](https://ripple.com/build/amendments/#flowv2) on Wednesday, 2016-08-24. See below for details.
|
||||
* An improved version of the payment code, which we expect to be available via an [Amendment named "FlowV2"](/resources/known-amendments.md#flowv2) on Wednesday, 2016-08-24. See below for details.
|
||||
|
||||
## Actions Required
|
||||
|
||||
@@ -25,41 +25,42 @@ Highlights of this release include:
|
||||
## Impact of Not Upgrading
|
||||
If you operate a rippled server but don’t upgrade to version 0.32.1 by Wednesday, 2016-08-24, when FlowV2 is expected to become available via Amendment, then your server might lose synchronization with the rest of the upgraded network for brief periods of time. That is, the local view of ledgers may be slightly behind the rest of the network. Any rippled server operator running versions prior to 0.32.1, will also become amendment blocked.
|
||||
|
||||
For supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The md5sum for the rpm is: 5dcdcef01f3cfc452b0b503eaaeb07bb
|
||||
|
||||
The md5sum for the source rpm is: 3180fca1e83001307346f85628823a9c
|
||||
|
||||
For other platforms, please [compile version 0.32.1 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.32.1 from source](https://github.com/XRPLF/rippled/tree/0.32.1/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit 1ff972fbd3b82f0f7062f05f64f1abd5e274a7bc
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Fri Jul 29 12:52:26 2016 -0700
|
||||
|
||||
Set version to 0.32.1
|
||||
```text
|
||||
commit 1ff972fbd3b82f0f7062f05f64f1abd5e274a7bc
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Fri Jul 29 12:52:26 2016 -0700
|
||||
|
||||
Set version to 0.32.1
|
||||
```
|
||||
|
||||
## Network Update
|
||||
The Ripple operations team plans to deploy version 0.32.1 to all rippled servers under its operational control, including private clusters, starting at 1:00 PM PDT on Thursday, 2016-08-04. The deployment is expected to complete within 4 hours. The network will continue operating during deployment and no outage is expected.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
|
||||
## Full Release Notes
|
||||
The `rippled` 0.32.1 release includes an improved version of the payment code, which we expect to be available via Amendment on Wednesday, 2016-08-24 with the name FlowV2, and a completely new implementation of the WebSocket protocol for serving clients.
|
||||
|
||||
You can [update to the new version](https://ripple.com/build/rippled-setup/#updating-rippled) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
You can [update to the new version](/docs/infrastructure/installation/update-rippled-automatically-on-linux) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/XRPLF/rippled/tree/0.32.1/Builds).
|
||||
|
||||
**New and Updated Features**
|
||||
|
||||
|
||||
@@ -20,21 +20,23 @@ Ripple has released `rippled` version 0.33.0-hf1, which fixes a JSON parsing iss
|
||||
|
||||
If you operate a `rippled` server and are experiencing a `jsonInvalid` error response to client requests, but don’t upgrade to version 0.33.0-hf1, then your server will continue to experience failing client requests.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The md5sum for the rpm is: f181f1fc801e3387487d246f9a975517
|
||||
|
||||
The md5sum for the source rpm is: 7993f125ed05bfeeda4e091761021429
|
||||
|
||||
For other platforms, please [compile version 0.33.0-hf1 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.33.0-hf1 from source](https://github.com/XRPLF/rippled/blob/0.33.0-hf1/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit 98f878cf10a32e26021b6a6ed44990bccbbc92c2
|
||||
Author: Vinnie Falco <vinnie.falco@gmail.com>
|
||||
Date: Sat Oct 1 12:12:34 2016 -0400
|
||||
```text
|
||||
commit 98f878cf10a32e26021b6a6ed44990bccbbc92c2
|
||||
Author: Vinnie Falco <vinnie.falco@gmail.com>
|
||||
Date: Sat Oct 1 12:12:34 2016 -0400
|
||||
|
||||
Set version to 0.33.0-hf1
|
||||
Set version to 0.33.0-hf1
|
||||
```
|
||||
|
||||
## Bug Fixes
|
||||
|
||||
@@ -44,11 +46,11 @@ Fix a JSON parsing issue that can fail to parse valid JSON requests when the dat
|
||||
The Ripple operations team has deployed version 0.33.0-hf1 to all client facing `rippled` servers under its operational control.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -14,9 +14,9 @@ Ripple has released `rippled` version 0.33.0, which introduces several new enhan
|
||||
|
||||
Highlights of this release include:
|
||||
|
||||
* An improved version of the payment code, which Ripple expects to be available via an [Amendment named "Flow"](https://ripple.com/build/amendments/#flow) on Wednesday, 2016-10-20. See below for details.
|
||||
* Payment Channels that permit scalable, off-ledger checkpoints for high volume, low value payments flowing in a single direction, which Ripple expects to be activated via an [Amendment named “PayChan”](https://ripple.com/build/amendments/#paychan) on a future date TBA. See below for details.
|
||||
* SHAMapV2 changes the hash tree structure that rippled uses to represent a ledger, which Ripple expects to be activated via an [Amendment named SHAMapV2](https://ripple.com/build/amendments/#shamapv2) on a future date TBA. See below for details.
|
||||
* An improved version of the payment code, which Ripple expects to be available via an [Amendment named "Flow"](/resources/known-amendments.md#flow) on Wednesday, 2016-10-20. See below for details.
|
||||
* Payment Channels that permit scalable, off-ledger checkpoints for high volume, low value payments flowing in a single direction, which Ripple expects to be activated via an [Amendment named “PayChan”](/resources/known-amendments.md#paychan) on a future date TBA. See below for details.
|
||||
* SHAMapV2 changes the hash tree structure that rippled uses to represent a ledger, which Ripple expects to be activated via an [Amendment named SHAMapV2](/resources/known-amendments.md#shamapv2) on a future date TBA. See below for details.
|
||||
|
||||
## Action Required
|
||||
|
||||
@@ -33,54 +33,56 @@ The Flow amendment is expected to be activated on Wednesday, 2016-10-20. If you
|
||||
|
||||
If the Flow amendment is vetoed or does not pass via majority vote, then your server will not become amendment blocked and should continue to operate.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The md5sum for the rpm is: 5ad8fa43e9acf645a76d0a383eb5600a
|
||||
|
||||
The md5sum for the source rpm is: 38fe8c022e2fe5086f71fb9623a18064
|
||||
|
||||
For other platforms, please [compile version 0.33.0 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.33.0 from source](https://github.com/XRPLF/rippled/tree/0.33.0/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit f05321d501002cd7b8e7fba3ef361834689b3c26
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Thu Sep 29 09:25:46 2016 -0700
|
||||
```text
|
||||
commit f05321d501002cd7b8e7fba3ef361834689b3c26
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Thu Sep 29 09:25:46 2016 -0700
|
||||
|
||||
Set version to 0.33.0
|
||||
Set version to 0.33.0
|
||||
```
|
||||
|
||||
## Network Update
|
||||
The Ripple operations team plans to deploy version 0.33.0 to all rippled servers under its operational control, including private clusters, starting at 2:00 PM PDT on Thursday, 2016-09-29. The deployment is expected to complete within 4 hours. The network should continue to operate during deployment and no outage is expected.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
## Full Release Notes
|
||||
|
||||
The `rippled` 0.33.0 release includes:
|
||||
|
||||
* The ["Flow"](https://ripple.com/build/amendments/#flow) amendment. Ripple expects this amendment to be on Wednesday, 2016-10-20.
|
||||
* The ["Flow"](/resources/known-amendments.md#flow) amendment. Ripple expects this amendment to be on Wednesday, 2016-10-20.
|
||||
|
||||
* XRP Payment Channels. Payment channels are a new structure in the ledger designed to support [Interledger Protocol](https://interledger.org/) trust lines as balances get substantial. Ripple expects to be activated via Amendment on a future date (TBA) with the name [“PayChan”](https://ripple.com/build/amendments/#paychan).
|
||||
* XRP Payment Channels. Payment channels are a new structure in the ledger designed to support [Interledger Protocol](https://interledger.org/) trust lines as balances get substantial. Ripple expects to be activated via Amendment on a future date (TBA) with the name [“PayChan”](/resources/known-amendments.md#paychan).
|
||||
|
||||
* Changes to the hash tree structure, which `rippled` uses hash trees to represent a ledger. Ripple expects these changes expect to be available via Amendment on a future date (TBA) with the name [SHAMapV2](https://ripple.com/build/amendments/#shamapv2).
|
||||
* Changes to the hash tree structure, which `rippled` uses hash trees to represent a ledger. Ripple expects these changes expect to be available via Amendment on a future date (TBA) with the name [SHAMapV2](/resources/known-amendments.md#shamapv2).
|
||||
|
||||
You can [update to the new version](https://ripple.com/build/rippled-setup/#updating-rippled) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
You can [update to the new version](/docs/infrastructure/installation/update-rippled-automatically-on-linux) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md).
|
||||
|
||||
**New and Updated Features**
|
||||
|
||||
A fixed version of the new payment processing engine, which Ripple initially [announced on Friday, 2016-07-29](https://developers.ripple.com/blog/2016/rippled-0.32.1.html), is expected to be available via Amendment on Wednesday, 2016-10-20 with the name ["Flow"](https://ripple.com/build/amendments/#flow). The new payments code adds no new features, but improves efficiency and robustness in payment handling.
|
||||
A fixed version of the new payment processing engine, which Ripple initially [announced on Friday, 2016-07-29](/blog/2016/rippled-0.32.1.md), is expected to be available via Amendment on Wednesday, 2016-10-20 with the name ["Flow"](/resources/known-amendments.md#flow). The new payments code adds no new features, but improves efficiency and robustness in payment handling.
|
||||
|
||||
Ripple will be introducing changes to the hash tree structure that rippled uses to represent a ledger. Ripple expects these changes to be activated via Amendment on a future date (TBA) with the name [SHAMapV2](https://ripple.com/build/amendments/#shamapv2). The new structure is more compact and efficient than the previous version. This affects how ledger hashes are calculated, but has no other user-facing consequences. The activation of the SHAMapV2 amendment will require brief scheduled allowable downtime, while the changes to the hash tree structure are propagated by the network. Ripple will keep the community updated as we progress towards this date (TBA).
|
||||
Ripple will be introducing changes to the hash tree structure that rippled uses to represent a ledger. Ripple expects these changes to be activated via Amendment on a future date (TBA) with the name [SHAMapV2](/resources/known-amendments.md#shamapv2). The new structure is more compact and efficient than the previous version. This affects how ledger hashes are calculated, but has no other user-facing consequences. The activation of the SHAMapV2 amendment will require brief scheduled allowable downtime, while the changes to the hash tree structure are propagated by the network. Ripple will keep the community updated as we progress towards this date (TBA).
|
||||
|
||||
In an effort to make RCL more scalable and to support [Interledger Protocol](https://interledger.org/) (ILP) trust lines as balances get more substantial, Ripple is introducing XRP Payment Channels, a new structure in the ledger, which we expect to be available via Amendment on a future date (TBA) with the name [“PayChan”](https://ripple.com/build/amendments/#paychan).
|
||||
In an effort to make RCL more scalable and to support [Interledger Protocol](https://interledger.org/) (ILP) trust lines as balances get more substantial, Ripple is introducing XRP Payment Channels, a new structure in the ledger, which we expect to be available via Amendment on a future date (TBA) with the name [“PayChan”](/resources/known-amendments.md#paychan).
|
||||
|
||||
XRP Payment Channels permit scalable, intermittent, off-ledger settlement of ILP trust lines for high volume, low value payments flowing in a single direction. For bidirectional channels, an XRP Payment Channel can be used in each direction. The recipient can claim any unpaid balance at any time. The owner can top off the channel as needed. The owner must wait out a delay to close the channel to give the recipient a chance to supply any claims. The total amount paid increases monotonically as newer claims are issued.
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Ripple has released `rippled` version 0.40.0, which introduces several enhanceme
|
||||
|
||||
Highlights of this release include:
|
||||
|
||||
* Suspended Payments, a new transaction type on the Ripple network that functions similar to an escrow service, which permits users to cryptographically escrow XRP on RCL with an expiration date. Ripple expects Suspended Payments to be enabled via an [Amendment named “SusPay”](https://ripple.com/build/amendments/#suspay) on Tuesday, 2017-01-17. See below for details.
|
||||
* Suspended Payments, a new transaction type on the Ripple network that functions similar to an escrow service, which permits users to cryptographically escrow XRP on RCL with an expiration date. Ripple expects Suspended Payments to be enabled via an [Amendment named “SusPay”](/resources/known-amendments.md#suspay) on Tuesday, 2017-01-17. See below for details.
|
||||
|
||||
## Action Required
|
||||
|
||||
@@ -22,7 +22,7 @@ If you operate a `rippled` server, then you should upgrade to version 0.40.0 by
|
||||
|
||||
## Impact of Not Upgrading
|
||||
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.40.0 by Wednesday, 2017-01-17, when SusPay is expected to be activated via Amendment, then your server will become [amendment blocked](https://ripple.com/build/amendments/#amendment-blocked), meaning that your server:
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.40.0 by Wednesday, 2017-01-17, when SusPay is expected to be activated via Amendment, then your server will become [amendment blocked](/docs/concepts/networks-and-servers/amendments#amendment-blocked-servers), meaning that your server:
|
||||
|
||||
* Cannot determine the validity of a ledger
|
||||
* Cannot submit or process transactions
|
||||
@@ -32,52 +32,54 @@ If you operate a `rippled` server but don’t upgrade to version 0.40.0 by Wedne
|
||||
|
||||
If the SusPay amendment is vetoed or does not pass via majority vote, then your server will not become amendment blocked.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The md5sum for the rpm is: 27d0d142f29bcde7d240d91d44b5d7dc
|
||||
|
||||
The md5sum for the source rpm is: b3b5ab6897f3c08b492f383ef7763c21
|
||||
|
||||
For other platforms, please [compile version 0.40.0 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.40.0 from source](https://github.com/XRPLF/rippled/tree/0.40.0/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit 7fc780dd70faef819eace27a12de35dd1363c069
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Tue Dec 20 09:20:17 2016 -0800
|
||||
```text
|
||||
commit 7fc780dd70faef819eace27a12de35dd1363c069
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Tue Dec 20 09:20:17 2016 -0800
|
||||
|
||||
Set version to 0.40.0
|
||||
Set version to 0.40.0
|
||||
```
|
||||
|
||||
## Network Update
|
||||
The Ripple operations team plans to deploy version 0.40.0 to a subset of rippled servers under its operational control configured with the new websocket implementation, starting at 2:00 PM PDT on Thursday, 2017-12-20. The network will continue operating during deployment and no outage is expected.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
## Full Release Notes
|
||||
|
||||
The `rippled` 0.40.0 release includes Suspended Payments, a new transaction type on the Ripple network that functions similar to an escrow service, which permits users to lock XRP until a cryptographic condition is met or it expires. Ripple expects Suspended Payments to be enabled via an [Amendment named “SusPay”](https://ripple.com/build/amendments/#suspay) on Tuesday, 2017-01-17.
|
||||
The `rippled` 0.40.0 release includes Suspended Payments, a new transaction type on the Ripple network that functions similar to an escrow service, which permits users to lock XRP until a cryptographic condition is met or it expires. Ripple expects Suspended Payments to be enabled via an [Amendment named “SusPay”](/resources/known-amendments.md#suspay) on Tuesday, 2017-01-17.
|
||||
|
||||
You can [update to the new version](https://ripple.com/build/rippled-setup/#updating-rippled) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
You can [update to the new version](/docs/infrastructure/installation/update-rippled-automatically-on-linux) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md).
|
||||
|
||||
**New and Updated Features**
|
||||
|
||||
Previously, Ripple [announced](https://developers.ripple.com/blog/2016/rippled-0.33.0.html) the introduction of Payment Channels during the release of rippled version 0.33.0, which permit scalable, off-ledger checkpoints of high volume, low value payments flowing in a single direction. This was the first step in a multi-phase effort to make RCL more scalable and to support [Interledger Protocol](https://interledger.org/interledger.pdf) (ILP). Ripple expects Payment Channels to be enabled via an [Amendment called PayChan](https://ripple.com/build/amendments/#paychan) on a future date to be determined.
|
||||
Previously, Ripple [announced](/blog/2016/rippled-0.33.0.md) the introduction of Payment Channels during the release of rippled version 0.33.0, which permit scalable, off-ledger checkpoints of high volume, low value payments flowing in a single direction. This was the first step in a multi-phase effort to make RCL more scalable and to support [Interledger Protocol](https://interledger.org/interledger.pdf) (ILP). Ripple expects Payment Channels to be enabled via an [Amendment called PayChan](/resources/known-amendments.md#paychan) on a future date to be determined.
|
||||
|
||||
In the second phase towards making RCL more scalable and compatible with ILP, Ripple is introducing Suspended Payments, a new transaction type on the Ripple network that functions similar to an escrow service, which permits users to cryptographically escrow XRP on RCL with an expiration date. Ripple expects Suspended Payments to be enabled via an [Amendment named “SusPay”](https://ripple.com/build/amendments/#suspay) on Tuesday, 2017-01-17.
|
||||
In the second phase towards making RCL more scalable and compatible with ILP, Ripple is introducing Suspended Payments, a new transaction type on the Ripple network that functions similar to an escrow service, which permits users to cryptographically escrow XRP on RCL with an expiration date. Ripple expects Suspended Payments to be enabled via an [Amendment named “SusPay”](/resources/known-amendments.md#suspay) on Tuesday, 2017-01-17.
|
||||
|
||||
A Suspended Payment can be created, which deducts the funds from the sending account. It can then be either fulfilled or canceled. It can only be fulfilled if the fulfillment transaction makes it into a ledger with a CloseTime lower than the expiry date of the transaction. It can be canceled with a transaction that makes it into a ledger with a CloseTime greater than the expiry date of the transaction.
|
||||
|
||||
In the third phase towards making RCL more scalable and compatible with ILP, Ripple plans to introduce additional library support for crypto-conditions, which are distributable event descriptions written in a standard format that describe how to recognize a fulfillment message without saying exactly what the fulfillment is. Fulfillments are cryptographically verifiable messages that prove an event occurred. If you transmit a fulfillment, then everyone who has the condition can agree that the condition has been met. Fulfillment requires the submission of a signature that matches the condition (message hash and public key). This format supports multiple algorithms, including different hash functions and cryptographic signing schemes. Crypto-conditions can be nested in multiple levels, with each level possibly having multiple signatures.
|
||||
|
||||
Lastly, we do not have an update on the [previously announced](https://developers.ripple.com/blog/2016/rippled-0.33.0.html) changes to the hash tree structure that rippled uses to represent a ledger, called [SHAMapV2](https://ripple.com/build/amendments/#shamapv2). This will require brief scheduled allowable downtime while the changes to the hash tree structure are propagated by the network. We will keep the community updated as we progress towards this date (TBA).
|
||||
Lastly, we do not have an update on the [previously announced](/blog/2016/rippled-0.33.0.md) changes to the hash tree structure that rippled uses to represent a ledger, called [SHAMapV2](/resources/known-amendments.md#shamapv2). This will require brief scheduled allowable downtime while the changes to the hash tree structure are propagated by the network. We will keep the community updated as we progress towards this date (TBA).
|
||||
|
||||
* Consensus refactor [(#1874)](https://github.com/ripple/rippled/pull/1874)
|
||||
|
||||
|
||||
@@ -35,6 +35,6 @@ Please refer to the Test Net page for information on generating new test net cre
|
||||
### Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* The Ripple Dev Blog: <https://developers.ripple.com/blog/>
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: <support@ripple.com>
|
||||
* XRP Chat: <http://www.xrpchat.com>
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -10,15 +10,15 @@ markdown:
|
||||
---
|
||||
# TrustSetAuth is Now Available
|
||||
|
||||
As [predicted previously](https://developers.ripple.com/blog/2016/trustsetauth-reminder.html), TrustSetAuth became available on the Ripple Consensus Ledger this afternoon (PDT) in ledger 22,721,281 ([2016-07-19T15:10](https://xrpcharts.ripple.com/#/transactions/0E589DE43C38AED63B64FF3DA87D349A038F1821212D370E403EB304C76D70DF)).
|
||||
As [predicted previously](/blog/2016/trustsetauth-reminder.md), TrustSetAuth became available on the Ripple Consensus Ledger this afternoon (PDT) in ledger 22,721,281 ([2016-07-19T15:10](https://xrpcharts.ripple.com/#/transactions/0E589DE43C38AED63B64FF3DA87D349A038F1821212D370E403EB304C76D70DF)).
|
||||
|
||||
This amendment allows pre-authorization of accounting relationships (zero-balance trust lines) when using Authorized Accounts.
|
||||
|
||||
## Action Required
|
||||
|
||||
To remain operational, all `rippled` instances running on a version earlier than 0.31.0 must be [upgraded](https://ripple.com/build/rippled-setup/#updating-rippled) to `rippled` server **[version 0.32.0](https://developers.ripple.com/blog/2016/rippled-0.32.0.html)** immediately.
|
||||
To remain operational, all `rippled` instances running on a version earlier than 0.31.0 must be [upgraded](/docs/infrastructure/installation/update-rippled-automatically-on-linux) to `rippled` server **[version 0.32.0](/blog/2016/rippled-0.32.0.md)** immediately.
|
||||
|
||||
See [Updating `rippled`](https://ripple.com/build/rippled-setup/#updating-rippled) for more information about upgrading `rippled`.
|
||||
See [Updating `rippled`](/docs/infrastructure/installation/update-rippled-automatically-on-linux) for more information about upgrading `rippled`.
|
||||
|
||||
## Impact of Not Upgrading
|
||||
|
||||
@@ -30,10 +30,10 @@ With this amendment enabled, currency issuers can authorize other addresses to h
|
||||
|
||||
## Learn More
|
||||
|
||||
For more information, please see the TrustSetAuth documentation in the [Ripple Developer Portal](https://ripple.com/build/):
|
||||
For more information, please see the following documentation:
|
||||
|
||||
* [Authorized Accounts](https://ripple.com/build/gateway-guide/#authorized-accounts)
|
||||
* [Authorized Trust Lines](/docs/concepts/tokens/fungible-tokens/authorized-trust-lines)
|
||||
|
||||
* [Amendments](https://ripple.com/build/amendments/#trustsetauth)
|
||||
* [TrustSetAuth Amendment](/resources/known-amendments.md#trustsetauth)
|
||||
|
||||
To continue receiving updates about the rippled server, please subscribe to the Ripple Server Google Group: https://groups.google.com/forum/#!forum/ripple-server
|
||||
|
||||
@@ -18,18 +18,18 @@ With this amendment enabled, currency issuers can authorize other addresses to h
|
||||
|
||||
## Action Required ##
|
||||
|
||||
To remain operational, all `rippled` instances running on the version below 0.31.0 must be upgraded to `rippled` server **[version 0.32.0](https://developers.ripple.com/blog/2016/rippled-0.32.0.html)** by Tuesday, 2016-07-19.
|
||||
To remain operational, all `rippled` instances running on the version below 0.31.0 must be upgraded to `rippled` server **[version 0.32.0](/blog/2016/rippled-0.32.0.md)** by Tuesday, 2016-07-19.
|
||||
|
||||
## Impact of Not Upgrading ##
|
||||
|
||||
If you operate a `rippled` server on a version below 0.31.0 but do not upgrade to [version 0.32.0](https://developers.ripple.com/blog/2016/rippled-0.32.0.html) by Tuesday, 2016-07-19, then your server will not be able to synchronize with the rest of the upgraded network.
|
||||
If you operate a `rippled` server on a version below 0.31.0 but do not upgrade to [version 0.32.0](/blog/2016/rippled-0.32.0.md) by Tuesday, 2016-07-19, then your server will not be able to synchronize with the rest of the upgraded network.
|
||||
|
||||
## Learn More ##
|
||||
|
||||
For more information, please see the documentation in the Ripple Developer Portal:
|
||||
|
||||
* [Upgrading `rippled`](https://ripple.com/build/rippled-setup/#updating-rippled)
|
||||
* [Authorized Accounts](https://ripple.com/build/gateway-guide/#authorized-accounts)
|
||||
* [TrustSetAuth Amendment](https://ripple.com/build/amendments/#trustsetauth)
|
||||
* [Upgrading `rippled`](/docs/infrastructure/installation/update-rippled-automatically-on-linux)
|
||||
* [Authorized Trust Lines](/docs/concepts/tokens/fungible-tokens/authorized-trust-lines)
|
||||
* [TrustSetAuth Amendment](/resources/known-amendments.md#trustsetauth)
|
||||
|
||||
To continue receiving updates about the rippled server, please subscribe to the Ripple Server Google Group: <https://groups.google.com/forum/#!forum/ripple-server>
|
||||
|
||||
@@ -12,14 +12,14 @@ markdown:
|
||||
|
||||
This notice is for all validator operators, and may be relevant to gateways that utilize the Authorized Account feature.
|
||||
|
||||
The new [TrustSetAuth amendment](https://ripple.com/build/amendments/#trustsetauth) is open for voting now. This amendment allows pre-authorization of accounting relationships (zero-balance trust lines) when using [Authorized Accounts](https://ripple.com/build/gateway-guide/#authorized-accounts). With this amendment enabled, currency issuers can authorize other addresses to hold their issued currencies without waiting for the other addresses to take action. Without the amendment, currency holders must first create the accounting relationship with the issuer by setting a limit with a [TrustSet transaction](https://ripple.com/build/transactions/#trustset).
|
||||
The new **TrustSetAuth** amendment is open for voting now. This amendment allows pre-authorization of accounting relationships (zero-balance trust lines) when using _Authorized Trust Lines_. With this amendment enabled, currency issuers can authorize other addresses to hold their issued currencies without waiting for the other addresses to take action. Without the amendment, currency holders must first create the accounting relationship with the issuer by setting a limit with a [TrustSet transaction](/docs/references/protocol/transactions/types/trustset).
|
||||
|
||||
Ripple's validators will vote in favor of the TrustSetAuth amendment, and we expect the new feature to become active by 2016-07-19.
|
||||
|
||||
For more information, see the following articles in the Ripple Developer Center:
|
||||
For more information, see the following articles:
|
||||
|
||||
* Authorized Accounts: <https://ripple.com/build/gateway-guide/#authorized-accounts>
|
||||
* Amendments: <https://ripple.com/build/amendments/>
|
||||
* [Authorized Trust Lines](/docs/concepts/tokens/fungible-tokens/authorized-trust-lines)
|
||||
* [TrustSetAuth Amendment](/resources/known-amendments.md#trustsetauth)
|
||||
|
||||
To continue receiving updates about the rippled server, please subscribe to the Ripple Server Google Group:
|
||||
|
||||
|
||||
@@ -20,14 +20,14 @@ The Ripple Data team will be running load balancing tests on Ripple Data API sta
|
||||
|
||||
If you operate software or services that rely on the Ripple Data API, then you may experience a brief outage and / or inconsistent data, including transaction history and processed analytical data, for a period of approximately 15 mins.
|
||||
|
||||
For more information regarding the Ripple Data API, please see [Ripple Data API Documentation](https://ripple.com/build/data-api-v2/).
|
||||
For more information regarding the Ripple Data API, please see **Ripple Data API Documentation**.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -10,7 +10,7 @@ markdown:
|
||||
---
|
||||
# Escrow, PayChan, and fix1368 Will Be Available in 3 Days
|
||||
|
||||
A majority of `rippled` validators voted to enable the [Escrow](https://ripple.com/build/amendments/#escrow), [PayChan](https://ripple.com/build/amendments/#paychan), and [fix1368](https://ripple.com/build/amendments/#fix1368) Amendments, which are scheduled to become enabled on the network on Thursday, 2017-03-30.
|
||||
A majority of `rippled` validators voted to enable the [Escrow](/resources/known-amendments.md#escrow), [PayChan](/resources/known-amendments.md#paychan), and [fix1368](/resources/known-amendments.md#fix1368) Amendments, which are scheduled to become enabled on the network on Thursday, 2017-03-30.
|
||||
|
||||
* **Escrow** (previously called SusPay), designed for low volume, high value transactions, permits users to cryptographically escrow XRP on RCL with an expiration date using a [hashlock crypto-condition](https://interledgerjs.github.io/five-bells-condition/jsdoc/).
|
||||
|
||||
@@ -25,7 +25,7 @@ A majority of `rippled` validators voted to enable the [Escrow](https://ripple.c
|
||||
|
||||
## Impact of Not Upgrading
|
||||
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.60.0 by Thursday, 2017-03-30, when **Escrow, PayChan & fix1368** are expected to be activated via Amendment, then your server will become [amendment blocked](https://ripple.com/build/amendments/#amendment-blocked), meaning that your server:
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.60.0 by Thursday, 2017-03-30, when **Escrow, PayChan & fix1368** are expected to be activated via Amendment, then your server will become [amendment blocked](/docs/concepts/networks-and-servers/amendments#amendment-blocked-servers), meaning that your server:
|
||||
|
||||
* Cannot determine the validity of a ledger
|
||||
* Cannot submit or process transactions
|
||||
@@ -35,14 +35,14 @@ If you operate a `rippled` server but don’t upgrade to version 0.60.0 by Thurs
|
||||
|
||||
If the **Escrow, PayChan & fix1368** amendments do not get approved, then your server will not become amendment blocked and should continue to operate.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: <support@ripple.com>
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -17,7 +17,7 @@ But we are also keenly aware of the need for value to also move securely and rel
|
||||
|
||||
With the release of rippled 0.70.0, and as part of our long-standing and enduring commitment to a reliable and error-free XRP Ledger, we are going further than before. We are adding code that runs automatically and in real time after each transaction completes, and examines the changes it made for correctness before the results are committed to the ledger.
|
||||
|
||||
This is the idea behind the [recently activated](https://xrpcharts.ripple.com/#/transactions/17593B03F7D3283966F3C0ACAF4984F26E9D884C9A202097DAED0523908E76C6) [EnforceInvariants amendment](https://ripple.com/build/amendments/#enforceinvariants), which will make it possible to verify that key properties of the system are not violated. The new checks—which we believe will never trigger—help protect the integrity of the XRP Ledger from bugs yet to be discovered, or even created.
|
||||
This is the idea behind the [recently activated](https://xrpcharts.ripple.com/#/transactions/17593B03F7D3283966F3C0ACAF4984F26E9D884C9A202097DAED0523908E76C6) [EnforceInvariants amendment](/resources/known-amendments.md#enforceinvariants), which will make it possible to verify that key properties of the system are not violated. The new checks—which we believe will never trigger—help protect the integrity of the XRP Ledger from bugs yet to be discovered, or even created.
|
||||
|
||||
What’s more, the process is transparent and public: problematic transactions are marked with a **tecINVARIANT_FAILED** result code and are included in the ledger. This broad exposure, coupled with Ripple’s powerful ability to step through the execution of past transactions, makes it possible to quickly identify and fix any logic flaws in the code.
|
||||
|
||||
|
||||
@@ -14,11 +14,11 @@ markdown:
|
||||
|
||||
Today, for the first time, Ripple is proud to publicly announce that in recent internal benchmark testing, across 16 geographically distributed validators, the RCL is able to sustain nearly 1000 transactions per second.
|
||||
|
||||
For even higher throughput transactions, we recently introduced [XRP payment channels](https://developers.ripple.com/blog/2016/rippled-0.33.0.html), which allow for zero-latency XRP payments. Although payment channels achieve practically infinite scalability by decoupling payment from settlement, they do so without incurring the risk typically associated with delayed settlement.
|
||||
For even higher throughput transactions, we recently introduced [XRP payment channels](/blog/2016/rippled-0.33.0.md), which allow for zero-latency XRP payments. Although payment channels achieve practically infinite scalability by decoupling payment from settlement, they do so without incurring the risk typically associated with delayed settlement.
|
||||
|
||||
Throughout 2016, the network received upgrades that seamlessly enabled new functionality and significantly improved performance. Fast ledger close times have been the hallmark of RCL since its inception and those were further improved last year. Ledgers now close, on average, every 3.5 seconds - a full 20% faster than they did a year ago.
|
||||
|
||||
The new [fee escalation code ](https://ripple.com/build/transaction-cost/)was introduced to constantly monitor network load and adjust (in near real-time) the cost of executing transactions, which makes it more difficult to overload the network and further helps to ensure the long-term health and stability of RCL.
|
||||
The new fee escalation code was introduced to constantly monitor network load and adjust (in near real-time) the cost of executing transactions, which makes it more difficult to overload the network and further helps to ensure the long-term health and stability of RCL.
|
||||
|
||||
Stability, however, goes beyond improving performance and adding new features. At Ripple we place heavy emphasis on writing code that is secure, solid and robust. This singular focus on code quality has helped the Ripple network achieve availability and reliability well beyond industry standards with no outages.
|
||||
|
||||
|
||||
@@ -20,22 +20,23 @@ The `rippled` team has released version 0.40.1, which increases SQLite database
|
||||
|
||||
If you operate a `rippled` server and have full-history of the ledger, but don’t upgrade to version 0.40.1, then your server may crash when restarted.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The md5sum for the rpm is: e876816f4ddb38bec28d158083020fa9
|
||||
|
||||
The md5sum for the source rpm is: 3ed1569bd0dbba5ff1d1ef1abfca7ed7
|
||||
|
||||
For other platforms, please [compile version 0.40.1 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.40.1 from source](https://github.com/XRPLF/rippled/tree/0.40.1/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
$ git log -1 upstream/master
|
||||
commit e91aacc9a3d2f332a93981270c3812e26189226e
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Thu Jan 5 09:38:28 2017 -0800
|
||||
```text
|
||||
commit e91aacc9a3d2f332a93981270c3812e26189226e
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Thu Jan 5 09:38:28 2017 -0800
|
||||
|
||||
Set version to 0.40.1
|
||||
Set version to 0.40.1
|
||||
```
|
||||
|
||||
## Bug Fixes
|
||||
Increase SQLite database limits to prevent full-history servers from crashing when restarting. [(#1961)](https://github.com/ripple/rippled/commit/610e51a162a6ef06accf8733b3b35b492963a78b)
|
||||
@@ -44,11 +45,11 @@ Increase SQLite database limits to prevent full-history servers from crashing wh
|
||||
The Ripple operations team has deployed version 0.40.1 to all full-history `rippled` servers under its operational control.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: <support@ripple.com>
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -14,7 +14,7 @@ Ripple has released `rippled` version 0.50.0, which introduces several enhanceme
|
||||
|
||||
Highlights of this release include:
|
||||
|
||||
* **TickSize**, which allows gateways to set a "tick size" for assets they issue to help promote faster price discovery and deeper liquidity, as well as reduce transaction spam and ledger churn on RCL. Ripple expects **TickSize** to be enabled via an [Amendment named “TickSize”](https://ripple.com/build/amendments/#ticksize) on Tuesday, 2017-02-21. See below for details.
|
||||
* **TickSize**, which allows gateways to set a "tick size" for assets they issue to help promote faster price discovery and deeper liquidity, as well as reduce transaction spam and ledger churn on RCL. Ripple expects **TickSize** to be enabled via an [Amendment named “TickSize”](/resources/known-amendments.md#ticksize) on Tuesday, 2017-02-21. See below for details.
|
||||
|
||||
## Action Required
|
||||
|
||||
@@ -38,40 +38,42 @@ If you operate a `rippled` server but don’t upgrade to version 0.50.0 by Tuesd
|
||||
|
||||
If the **TickSize** amendment is vetoed or does not pass, then your server will not become amendment blocked and should continue to operate.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The md5sum for the rpm is: 82eb29f7e464e44eb24e3c891a021041
|
||||
|
||||
The md5sum for the source rpm is: 7bf25c86f018daf82c5d5f8ab621153a
|
||||
|
||||
For other platforms, please [compile version 0.50.0 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.50.0 from source](https://github.com/XRPLF/rippled/tree/0.50.0/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit 77999579b535373872d8cce7ddc8b12cdcc39d84
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Thu Jan 26 13:26:03 2017 -0800
|
||||
```text
|
||||
commit 77999579b535373872d8cce7ddc8b12cdcc39d84
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Thu Jan 26 13:26:03 2017 -0800
|
||||
|
||||
Set version to 0.50.0
|
||||
Set version to 0.50.0
|
||||
```
|
||||
|
||||
## Network Update
|
||||
The Ripple operations team plans to deploy version 0.50.0 to all `rippled` servers under its operational control, including private clusters, starting at 11:00 AM PDT on Friday, 2017-01-27. The deployment is expected to complete within 4 hours. The network should continue to operate during deployment and no outage is expected.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
## Full Release Notes
|
||||
|
||||
The `rippled` 0.50.0 release includes **TickSize**, which allows gateways to set a "tick size" for assets they issue to to help promote faster price discovery and deeper liquidity, as well as reduce transaction spam and ledger churn on RCL. Ripple expects TickSize to be enabled via an Amendment called **TickSize** on Tuesday, 2017-02-21. This feature underlines Ripple’s continued support to improving RCL and making it even better suited for settlement of global payments.
|
||||
|
||||
You can [update to the new version](https://ripple.com/build/rippled-setup/#updating-rippled) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
You can [update to the new version](/docs/infrastructure/installation/update-rippled-automatically-on-linux) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md).
|
||||
|
||||
**New and Updated Features**
|
||||
|
||||
@@ -141,8 +143,8 @@ Server administrators who wish to have different settings can configure custom g
|
||||
|
||||
## Upcoming Features
|
||||
|
||||
We expect the [previously](https://developers.ripple.com/blog/2016/rippled-0.40.0.html) announced Suspended Payments feature, which introduces new transaction types to the Ripple protocol that will permit users to cryptographically escrow XRP on RCL, to be enabled via the [“SusPay”](https://ripple.com/build/amendments/#suspay) Amendment on Tuesday, 2017-02-21.
|
||||
We expect the [previously](/blog/2016/rippled-0.40.0.md) announced Suspended Payments feature, which introduces new transaction types to the Ripple protocol that will permit users to cryptographically escrow XRP on RCL, to be enabled via the [“SusPay”](/resources/known-amendments.md#suspay) Amendment on Tuesday, 2017-02-21.
|
||||
|
||||
Also, we expect support for [crypto-conditions](https://tools.ietf.org/html/draft-thomas-crypto-conditions-02), which are signature-like structures that can be used with suspended payments to support ILP integration, to be included in the next `rippled` release scheduled for March.
|
||||
|
||||
Lastly, we do not have an update on the [previously announced](https://developers.ripple.com/blog/2016/rippled-0.33.0.html) changes to the hash tree structure that `rippled` uses to represent a ledger, called [SHAMapV2](https://ripple.com/build/amendments/#shamapv2). At the time of activation, this amendment will require brief scheduled allowable unavailability while the changes to the hash tree structure are computed by the network. We will keep the community updated as we progress towards this date (TBA).
|
||||
Lastly, we do not have an update on the [previously announced](/blog/2016/rippled-0.33.0.md) changes to the hash tree structure that `rippled` uses to represent a ledger, called [SHAMapV2](/resources/known-amendments.md#shamapv2). At the time of activation, this amendment will require brief scheduled allowable unavailability while the changes to the hash tree structure are computed by the network. We will keep the community updated as we progress towards this date (TBA).
|
||||
|
||||
@@ -21,13 +21,13 @@ The `rippled` team has released 0.50.2, which adjusts the default TLS cipher lis
|
||||
|
||||
If you operate a `rippled` server and accept secure client connections, but don’t upgrade to version 0.50.2, then your server may be unable to negotiate SSL connections.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The md5sum for the rpm is: 05cf675685158aabfc3ff6af7b1549d8
|
||||
|
||||
The md5sum for the source rpm is: 0a8c93d67e1c27726ee57693177e7745
|
||||
|
||||
For other platforms, please [compile version 0.50.2 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.50.2 from source](https://github.com/XRPLF/rippled/tree/0.50.2/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
@@ -48,11 +48,11 @@ Adjust the default cipher list and correct a flaw that would not allow an SSL ha
|
||||
The Ripple operations team has deployed a configuration-based fix to all client-facing `rippled` servers under its operational control and will not be updating to 0.50.2 at this time.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -34,21 +34,23 @@ If you operate a `rippled` server, but don’t upgrade to `rippled` version 0.50
|
||||
|
||||
If you operate a `rippled` validating server, but don’t upgrade to `rippled` version 0.50.3, which includes a patch for the reported exploit, then your server will validate some transactions in a payment path that bypass the blocking effect of the `NoRipple` flag.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The sha256 for the rpm is: 2ee3e7e2912b5df9e3f8f88c5f6adfa60afbb37ef08afe50f6147795c5c2abaf
|
||||
|
||||
The sha256 for the source rpm is: ada6f9ae8b8136569d28f03a43fef0f828e2c69857c81f230d17cf9f832cce0f
|
||||
|
||||
For other platforms, please [compile version 0.50.3 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.50.3 from source](https://github.com/XRPLF/rippled/tree/0.50.3/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit 82de944b30afef7fb6220424b62a79156e93b321
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Mon Mar 13 15:49:21 2017 -0700
|
||||
```text
|
||||
commit 82de944b30afef7fb6220424b62a79156e93b321
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Mon Mar 13 15:49:21 2017 -0700
|
||||
|
||||
Set version to 0.50.3
|
||||
Set version to 0.50.3
|
||||
```
|
||||
|
||||
## Bug Fixes
|
||||
|
||||
@@ -59,11 +61,11 @@ Patch a reported exploit that would allow a combination of trust lines and order
|
||||
Ripple engineers have deployed the fix to all `rippled` validating servers under Ripple’s operational control and will not be updating client-facing `rippled` servers to 0.50.3 at this time. _(Editor's note: an earlier version of this post incorrectly stated that the fix was configuration-based. The fix was to update Ripple's validating servers to 0.50.3.)_
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: <support@ripple.com>
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -18,7 +18,7 @@ Highlights of this release include:
|
||||
|
||||
* **[Dynamic UNL Lite](https://github.com/ripple/rippled/pull/1842)**, which allows `rippled` to automatically adjust which validators it trusts based on recommended lists from trusted publishers.
|
||||
|
||||
Ripple expects Escrow, the [previously announced **Payment Channels**](https://developers.ripple.com/blog/2016/rippled-0.33.0.html), and the new [**fix1368** amendment](#fix1368-amendment) to be enabled via Amendments called [Escrow](https://ripple.com/build/amendments/#escrow), [PayChan](https://ripple.com/build/amendments/#paychan), and `fix1368`, respectively, on Thursday, 2017-03-30.
|
||||
Ripple expects Escrow, the [previously announced **Payment Channels**](/blog/2016/rippled-0.33.0.md), and the new [**fix1368** amendment](#fix1368-amendment) to be enabled via Amendments called [Escrow](/resources/known-amendments.md#escrow), [PayChan](/resources/known-amendments.md#paychan), and `fix1368`, respectively, on Thursday, 2017-03-30.
|
||||
|
||||
|
||||
## Action Required
|
||||
@@ -27,7 +27,7 @@ Ripple expects Escrow, the [previously announced **Payment Channels**](https://d
|
||||
|
||||
## Impact of Not Upgrading
|
||||
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.60.0 by Thursday, 2017-03-30, when Escrow and PayChan are expected to be activated via Amendment, then your server will become [amendment blocked](https://ripple.com/build/amendments/#amendment-blocked), meaning that your server:
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.60.0 by Thursday, 2017-03-30, when Escrow and PayChan are expected to be activated via Amendment, then your server will become [amendment blocked](/docs/concepts/networks-and-servers/amendments#amendment-blocked-servers), meaning that your server:
|
||||
|
||||
* Cannot determine the validity of a ledger
|
||||
* Cannot submit or process transactions
|
||||
@@ -37,34 +37,36 @@ If you operate a `rippled` server but don’t upgrade to version 0.60.0 by Thurs
|
||||
|
||||
If the **Escrow** and **PayChan** amendments do not get approved, then your server will not become amendment blocked and should continue to operate.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The sha256 for the rpm is: 4d2acb2a40e2d18ba1737098efdca54caa823a403ce9562c83e2dd2c9e959588
|
||||
|
||||
The sha256 for the source rpm is: 3437a0202e762801869f31bf798417ebdb3717e16c4381dc0e9b02fe75d23024
|
||||
|
||||
For other platforms, please [compile version 0.60.0 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.60.0 from source](https://github.com/XRPLF/rippled/tree/0.60.0/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit 0df1b09a731ba0feaa5d60046e1c7dd415f5f7ed
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Thu Mar 16 13:33:29 2017 -0700
|
||||
```text
|
||||
commit 0df1b09a731ba0feaa5d60046e1c7dd415f5f7ed
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Thu Mar 16 13:33:29 2017 -0700
|
||||
|
||||
Set version to 0.60.0
|
||||
Set version to 0.60.0
|
||||
```
|
||||
|
||||
## Network Update
|
||||
The Ripple operations team plans to deploy version 0.60.0 to all `rippled` servers under its operational control, including private clusters, starting at 7:00 PM PST on Thursday, 2017-03-16. The deployment is expected to complete within 4 hours. The network should continue to operate during deployment and no outage is expected.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: <support@ripple.com>
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
## Full Release Notes
|
||||
|
||||
@@ -74,11 +76,11 @@ The rippled version 0.60.0 release includes Escrow, (previously called SusPay),
|
||||
|
||||
### Payment Channels
|
||||
|
||||
The amendment for Payment Channels was originally introduced in version 0.33.0, but is now ready for Payment Channels to be enabled on the production Ripple Consensus Ledger. XRP [Payment Channels](https://ripple.com/build/amendments/#paychan) are intended for high volume, low value payments. They provide a method for scalable, intermittent, off-ledger settlement flowing in a single direction. For bidirectional payment channels, an XRP Payment Channel can be used in each direction. The recipient can claim any unpaid balance at any time before the channel closes. The owner can top off the channel as needed and must wait out a delay to close the channel to give the recipient a chance to supply any claims. The total amount paid increases monotonically as newer claims are issued.
|
||||
The amendment for Payment Channels was originally introduced in version 0.33.0, but is now ready for Payment Channels to be enabled on the production Ripple Consensus Ledger. XRP [Payment Channels](/resources/known-amendments.md#paychan) are intended for high volume, low value payments. They provide a method for scalable, intermittent, off-ledger settlement flowing in a single direction. For bidirectional payment channels, an XRP Payment Channel can be used in each direction. The recipient can claim any unpaid balance at any time before the channel closes. The owner can top off the channel as needed and must wait out a delay to close the channel to give the recipient a chance to supply any claims. The total amount paid increases monotonically as newer claims are issued.
|
||||
|
||||
### Dynamic UNL Lite
|
||||
|
||||
At the core of RCL is the [consensus process](https://ripple.com/build/ripple-ledger-consensus-process/). Through the consensus process, validating nodes agree on a specific subset of the candidate transactions to be considered for the next ledger. Consensus is an iterative process in which nodes relay proposals, or sets of candidate transactions. Nodes communicate and update proposals until a supermajority of peers agree on the same set of candidate transactions.
|
||||
At the core of RCL is the [consensus process](/docs/concepts/consensus-protocol). Through the consensus process, validating nodes agree on a specific subset of the candidate transactions to be considered for the next ledger. Consensus is an iterative process in which nodes relay proposals, or sets of candidate transactions. Nodes communicate and update proposals until a supermajority of peers agree on the same set of candidate transactions.
|
||||
|
||||
During consensus, each node evaluates proposals from a specific set of peers, called chosen validators. Chosen validators represent a subset of the network which, when taken collectively, is “trusted” not to collude in an attempt to defraud the node evaluating the proposals. This definition of “trust” does not require that each individual chosen validator is trusted. Rather, validators are chosen based on the expectation they will not collude in a coordinated effort to falsify data relayed to the network.
|
||||
|
||||
@@ -94,9 +96,9 @@ These features underline Ripple’s continued support to improving RCL by making
|
||||
|
||||
## Upcoming Features
|
||||
|
||||
We do not have an update on the [previously announced](https://developers.ripple.com/blog/2016/rippled-0.33.0.html) changes to the hash tree structure that `rippled` uses to represent a ledger, called [SHAMapV2](https://ripple.com/build/amendments/#shamapv2). At the time of activation, this amendment will require brief scheduled allowable unavailability while the changes to the hash tree structure are computed by the network. We will keep the community updated as we progress towards this date (TBA).
|
||||
We do not have an update on the [previously announced](/blog/2016/rippled-0.33.0.md) changes to the hash tree structure that `rippled` uses to represent a ledger, called [SHAMapV2](/resources/known-amendments.md#shamapv2). At the time of activation, this amendment will require brief scheduled allowable unavailability while the changes to the hash tree structure are computed by the network. We will keep the community updated as we progress towards this date (TBA).
|
||||
|
||||
You can [update to the new version](https://ripple.com/build/rippled-setup/#updating-rippled) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
You can [update to the new version](/docs/infrastructure/installation/update-rippled-automatically-on-linux) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md).
|
||||
|
||||
|
||||
## 0.60.0 Change Log
|
||||
|
||||
@@ -12,7 +12,7 @@ markdown:
|
||||
|
||||
The `rippled` team has released `rippled` version 0.60.1, which corrects a technical flaw that resulted from using 32-bit space identifiers instead of the protocol-defined 16-bit values for Escrow and Payment Channel ledger entries. `rippled` version 0.60.1 also fixes a problem where the websocket timeout timer would not be cancelled when certain errors occurred during subscription streams. **Ripple strongly recommends upgrading to `rippled` version 0.60.1 immediately.**
|
||||
|
||||
Ripple expects the [`Escrow`](https://ripple.com/build/amendments/#escrow) and [`PayChan`](https://ripple.com/build/amendments/#paychan) amendments to be enabled via [amendment vote](https://developers.ripple.com/blog/2017/escrow-paychan-fix1368-reminder.html) around 11:26 PM PDT on Thursday, 2017-03-30. There are no new features in the 0.60.1 release.
|
||||
Ripple expects the [`Escrow`](/resources/known-amendments.md#escrow) and [`PayChan`](/resources/known-amendments.md#paychan) amendments to be enabled via [amendment vote](/blog/2017/escrow-paychan-fix1368-reminder.md) around 11:26 PM PDT on Thursday, 2017-03-30. There are no new features in the 0.60.1 release.
|
||||
|
||||
## Action Required
|
||||
|
||||
@@ -24,21 +24,23 @@ Ripple expects the [`Escrow`](https://ripple.com/build/amendments/#escrow) and [
|
||||
|
||||
* If you operate a `rippled` server, but do not upgrade to version 0.60.1, then client websocket connections to your `rippled` server may continue to disconnect during subscription streams.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The sha256 for the RPM is: 6714050e9d1d232e8250be434fe6a61c44f78e41adc3c2b5f49df490ee5312ef
|
||||
|
||||
The sha256 for the source RPM is: 5bba13e93fed160a3405315e4128e891b2bc1e439ee5f7b429294003c618f0e1
|
||||
|
||||
For other platforms, please [compile version 0.60.1 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.60.1 from source](https://github.com/XRPLF/rippled/tree/0.60.1/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit 0d4fe469c6b0ba47645b53930e74248ff789fe75
|
||||
Author: seelabs <scott.determan@yahoo.com>
|
||||
Date: Wed Mar 29 15:41:43 2017 -0400
|
||||
```text
|
||||
commit 0d4fe469c6b0ba47645b53930e74248ff789fe75
|
||||
Author: seelabs <scott.determan@yahoo.com>
|
||||
Date: Wed Mar 29 15:41:43 2017 -0400
|
||||
|
||||
Set version to 0.60.1
|
||||
Set version to 0.60.1
|
||||
```
|
||||
|
||||
## Bug Fixes
|
||||
|
||||
@@ -51,11 +53,11 @@ Fix a problem where the WebSocket timeout timer would not be cancelled when cert
|
||||
The Ripple technical operations team plans to deploy `rippled` version 0.60.1 to all `rippled` servers under its operational control, including private clusters, starting at 11:00 AM PDT on Thursday, 2017-03-30. The deployment is expected to complete within 4 hours. The network should continue to operate during deployment and no outage is expected.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -24,29 +24,31 @@ There are no changes to `rippled` with this version.
|
||||
|
||||
**If you operate a `rippled` validator server that was set up using validator-keys but don’t update to the `rippled` 0.60.2-2 RPM**, then you will be unable to sign data using your validator key.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The sha256 for the RPM is: 74e2541c1c6c06bd34d102229890bb11811701d73d99e4cfb4882d430131c067
|
||||
|
||||
The sha256 for the source RPM is: aab7f247b5cf9d3a20d4720aef2c51532bb83ee91fafe584e4fdfac77171537b
|
||||
|
||||
For other platforms, please [compile version 0.60.2-2 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.60.2 from source](https://github.com/XRPLF/rippled/tree/0.60.2/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit 7cd4d7889779e6418270c8af89386194efbef24b
|
||||
Author: seelabs <scott.determan@yahoo.com>
|
||||
Date: Thu Mar 30 14:25:41 2017 -0400
|
||||
```text
|
||||
commit 7cd4d7889779e6418270c8af89386194efbef24b
|
||||
Author: seelabs <scott.determan@yahoo.com>
|
||||
Date: Thu Mar 30 14:25:41 2017 -0400
|
||||
|
||||
Set version to 0.60.2
|
||||
Set version to 0.60.2
|
||||
```
|
||||
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -10,7 +10,7 @@ markdown:
|
||||
---
|
||||
# rippled version 0.60.2
|
||||
|
||||
The `rippled` team has released `rippled` version 0.60.2, which further strengthens handling of cases associated with a [previously patched exploit](https://developers.ripple.com/blog/2017/rippled-0.50.3.html), in which `NoRipple` flags were being bypassed by using offers. Ripple requires upgrading to `rippled` version 0.60.2 immediately. There are no new features in the 0.60.2 release. **Note**: This does not affect XRP transactions.
|
||||
The `rippled` team has released `rippled` version 0.60.2, which further strengthens handling of cases associated with a [previously patched exploit](/blog/2017/rippled-0.50.3.md), in which `NoRipple` flags were being bypassed by using offers. Ripple requires upgrading to `rippled` version 0.60.2 immediately. There are no new features in the 0.60.2 release. **Note**: This does not affect XRP transactions.
|
||||
|
||||
Ripple will be following up with a postmortem, explaining the previosuly patched exploit, the timeline of events and the actions taken in more detail at a later date.
|
||||
|
||||
@@ -20,7 +20,7 @@ Ripple will be following up with a postmortem, explaining the previosuly patched
|
||||
|
||||
**If you are an individual user**, then you should have the `NoRipple` flag enabled by default and set the trust line limit to zero on gateways that you do not trust.
|
||||
|
||||
**If you are an individual user**, and you do not have the `NoRipple` flag enabled, and you discover a negative balance owed to an unknown account, then you should [freeze](https://ripple.com/build/freeze/#individual-freeze) that individual trust line.
|
||||
**If you are an individual user**, and you do not have the `NoRipple` flag enabled, and you discover a negative balance owed to an unknown account, then you should [freeze](/docs/concepts/tokens/fungible-tokens/freezes#individual-freeze) that individual trust line.
|
||||
|
||||
|
||||
## Impact of Not Upgrading
|
||||
@@ -29,21 +29,23 @@ Ripple will be following up with a postmortem, explaining the previosuly patched
|
||||
|
||||
**If you operate a rippled validating server**, but do not upgrade to `rippled` version 0.60.2, which prevents `NoRipple` flags from being bypassed by using offers, then your server will validate some transactions in a payment path that bypass the blocking effect of the `NoRipple` flag using offers.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The sha256 for the RPM is: 3dc7412bda8986188164f0ff70ff80c351b17521e6943a876d5d3268fa07289d
|
||||
|
||||
The sha256 for the source RPM is: f189ba1a8ae2201da47008ff50d027dcf719c7001c9b350b6759db279cbb48c8
|
||||
|
||||
For other platforms, please [compile version 0.60.2 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.60.2 from source](https://github.com/XRPLF/rippled/tree/0.60.2/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit 7cd4d7889779e6418270c8af89386194efbef24b
|
||||
Author: seelabs <scott.determan@yahoo.com>
|
||||
Date: Thu Mar 30 14:25:41 2017 -0400
|
||||
```text
|
||||
commit 7cd4d7889779e6418270c8af89386194efbef24b
|
||||
Author: seelabs <scott.determan@yahoo.com>
|
||||
Date: Thu Mar 30 14:25:41 2017 -0400
|
||||
|
||||
Set version to 0.60.2
|
||||
Set version to 0.60.2
|
||||
```
|
||||
|
||||
|
||||
## Bug Fixes
|
||||
@@ -56,11 +58,11 @@ The Ripple technical operations team plans to deploy `rippled` version 0.60.2 to
|
||||
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -20,21 +20,23 @@ The `rippled` team has released `rippled` version 0.60.3, which helps to increas
|
||||
|
||||
**If you operate a rippled server**, but don’t upgrade to `rippled` version 0.60.3, then your server may experience dropped connections to other servers more frequently.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The sha256 for the RPM is: 3e9c8b421ea0ae6da7ae65524be60408f32ef2bd0bcfea1e1c9fb54eec5fc809
|
||||
|
||||
The sha256 for the source RPM is: 9848185e35a21ef41fcea334f8ad224c49e243f64b38dd9311ab898b97ab6c0a
|
||||
|
||||
For other platforms, please [compile version 0.60.3 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.60.3 from source](https://github.com/XRPLF/rippled/tree/0.60.3/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit 208028a1420cc187a6b5b9e97846e8cafd54f39f
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Tue May 9 13:37:49 2017 -0700
|
||||
```text
|
||||
commit 208028a1420cc187a6b5b9e97846e8cafd54f39f
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Tue May 9 13:37:49 2017 -0700
|
||||
|
||||
Set version to 0.60.3
|
||||
Set version to 0.60.3
|
||||
```
|
||||
|
||||
## Change Log
|
||||
|
||||
@@ -46,11 +48,11 @@ The Ripple technical operations team plans to deploy `rippled` version 0.60.3 to
|
||||
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -14,11 +14,11 @@ Ripple has released `rippled` version 0.70.0, which introduces several enhanceme
|
||||
|
||||
Highlights of this release include:
|
||||
|
||||
* The [**FlowCross** Amendment](https://ripple.com/build/amendments/#flowcross), which streamlines offer crossing and autobrigding logic by leveraging the new “Flow” payment engine in `rippled`.
|
||||
* The [**FlowCross** Amendment](/resources/known-amendments.md#flowcross), which streamlines offer crossing and autobrigding logic by leveraging the new “Flow” payment engine in `rippled`.
|
||||
|
||||
* The [**EnforceInvariants** Amendment](https://ripple.com/build/amendments/#enforceinvariants), which safeguards the integrity of RCL by introducing code that executes after every transaction and ensures that the execution did not violate key protocol rules.
|
||||
* The [**EnforceInvariants** Amendment](/resources/known-amendments.md#enforceinvariants), which safeguards the integrity of RCL by introducing code that executes after every transaction and ensures that the execution did not violate key protocol rules.
|
||||
|
||||
* [**fix1373**](https://ripple.com/build/amendments/#fix1373), which addresses an issue that would cause payments with certain path specifications to not be properly parsed.
|
||||
* [**fix1373**](/resources/known-amendments.md#fix1373), which addresses an issue that would cause payments with certain path specifications to not be properly parsed.
|
||||
|
||||
Ripple expects the **EnforceInvariants** and **fix1373** Amendments to be enabled on Thursday, 2017-06-29. The **FlowCross** Amendment will be enabled on a future date (TBA).
|
||||
|
||||
@@ -32,7 +32,7 @@ The algorithm that determines how many threads `rippled` uses has been changed w
|
||||
|
||||
## Impact of Not Upgrading
|
||||
|
||||
If you operate a `rippled` server but do not upgrade to version 0.70.0 by Thursday, 2017-06-29, when **EnforceInvariants** and **fix1373** are expected to be activated via Amendment, then your server will become [amendment blocked](https://ripple.com/build/amendments/#amendment-blocked), meaning that your server:
|
||||
If you operate a `rippled` server but do not upgrade to version 0.70.0 by Thursday, 2017-06-29, when **EnforceInvariants** and **fix1373** are expected to be activated via Amendment, then your server will become [amendment blocked](/docs/concepts/networks-and-servers/amendments#amendment-blocked-servers), meaning that your server:
|
||||
|
||||
* Cannot determine the validity of a ledger
|
||||
* Cannot submit or process transactions
|
||||
@@ -42,21 +42,23 @@ If you operate a `rippled` server but do not upgrade to version 0.70.0 by Thursd
|
||||
|
||||
If the **EnforceInvariants** and **fix1373** Amendments do not get approved, then your server will not become amendment blocked and should continue to operate.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The sha256 for the rpm is: 5a617bce531f39c044de535b6bda2a59371829dfc1079b67876b68c9a9748834
|
||||
|
||||
The sha256 for the source rpm is: c51212ae374f69ddc10f967409a750834f06195cb384b2af04e4fa0c3fb81a24
|
||||
|
||||
For other platforms, please [compile version 0.70.0 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.70.0 from source](https://github.com/XRPLF/rippled/tree/0.70.0/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit 7b0d48281049c3fec7fafcb7ce5cea045367ae1f
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Thu Jun 15 07:34:17 2017 -0700
|
||||
```text
|
||||
commit 7b0d48281049c3fec7fafcb7ce5cea045367ae1f
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Thu Jun 15 07:34:17 2017 -0700
|
||||
|
||||
Set version to 0.70.0
|
||||
Set version to 0.70.0
|
||||
```
|
||||
|
||||
## Network Update
|
||||
The Ripple operations team plans to deploy version 0.70.0 to all `rippled` servers under its operational control, including private clusters, starting at 2:00 PM PST on Thursday, 2017-06-15. The deployment is expected to complete within 4 hours. The network should continue to operate during deployment and no outage is expected.
|
||||
@@ -64,36 +66,36 @@ The Ripple operations team plans to deploy version 0.70.0 to all `rippled` serve
|
||||
At that time, `rippled` validators under Ripple’s operational control will begin voting for the **EnforceInvariants** and **fix1737** Amendments.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: <support@ripple.com>
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
## Full Release Notes
|
||||
|
||||
### FlowCross
|
||||
|
||||
Currently, the offer crossing code in `rippled` is independent of the payment flow code in `rippled`. The introduction of the **FlowCross** Amendment ensures that the same logic that drives payments also drives offer crossing. This change streamlines the code base, improves test coverage and is expected to result in some marginal performance benefits in offer crossing. For more information, see [FlowCross](https://ripple.com/build/amendments/#flowcross).
|
||||
Currently, the offer crossing code in `rippled` is independent of the payment flow code in `rippled`. The introduction of the **FlowCross** Amendment ensures that the same logic that drives payments also drives offer crossing. This change streamlines the code base, improves test coverage and is expected to result in some marginal performance benefits in offer crossing. For more information, see [FlowCross](/resources/known-amendments.md#flowcross).
|
||||
|
||||
### EnforceInvariants
|
||||
|
||||
The introduction of the **EnforceInvariants** Amendment supplements existing safeguards of RCL integrity. Once the amendment activates, the servers will execute specialized code to check key system invariants after the execution of each transaction. If a transaction fails any of the checks, it will be considered as invalid. For more information, see [EnforceInvariants](https://ripple.com/build/amendments/#enforceinvariants).
|
||||
The introduction of the **EnforceInvariants** Amendment supplements existing safeguards of RCL integrity. Once the amendment activates, the servers will execute specialized code to check key system invariants after the execution of each transaction. If a transaction fails any of the checks, it will be considered as invalid. For more information, see [EnforceInvariants](/resources/known-amendments.md#enforceinvariants).
|
||||
|
||||
### fix1373 Amendment
|
||||
|
||||
Version 0.70.0 also introduces the fix1373 Amendment to fix a minor bug in pathfinding that causes strand creation to fail. Specifically, the issue was related to paths that contain path elements where all the path elements types are set (account, currency and issuer). The fix1373 Amendment corrects the issue that caused some strand creation to fail. For more information, see [fix1373](https://ripple.com/build/amendments/#fix1373).
|
||||
Version 0.70.0 also introduces the fix1373 Amendment to fix a minor bug in pathfinding that causes strand creation to fail. Specifically, the issue was related to paths that contain path elements where all the path elements types are set (account, currency and issuer). The fix1373 Amendment corrects the issue that caused some strand creation to fail. For more information, see [fix1373](/resources/known-amendments.md#fix1373).
|
||||
|
||||
These features underline Ripple’s continued support to improving RCL by making it more stable, secure and efficient for settlement of global payments.
|
||||
|
||||
## Upcoming Features
|
||||
|
||||
We do not have an update on the [previously announced](https://developers.ripple.com/blog/2016/rippled-0.33.0.html) changes to the hash tree structure that `rippled` uses to represent a ledger, called [SHAMapV2](https://ripple.com/build/amendments/#shamapv2). At the time of activation, this amendment will require brief scheduled allowable unavailability while the changes to the hash tree structure are computed by the network. We will keep the community updated as we progress towards this date (TBA).
|
||||
We do not have an update on the [previously announced](/blog/2016/rippled-0.33.0.md) changes to the hash tree structure that `rippled` uses to represent a ledger, called [SHAMapV2](/resources/known-amendments.md#shamapv2). At the time of activation, this amendment will require brief scheduled allowable unavailability while the changes to the hash tree structure are computed by the network. We will keep the community updated as we progress towards this date (TBA).
|
||||
|
||||
You can [update to the new version](https://ripple.com/build/rippled-setup/#updating-rippled) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
You can [update to the new version](/docs/infrastructure/installation/update-rippled-automatically-on-linux) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md).
|
||||
|
||||
|
||||
## 0.70.0 Change Log
|
||||
|
||||
@@ -26,21 +26,23 @@ This announcement now contains corrected SHA-256 values for the RPM and source R
|
||||
|
||||
* If you operate a `rippled` validator server, but do not upgrade to `rippled` version 0.70.1, then your `rippled` validator server could experience increased loss of synchronization with the network.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The SHA-256 for the `RPM` is: `23c8ec08d1ca8c8ce6c0602617c7e41b7f2fd249a1417a79a286a3faa5be08eb`
|
||||
|
||||
The SHA-256 for the source `RPM` is: `3522546989024e783cfa933218a28ee878dcc3f334749e7456cb04a9cd07d8fc`
|
||||
|
||||
For other platforms, please [compile version 0.70.1 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.70.1 from source](https://github.com/XRPLF/rippled/tree/0.70.1/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
commit 3bfd9de6779994e5bbbba864791429e2f7360947
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Wed Jun 28 07:15:07 2017 -0700
|
||||
```text
|
||||
commit 3bfd9de6779994e5bbbba864791429e2f7360947
|
||||
Author: Nik Bougalis <nikb@bougalis.net>
|
||||
Date: Wed Jun 28 07:15:07 2017 -0700
|
||||
|
||||
Set version to 0.70.1
|
||||
Set version to 0.70.1
|
||||
```
|
||||
|
||||
## 0.70.1 Change Log
|
||||
|
||||
@@ -58,11 +60,11 @@ The first log entry should be the change setting the version:
|
||||
The Ripple technical operations team deployed `rippled` version 0.70.1 to all `rippled` servers under its operational control, including private clusters, on Sunday, 2017-07-09.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: support@ripple.com
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -22,13 +22,13 @@ There are no new features in the 0.70.2 release.
|
||||
|
||||
If you operate a `rippled` server, but do not upgrade to `rippled` version 0.70.2, then your `rippled` server could see inconsistent transaction relaying as well as transactions getting stuck in the open ledger without being passed on to validators. In this case, your server may report very high transaction costs and brimming transaction queues.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The SHA-256 for the RPM is: b41f3d75bb0fcf67dcd3cd14fbf1a7029ce28442b6dcd19fff7df330c35ee3e7
|
||||
|
||||
The SHA-256 for the source RPM is: 8cae27e639ef57987238c7800127288857c6caa61d15342faf781749ce9ee7ff
|
||||
|
||||
For other platforms, please [compile version 0.70.2 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.70.2 from source](https://github.com/XRPLF/rippled/tree/0.70.2/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
@@ -51,11 +51,11 @@ Date: Tue Sep 19 14:26:06 2017 -0400
|
||||
The Ripple operations team plans to deploy version 0.70.2 to all `rippled` servers under its operational control, including private clusters, starting at 4:00 PM PT on Thursday, 2017-09-21. The deployment is expected to complete within 4 hours. The network should continue to operate during deployment and no outage is expected.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: <support@ripple.com>
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
@@ -14,7 +14,7 @@ Ripple has released `rippled` version 0.80.0, which introduces several enhanceme
|
||||
|
||||
Highlights of this release include:
|
||||
|
||||
* The **SortedDirectories** amendment sorts the entries in [`DirectoryNode` ledger objects](https://ripple.com/build/ledger-format/#directorynode). It also corrects a technical flaw that could, in some edge cases, prevent an empty intermediate page from being deleted.
|
||||
* The **SortedDirectories** amendment sorts the entries in [`DirectoryNode` ledger objects](/docs/references/protocol/ledger-data/ledger-entry-types/directorynode). It also corrects a technical flaw that could, in some edge cases, prevent an empty intermediate page from being deleted.
|
||||
|
||||
Ripple expects the **SortedDirectories** amendment to be enabled on Tuesday, 2017-11-07.
|
||||
|
||||
@@ -25,7 +25,7 @@ Ripple expects the **SortedDirectories** amendment to be enabled on Tuesday, 201
|
||||
|
||||
## Impact of Not Upgrading
|
||||
|
||||
If you operate a `rippled` server but do not upgrade to version 0.80.0 by Tuesday, 2017-11-07, when the **SortedDirectories** Amendment is expected to be activated, then your server will become [amendment blocked](https://ripple.com/build/amendments/#amendment-blocked), meaning that your server:
|
||||
If you operate a `rippled` server but do not upgrade to version 0.80.0 by Tuesday, 2017-11-07, when the **SortedDirectories** Amendment is expected to be activated, then your server will become [amendment blocked](/docs/concepts/networks-and-servers/amendments#amendment-blocked-servers), meaning that your server:
|
||||
|
||||
* Cannot determine the validity of a ledger
|
||||
* Cannot submit or process transactions
|
||||
@@ -39,13 +39,13 @@ If the **SortedDirectories** amendment does not get approved, then your `rippled
|
||||
|
||||
**If you operate a `rippled` server that uses RocksDB as its data store**, then we recommend removing the RocksDB `file_size_mb` parameter from your `rippled.cfg` config file.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The sha256 for the rpm is: 0f67e8fdc9c555921534b6944ca418df007cee0705ab9e2fc5423963848b2935
|
||||
|
||||
The sha256 for the source rpm is: 9c6f5074e1ec3ce6ced27c0da243bb7ed19a32a8bedf2d68809ec37845f42c1b
|
||||
|
||||
For other platforms, please [compile version 0.80.0 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.80.0 from source](https://github.com/XRPLF/rippled/tree/0.80.0/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
@@ -63,14 +63,14 @@ The Ripple operations team plans to deploy version 0.80.0 to all `rippled` serve
|
||||
At that time, `rippled` validators under Ripple’s operational control will begin voting for the **SortedDirectories** amendment.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: <support@ripple.com>
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
## Full Release Notes
|
||||
|
||||
@@ -81,11 +81,11 @@ The **SortedDirectories** amendment addresses two distinct issues: First, it cor
|
||||
|
||||
## Upcoming Features
|
||||
|
||||
The [previously announced](https://developers.ripple.com/blog/2017/rippled-0.70.0.html) FlowCross Amendment will be enabled on a future date (TBA).
|
||||
The [previously announced](/blog/2017/rippled-0.70.0.md) FlowCross Amendment will be enabled on a future date (TBA).
|
||||
|
||||
We do not have an update on the [previously announced](https://developers.ripple.com/blog/2016/rippled-0.33.0.html) changes to the hash tree structure that `rippled` uses to represent a ledger, called [SHAMapV2](https://ripple.com/build/amendments/#shamapv2). At the time of activation, this amendment will require brief scheduled allowable unavailability while the changes to the hash tree structure are computed by the network. We will keep the community updated as we progress towards this date (TBA).
|
||||
We do not have an update on the [previously announced](/blog/2016/rippled-0.33.0.md) changes to the hash tree structure that `rippled` uses to represent a ledger, called [SHAMapV2](/resources/known-amendments.md#shamapv2). At the time of activation, this amendment will require brief scheduled allowable unavailability while the changes to the hash tree structure are computed by the network. We will keep the community updated as we progress towards this date (TBA).
|
||||
|
||||
You can [update to the new version](https://ripple.com/build/rippled-setup/#updating-rippled) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
You can [update to the new version](/docs/infrastructure/installation/update-rippled-automatically-on-linux) on Red Hat Enterprise Linux 7 or CentOS 7 using yum. For other platforms, please [compile the new version from source](https://github.com/XRPLF/rippled/blob/master/BUILD.md).
|
||||
|
||||
|
||||
## 0.80.0 Change Log
|
||||
|
||||
@@ -25,13 +25,13 @@ If you operate a `rippled` server, then you should upgrade to 0.80.2 immediately
|
||||
|
||||
* **If you operate a `rippled` server**, but do not upgrade to rippled version 0.80.2, then your `rippled` server will use more resources than necessary and may periodically drop transactions and fall out of sync with the network.
|
||||
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](https://ripple.com/build/rippled-setup/#updating-rippled).
|
||||
For instructions on updating `rippled` on supported platforms, see [Updating `rippled` on supported platforms](/docs/infrastructure/installation/update-rippled-automatically-on-linux).
|
||||
|
||||
The SHA-256 for the RPM is: `a0f431a55a241770d7496b240e4d2c638f2cadd4126ee621c5ed980b8174223c`
|
||||
|
||||
The SHA-256 for the source RPM is: `d25bda2c384c67e48fe6c29250c07039d33c6ed5d280ad19fc246469213fe251`
|
||||
|
||||
For other platforms, please [compile version 0.80.2 from source](https://github.com/ripple/rippled/tree/master/Builds).
|
||||
For other platforms, please [compile version 0.80.2 from source](https://github.com/XRPLF/rippled/tree/0.80.2/Builds).
|
||||
|
||||
The first log entry should be the change setting the version:
|
||||
|
||||
@@ -47,14 +47,14 @@ Date: Thu Dec 14 15:30:20 2017 -0800
|
||||
The Ripple technical operations team will deploy `rippled` version 0.80.2 to all production `rippled` servers under its operational control, on Friday, 12/15/2017.
|
||||
|
||||
## Learn, ask questions, and discuss
|
||||
Related documentation is available in the [Ripple Developer Portal](https://ripple.com/build/), including detailed example API calls and web tools for API testing.
|
||||
Related documentation is available in the Ripple Developer Portal, including detailed example API calls and web tools for API testing.
|
||||
|
||||
Other resources:
|
||||
|
||||
* The Ripple Forum (_Disabled._ Formerly `forum.ripple.com`)
|
||||
* [The Ripple Dev Blog](https://developers.ripple.com/blog/)
|
||||
* The Ripple Dev Blog _(Replaced with [xrpl.org/blog](https://xrpl.org/blog/))_
|
||||
* Ripple Technical Services: <support@ripple.com>
|
||||
* [XRP Chat](http://www.xrpchat.com/)
|
||||
* XRP Chat _(Shut down. Formerly `www.xrpchat.com`)_
|
||||
|
||||
|
||||
## 0.80.2 Change Log
|
||||
|
||||
@@ -12,27 +12,28 @@ markdown:
|
||||
|
||||
This notice is for all validator operators, and may be useful for gateways that intend to use tick sizes.
|
||||
|
||||
A majority of trusted validators [voted to enable the TickSize amendment](https://developers.ripple.com/blog/2017/ticksize-voting.html), which is scheduled to become active on the protocol on Tuesday, 2017-02-21. The amendment changes the way RCL offers are ranked in order books, so that currency issuers can configure how many significant digits are taken into account when ranking offers by exchange rate.
|
||||
A majority of trusted validators [voted to enable the TickSize amendment](/blog/2017/ticksize-voting), which is scheduled to become active on the protocol on Tuesday, 2017-02-21. The amendment changes the way RCL offers are ranked in order books, so that currency issuers can configure how many significant digits are taken into account when ranking offers by exchange rate.
|
||||
|
||||
For a detailed look into the TickSize feature, see the [original TickSize announcement](https://developers.ripple.com/blog/2017/ticksize-voting.html).
|
||||
For a detailed look into the TickSize feature, see the [original TickSize announcement](/blog/2017/ticksize-voting).
|
||||
|
||||
|
||||
## Action Required
|
||||
|
||||
1. **If you operate a `rippled` server and accept secure client connections**, then you should upgrade to `rippled` version 0.50.2 immediately. If you operate a `rippled` server but do not accept secure client connections, then you should upgrade to version 0.50.0 by Tuesday, 2017-02-21, for service continuity.
|
||||
|
||||
2. **If you are a gateway issuer**, then please review [documentation](https://ripple.com/build/transactions/#offer-preference) for the TickSize amendment to determine what tick size is appropriate for your issuing asset.
|
||||
2. **If you are a gateway issuer**, then please review documentation for the TickSize amendment to determine what tick size is appropriate for your issuing asset.
|
||||
|
||||
3. **If you are a market maker** and have algorithmic trading bots, then please review [documentation](https://ripple.com/build/transactions/#offer-preference) for the TickSize amendment to update your trading system to check the tick size for a given issuer.
|
||||
3. **If you are a market maker** and have algorithmic trading bots, then please review documentation for the TickSize amendment to update your trading system to check the tick size for a given issuer.
|
||||
|
||||
4. **If you have backend software**, which constructs and submits transactions related to the issuing of assets on the Ripple network, then please review [documentation](https://ripple.com/build/transactions/#offer-preference) for the TickSize amendment to adapt it for correct usage.
|
||||
4. **If you have backend software**, which constructs and submits transactions related to the issuing of assets on the Ripple network, then please review documentation for the TickSize amendment to adapt it for correct usage.
|
||||
|
||||
|
||||
## Learn More
|
||||
|
||||
For more information, see the following articles in the [Ripple Developer Portal](https://ripple.com/build/):
|
||||
For more information, see the following articles:
|
||||
|
||||
- [Offer Preference](https://ripple.com/build/transactions/#offer-preference) - How offers are ranked with and without TickSize.
|
||||
- [AccountSet transaction](https://ripple.com/build/transactions/#accountset) - How to configure a TickSize.
|
||||
- [Tick Size](/docs/concepts/tokens/decentralized-exchange/ticksize) - Explanation of how Tick Size works.
|
||||
- [Offer Preference](/docs/concepts/tokens/decentralized-exchange/offers#offer-preference) - How offers are ranked with and without TickSize.
|
||||
- [AccountSet transaction](/docs/references/protocol/transactions/types/accountset) - How to configure a TickSize.
|
||||
|
||||
To continue receiving updates about the rippled server, please subscribe to the Ripple Server Google Group: <https://groups.google.com/forum/#!forum/ripple-server>
|
||||
|
||||
@@ -12,27 +12,28 @@ markdown:
|
||||
|
||||
This notice is for all validator operators, and may be useful for gateways that intend to use tick sizes.
|
||||
|
||||
A majority of trusted validators [voted to enable the TickSize amendment](https://developers.ripple.com/blog/2017/ticksize-voting.html), which is scheduled to become active on the protocol on Tuesday, 2017-02-21. The amendment changes the way RCL offers are ranked in order books, so that currency issuers can configure how many significant digits are taken into account when ranking offers by exchange rate.
|
||||
A majority of trusted validators [voted to enable the TickSize amendment](/blog/2017/ticksize-voting.md), which is scheduled to become active on the protocol on Tuesday, 2017-02-21. The amendment changes the way RCL offers are ranked in order books, so that currency issuers can configure how many significant digits are taken into account when ranking offers by exchange rate.
|
||||
|
||||
For a detailed look into the TickSize feature, see the [original TickSize announcement](https://developers.ripple.com/blog/2017/ticksize-voting.html).
|
||||
For a detailed look into the TickSize feature, see the [original TickSize announcement](/blog/2017/ticksize-voting.md).
|
||||
|
||||
|
||||
## Action Required
|
||||
|
||||
1. **If you operate a `rippled` server and accept secure client connections**, then you should upgrade to `rippled` version 0.50.2 immediately. If you operate a `rippled` server but do not accept secure client connections, then you should upgrade to version 0.50.0 by Tuesday, 2017-02-21, for service continuity.
|
||||
|
||||
2. **If you are a gateway issuer**, then please review [documentation](https://ripple.com/build/transactions/#offer-preference) for the TickSize amendment to determine what tick size is appropriate for your issuing asset.
|
||||
2. **If you are a gateway issuer**, then please review documentation for the TickSize amendment to determine what tick size is appropriate for your issuing asset.
|
||||
|
||||
3. **If you are a market maker** and have algorithmic trading bots, then please review [documentation](https://ripple.com/build/transactions/#offer-preference) for the TickSize amendment to update your trading system to check the tick size for a given issuer.
|
||||
3. **If you are a market maker** and have algorithmic trading bots, then please review documentation for the TickSize amendment to update your trading system to check the tick size for a given issuer.
|
||||
|
||||
4. **If you have backend software**, which constructs and submits transactions related to the issuing of assets on the Ripple network, then please review [documentation](https://ripple.com/build/transactions/#offer-preference) for the TickSize amendment to adapt it for correct usage.
|
||||
4. **If you have backend software**, which constructs and submits transactions related to the issuing of assets on the Ripple network, then please review documentation for the TickSize amendment to adapt it for correct usage.
|
||||
|
||||
|
||||
## Learn More
|
||||
|
||||
For more information, see the following articles in the [Ripple Developer Portal](https://ripple.com/build/):
|
||||
For more information, see the following articles:
|
||||
|
||||
- [Offer Preference](https://ripple.com/build/transactions/#offer-preference) - How offers are ranked with and without TickSize.
|
||||
- [AccountSet transaction](https://ripple.com/build/transactions/#accountset) - How to configure a TickSize.
|
||||
- [Tick Size](/docs/concepts/tokens/decentralized-exchange/ticksize) - Explanation of how Tick Size works.
|
||||
- [Offer Preference](/docs/concepts/tokens/decentralized-exchange/offers#offer-preference) - How offers are ranked with and without TickSize.
|
||||
- [AccountSet transaction](/docs/references/protocol/transactions/types/accountset) - How to configure a TickSize.
|
||||
|
||||
To continue receiving updates about the rippled server, please subscribe to the Ripple Server Google Group: <https://groups.google.com/forum/#!forum/ripple-server>
|
||||
|
||||
@@ -10,7 +10,7 @@ markdown:
|
||||
---
|
||||
# TickSize is Now Available
|
||||
|
||||
As [predicted previously](https://developers.ripple.com/blog/2017/ticksize-3days.html), the TickSize amendment became available on the Ripple Consensus Ledger yesterday afternoon (PST) in ledger 27841793 ([2017-02-21T23:02:52Z](https://xrpcharts.ripple.com/#/transactions/A12430E470BE5C846759EAE3C442FF03374D5D73ECE5815CF4906894B769565E)).
|
||||
As [predicted previously](/blog/2017/ticksize-3days.md), the TickSize amendment became available on the Ripple Consensus Ledger yesterday afternoon (PST) in ledger 27841793 ([2017-02-21T23:02:52Z](https://xrpcharts.ripple.com/#/transactions/A12430E470BE5C846759EAE3C442FF03374D5D73ECE5815CF4906894B769565E)).
|
||||
|
||||
The amendment changes the way RCL offers are ranked in order books, so that currency issuers can configure how many significant digits are taken into account when ranking offers by exchange rate.
|
||||
|
||||
@@ -19,16 +19,16 @@ The amendment changes the way RCL offers are ranked in order books, so that curr
|
||||
|
||||
1. **If you operate a `rippled` server and accept secure client connections**, then you should upgrade to version 0.50.2 immediately. If you operate a `rippled` server but do not accept secure client connections, then you should upgrade to version 0.50.0 or higher immediately.
|
||||
|
||||
2. **If you issue currency on the RCL**, then please review [documentation](https://ripple.com/build/transactions/#offer-preference) for the TickSize amendment to determine what tick size is appropriate for your issuing asset. If you take no action, your issued currency can still be traded using the default tick size of 15 significant digits, but Ripple strongly recommends setting a tick size between four and eight digits to provide faster price discovery and to decrease churn in the RCL order books for your currency. Ripple also recommends publishing your tick size policy to users.
|
||||
2. **If you issue currency on the RCL**, then please review documentation for the TickSize amendment to determine what tick size is appropriate for your issuing asset. If you take no action, your issued currency can still be traded using the default tick size of 15 significant digits, but Ripple strongly recommends setting a tick size between four and eight digits to provide faster price discovery and to decrease churn in the RCL order books for your currency. Ripple also recommends publishing your tick size policy to users.
|
||||
|
||||
3. **If you trade on the RCL** and have algorithmic trading bots, then please review [documentation](https://ripple.com/build/transactions/#offer-preference) for the TickSize amendment to update your trading system to check the tick size for a given issuer.
|
||||
3. **If you trade on the RCL** and have algorithmic trading bots, then please review documentation for the TickSize amendment to update your trading system to check the tick size for a given issuer.
|
||||
|
||||
4. **If you have backend software** which constructs and submits transactions related to the issuing of assets on the Ripple Consensus Ledger, then please review [documentation](https://ripple.com/build/transactions/#offer-preference) for the TickSize amendment to adapt your software for correct usage.
|
||||
4. **If you have backend software** which constructs and submits transactions related to the issuing of assets on the Ripple Consensus Ledger, then please review documentation for the TickSize amendment to adapt your software for correct usage.
|
||||
|
||||
|
||||
## Impact of Not Upgrading
|
||||
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.50.0 or higher, immediately, then your server will become [amendment blocked](https://ripple.com/build/amendments/#amendment-blocked), meaning that your server:
|
||||
If you operate a `rippled` server but don’t upgrade to version 0.50.0 or higher, immediately, then your server will become [amendment blocked](/docs/concepts/networks-and-servers/amendments#amendment-blocked-servers), meaning that your server:
|
||||
|
||||
* Cannot determine the validity of a ledger
|
||||
* Cannot submit or process transactions
|
||||
@@ -40,8 +40,8 @@ If you operate a `rippled` server but don’t upgrade to version 0.50.0 or highe
|
||||
|
||||
For more information, see the following documentation:
|
||||
|
||||
- [TickSize Voting Announcement](https://developers.ripple.com/blog/2017/ticksize-voting.html) - Introduction to TickSize and recommendations for how to use it.
|
||||
- [Offer Preference](https://ripple.com/build/transactions/#offer-preference) - How offers are ranked with and without TickSize.
|
||||
- [AccountSet transaction](https://ripple.com/build/transactions/#accountset) - How to configure a TickSize.
|
||||
- [Tick Size](/docs/concepts/tokens/decentralized-exchange/ticksize) - Explanation of how Tick Size works.
|
||||
- [Offer Preference](/docs/concepts/tokens/decentralized-exchange/offers#offer-preference) - How offers are ranked with and without TickSize.
|
||||
- [AccountSet transaction](/docs/references/protocol/transactions/types/accountset) - How to configure a TickSize.
|
||||
|
||||
To continue receiving updates about the rippled server, please subscribe to the Ripple Server Google Group: <https://groups.google.com/forum/#!forum/ripple-server>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user