2

I'm setting up an account and noticed:

The recipient account is an unknown account, meaning it has never had an incoming or outgoing transaction. To submit this request you must supply the recipient public key also.

Please correct me if this is right or not. So when setting up my first NXT address, it creates a public + private key on my local machine. Now the public key is used to generate my NXT address like this:

NXT-XXXX-XXXX-XXXX-XXXX

So does this mean my public key which is a 64 character like this: 18c6e5c1840d044243434dc352672c0b889e332249f240600149baaf978d8870

used to generate the shortened NXT address? (ex. NXT-XXXX-XXXX...)

Is this the reason why even if I gave my NXT address to someone, it wouldn't work since I never sent a transaction out with my public key which also broadcasts my NXT address to show it exists?

I'm still very confused in the fact of why I have to send out a transaction to secure my NXT address. In bitcoin we don't have to do that and I want to understand why this is the case. Was it meant to make it easier to type out? Why didn't NXT just stick with using just the public key as the address?

It seems like its a 2 step process as we have to first generate a public+private key then use those keys to generate a NXT address, and then broadcast this NXT address to the network to register it saying "this NXT address belongs to this public key". Right?

  • That can't be what is going on. Since all transactions cost 1nxt, and new account has no NXT, than a new account's Public Key would never be broadcaster, since it would have not NXT with which to broadcast. Either way, its an annoying error, specially since the public key is not easily accessible on client settings. – Juan S. Galt Sep 14 '14 at 19:29
2

It is confusing, especially since the Whitepaper:Nxt is misleading when it states:

When an account is accessed by a secret passphrase for the very first time, it is not secured by a public key. When the first outgoing transaction from an account is made, the 256-bit public key derived from the passphrase is stored on the blockchain, and this secures the account.

It is not possible to send a transaction from a brand new account since it has a zero NXT balance and the minimum transaction fee is 1 NXT. Therefore, the only way to secure a new account is to fund it from some other account using the account ID together with the public key, which is then recorded in the blockchain.

The forms used for sending NXT, even on the major exchanges, now provide a field for the public key, in case it is the first transaction to a brand new account. Otherwise, the public key field can be left empty.

The reason why this one-time extra step is necessary is because the 8-byte account ID is much shorter than the 32-byte public key it is derived from. There are many secret passphrase/public key pairs that reduce to the same account ID. But once a particular public key is associated with an account ID by storing it in the blockchain, no other secret passphrase that generates a different public key can access that account.

The developers of NXT initially chose to use an 8-byte account ID, thinking that it is more convenient than a 25-byte bitcoin address. But the trade-off is that collisions are much more likely. It was later decided that the risk of a collision was too great, but by then it was too late to increase the account ID length without a major disruption. So, the above solution was devised, which preserves the convenience factor while solving the collision problem, all at the cost of a one-time but awkward additional step.

Unfortunately, this extra step raises the entry barrier for NXT, lowering its adoption rate.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.