From 1b0a750c7b226d6bfb5749e879968d6f3b961433 Mon Sep 17 00:00:00 2001 From: Riccardo Spagni Date: Wed, 18 Feb 2015 23:35:30 +0200 Subject: [PATCH] added programmatically accepting Monero section, tweaks to CLI samples, enabled tooltips --- _config.yml | 5 +++ _includes/footer.html | 5 +++ getting-started/accepting.md | 63 +++++++++++++++++++++++++++++++++++- getting-started/running.md | 24 +++++++------- knowledge-base/openalias.md | 4 +-- 5 files changed, 86 insertions(+), 15 deletions(-) diff --git a/_config.yml b/_config.yml index 6b8eb921..df0b2c5a 100644 --- a/_config.yml +++ b/_config.yml @@ -7,6 +7,11 @@ url: "https://getmonero.org" markdown: kramdown +# Kramdown was using smart quotes, which messes up CLI examples +# TODO: smart quotes are actually quite pretty, so this is perhaps better handled via a plugin that reverts them for CLI blocks +kramdown: + smart_quotes: ["apos", "apos", "quot", "quot"] + exclude: ["README.md"] paginate: 10 diff --git a/_includes/footer.html b/_includes/footer.html index 52d25d0d..94bb7465 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -16,3 +16,8 @@ + \ No newline at end of file diff --git a/getting-started/accepting.md b/getting-started/accepting.md index c1572141..a603e098 100644 --- a/getting-started/accepting.md +++ b/getting-started/accepting.md @@ -9,4 +9,65 @@ icon: "icon_accepting" attribution: "" --- -### Work in Progress \ No newline at end of file +### The Basics + +Monero works a little differently to what you may have become accustomed to from other cryptocurrencies. In the case of a digital currency like Bitcoin and its many derivatives merchant payment systems will usually create a new recipient address for each payment or user. + +However, because Monero has stealth addresses there is no need to have separate recipient addresses for each payment or user, and a single wallet address can be published. Instead, when receiving payments a merchant will provide the person paying with a "payment ID". + +A payment ID is a hexadecimal string that is 64 characters long, and is normally randomly created by the merchant. An example of a payment ID is: 666c75666679706f6e7920697320746865206265737420706f6e792065766572 + +### Checking for a Payment in simplewallet + +If you want to check for a payment using simplewallet you can use the "payments" command followed by the payment ID or payment IDs you want to check. For example: + +{:.cli-code} +[wallet 49VNLa]: payments 666c75666679706f6e7920697320746865206265737420706f6e792065766572 + payment transaction height amount unlock time +<666c75666679706f6e79206973207> <7ba4cd810c9b4096869849458181e98e> 441942 30.00000 0 +[wallet 49VNLa]:





