必要なもの
| フィールド | 何をするか |
|---|---|
| mint エンドポイント URL | あなたのノードの公開アドレス発行ルート。当社は注文ごとに新しいアドレスを得るためにそれを呼びます。秘密ではありません。 |
| webhook secret | あなたのウォッチャーが署名し、当社が検証する共有のシークレット。あなたのウォレットには決して触れられません。秘密です。 |
この選択肢は、自分のノードを動かしたい人向けです。Monero ノード、閲覧専用ウォレット、そして自分のマシン上の小さな常時稼働のウォッチャーも動かします。このガイドはそのすべてを案内します。何も動かしたくない場合は、代わりにホスト型の暗号資産サービスを接続してください。
Money flow
Money
Buyer
Taps your Coin Moebius Buy Button and pays from their own wallet.
Your product page
Your Coin Moebius Buy Button asks Coin Moebius to start a checkout.
Coin Moebius Messages only
Gets a fresh address from your server and shows it to the buyer.
Blockchain
Carries the coins from the buyer straight to you.
Your wallet
Receives the coins.
Your server
Sees the payment land in your wallet and tells Coin Moebius the sale is paid. Your keys and balance never leave your server.
Coin Moebius dashboardSale shows as paid.
No buyer data
Card numbers never reach us. Buyer names, addresses and contact details are stripped before a sale is saved.
Where our bill comes in
The payment goes to you. Our bill comes separately. On Flex, that bill is based on the sales you’ve made, at 2% + 20¢ each. Pro starts at $24 a month with 500 sales included, then a few cents for each extra sale. Business is $99 a month for unlimited sales. Your provider’s fees are separate from ours.
各フィールドを尋ねる理由
mint エンドポイント URL
購入者が購入をクリックすると、当社は表示する新しいアドレスをあなたのノードに求めます。そのリクエストはこの一つの公開ルートに行きます。それはアドレスを返すだけで、それ以外は返しません。あなたのウォレットはその背後で非公開のままです。
webhook secret
あなたのウォッチャーは、署名付きのメッセージを送ることで当社に「この注文は支払い済み」と伝えます。この共有のシークレットにより、当社はそのメッセージが本当にあなたのウォッチャーから来たと確認でき、誰も支払い済みイベントを偽造できません。それは何も読めず、何も動かせません。
設定
- あなたが動かすもの
3つ、すべて自分のマシン上で。公開の mint URL と共有のシークレットを除き、ここで当社に渡すものはありません。
- Monero ノード(monerod)と閲覧専用ウォレット(monero-wallet-rpc)。非公開に保ちます。
- mint エンドポイント:注文ごとに新しいアドレスを渡す、一つの小さな公開ルート。
- ウォッチャー:あなたのウォレットを見張り、支払いが着地したときに当社に知らせる、ごく小さな常時稼働のプログラム。
- 閲覧専用ウォレットを作る
閲覧専用ウォレットは、入金を見て、新しい受取アドレスを発行できますが、送金はできません。実際のウォレットのアドレスとその秘密の view key だけから作ります。それ以外は不要です。それが、動かす力を一切持たずにノードが支払いを検出できる仕組みです。
monero-wallet-cli --generate-from-view-key ~/monero/view-onlyプライマリアドレスと秘密の view key の入力を求めます。seed や spend key は決して入力せず、それらは別のマシンに置いてください。view-only と view-only.keys を書き出します。パスワードを設定し、次のステップのためにファイル(ウォレットの隣の wallet.password)に保存してください。
- Monero ノードを動かす
デーモンが同期し、ブロックチェーンを保持します。自分で再起動するよう、サービス(systemd または Docker)として動かします。その RPC は 127.0.0.1:18081 で待ち受けます。
monerod --data-dir ~/.bitmonero --prune-blockchain --restricted-rpc剪定したノードはディスクの使用量を小さく保ちつつ、すべての入金を見られます。ノードはネットワークに到達しますが、公開には何も晒しません。
- ウォレット RPC を動かす
閲覧専用ウォレットを開き、mint エンドポイントとウォッチャーに応答する2つ目のサービス。あなたのノードに向け、localhost にバインドします。これもサービスとして動かします。
monero-wallet-rpc \ --wallet-file ~/monero/view-only \ --password-file ~/monero/wallet.password \ --rpc-bind-ip 127.0.0.1 --rpc-bind-port 18083 \ --daemon-address 127.0.0.1:18081 --trusted-daemon \ --disable-rpc-loginウォレット RPC を公開のインターネットに決して晒さないでください。localhost またはプライベートネットワークにバインドします。--disable-rpc-login は localhost 限定だからこそ問題ありません。他のどこからでも到達可能な場合は --rpc-login を使ってください。公開なのは下記の mint エンドポイントだけです。
- Coin Moebius Monero パッケージをインストールする
アドレスの発行者、webhook の署名者、ウォッチャーを提供するので、書くコードはほとんどありません。最速の道は下記のすぐに動く例です。フォルダをコピーし、4つの値を埋めて、起動します。
npm install @aquarian-metals/coin-moebius-monero - webhook secret を生成する
webhook に署名し検証する、強いランダムな値。作る方法は2つ、お好みで。ダッシュボードでプロバイダーを追加するときに「生成」をクリックする(ブラウザ内で動き、当社のサーバーでは決して動きません)か、下記のコマンドを自分で実行します。どちらでも、同じ値をウォッチャーとダッシュボードの両方に貼り付けます。
openssl rand -hex 32 - mint エンドポイントを立ち上げる
あなたのウォレットの前面に立つ、一つの公開 POST ルート。パッケージの createMoneroCreator を使って、注文ごとに新しいアドレスを発行します。これがインターネットに晒す唯一のもので、晒しても安全です。受取アドレスを返し、お金は一切動かしません。
// POST /coin-moebius/monero/mint import { createMoneroCreator } from '@aquarian-metals/coin-moebius-monero/server'; const mint = createMoneroCreator({ walletRpcUrl: 'http://127.0.0.1:18083/json_rpc', store: myStore, xmrPerUnit: async (cur) => (cur === 'XMR' ? 1 : await myPriceFeed(cur)), }); // return mint({ productId, amount, currency, metadata }) as JSON価格の出どころはあなたが選びます。Coin Moebius は価格オラクルを決して呼びません。
- ウォッチャーを動かし、当社に向ける
ウォッチャーは、数秒ごとにあなたのウォレットを確認し、支払いが確定したときに当社へメッセージを署名する、常時稼働のプログラムです。その webhook URL をプロジェクトのアドレス(下記)に、そのシークレットを生成した値に設定します。あなたのウォレットの隣で、systemd または Docker のもとで動かします。
import { createMoneroIndexer } from '@aquarian-metals/coin-moebius-monero/server'; const watcher = createMoneroIndexer({ walletRpcUrl: 'http://127.0.0.1:18083/json_rpc', store: myStore, webhookUrl: process.env.MONERO_WEBHOOK_URL, // your Coin Moebius URL, below hmacSecret: process.env.MONERO_HMAC_SECRET, // the secret you generated requiredConfirmations: 10, }); watcher.start();ウォッチャーのレシピ:indexer.js + systemd ユニット + docker-compose ↗
設計上、追いつき型です。しばらくオフラインでも、次の実行で見逃した支払いを見て、そのとき当社に伝えます。家庭のサーバーで十分で、完璧な稼働率は要りません。
- あなたの webhook URL
ウォッチャーの webhookUrl をプロジェクトのアドレスに設定します。プロジェクトIDはダッシュボードのプロジェクト設定にあります。
https://api.coinmoebius.com/webhook/monero/<your project id> - ダッシュボードでつなぐ
プロバイダーを追加し、「自分自身がプロバイダーになる」を選び、次に Monero。mint エンドポイント URL と webhook secret を貼り付けます。それが当社が保存するすべてで、どちらの値もあなたのウォレットには触れられません。
接続した後
自己ホストのノードにはサンドボックスが無いので、最初の少額の実支払いがテストになります。
- 商品を作り、プロジェクトに向けた買うボタンをページ(ローカルの HTML ファイルでも可)に置きます。
- 自分のウォレットから少額の Monero を支払います。
- 確認を待ちます。Monero は設計上、完全に確定するまで約20分かかります。
- 取引タブを開きます。新しい行が succeeded に達したら、mint エンドポイント、ウォッチャー、シークレットがすべて端から端まで機能しています。
トラブルシューティング
チェックアウトがすぐに失敗する。
あなたの mint エンドポイントに到達できませんでした。公開の https URL であること、そしてノードがオンラインであることを確認してください。ダッシュボードは保存時にこれを到達性のメッセージとして表示します。
購入者は支払ったのに、注文が保留のまま。
ウォッチャーが動いていないか、そのシークレットが一致していません。ウォッチャーのプロセスが立ち上がっていること、そしてその MONERO_HMAC_SECRET がダッシュボードに貼り付けた正確な値であることを確認してください。
支払いの表示に少し時間がかかった。
それは正常です。Monero はいくつものブロックにわたって確定します。ウォッチャーは成功を報告する前に10回の確認(約20分)を待ちます。
知っておくとよいこと
ホットなマシンには閲覧専用ウォレットを置く. ウォッチャーは入金を見られればよいだけです。spend key は別個のオフラインのマシンに置き、そこから資金を掃き出してください。
ウォレット RPC を決して晒さない. 公開なのは mint エンドポイントだけです。ウォレット RPC は常に localhost またはプライベートネットワークにバインドしてください。
ダウンタイムは安い. ウォッチャーは障害の後で追いつき、見逃した支払いを報告します。失われるものはありません。
シークレットのローテーション. 新しいシークレットをいつでも生成して、ウォッチャーとダッシュボードの両方に貼り付けます。
Monero circular economy
ご質問は? Join our Discord