필요한 것
| 필드 | 하는 일 |
|---|---|
| Mint endpoint URL | 당신 노드의 공개 주소 발급 경로. 주문마다 새 주소를 얻기 위해 우리가 호출합니다. 비밀이 아닙니다. |
| Webhook secret | 당신의 워처가 서명하고 우리가 검증하는 공유 시크릿. 절대 당신의 지갑에 닿을 수 없습니다. 비밀. |
이 옵션은 직접 노드를 운영하려는 사람을 위한 것입니다. 당신은 자기 기계에서 Monero 노드, 뷰 전용 지갑, 그리고 작은 상시 워처도 운영합니다. 이 가이드가 그 전부를 안내합니다. 아무것도 운영하고 싶지 않다면, 대신 호스팅 암호화폐 서비스를 연결하세요.
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
당신의 워처가 서명된 메시지를 보내 "이 주문은 결제됨"이라고 우리에게 알립니다. 이 공유 시크릿이 그 메시지가 진짜 당신의 워처에서 온 것임을 확인하게 해, 아무도 결제 이벤트를 위조할 수 없게 합니다. 그것은 아무것도 읽거나 옮길 수 없습니다.
설정
- 당신이 운영할 것
세 가지, 모두 당신 자기 기계에서. 여기서 공개 mint URL과 공유 시크릿을 제외하고는 아무것도 우리에게 주지 않습니다.
- Monero 노드(monerod)와 뷰 전용 지갑(monero-wallet-rpc), 비공개로 유지.
- mint endpoint: 주문마다 새 주소를 내주는 하나의 작은 공개 경로.
- 워처: 당신의 지갑을 지켜보다가 결제가 들어오면 우리에게 알리는 작은 상시 프로그램.
- 뷰 전용 지갑 만들기
뷰 전용 지갑은 들어오는 결제를 보고 새 수령 주소를 발급할 수 있지만 지출할 수는 없습니다. 당신의 진짜 지갑 주소와 그 비공개 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 노드 실행하기
데몬이 동기화하고 블록체인을 보관합니다. 스스로 재시작하도록 서비스(systemd 또는 Docker)로 실행하세요. RPC는 127.0.0.1:18081에서 수신합니다.
monerod --data-dir ~/.bitmonero --prune-blockchain --restricted-rpc가지치기된 노드는 디스크 사용량을 작게 유지하면서도 모든 들어오는 결제를 봅니다. 노드는 네트워크에 닿지만 공개적으로 아무것도 노출하지 않습니다.
- wallet RPC 실행하기
뷰 전용 지갑을 열고 mint endpoint와 워처에 응답하는 두 번째 서비스. 그것을 당신의 노드로 향하게 하고 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-loginwallet RPC를 공개 인터넷에 절대 노출하지 마세요. localhost나 사설 네트워크에 바인딩하세요. --disable-rpc-login은 오직 localhost 전용이기에 괜찮습니다. 다른 어디서든 닿을 수 있다면 --rpc-login을 쓰세요. 아래의 mint endpoint만 공개입니다.
- Coin Moebius Monero 패키지 설치하기
그것이 주소 발급기, 웹훅 서명기, 워처를 제공하므로 당신은 거의 코드를 쓰지 않습니다. 가장 빠른 길은 아래의 바로 실행 가능한 예제입니다. 폴더를 복사하고, 네 개의 값을 채우고, 시작하세요.
npm install @aquarian-metals/coin-moebius-monero - 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는 가격 오라클을 절대 호출하지 않습니다.
- 워처를 실행하고 우리로 향하게 하기
워처는 몇 초마다 당신의 지갑을 확인하고 결제가 확정되면 우리에게 메시지를 서명해 보내는 상시 프로그램입니다. webhook 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, // 아래의 당신의 Coin Moebius URL hmacSecret: process.env.MONERO_HMAC_SECRET, // 당신이 생성한 시크릿 requiredConfirmations: 10, }); watcher.start();워처 레시피: indexer.js + systemd 유닛 + docker-compose ↗
설계상 따라잡기 방식입니다. 한동안 오프라인이면, 다음 실행에서 놓친 결제를 보고 그때 우리에게 알립니다. 가정용 서버도 괜찮습니다. 완벽한 가동 시간은 필요 없습니다.
- 당신의 webhook URL
워처의 webhookUrl을 당신의 프로젝트 주소로 설정하세요. 당신의 프로젝트 id는 대시보드의 프로젝트 설정에 있습니다.
https://api.coinmoebius.com/webhook/monero/<your project id> - 대시보드에서 연결하기
제공업체 추가에서 "직접 제공업체가 되기"를 고른 뒤 Monero를 고르세요. mint endpoint URL과 webhook secret을 붙여넣으세요. 그것이 우리가 저장하는 전부이며, 두 값 모두 당신의 지갑에 닿을 수 없습니다.
연결한 후
자체 호스팅 노드에는 샌드박스가 없으므로, 당신의 첫 소액 실결제가 테스트입니다:
- 상품을 만들고 당신의 프로젝트를 가리키는 페이지(로컬 HTML 파일도 됩니다)에 구매 버튼을 두세요.
- 당신 자신의 지갑에서 소액의 Monero를 결제하세요.
- 확정을 기다리세요. Monero는 설계상 완전히 확정되기까지 약 20분 걸립니다.
- 거래 탭을 여세요. 새 행이 succeeded에 도달하면, 당신의 mint endpoint, 워처, 시크릿이 모두 처음부터 끝까지 작동하는 것입니다.
문제 해결
결제가 곧바로 실패합니다.
우리가 당신의 mint endpoint에 닿지 못했습니다. 그것이 공개 https URL인지, 당신의 노드가 온라인인지 확인하세요. 저장할 때 대시보드가 이를 도달 가능성 메시지로 보여줍니다.
구매자가 결제했는데 주문이 대기 상태로 남습니다.
워처가 실행 중이 아니거나, 그 시크릿이 일치하지 않는 것입니다. 워처 프로세스가 떠 있는지, 그 MONERO_HMAC_SECRET이 대시보드에 붙여넣은 정확한 값인지 확인하세요.
결제가 표시되는 데 시간이 걸렸습니다.
그것은 정상입니다. Monero는 여러 블록에 걸쳐 확정됩니다. 워처는 성공을 보고하기 전에 열 번의 확정(약 20분)을 기다립니다.
알아두면 좋은 것
핫 박스에는 뷰 전용 지갑을 두세요. 워처는 들어오는 결제를 보기만 하면 됩니다. spend key는 별도의 오프라인 기계에 두고 거기서 자금을 쓸어가세요.
wallet RPC를 절대 노출하지 마세요. mint endpoint만 공개입니다. wallet RPC는 항상 localhost나 사설 네트워크에 바인딩하세요.
다운타임은 저렴합니다. 워처는 장애 후 따라잡고 놓친 결제를 보고합니다. 아무것도 잃지 않습니다.
시크릿 교체. 새 시크릿을 언제든 생성한 뒤 워처와 대시보드 양쪽에 붙여넣으세요.
Monero circular economy
질문이 있으신가요? Join our Discord