Cosa ti serve
| Campo | Cosa fa |
|---|---|
| URL dell'endpoint di mint | La route pubblica di mint degli indirizzi del tuo nodo. La chiamiamo per ottenere un indirizzo fresco per ogni ordine. Non segreta. |
| Webhook secret | Un segreto condiviso con cui il tuo watcher firma e che noi verifichiamo. Non può mai toccare il tuo wallet. Segreta. |
Questa opzione è per chi vuole gestire il proprio nodo. Gestisci anche un nodo Monero, un wallet di sola visualizzazione e un piccolo watcher sempre attivo sulla tua macchina. Questa guida ti accompagna in tutto. Se preferisci non gestire nulla, collega invece un servizio cripto ospitato.
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.
Perché chiediamo ogni campo
URL dell'endpoint di mint
Quando un cliente fa clic su Compra, chiediamo al tuo nodo un indirizzo fresco da mostrargli. Quella richiesta va a questa unica route pubblica. Restituisce un indirizzo e nient'altro; il tuo wallet resta privato dietro di esso.
Webhook secret
Il tuo watcher ci dice "questo ordine è pagato" inviandoci un messaggio firmato. Questo segreto condiviso ci permette di confermare che il messaggio provenga davvero dal tuo watcher, così nessuno può falsificare un evento pagato. Non può leggere nulla né muovere nulla.
Configurazione
- Cosa gestirai
Tre cose, tutte sulla tua macchina. Niente di tutto questo viene dato a noi tranne l'URL pubblico di mint e il segreto condiviso.
- Un nodo Monero (monerod) e un wallet di sola visualizzazione (monero-wallet-rpc), tenuti privati.
- Un endpoint di mint: una piccola route pubblica che distribuisce un indirizzo fresco per ordine.
- Un watcher: un minuscolo programma sempre attivo che osserva il tuo wallet e ci dice quando un pagamento arriva.
- Crea un wallet di sola visualizzazione
Un wallet di sola visualizzazione può vedere i pagamenti in arrivo e generare indirizzi di ricezione freschi, ma non può spendere. Lo costruisci dall'indirizzo del tuo wallet reale e dalla sua private view key, nient'altro. È questo che permette al tuo nodo di rilevare i pagamenti senza mai avere il potere di muoverli.
monero-wallet-cli --generate-from-view-key ~/monero/view-onlyChiede il tuo indirizzo primario e la tua private view key. Non inserire mai il tuo seed o la spend key, tienili su una macchina separata. Scrive view-only e view-only.keys; imposta una password e salvala in un file (wallet.password, accanto al wallet) per il passo successivo.
- Esegui il tuo nodo Monero
Il daemon sincronizza e mantiene la blockchain. Eseguilo come servizio (systemd o Docker) così si riavvia da solo. Il suo RPC ascolta su 127.0.0.1:18081.
monerod --data-dir ~/.bitmonero --prune-blockchain --restricted-rpcUn nodo prunato mantiene piccolo l'ingombro su disco e vede comunque ogni pagamento in arrivo. Il nodo raggiunge la rete ma non espone nulla di pubblico.
- Esegui il wallet RPC
Un secondo servizio che apre il wallet di sola visualizzazione e risponde all'endpoint di mint e al watcher. Puntalo sul tuo nodo e legalo a localhost. Eseguilo anch'esso come servizio.
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-loginNon esporre mai il wallet RPC su internet pubblico; legalo a localhost o a una rete privata. --disable-rpc-login va bene solo perché è solo su localhost; usa --rpc-login se è raggiungibile da altrove. Solo l'endpoint di mint qui sotto è pubblico.
- Installa il pacchetto Monero di Coin Moebius
Fornisce il minter di indirizzi, il firmatario del webhook e il watcher, così scrivi quasi nessun codice. Il percorso più veloce è l'esempio pronto all'uso qui sotto: copia la cartella, riempi quattro valori e avvialo.
npm install @aquarian-metals/coin-moebius-moneroIl pacchetto su npm ↗Esempio pronto all'uso (nodo, endpoint di mint, watcher) ↗
- Genera il tuo webhook secret
Un valore casuale forte che firma e verifica il webhook. Due modi per crearne uno, a tua scelta: fai clic su Genera quando aggiungi il provider nella dashboard (gira nel tuo browser, mai sui nostri server), o esegui tu il comando qui sotto. In entrambi i casi, incolla lo stesso valore sia nel tuo watcher sia nella dashboard.
openssl rand -hex 32 - Allestisci l'endpoint di mint
Una route POST pubblica che fa da facciata al tuo wallet. Usa il createMoneroCreator del pacchetto per generare un indirizzo fresco per ordine. È l'unica cosa che esponi a internet, ed è sicuro esporla: restituisce un indirizzo di ricezione e non muove denaro.
// 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 JSONScegli tu da dove vengono i prezzi. Coin Moebius non chiama mai un oracolo dei prezzi.
- Esegui il watcher e puntalo su di noi
Il watcher è il programma sempre attivo che controlla il tuo wallet ogni pochi secondi e ci firma un messaggio quando un pagamento si conferma. Imposta il suo URL di webhook sull'indirizzo del tuo progetto (sotto) e il suo segreto sul valore che hai generato. Eseguilo accanto al tuo wallet, sotto systemd o 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, // il tuo URL Coin Moebius, sotto hmacSecret: process.env.MONERO_HMAC_SECRET, // il segreto che hai generato requiredConfirmations: 10, }); watcher.start();Ricetta del watcher: indexer.js + unità systemd + docker-compose ↗
È a recupero per progettazione. Se resta offline per un periodo, l'esecuzione successiva vede i pagamenti che ha perso e ce li comunica allora. Un server di casa va bene; non ti serve un uptime perfetto.
- Il tuo URL di webhook
Imposta il webhookUrl del watcher sull'indirizzo del tuo progetto. Il tuo id progetto è nelle impostazioni del progetto nella dashboard.
https://api.coinmoebius.com/webhook/monero/<your project id> - Collega nella dashboard
Aggiungi provider, scegli Sii il tuo provider, poi Monero. Incolla l'URL del tuo endpoint di mint e il webhook secret. È tutto ciò che conserviamo, e nessuno dei due valori può toccare il tuo wallet.
Dopo aver collegato
Non c'è sandbox per un nodo self-hosted, quindi il tuo primo piccolo pagamento reale è il test:
- Crea un prodotto e metti il pulsante di acquisto su una pagina (un file HTML locale va bene) puntato sul tuo progetto.
- Paga un piccolo importo di Monero dal tuo wallet.
- Aspetta le conferme. Monero impiega circa venti minuti per confermarsi del tutto, per progettazione.
- Apri la scheda Transazioni. Quando la nuova riga raggiunge succeeded, il tuo endpoint di mint, il watcher e il segreto funzionano tutti da capo a fondo.
Risoluzione dei problemi
Il checkout fallisce subito.
Non siamo riusciti a raggiungere il tuo endpoint di mint. Conferma che sia un URL https pubblico e che il tuo nodo sia online. La dashboard lo mostra come messaggio di raggiungibilità quando salvi.
Il cliente ha pagato ma l'ordine resta in sospeso.
O il watcher non è in esecuzione, o il suo segreto non corrisponde. Conferma che il processo del watcher sia attivo e che il suo MONERO_HMAC_SECRET sia il valore esatto che hai incollato nella dashboard.
Il pagamento ha impiegato un po' ad apparire.
È normale. Monero si conferma su più blocchi; il watcher aspetta dieci conferme (circa venti minuti) prima di segnalare il successo.
Buono a sapersi
Tieni un wallet di sola visualizzazione sulla macchina connessa. Il watcher deve solo vedere i pagamenti in arrivo. Tieni la tua spend key su una macchina separata e offline e preleva i fondi da lì.
Non esporre mai il wallet RPC. Solo l'endpoint di mint è pubblico. Lega il wallet RPC a localhost o a una rete privata in ogni momento.
Il downtime costa poco. Il watcher recupera dopo un'interruzione e segnala i pagamenti che ha perso. Non si perde nulla.
Ruotare il segreto. Genera un nuovo segreto quando vuoi, poi incollalo sia nel watcher sia nella dashboard.
Monero circular economy
Domande? Join our Discord