+ +If you need to check for payments programmatically, then details follow the next section. + +### Receiving a Payment Step-by-Step + + Generate a random 64 character hexadecimal string for the payment + Communicate the payment ID and Monero address to the individual who is making payment + Check for the payment using the "payments" command in simplewallet + +### Checking for a Payment Programatically + +In order to check for a payment programatically you can use the get_payments or get_bulk_payments JSON RPC API calls. + +*get_payments*: this requires a payment_id parameter with a single payment ID. + +*get_bulk_payments*: this is the preferred method, and requires two parameters, payment_ids - a JSON array of payment IDs - and an optional min_block_height - the block height to scan from. + +An example of returned data is as follows: + +{:.cli-code} +[ monero->~ ]$ curl -X POST http://127.0.0.1:18500/json_rpc -d '{"jsonrpc":"2.0","method":"get_bulk_payments","id":"test", "params":{"payment_ids": ["666c75666679706f6e7920697320746865206265737420706f6e792065766572"]}}' -H "Content-Type: application/json" +{ + "id": "test", + "jsonrpc": "2.0", + "result": { + "payments": [{ + "amount": 30000000000000, + "block_height": 441942, + "payment_id": "666c75666679706f6e7920697320746865206265737420706f6e792065766572", + "tx_hash": "7ba4cd810c9b4096869849458181e98e18b6474ab66415de0f4ccf7ab1162fdf", + "unlock_time": 0 + }] + } +} + +It is important to note that the amounts returned are in base Monero units and not in the display units normally used in end-user applications. Also, since a transaction will typically have multiple outputs that add up to the total required for the payment, the amounts should be grouped by the tx_hash or the payment_id and added together. Additionally, as multiple outputs can have the same amount, it is imperative not to try and filter out the returned data from a single get_bulk_payments call. + +Before scanning for payments it is useful to check against the daemon RPC API (the get_info RPC call) to see if additional blocks have been received. Typically you would want to then scan only from that received block on by specifying it as the min_block_height to get_bulk_payments. + +### Programatically Scanning for Payments + + Get the current block height from the daemon, only proceed if it has increased since our last scan + Call the get_bulk_payments RPC API call with our last scanned height and the list of all payment IDs in our system + Store the current block height as our last scanned height + Remove duplicates based on transaction hashes we have already received and processed diff --git a/getting-started/running.md b/getting-started/running.md index b57ad58e..a375124c 100644 --- a/getting-started/running.md +++ b/getting-started/running.md @@ -34,18 +34,18 @@ Once you have the files downloaded and unpacked you don't need to do anything be When starting Monero for the first time you will see something similar to this screen: {:.cli-code} -2015-Feb-18 00:09:45.699104 Core initialized OK -2015-Feb-18 00:09:45.700143 Starting core RPC server\.\.\. -2015-Feb-18 00:09:45.700229 Run net_service loop( 2 threads)\.\.\. -2015-Feb-18 00:09:45.700472 [SRV_MAIN]Core RPC server started ok -2015-Feb-18 00:09:45.700543 [SRV_MAIN]Starting P2P net loop\.\.\. -2015-Feb-18 00:09:45.701066 [SRV_MAIN]Run net_service loop( 10 threads)\.\.\. -2015-Feb-18 00:09:46.702787 [P2P1] -2015-Feb-18 00:09:54.923018 [P2P6][5.9.25.103:28080 OUT]Sync data returned unknown top block: 228593 -> 228609 [16 blocks (0 days) behind]
-SYNCHRONIZATION started
-2015-Feb-18 00:09:57.803744 [P2P1][197.242.158.240:28080 OUT]Sync data returned unknown top block: 228593 -> 228609 [16 blocks (0 days) behind]
-SYNCHRONIZATION started

-2015-Feb-18 00:10:01.719800 [P2P4][197.242.158.240:28080 OUT] SYNCHRONIZED OK
+2015-Feb-18 00:09:45.699104 Core initialized OK +2015-Feb-18 00:09:45.700143 Starting core RPC server\.\.\. +2015-Feb-18 00:09:45.700229 Run net_service loop( 2 threads)\.\.\. +2015-Feb-18 00:09:45.700472 [SRV_MAIN]Core RPC server started ok +2015-Feb-18 00:09:45.700543 [SRV_MAIN]Starting P2P net loop\.\.\. +2015-Feb-18 00:09:45.701066 [SRV_MAIN]Run net_service loop( 10 threads)\.\.\. +2015-Feb-18 00:09:46.702787 [P2P1] +2015-Feb-18 00:09:54.923018 [P2P6][5.9.25.103:28080 OUT]Sync data returned unknown top block: 228593 -> 228609 [16 blocks (0 days) behind] +SYNCHRONIZATION started +2015-Feb-18 00:09:57.803744 [P2P1][197.242.158.240:28080 OUT]Sync data returned unknown top block: 228593 -> 228609 [16 blocks (0 days) behind] +SYNCHRONIZATION started +2015-Feb-18 00:10:01.719800 [P2P4][197.242.158.240:28080 OUT] SYNCHRONIZED OK The yellow text indicates it is receiving blocks as it synchronises up with the rest of the Monero network. The green "synchronized ok" text will appear once it has correctly synched up. Once you see this there's nothing further you need to do, you are now running a Monero node! diff --git a/knowledge-base/openalias.md b/knowledge-base/openalias.md index 26ed8fc9..acae5121 100644 --- a/knowledge-base/openalias.md +++ b/knowledge-base/openalias.md @@ -1,9 +1,9 @@ --- layout: static_page -title: "The OpenAlias Standard" +title: "The OpenAlias Project" title-pre-kick: "The " title-kick: "OpenAlias " -title-post-kick: "Standard" +title-post-kick: "Project" kick-class: "oa-kicks" icon: "icon_openalias" attribution: ""