Τι χρειάζεστε
| Πεδίο | Τι κάνει |
|---|---|
| Mint endpoint URL | Η δημόσια διαδρομή του κόμβου σας για τη δημιουργία διευθύνσεων. Την καλούμε για να πάρουμε μια φρέσκια διεύθυνση για κάθε παραγγελία. Δεν είναι μυστικό. |
| Webhook secret | Ένα κοινό μυστικό με το οποίο υπογράφει ο watcher σας και εμείς επαληθεύουμε. Δεν μπορεί ποτέ να αγγίξει το πορτοφόλι σας. Μυστικό. |
Αυτή η επιλογή είναι για όσους θέλουν να τρέξουν τον δικό τους κόμβο. Τρέχετε επίσης έναν κόμβο Monero, ένα πορτοφόλι μόνο-προβολής, και έναν μικρό πάντα-ενεργό watcher στο δικό σας μηχάνημα. Αυτός ο οδηγός τα περνά όλα. Αν προτιμάτε να μην τρέχετε τίποτα, συνδέστε αντ' αυτού μια φιλοξενούμενη υπηρεσία crypto.
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.
No cut of your sales
You pay a flat plan price. We never take a percentage of what you sell.
Γιατί ζητάμε κάθε πεδίο
Mint endpoint URL
Όταν ένας αγοραστής κάνει κλικ στο Buy, ζητάμε από τον κόμβο σας μια φρέσκια διεύθυνση για να του δείξουμε. Αυτό το αίτημα πηγαίνει σε αυτήν τη μία δημόσια διαδρομή. Επιστρέφει μια διεύθυνση και τίποτα άλλο· το πορτοφόλι σας παραμένει ιδιωτικό πίσω της.
Webhook secret
Ο watcher σας μας λέει "αυτή η παραγγελία πληρώθηκε" στέλνοντάς μας ένα υπογεγραμμένο μήνυμα. Αυτό το κοινό μυστικό μας επιτρέπει να επιβεβαιώσουμε ότι το μήνυμα ήρθε πραγματικά από τον watcher σας, ώστε κανείς να μην μπορεί να πλαστογραφήσει ένα συμβάν paid. Δεν μπορεί να διαβάσει τίποτα και να κινήσει τίποτα.
Ρύθμιση
- Τι θα τρέξετε
Τρία πράγματα, όλα στο δικό σας μηχάνημα. Τίποτα εδώ δεν δίνεται σε εμάς εκτός από το δημόσιο mint URL και το κοινό μυστικό.
- Έναν κόμβο Monero (monerod) και ένα πορτοφόλι μόνο-προβολής (monero-wallet-rpc), που κρατούνται ιδιωτικά.
- Ένα mint endpoint: μία μικρή δημόσια διαδρομή που μοιράζει μια φρέσκια διεύθυνση ανά παραγγελία.
- Έναν watcher: ένα μικροσκοπικό πάντα-ενεργό πρόγραμμα που παρακολουθεί το πορτοφόλι σας και μας λέει όταν φτάνει μια πληρωμή.
- Δημιουργήστε ένα πορτοφόλι μόνο-προβολής
Ένα πορτοφόλι μόνο-προβολής μπορεί να δει τις εισερχόμενες πληρωμές και να δημιουργήσει φρέσκιες διευθύνσεις λήψης, αλλά δεν μπορεί να ξοδέψει. Το φτιάχνετε από τη διεύθυνση του πραγματικού πορτοφολιού σας και το ιδιωτικό 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 σας
Ο daemon συγχρονίζεται και κρατά το blockchain. Τρέξτε τον ως υπηρεσία (systemd ή Docker) ώστε να επανεκκινεί μόνος του. Το RPC του ακούει στο 127.0.0.1:18081.
monerod --data-dir ~/.bitmonero --prune-blockchain --restricted-rpcΈνας κλαδεμένος (pruned) κόμβος κρατά μικρό το αποτύπωμα στον δίσκο και εξακολουθεί να βλέπει κάθε εισερχόμενη πληρωμή. Ο κόμβος φτάνει στο δίκτυο αλλά δεν εκθέτει τίποτα δημόσιο.
- Τρέξτε το wallet RPC
Μια δεύτερη υπηρεσία που ανοίγει το πορτοφόλι μόνο-προβολής και απαντά στο 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· χρησιμοποιήστε το --rpc-login αν είναι προσβάσιμο από οπουδήποτε αλλού. Μόνο το mint endpoint παρακάτω είναι δημόσιο.
- Εγκαταστήστε το πακέτο Coin Moebius Monero
Παρέχει τον minter διευθύνσεων, τον signer του webhook, και τον watcher, ώστε να γράψετε σχεδόν καθόλου κώδικα. Η γρηγορότερη διαδρομή είναι το έτοιμο-προς-εκτέλεση παράδειγμα παρακάτω: αντιγράψτε τον φάκελο, συμπληρώστε τέσσερις τιμές, και ξεκινήστε τον.
npm install @aquarian-metals/coin-moebius-moneroΤο πακέτο στο npm ↗Έτοιμο-προς-εκτέλεση παράδειγμα (κόμβος, mint endpoint, watcher) ↗
- Δημιουργήστε το webhook secret σας
Μια ισχυρή τυχαία τιμή που υπογράφει και επαληθεύει το webhook. Δύο τρόποι να την φτιάξετε, η επιλογή σας: κάντε κλικ στο Generate όταν προσθέτετε τον πάροχο στον πίνακα ελέγχου (τρέχει στο πρόγραμμα περιήγησής σας, ποτέ στους διακομιστές μας), ή τρέξτε την παρακάτω εντολή μόνοι σας. Όπως και να 'χει, επικολλήστε την ίδια τιμή τόσο στον watcher σας όσο και στον πίνακα ελέγχου.
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 δεν καλεί ποτέ price oracle.
- Τρέξτε τον watcher και στρέψτε τον σε εμάς
Ο watcher είναι το πάντα-ενεργό πρόγραμμα που ελέγχει το πορτοφόλι σας κάθε λίγα δευτερόλεπτα και μας υπογράφει ένα μήνυμα όταν επιβεβαιώνεται μια πληρωμή. Ορίστε το webhook URL του στη διεύθυνση του έργου σας (παρακάτω) και το secret του στην τιμή που δημιουργήσατε. Τρέξτε τον δίπλα στο πορτοφόλι σας, κάτω από 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: indexer.js + μονάδα systemd + docker-compose ↗
Είναι σχεδιασμένος να ανακτά τη διαφορά. Αν είναι εκτός λειτουργίας για ένα διάστημα, η επόμενη εκτέλεση βλέπει τις πληρωμές που έχασε και μας ενημερώνει τότε. Ένας οικιακός διακομιστής είναι μια χαρά· δεν χρειάζεστε τέλειο χρόνο λειτουργίας.
- Το webhook URL σας
Ορίστε το webhookUrl του watcher στη διεύθυνση του έργου σας. Το project id σας βρίσκεται στις ρυθμίσεις του έργου στον πίνακα ελέγχου.
https://api.coinmoebius.com/webhook/monero/<your project id> - Συνδέστε στον πίνακα ελέγχου
Add provider, επιλέξτε Be your own provider, μετά Monero. Επικολλήστε το mint endpoint URL σας και το webhook secret. Αυτό είναι όλα όσα αποθηκεύουμε, και καμία από τις δύο τιμές δεν μπορεί να αγγίξει το πορτοφόλι σας.
Αφού συνδεθείτε
Δεν υπάρχει sandbox για έναν αυτο-φιλοξενούμενο κόμβο, οπότε η πρώτη σας μικρή πραγματική πληρωμή είναι η δοκιμή:
- Δημιουργήστε ένα προϊόν και τοποθετήστε το κουμπί αγοράς σε μια σελίδα (ένα τοπικό αρχείο HTML λειτουργεί) που δείχνει στο έργο σας.
- Πληρώστε ένα μικρό ποσό Monero από το δικό σας πορτοφόλι.
- Περιμένετε επιβεβαιώσεις. Το Monero χρειάζεται περίπου είκοσι λεπτά για να επιβεβαιωθεί πλήρως, εκ σχεδιασμού.
- Ανοίξτε την καρτέλα Transactions. Όταν η νέα γραμμή φτάσει στο succeeded, το mint endpoint, ο watcher, και το secret σας λειτουργούν όλα από άκρη σε άκρη.
Αντιμετώπιση προβλημάτων
Το checkout αποτυγχάνει αμέσως.
Δεν μπορέσαμε να φτάσουμε το mint endpoint σας. Επιβεβαιώστε ότι είναι ένα δημόσιο https URL και ότι ο κόμβος σας είναι online. Ο πίνακας ελέγχου το δείχνει αυτό ως μήνυμα προσβασιμότητας όταν αποθηκεύετε.
Ο αγοραστής πλήρωσε αλλά η παραγγελία μένει σε εκκρεμότητα.
Είτε ο watcher δεν τρέχει, είτε το secret του δεν ταιριάζει. Επιβεβαιώστε ότι η διεργασία watcher είναι ενεργή και ότι το MONERO_HMAC_SECRET του είναι η ακριβής τιμή που επικολλήσατε στον πίνακα ελέγχου.
Η πληρωμή άργησε λίγο να εμφανιστεί.
Αυτό είναι φυσιολογικό. Το Monero επιβεβαιώνεται σε αρκετά μπλοκ· ο watcher περιμένει δέκα επιβεβαιώσεις (περίπου είκοσι λεπτά) πριν αναφέρει επιτυχία.
Καλό να γνωρίζετε
Κρατήστε ένα πορτοφόλι μόνο-προβολής στο hot box. Ο watcher χρειάζεται μόνο να βλέπει τις εισερχόμενες πληρωμές. Κρατήστε το spend key σας σε ένα ξεχωριστό, offline μηχάνημα και κάντε sweep των χρημάτων από εκεί.
Μην εκθέτετε ποτέ το wallet RPC. Μόνο το mint endpoint είναι δημόσιο. Δέστε το wallet RPC στο localhost ή σε ιδιωτικό δίκτυο ανά πάσα στιγμή.
Ο χρόνος εκτός λειτουργίας είναι φθηνός. Ο watcher ανακτά τη διαφορά μετά από μια διακοπή και αναφέρει τις πληρωμές που έχασε. Τίποτα δεν χάνεται.
Εναλλαγή του secret. Δημιουργήστε ένα νέο secret οποτεδήποτε, μετά επικολλήστε το τόσο στον watcher όσο και στον πίνακα ελέγχου.
Monero circular economy
Ερωτήσεις; Join our Discord