Decentralized and open-source cryptocurrency that offers privacy and transparency of transactions.

Ditcoin aims to be a tangible and untraceable digital medium of exchange. It intrinsically has a higher degree of privacy than Bitcoin or any of its various forks.

private - anonymous - flexible
Untraceable payments
Unlinkable transactions
Blockchain analysis resistance
Adaptive parameters
privacy through the use of groundbreaking cryptography
PoW algorithm: CryptoNight

CPU + GPU mining (about 1:1 performance for now). Memory-bound by design using AES encryption and several SHA-3 candidates.

Max supply: 37,000,000 * 108 (37 Million in standard value)

Initial number of atomic units is M = 9,000,000 * 108. (taken as the premine)

Block reward: constant after the premine emission

Uses a recurrence relation at the initial stage. Block reward = (M - A) * 2-12 * 10-8. Become a constant of 15 DTC per minute (30 DTC each 2 minutes) after the premine emission, and then 0 DTC after the maximum supply emission. (where A = number of atomic units that is on current circulation. The current money in circulation will be then: A * 10-8)

Block time: initialy 60 seconds and 120 seconds after the hardfork version 2
Premine: up to the block 20424

That said, mining still very beneficial with firsts years of the currency's network

flexible - secured
The Basics

Ditcoin 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 Ditcoin has stealth addresses there is no need to have separate recipient addresses for each payment or user, and a single account 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 16 or 64 characters long, and is normally randomly created by the merchant. An example of a payment ID is: 000c75666679706f6e7920697320111115206265737420706f6e7920657689997

Checking for a Payment with Ditcoin wallet

If you want to check for a payment using ditcoin-wallet-cli you can use the "payments" command followed by the payment ID or payment IDs you want to check. Note that this can also be done with GUI wallet.

Receiving a Payment Step-by-Step

> Generate a random 64 character hexadecimal string for the payment
> Communicate the payment ID and Ditcoin address to the individual who is making payment
> Check for the payment using the "payments" command in ditcoin-wallet-cli or GUI wallet

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
It is important to note that the amounts returned are in base Ditcoin 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