Discussion for revised fees

khal
Site Admin
Posts: 708
Joined: Mon May 09, 2011 5:09 pm
os: linux

Discussion for revised fees

Post by khal » Tue Jun 25, 2013 9:36 pm

First, I'll start by summarizing the name_* characteristics.

name_new
- include 20 bytes of data (a hash) : can be any value, be used as clear text
- no limit on their number : you can issue as many as you want
- cost 0.01NMC (locked), but the network doesn't force any value
- cost standard tx fees

name_firstupdate/name_update
- the name_new 0.01NMC coins must be moved with each tx (locked)
- includes 520 bytes of data max (should have been 1k, but it is bugged)
- limited to 1 per block per name
- cost standard tx fees

Advantages of this system :
- miners can't get free names because of locked coins (but, see limits below)
- anybody can use a name_new to send 20 bytes of data

Limits of this system :
- name_new is expensive (due to the locked coins for name_(first)update) compared to the space used
- anybody can change the value of the name_new to have almost free domains (the dust spam limit prevents this a bit)
- 520 characters is too small (will be changed to 9k)
- name(first)update cost only a standard tx fee

Locked coins (lost when the name expires) is not the best idea, but is an easy one. That's why it was chosen I guess.

The only way to prevent both lost coins and free names for miners is to lock coins and release them when the name expires (it means coins must follow each name_update tx, as now, and a final name_release get them back, this would also allow people to release a name before it ends).

As name_update should not be free, it must also have an additional fee. I guess we can't add the same amount as name_new to locked coins for each name_update as we would end with names with locked value of hundreds of NMC :p (And it would be cheaper to let the name expire and get it back... and impossible to sell at a reasonable price)

Fees should still have an acceptable value if nmc price do x10 or /10.

Proposed fees :

* standard transaction
- standard fees

* name_new :
- standard fees (go to miners)
- name fees (go to miners)
- registration fees (locked fees, paid once here, value should not be enforced here)

* name_firstupdate :
- standard fees (go to miners)
- name fees (go to miners)
- registration fees (locked, paid in name_new but could increase/decrease with time, value should be enforced here)

* name_update :
- standard fees (go to miners)
- name fees (go to miners)
- registration fees (locked, paid in name_new but could increase/decrease with time, value should be enforced here)

* name_release :
- standard fees (go to miners)
- name fees (go to miners)
- registration fees unlocked (back to your balance)

Fees details :

* standard fees :
- baseFee per KB * sqrt(KB) : more data in one tx = more expensive (Even a big standard tx will cost harddisk space and names will be able to store up to 9k of data)
- baseFee per txIn above the second
- baseFee*2 per txOut above the second
- baseFee*4 per dust txOut
- small tx can be free


* name fees :
Name fee : should be based on baseFee (used in standard tx). That way, we only need to update one value to update all fees.
Exists because a name_* operation should always cost something to the user.

- baseFee per KB again ?
- baseFee, required
A big name tx will have high standard tx + those fees, so this one does not need to be particularly high.


* registration fee :
Registration fee : is the cost for scarcity of names.
As they are locked, they limit the maximum number of names (should not be too high).
They could change at each name_update.
The cost of one/several name_update can can be pre-sent in name_new (for automatic name_firstupdate & renewal) and the name_firstupdate pre-created.
They could be adapted to the name length and other params (it must remain simple & fast for the node to calculate)
If this value is dynamic, it can be enforced by the network



What do you think ?

Comments will be highly appreciated :p
NamecoinID: id/khal
GPG : 9CC5B92E965D69A9
NMC: N1KHAL5C1CRzy58NdJwp1tbLze3XrkFxx9
BTC: 1KHAL8bUjnkMRMg9yd2dNrYnJgZGH8Nj6T

Register Namecoin domains with BTC
My bitcoin Identity - Send messages to bitcoin users
Charity Ad - Make a good deed without paying a cent

khal
Site Admin
Posts: 708
Joined: Mon May 09, 2011 5:09 pm
os: linux

Re: Discussion for revised fees

Post by khal » Fri Jun 28, 2013 11:51 am

Added in registration fee :
The cost of one/several name_update can can be pre-sent in name_new (for automatic name_firstupdate & renewal).

