NIP: An Alias Proposal System

For any blockchain to gain main stream adoption, send by name must be enabled.

Going to websites, email, and even phonebooks in smart phones have implemented send by name, each in their own way, but from the end user experience, it is very similar.

NEM’s Namespace is a powerful feature that along with other NEM functions can allow a scalable and useful alias system to tag individual accounts with an alias.


  1. All aliases must fall under the domain of a namespace. This helps with reputation.

  2. After a person has registered a namespace, they identify the account they would like to assign an alias too and pick out the alias. The following shows and example of the important pieces of information that need to be known.

  • Owned Alias: foobarltd (owned by TANXPO-UPPCJH-L3PLUH-Y5M6AE-6B47H3-YZ5ZCD-FMXH)
  • Account that needs an alias: TBR3WV-2AS2C5-MGG73H-QFWIZR-EP4RCL-SANKKQ-QRRL
  • Desired alias to tag above account: employee1002@foobarltd

3)The desired result then is that when a person enters employee1002@foobarltd into the send field on a wallet, the transaction will be forwarded automatically to TBR3WV-2AS2C5-MGG73H-QFWIZR-EP4RCL-SANKKQ-QRRL

  1. In this example we can see the company I own is named foobarltd , and I have a new employee. Before I had 1001 employees, so I need an easy and scalable way to add the 1002nd and the next thousand after that. This system will do that for us.

  2. I run the alias tag employee1002@foobarltd through the NEM brainwallet generator. That creates a pointer account with the address of TDHUNF-7KUBEC-KUSBCI-PHY2ON-MNYEKH-2WBVOO-3W65. This can be verified by going to http://blockexplore.in/static/brain-wallet-to-key.html. It should be noted that each alias will always produce a unique pointer account.

  3. Now that I know the pointer account. I log into the account that owns the namespace foobarltd and send a transaction to the pointer account. This transaction will have in its message contents the account that needs to receive all funds sent to employee1002@foobarltd.

  • Message/Alias Asigning Account and Namespace: foobarltd (owned by TANXPO-UPPCJH-L3PLUH-Y5M6AE-6B47H3-YZ5ZCD-FMXH)

  • Message Receiving Account (pointer account): TDHUNF-7KUBEC-KUSBCI-PHY2ON-MNYEKH-2WBVOO-3W65

  • Message Content: TBR3WV-2AS2C5-MGG73H-QFWIZR-EP4RCL-SANKKQ-QRRL (account that really wants to receive the funds)

  1. The following example was made.
    Tx Hash: 0723273169d8936d6fc0f290b5cb0d0486f97df4603af2b570160e7be38078df
    Nembex Link: http://bob.nem.ninja:8765/#/transfer/0723273169d8936d6fc0f290b5cb0d0486f97df4603af2b570160e7be38078df

  2. Now that an alias has been made and assigned how exactly will it work?

  • Any NEM user can type into the send box the alias employee1002@foobarltd.

  • That is then interpreted by the wallet as an account to search. It will search TDHUNF-7KUBEC-KUSBCI-PHY2ON-MNYEKH-2WBVOO-3W65 and in particular it will look at the content of the first message sent to that account.

  • Searching that account finds the first transaction and the first message to that account is written as, “TBR3WV-2AS2C5-MGG73H-QFWIZR-EP4RCL-SANKKQ-QRRL”.

  • Wallet now interprets TBR3WV-2AS2C5-MGG73H-QFWIZR-EP4RCL-SANKKQ-QRRL = employee1002@foobarltd. Now that the association is made, it autofills the send to box with TBR3WV-2AS2C5-MGG73H-QFWIZR-EP4RCL-SANKKQ-QRRL and the transaction may proceed.

  1. Send by name is now enabled and any account can be assigned any alias under a namespace by the namespace owner.

  2. The above is a wallet side protocol. One thing that might be needed is to check the pointing transaction to see if it was indeed made by the person that owned that namespace. The person that owns the namespace foobarltd should be the only one that can make anyalias@ foobarltd.

  3. It would be much nicer if this protocol was handled on the NIS level, where when a person makes an alias pointing transaction that the NIS has pre-verified that the owner of that namespace is the only one sending it, and that when the transaction is being formed, it is made is a way that makes it known to all NIS that it is a send by alias transaction and all NIS can confirm that transaction.

  4. This system would work in a very similar fashion to the domain system and email system on the internet. Any person that buys an internet domain can now make emails under that domain for their organization or peers. In the same way, any person with a namespace should be able to make an alias for as many accounts as they like.
    It can also scale indefinitely.

  5. While it took me a while to explain the process, it is actually quite simple and is deterministic and quick to automate. A person assigning an alias could have the whole process made very simple for them by filling in some simple text boxes of “alias to assign” and “account to assign it to” and then they click send.

  6. And as for the people wanting to send to that alias, from the user experience side, they need only to type the alias tag in the send to box and the rest is automated for them.

3 Likes

Is this concept of alias applied in any other cryptocurrencies out there? Because, I was thinking about this same problem this week and how alias could make the life easier for new users and companies. It’s really hard for someone that is not in the IT circle and see this kind of information, numbers and letters forming a key that can be used for transactions and bla bla bla. Just give them a unique and readable name and let the software handle the hard part. Because it’s easy to remember and you don’t have to grab you cellphone to giver the QR code, your note with the address or something like that. You’ll just say your alias like you mentioned above, alias@namespace and send the coins. I hope this feature can be done, this is going to be awesome. Thanks for bringing this project to us.

