Working with file service I realized, that we need not only alternative ID but also user shadowname.

URL: http://[IP]/files/pub/AlternativeID-Shadowname-FileHash

AlternativeID = sign(user_private_key, “node.url-node.nonce-username-user.nonce-alternative-123”)
Used to verify the user

FileHash = MD5(filename)
Filehash is needed to determine which file to download not showing real file name for security reasons

Shadowname = MD5(Username-node.url-node.nonce-username-user.nonce)
Generated when user gets registered (joined) and stored in local users db (.json file by default). Used to determine the user from which to download file.


  1. If we are using pregenerated ID for each file, we need separate database for that. That means more code and less reliable.
  2. Owner of file remains anonymous


  1. Use Shadowname everywhere instead of username to increase security.



A little changes on registration process …

{address: privateness-address-to-send-coin-hours} or ERROR

{joined: true-or-false} or ERROR

The user is “joined” (registered) if there are at least one transaction on user’s address “privateness-address-to-send-coin-hours”.

Userhash is also more secure than username.



The problem:
Skycoin/Privateness network at every transaction takes 10% fee of all Coin-Hours on input address. This makes small transactions impossible.

The solution:
Make a random payment every hour.
The user will pay for a whole month in 1/720 probability in every hour (month has 720 hours).
The user is valid if he has > 720 Coin-Hours on his account (user-address).

Emercoin has a similar technology



There will be TWO methods for each USER

  1. getAddress (GET)
    returns JSON: {NCH-address: NCH-ammount}
    NCH-address: deposit NCH here
    The method automaticaly generates NCH USER address if it does not exist.
  2. withdraw (POST)
    ammount: NCH-ammount

The USER — address pairs will be stored in JSON file ~/.ness/users_addr.json

There will be one Master-USER, the user which will recieve all nodes earned coin-hours.