Namecoin-QT already does this to reserve fees of name_firstupdate in name_new. It avoids to double-spend and allows automatic name_firstupdate.
NamecoinID: id/khal
GPG : 9CC5B92E965D69A9
NMC: N1KHAL5C1CRzy58NdJwp1tbLze3XrkFxx9
BTC: 1KHAL8bUjnkMRMg9yd2dNrYnJgZGH8Nj6T

Register Namecoin domains with BTC
My bitcoin Identity - Send messages to bitcoin users
Charity Ad - Make a good deed without paying a cent

snailbrain
Posts: 309
Joined: Tue Jul 19, 2011 9:33 pm

Re: Discussion for revised fees

Post by snailbrain » Sat Jun 29, 2013 12:03 am

It would be good to be able to register a name for longer, and spend more.. i.e. lock 2+ years into a name..

this would be an advantage for some software which may use namecoin for something of which losing your name could mean losing all your money... e.g. Open Transactions.
... as, if someone doesn't open their client for < a year (doesn't renew) they might lose all their money due to someone sniping their namecoin name...

snailbrain
Posts: 309
Joined: Tue Jul 19, 2011 9:33 pm

Re: Discussion for revised fees

Post by snailbrain » Sat Jun 29, 2013 12:57 pm

snailbrain wrote:It would be good to be able to register a name for longer, and spend more.. i.e. lock 2+ years into a name..

this would be an advantage for some software which may use namecoin for something of which losing your name could mean losing all your money... e.g. Open Transactions.
... as, if someone doesn't open their client for < a year (doesn't renew) they might lose all their money due to someone sniping their namecoin name...
>>
"Khal's ideas look reasonable. Though it might be better to deterministically define the amount of locked coin and start enforcing it starting at some block. Otherwise, if Namecoin gets very popular, someone may start using hacked client and send less coins. Users of the official client will be disappointed.

For OT probably an inifinite expiration time is required. Don't know if it's possible (hard to think of the right fee amount for a never-expiring name)."

snailbrain
Posts: 309
Joined: Tue Jul 19, 2011 9:33 pm

Re: Discussion for revised fees

Post by snailbrain » Sun Jun 30, 2013 7:49 pm

we could use peoples views here..

whenever khal mentions fees, there is silence lol

doesn't matter who you are, or how right or wrong you are... need discussion..

biolizard89
Posts: 1999
Joined: Tue Jun 05, 2012 6:25 am
os: linux

Re: Discussion for revised fees

Post by biolizard89 » Mon Jul 01, 2013 6:19 pm

snailbrain wrote:we could use peoples views here..

whenever khal mentions fees, there is silence lol

doesn't matter who you are, or how right or wrong you are... need discussion..
I'll post my thoughts in the next week or two, right now I have some deadlines which need attention. But major props to khal for working on this.
Jeremy Rand, Lead Namecoin Application Engineer
NameID: id/jeremy
DyName: Dynamic DNS update client for .bit domains.

Donations: BTC 1EcUWRa9H6ZuWPkF3BDj6k4k1vCgv41ab8 ; NMC NFqbaS7ReiQ9MBmsowwcDSmp4iDznjmEh5

phelix
Posts: 1632
Joined: Thu Aug 18, 2011 6:59 am

Re: Discussion for revised fees

Post by phelix » Mon Jul 01, 2013 6:46 pm

snailbrain wrote:It would be good to be able to register a name for longer, and spend more.. i.e. lock 2+ years into a name..
I think it is good for names to expire. If you need persistent names you can somehow bind to the address holding the name. E.g. if a name expires it will only be valid when reregistered from the same coin (maybe even with a random value added).

This adds complexity and I think the benefit is too small.

As an alternative what about making names last a little longer? So that you can be sure the name will be good for at least a year like normal domains.
nx.bit - some namecoin stats
nf.bit - shortcut to this forum

snailbrain
Posts: 309
Joined: Tue Jul 19, 2011 9:33 pm

Re: Discussion for revised fees

Post by snailbrain » Mon Jul 01, 2013 7:51 pm