I tested a lot of platforms and I haven’t found one that has implemented an alias@domain system. An alias@domain system is so important because it shows your reputation and affiliation with a private domain, but also something very unique that applies to you personally in the alias part.

A blockchain will have to have send by name to become popularized. Addresses are terrible. QRs are better but still painful. One touch NFC is great but you need to be standing next to them. Send by name is the best if a person isn’t right in front of you. And I have been looking at all the send by name methods and I like alias@domain the best complementing local address books.

Another great thing about this alias system is that it is partially anonymous. Yes. Really.

Look in my example above.

We can look at the blockchain and know that foobarltd assigned an alias to another account, but there is no way to know what that alias is without brute forcing the name. And if a person picks a good enough alias for the domain, it can’t easily be brute forced.

For some basic identity services I could have one account flynotwalk38@foobarltd which is super easy for me to remember and hard to brute force. I could have lots of businesses/organizations putting encrypted information in there. That could be my profile everybody could see there was an account and lots of different entities were leaving notes under that alias but others wouldn’t know who it was easily or what was being said about that account/person.

I don’t remember if it is possible transferring the ownership of a sub namespace.
Anyway, in a big organization, it would be useful if I can delegate someone else to create aliases for my sub namespaces

Root namepaces which would contain all their subs and mosaics might someday be transferable, but I am not sure if sub-namespaces by itself ever will be.

If somebody is going to have a project that is separate than yours, it is in their best interest to enter into the namespace system with their own, that way they don’t have to trust you to renew all the time.

That is a very good point. Lets say I am the CEO of a company with 5000 employees. Of course I want the key to just be with me, and I won’t want to give my key to a low level employee in human resources to make new aliases for my employees each day.

Will need to think about how that could be solved.

Of course I could make the account a 2 of 3, where I had two and then every so often they initiate a batch of transactions. With the mobile app, it is really easy to just sign so that is nice.

But really there needs to be an even better solution than that. I’ll think on it.

We would need some kind of delegated alias assigning feature.

Well, it seems to be interesting. I have some question about 5):
5) I run the alias tag employee1002@foobarltd through the NEM
brainwallet generator. That creates a pointer account with the address
of TDHUNF-7KUBEC-KUSBCI-PHY2ON-MNYEKH-2WBVOO-3W65. This can be
verified by going to http://blockexplore.in/static/brain-wallet-to-key.html5. It should be noted that each alias will always produce a unique pointer account.
What brainwallet generator does is to map alias to address. Another way to say, when I want a nem account, it requires me first to get a namespace. Right?
If right, it may conflict with current nem implementation. I will have an account first, then register my unique/global namespace. Now that we have unique namespace, it can use for identifying the only one,why we need account concept in nem system?
If that, we can mimic the email way to send transactions. No account required, or it is transparent to users.

I consider that whether anonymity and reputation can both achievable. If we add namespace to represent reputation, it no doubt shrink the scale of ones want to be anonymous. For example, an middle enterprise will use this alias@namespace service. Namespace here can represent enterprise reputation, reputation is something people know and agree.

I am a new fellow of nem. I am not familiar with it specific implementation. However, this is my intuition. Thanks!

Namespaces were designed with businesses in mind. So they aren’t good for anonymity.

Lots of people have an account and don’t own a namespace. In fact most accounts won’t have a namespace, just like most people don’t have their own website.

Every private key is hashed into a public key and then every public key is hashed into an account address. So in many ways and address is the same thing as a public key.

If you want to own a namespace, you have to first make an account and fund it, and then with the money in that account by a namespace for that account.

This proposal is for after a person owns a namespace, they could use it for giving an alias to any account, either their own or another person’s account. This is just like if I own a website, I can use that website to make an email for myself, or I could make emails for other people at my website too if I wanted.

:smiley:

One problem is about wallet. I want to use local nis to proxy my ncc. That requires me to modify some configures in the folder of NIS. But to me, I often change my ip address, if change ip, then reconfigure that. I should be suitable and rational. However, my wallet could not be opened after doing reconfiguration. Afterwards, I found that in another place where is used to store nem data and log, have a json format (ncc.cfg) to store the old IP address which is the fundamental problem. So I should change two places. A little hard of use.

One idea to solve, NIS server can have a configurable place in GUI, instead of using ncc to configure, it should be separated completely. NCC can automatically find local NIS, and default use local NIS. NCC booted also can configure to get remote NIS by setting remote NIS IP. When NCC booted, according to its configuration, it connected to remote or local NIS. Another way to say, ncc is only in charge of connect to NIS, default local nis service. But where NIS is, nis can be configured in GUI manner.
This will more make sense.

We will hopefully switch to Lightwallet which will run out of the NIS, so that should help.

I like this idea. Is the support in NEM planned? It would then feel a bit like Paypal.

Alias system has been implemented in Nanowallet for awhile now.

https://docs.nem.io/en/nanowallet/namespaces/alias-system

1 Like

Well, doesn’t convince me from end user point of view. It need to be easier without buying/setting up a namespace.