O que você precisa
| Campo | O que faz |
|---|---|
| URL do mint endpoint | A rota pública de geração de endereços do seu nó. Nós a chamamos para obter um endereço novo a cada pedido. Não é secreta. |
| Segredo do webhook | Um segredo compartilhado que o seu observador usa para assinar e nós verificamos. Ele nunca pode tocar na sua carteira. Secreto. |
Esta opção é para quem quer rodar o próprio nó. Você também roda um nó Monero, uma carteira somente-visualização, e um pequeno observador sempre ativo na sua própria máquina. Este guia percorre tudo isso. Se você preferir não rodar nada, conecte um serviço de cripto hospedado em vez disso.
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.
Por que pedimos cada campo
URL do mint endpoint
Quando um comprador clica em Comprar, pedimos ao seu nó um endereço novo para mostrar a ele. Essa requisição vai para esta única rota pública. Ela retorna um endereço e nada mais; a sua carteira permanece privada por trás dela.
Segredo do webhook
O seu observador nos diz "este pedido está pago" enviando uma mensagem assinada. Este segredo compartilhado nos permite confirmar que a mensagem veio genuinamente do seu observador, para que ninguém possa forjar um evento de pago. Ele não consegue ler nada nem mover nada.
Configurar
- O que você vai rodar
Três coisas, todas na sua própria máquina. Nada aqui é dado a nós exceto a URL pública de mint e o segredo compartilhado.
- Um nó Monero (monerod) e uma carteira somente-visualização (monero-wallet-rpc), mantidos privados.
- Um mint endpoint: uma pequena rota pública que entrega um endereço novo por pedido.
- Um observador: um programinha sempre ativo que observa a sua carteira e nos avisa quando um pagamento chega.
- Crie uma carteira somente-visualização
Uma carteira somente-visualização consegue ver pagamentos recebidos e gerar endereços de recebimento novos, mas não consegue gastar. Você a constrói a partir do endereço da sua carteira real e da chave de visualização privada dela, nada mais. É isso que permite ao seu nó detectar pagamentos sem nunca ter o poder de movê-los.
monero-wallet-cli --generate-from-view-key ~/monero/view-onlyEla pede o seu endereço primário e a sua chave de visualização privada. Nunca insira a sua seed ou chave de gasto, mantenha-as em uma máquina separada. Ela grava view-only e view-only.keys; defina uma senha e salve-a em um arquivo (wallet.password, ao lado da carteira) para o próximo passo.
- Rode o seu nó Monero
O daemon sincroniza e mantém a blockchain. Rode-o como um serviço (systemd ou Docker) para que reinicie sozinho. O RPC dele escuta em 127.0.0.1:18081.
monerod --data-dir ~/.bitmonero --prune-blockchain --restricted-rpcUm nó podado mantém a ocupação de disco pequena e ainda vê cada pagamento recebido. O nó alcança a rede mas não expõe nada público.
- Rode o wallet RPC
Um segundo serviço que abre a carteira somente-visualização e responde ao mint endpoint e ao observador. Aponte-o para o seu nó e vincule-o ao localhost. Rode-o como um serviço também.
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-loginNunca exponha o wallet RPC à internet pública; vincule-o ao localhost ou a uma rede privada. --disable-rpc-login só é seguro porque é apenas localhost; use --rpc-login se ele for alcançável de qualquer outro lugar. Apenas o mint endpoint abaixo é público.
- Instale o pacote Monero do Coin Moebius
Ele fornece o gerador de endereços, o assinador de webhook, e o observador, para que você escreva quase nenhum código. O caminho mais rápido é o exemplo pronto para rodar abaixo: copie a pasta, preencha quatro valores, e inicie-o.
npm install @aquarian-metals/coin-moebius-moneroO pacote no npm ↗Exemplo pronto para rodar (nó, mint endpoint, observador) ↗
- Gere o seu segredo de webhook
Um valor aleatório forte que assina e verifica o webhook. Duas formas de criar um, à sua escolha: clique em Gerar quando você adiciona o provedor no painel (ele roda no seu navegador, nunca nos nossos servidores), ou rode o comando abaixo você mesmo. De qualquer forma, cole o mesmo valor tanto no seu observador quanto no painel.
openssl rand -hex 32 - Coloque de pé o mint endpoint
Uma única rota POST pública que fica na frente da sua carteira. Ela usa o createMoneroCreator do pacote para gerar um endereço novo por pedido. Isto é a única coisa que você expõe à internet, e é seguro expor: retorna um endereço de recebimento e não move dinheiro.
// 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 JSONVocê escolhe de onde vêm os preços. Coin Moebius nunca chama um oráculo de preços.
- Rode o observador e aponte-o para nós
O observador é o programa sempre ativo que checa a sua carteira a cada poucos segundos e nos assina uma mensagem quando um pagamento confirma. Defina a URL de webhook dele como o endereço do seu projeto (abaixo) e o segredo dele como o valor que você gerou. Rode-o ao lado da sua carteira, sob systemd ou 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, // sua URL do Coin Moebius, abaixo hmacSecret: process.env.MONERO_HMAC_SECRET, // o segredo que você gerou requiredConfirmations: 10, }); watcher.start();Receita do observador: indexer.js + unidade systemd + docker-compose ↗
Ele recupera o atraso por design. Se ficar offline por um tempo, a próxima execução vê os pagamentos que perdeu e nos avisa então. Um servidor doméstico serve; você não precisa de tempo de atividade perfeito.
- A sua URL de webhook
Defina o webhookUrl do observador como o endereço do seu projeto. O id do seu projeto está nas configurações do projeto no painel.
https://api.coinmoebius.com/webhook/monero/<your project id> - Conecte no painel
Adicionar provedor, escolha Seja seu próprio provedor, depois Monero. Cole a URL do seu mint endpoint e o segredo do webhook. Isso é tudo o que armazenamos, e nenhum dos dois valores pode tocar na sua carteira.
Depois de conectar
Não há sandbox para um nó auto-hospedado, então o seu primeiro pequeno pagamento real é o teste:
- Crie um produto e coloque o botão de compra em uma página (um arquivo HTML local serve) apontado para o seu projeto.
- Pague um pequeno valor de Monero da sua própria carteira.
- Espere as confirmações. O Monero leva cerca de vinte minutos para confirmar completamente, por design.
- Abra a aba Transações. Quando a nova linha chegar a succeeded, o seu mint endpoint, observador, e segredo estão todos funcionando de ponta a ponta.
Solução de problemas
O checkout falha logo de cara.
Não conseguimos alcançar o seu mint endpoint. Confirme que é uma URL https pública e que o seu nó está online. O painel mostra isto como uma mensagem de alcançabilidade quando você salva.
O comprador pagou mas o pedido fica pendente.
Ou o observador não está rodando, ou o segredo dele não coincide. Confirme que o processo do observador está de pé e que o MONERO_HMAC_SECRET dele é o valor exato que você colou no painel.
O pagamento demorou um pouco para aparecer.
Isso é normal. O Monero confirma ao longo de vários blocos; o observador espera por dez confirmações (cerca de vinte minutos) antes de reportar sucesso.
Bom saber
Mantenha uma carteira somente-visualização na máquina online. O observador só precisa ver pagamentos recebidos. Mantenha a sua chave de gasto em uma máquina separada e offline e varra os fundos de lá.
Nunca exponha o wallet RPC. Apenas o mint endpoint é público. Vincule o wallet RPC ao localhost ou a uma rede privada o tempo todo.
Tempo fora do ar é barato. O observador recupera o atraso depois de uma interrupção e reporta os pagamentos que perdeu. Nada é perdido.
Rotacionando o segredo. Gere um novo segredo quando quiser, depois cole-o tanto no observador quanto no painel.
Monero circular economy
Dúvidas? Join our Discord