phelix wrote:
snailbrain wrote:It would be good to be able to register a name for longer, and spend more.. i.e. lock 2+ years into a name..
I think it is good for names to expire. If you need persistent names you can somehow bind to the address holding the name. E.g. if a name expires it will only be valid when reregistered from the same coin (maybe even with a random value added).

This adds complexity and I think the benefit is too small.

As an alternative what about making names last a little longer? So that you can be sure the name will be good for at least a year like normal domains.
i agree names should expire as well.. but if you pay 20nmc into your name so it doesn't expire for x years.. it would be better..

otherwise projects which want to use namecoin need to be more complex, if you just need to create a name once and maybe change it the odd time, then this will make namecoin more accessible imo, you might be away from your PC for several years.. they need to renew a name every < 1 year currently, requiring the client to be running... and also, decrypt wallet to do the tx (unless we used some locked coin trick)..

you could go off the name value even if it's expired, but maybe in the future we are going to trim these off? (i don't know)

khal
Site Admin
Posts: 708
Joined: Mon May 09, 2011 5:09 pm
os: linux

Re: Discussion for revised fees

Post by khal » Tue Jul 02, 2013 7:45 pm

snailbrain wrote:i agree names should expire as well.. but if you pay 20nmc into your name so it doesn't expire for x years.. it would be better..
So locked fees would define how many blocks before the name would expire ?
It seems simple, but, the amount of locked fees will evolve dynamically, so, one day you had 50k blocks left, and the next block your name is already expired...
Or we must keep track of the cost at the time of registration, or recalculate past costs, or add a new field in the script with a block number + a cost...
Neither of those ideas enjoy me...

snailbrain wrote:otherwise projects which want to use namecoin need to be more complex, if you just need to create a name once and maybe change it the odd time, then this will make namecoin more accessible imo, you might be away from your PC for several years.. they need to renew a name every < 1 year currently, requiring the client to be running... and also, decrypt wallet to do the tx (unless we used some locked coin trick)..
One year is long too, and without several mail reminder from my registrars, I would forget to renew my domain names. So, putting a shorter period could be an advantage too.

snailbrain wrote:you could go off the name value even if it's expired, but maybe in the future we are going to trim these off? (i don't know)
In the future only non expired names will be in the index. We may have an additional index for name_history if the history feature is useful for people.
NamecoinID: id/khal
GPG : 9CC5B92E965D69A9
NMC: N1KHAL5C1CRzy58NdJwp1tbLze3XrkFxx9
BTC: 1KHAL8bUjnkMRMg9yd2dNrYnJgZGH8Nj6T

Register Namecoin domains with BTC
My bitcoin Identity - Send messages to bitcoin users
Charity Ad - Make a good deed without paying a cent

khal
Site Admin
Posts: 708
Joined: Mon May 09, 2011 5:09 pm
os: linux

Re: Discussion for revised fees

Post by khal » Tue Jul 02, 2013 8:19 pm

Some updates on the proposal :


* standard fees :
- baseFee per KB * sqrt(KB) : more data in one tx = more expensive.
Even a big standard tx will cost harddisk space and names will be able to store up to 9k of data.
With this formula, a tx of 9k will cost more than 2 tx of 4.5k.


* name fees :
- baseFee, required
A big name tx will have high standard tx + those fees, so this one does not need to be particularly high.

A small name_* tx (< 1k) will cost at least the minimum fee.


* registration fee :
- name_new : value should not be enforced here, to allow future usages like "instant" messages and also because a name_new has only a hash (20 bytes).
- name_firstupdate/update : value should be enforced

Do someone have idea for a dynamic cost for this ?

Some criteria that might be good to have :
- easy/fast to calculate for a node
- predictable (a name_update done just before the value has changed should have the right future cost, or something in that way)
- the maximal number of names left should never be 0 (unlike the reward in each block which go to 0)
- should adjust if the number of names increase or decrease
NamecoinID: id/khal
GPG : 9CC5B92E965D69A9
NMC: N1KHAL5C1CRzy58NdJwp1tbLze3XrkFxx9
BTC: 1KHAL8bUjnkMRMg9yd2dNrYnJgZGH8Nj6T

Register Namecoin domains with BTC
My bitcoin Identity - Send messages to bitcoin users
Charity Ad - Make a good deed without paying a cent

Post Reply