আপনার যা দরকার
| ফিল্ড | এটি যা করে |
|---|---|
| Mint endpoint URL | আপনার নোডের পাবলিক ঠিকানা-মিন্টিং রুট। প্রতিটি অর্ডারের জন্য একটি নতুন ঠিকানা পেতে আমরা এটি কল করি। গোপন নয়। |
| Webhook secret | একটি শেয়ার্ড সিক্রেট যা দিয়ে আপনার ওয়াচার সাইন করে আর আমরা যাচাই করি। এটি কখনো আপনার ওয়ালেট ছুঁতে পারে না। গোপন। |
এই বিকল্পটি তাঁদের জন্য যাঁরা নিজেদের নোড চালাতে চান। আপনি আপনার নিজের মেশিনে একটি Monero নোড, একটি view-only ওয়ালেট, আর একটি ছোট সবসময়-চালু ওয়াচারও চালান। এই গাইড পুরোটা ধাপে ধাপে দেখায়। আপনি যদি কিছুই চালাতে না চান, এর বদলে একটি হোস্টেড ক্রিপ্টো সেবা যুক্ত করুন।
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 endpoint URL
একজন ক্রেতা Buy ক্লিক করলে, আমরা তাঁদের দেখানোর জন্য আপনার নোডের কাছে একটি নতুন ঠিকানা চাই। সেই অনুরোধটি এই একটি পাবলিক রুটে যায়। এটি একটি ঠিকানা ফেরত দেয় আর কিছুই না; আপনার ওয়ালেট এর পেছনে গোপন থাকে।
Webhook secret
আপনার ওয়াচার আমাদের একটি সাইন করা বার্তা পাঠিয়ে "এই অর্ডার পরিশোধিত" বলে। এই শেয়ার্ড সিক্রেট আমাদের নিশ্চিত করতে দেয় যে বার্তাটি প্রকৃতপক্ষে আপনার ওয়াচার থেকে এসেছে, তাই কেউ একটি paid ইভেন্ট জাল করতে পারে না। এটি কিছুই পড়তে পারে না আর কিছুই নাড়াতে পারে না।
সেট আপ
- আপনি যা চালাবেন
তিনটি জিনিস, সবই আপনার নিজের মেশিনে। পাবলিক mint URL আর শেয়ার্ড সিক্রেট ছাড়া এখানকার কিছুই আমাদের দেওয়া হয় না।
- একটি Monero নোড (monerod) আর একটি view-only ওয়ালেট (monero-wallet-rpc), গোপন রাখা।
- একটি mint endpoint: একটি ছোট পাবলিক রুট যা প্রতি অর্ডারে একটি নতুন ঠিকানা দেয়।
- একটি watcher: একটি ক্ষুদ্র সবসময়-চালু প্রোগ্রাম যা আপনার ওয়ালেট দেখে আর একটি পেমেন্ট জমা হলে আমাদের জানায়।
- একটি view-only ওয়ালেট তৈরি করুন
একটি view-only ওয়ালেট আগত পেমেন্ট দেখতে আর নতুন গ্রহণ ঠিকানা মিন্ট করতে পারে, কিন্তু এটি খরচ করতে পারে না। আপনি এটি আপনার আসল ওয়ালেটের ঠিকানা আর এর private view key থেকে বানান, আর কিছু না। সেটিই আপনার নোডকে নাড়ানোর ক্ষমতা না রেখেই পেমেন্ট শনাক্ত করতে দেয়।
monero-wallet-cli --generate-from-view-key ~/monero/view-onlyএটি আপনার primary address আর আপনার private 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একটি pruned নোড ডিস্কের জায়গা ছোট রাখে আর তবু প্রতিটি আগত পেমেন্ট দেখে। নোডটি নেটওয়ার্কে পৌঁছায় কিন্তু পাবলিক কিছুই উন্মুক্ত করে না।
- wallet RPC চালান
একটি দ্বিতীয় সেবা যা view-only ওয়ালেট খোলে আর mint endpoint ও watcher-কে উত্তর দেয়। এটিকে আপনার নোডে নির্দেশ করুন আর 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কখনো wallet RPC পাবলিক ইন্টারনেটে উন্মুক্ত করবেন না; এটিকে localhost বা একটি প্রাইভেট নেটওয়ার্কে বাইন্ড করুন। --disable-rpc-login কেবল এ কারণেই ঠিক যে এটি localhost-only; অন্য কোথাও থেকে পৌঁছানো গেলে --rpc-login ব্যবহার করুন। কেবল নিচের mint endpoint-ই পাবলিক।
- Coin Moebius Monero প্যাকেজ ইনস্টল করুন
এটি ঠিকানা মিন্টার, ওয়েবহুক সাইনার, আর ওয়াচার সরবরাহ করে, তাই আপনি প্রায় কোনো কোড লেখেন না। দ্রুততম পথ হলো নিচের প্রস্তুত-চালানোর-উদাহরণ: ফোল্ডারটি কপি করুন, চারটি মান পূরণ করুন, আর এটি চালু করুন।
npm install @aquarian-metals/coin-moebius-moneronpm-এ প্যাকেজটি ↗প্রস্তুত-চালানোর উদাহরণ (নোড, mint endpoint, watcher) ↗
- আপনার webhook secret তৈরি করুন
একটি শক্তিশালী র্যান্ডম মান যা ওয়েবহুক সাইন ও যাচাই করে। একটি বানানোর দুই উপায়, আপনার পছন্দ: ড্যাশবোর্ডে প্রোভাইডার যোগ করার সময় Generate ক্লিক করুন (এটি আপনার ব্রাউজারে চলে, কখনো আমাদের সার্ভারে নয়), কিংবা নিজে নিচের কমান্ডটি চালান। যেভাবেই হোক, আপনার ওয়াচার আর ড্যাশবোর্ড দুটোতেই একই মান পেস্ট করুন।
openssl rand -hex 32 - mint endpoint দাঁড় করান
একটি পাবলিক 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 কখনো একটি প্রাইস অরাকল কল করে না।
- watcher চালান আর এটিকে আমাদের দিকে নির্দেশ করুন
watcher হলো সবসময়-চালু প্রোগ্রাম যা প্রতি কয়েক সেকেন্ডে আপনার ওয়ালেট দেখে আর একটি পেমেন্ট নিশ্চিত হলে আমাদের একটি বার্তা সাইন করে দেয়। এর ওয়েবহুক 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();Watcher recipe: indexer.js + systemd unit + docker-compose ↗
এটি নকশা অনুযায়ীই catch-up। এটি কিছুক্ষণ অফলাইন থাকলে, পরবর্তী রান যে পেমেন্টগুলো মিস করেছে তা দেখে আর তখন আমাদের জানায়। একটি হোম সার্ভার ঠিক আছে; আপনার নিখুঁত আপটাইম লাগে না।
- আপনার webhook URL
watcher-এর webhookUrl আপনার প্রজেক্ট ঠিকানায় নির্ধারণ করুন। আপনার প্রজেক্ট আইডি ড্যাশবোর্ডের প্রজেক্ট সেটিংয়ে আছে।
https://api.coinmoebius.com/webhook/monero/<your project id> - ড্যাশবোর্ডে যুক্ত করুন
Add provider, Be your own provider বেছে নিন, তারপর Monero। আপনার mint endpoint URL আর webhook secret পেস্ট করুন। আমরা এটুকুই সংরক্ষণ করি, আর কোনো মানই আপনার ওয়ালেট ছুঁতে পারে না।
যুক্ত করার পর
একটি স্ব-হোস্টেড নোডের কোনো স্যান্ডবক্স নেই, তাই আপনার প্রথম ছোট আসল পেমেন্টই টেস্ট:
- একটি পণ্য তৈরি করুন আর আপনার প্রজেক্টের দিকে নির্দেশিত একটি পৃষ্ঠায় (একটি লোকাল HTML ফাইল চলে) বাই বাটন রাখুন।
- আপনার নিজের ওয়ালেট থেকে একটি ছোট পরিমাণ Monero দিন।
- নিশ্চিতকরণের জন্য অপেক্ষা করুন। Monero পুরোপুরি নিশ্চিত হতে নকশা অনুযায়ীই প্রায় বিশ মিনিট নেয়।
- Transactions ট্যাব খুলুন। নতুন সারিটি succeeded-এ পৌঁছালে, আপনার mint endpoint, watcher, আর secret সবই শুরু থেকে শেষ পর্যন্ত কাজ করছে।
সমস্যা সমাধান
চেকআউট সঙ্গে সঙ্গে ব্যর্থ হয়।
আমরা আপনার mint endpoint-এ পৌঁছাতে পারিনি। নিশ্চিত করুন এটি একটি পাবলিক https URL আর আপনার নোড অনলাইন। আপনি সেভ করার সময় ড্যাশবোর্ড এটিকে একটি reachability বার্তা হিসেবে দেখায়।
ক্রেতা অর্থ দিলেন কিন্তু অর্ডার মুলতবি থাকে।
হয় watcher চলছে না, কিংবা এর সিক্রেট মেলে না। নিশ্চিত করুন watcher প্রসেস চালু আর এর MONERO_HMAC_SECRET ঠিক সেই মান যা আপনি ড্যাশবোর্ডে পেস্ট করেছেন।
পেমেন্ট দেখাতে কিছুটা সময় নিয়েছে।
এটি স্বাভাবিক। Monero কয়েক ব্লক ধরে নিশ্চিত হয়; watcher সাফল্য জানানোর আগে দশটি নিশ্চিতকরণের (প্রায় বিশ মিনিট) জন্য অপেক্ষা করে।
জেনে রাখা ভালো
হট বক্সে একটি view-only ওয়ালেট রাখুন. watcher-কে কেবল আগত পেমেন্ট দেখতে হয়। আপনার spend key একটি আলাদা, অফলাইন মেশিনে রাখুন আর সেখান থেকে তহবিল সরান।
কখনো wallet RPC উন্মুক্ত করবেন না. কেবল mint endpoint-ই পাবলিক। সবসময় wallet RPC localhost বা একটি প্রাইভেট নেটওয়ার্কে বাইন্ড করুন।
ডাউনটাইম সস্তা. watcher একটি বিভ্রাটের পর catch up করে আর যে পেমেন্টগুলো মিস করেছে তা জানায়। কিছুই হারায় না।
সিক্রেট রোটেট করা. যেকোনো সময় একটি নতুন সিক্রেট তৈরি করুন, তারপর তা watcher আর ড্যাশবোর্ড দুটোতেই পেস্ট করুন।
Monero circular economy
প্রশ্ন আছে? Join our Discord