try catch and ...release
ページ
ホーム
Chromeアプリ開発Tips
公開アプリ
Ubuntu
Linuxコマンド
#!/bin/bash
ブロックチェーンと暗号通貨
2017年8月16日水曜日
Ripple: issuerのアセットへTrustlineを張る&解消する方法
Gatewayの発行したアセットへのTrustlineの登録から解除までのAPIの叩き方を簡単にまとめました。 今回は [Ripple: Gatewayのアセット発行とユーザ間の支払いの流れ](https://trycatchand.blogspot.jp/2017/06/ripple-asset-issuance-payment.html) の内容から Trustline 部分を少しだけ掘り下げた感じのまとめになっています。
## 登場人物&前提 - `usd_issuer`: `USD`アセットのissuer (発行者) - `user`: 上記の`usd_issuer`が発行した`USD`アセットにTrustlineを張る(そして解消する)ユーザ ## Gatewayになる おさらいになりますが、まずは `usd_issuer` を `gateway` としてセットアップするトランザクションです。すでにgatewayに成れている (`defaultRipple` が有効になっている) 場合は飛ばしてもOKです。もしまだでしたら以下のトランザクションを投げます。もちろん主語は `usd_issuer` です: ``` { "Account": "
", "SetFlag": 8, // 8 = asfDefaultRipple "TransactionType": "AccountSet", "Fee": "10", ... // Sequence や LastLedgerSequence などのパラメータは省略 } ``` ## Trustlineを張る さて、次にTrustlineを張ってみます。 こちらもおさらいになりますが、 `usd_issuer` の `USD` に 上限 1000 で Trustline を張りたい場合は、以下のようなトランザクションを投げます。主語は `user` です: ``` { "TransactionType": "TrustSet", "Account": "
", "Fee": "10", "Flags": 262144, // 262144 = tfClearNoRipple "LimitAmount": { "currency": "USD", "issuer": "
", "value": "1000" }, ... // Sequence や LastLedgerSequence などのパラメータは省略 } ``` `"Flags": 262144` (`tfClearNoRipple`) かつ `value > 0` で設定しているところがポイント。 これでTrustlineが張れました。 以下の `account_lines` APIで確認できます: ``` { "method": "account_lines", "params": [{ "account": "
", "ledger": "current" }] } ``` レスポンス: ``` { "account": "
", "ledger_current_index": 1555911, "lines": [ { "account": "
", "balance": "0", "currency": "USD", "limit": "1000", "limit_peer": "0", "quality_in": 0, "quality_out": 0 } ], "status": "success", "validated": false } ``` ## Trustlineを解消する では、今度は先程の Trustline を解消してみます。 Trustlineの解消は少しわかりにくかったのですが、以下のJoelKatzさんのコメントが参考になりました: [How to totally remove trustlines ? - XRP CHAT](https://www.xrpchat.com/topic/2338-how-to-totally-remove-trustlines/?tab=comments#comment-21216) > If a trustline is in its default state on your side, it will not be counted against your reserve. If a trustline is in its default state on both sides, it will be removed. > > Default state means: > > 1) Balance is zero. > > 2) Limit is zero. > > 3) Line is not authed or frozen. > > 4) Line does not allow rippling, unless account has "DefaultRipple" flag set, in which case it must allow rippling. とりあえず** gateway と user の双方のバランスをゼロにしておく** ことが重要です。 その上で、以下のトランザクションを投げます: ``` { "TransactionType": "TrustSet", "Account": "
", "Fee": "10", "Flags": 131072, // 131072 = tfSetNoRipple "LimitAmount": { "currency": "USD", "issuer": "
", "value": 0 // value = 0 に設定 }, ... // Sequence や LastLedgerSequence などのパラメータは省略 } ``` `"Flags": 131072` (`tfSetNoRipple`) かつ `"value": 0` で設定しているところがポイント。 これで Trustline は解消されます。 以上です。
0 件のコメント:
コメントを投稿
次の投稿
前の投稿
ホーム
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