Todos os provedores

Monero

Você roda o seu próprio nó Monero, e o pagamento vai direto para a sua carteira. Nenhuma empresa fica no meio, nem mesmo nós.

O que você precisa

CampoO que faz
URL do mint endpointA 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 webhookUm 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

  1. Buyer

    Taps your Coin Moebius Buy Button and pays from their own wallet.

  2. Your product page

    Your Coin Moebius Buy Button asks Coin Moebius to start a checkout.

  3. Coin Moebius Messages only

    Gets a fresh address from your server and shows it to the buyer.

  4. Blockchain

    Carries the coins from the buyer straight to you.

    • Monero
    • Zano
    • Freedom Dollar
    • Bitcoin
    • Bitcoin Cash
  5. Your wallet

    Receives the coins.

  6. 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

  1. 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.
  2. 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-only

    Ela 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.

  3. 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-rpc

    Um 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.

  4. 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-login

    Nunca 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.

  5. 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-monero
  6. 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
  7. 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 JSON

    Você escolhe de onde vêm os preços. Coin Moebius nunca chama um oráculo de preços.

  8. 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();

    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.

  9. 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>
  10. 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:

  1. Crie um produto e coloque o botão de compra em uma página (um arquivo HTML local serve) apontado para o seu projeto.
  2. Pague um pequeno valor de Monero da sua própria carteira.
  3. Espere as confirmações. O Monero leva cerca de vinte minutos para confirmar completamente, por design.
  4. 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

Pronto para conectar um provedor?

Escolha os provedores que você já usa. Os compradores pagam através das suas contas, e você mantém um único botão de compra.