So, package management is kind of a big deal. But for me it really became in the limelight with npm. I’m truelly amazed at how a tool like npm can speed up development so much. Turning my little project into something I can build anywhere! However, like the great torrent, decentralization is a possibility. Many node developers. Here, I went at length trying to fight the idea of a decentralized name ledger. Insistant that competition is the only way for a name ledger to work. Hypothetically that may be true but only if proven. Here I will attempt to understand the complexities involved in a blockchain style ledger.
So how do we do this?
What maintainence needs to be done? To start out, somebody needs to keep tabs of it. And not just one person, many people. Normally every individual does but realistically a few groups do. This involves
- Accepting New transactions – which may happen at an absurd rate
- Mining (Validating) the chain – involves heavy duty processing power
- Having the ledger available for distribution – Hypothetically, this can be done in chunks since each block can be infohashed and etc. But, realistically, I have no idea how the the algortihm works so it may be that the entire chain changes per transaction (Highly doubt it). (EDIT) Probably because for this to happen, the block cannot change inorder to ensure immutability. However, if it cannot change, it cannot point forward, only backward. Does blockchain try to point forward? It doesn’t need to technically
Someone needs to do this work. Arguably, the makers / Users / Investors of the block chain will but that means that our coin is… well… valuable. And as a maker, theres only so much I am willing to invest until I realize the money / work I put in will not be the same as I get out. I expect no one else to do the same unless they feel like waisting electricity for a place in internet history. However, many of these issue can be solved by…
- Using someone elses block chain
Enter Etherium. This is quite literally what it was made for. For other people to tag on their arbitrary nonsense. So… technically…
- Our Coin is “valuable”
- There exists a mining community
- There are individuals willing to distribute the ledger
And unless someone decides to sell big it will stay that way. Alright. Great. Now lets make a name ledger!
Ok, there exists examples. So EtherId decides to allow you to pay for time. Then you must pay for more time. Who do you pay? Because ethereum has a limit, am I really willing to dish out (now 5 dollars) up to 100 dollars for a name? can I sell it back? Paying for time seems like it could end up in an endless battle. Lets organize these concerns
- does there need to be a cost for a name? – I would say yes. The last thing anyone needs is a spammer destroying a currency.
- Is the cost for a name static or can it rise/fall? – It should. There is no reason why a name should always cost 1 ether especially considering nobodies are meant to be publishing their packages happily.
- Where does my money go? Can I release the name and recouperate it? – If say no, I have sincere doubts about the viability of the system as a whole. At that point the currency is trying to keep their necks above water where it consumes from everyone else effectively causing deflation.
- Paying for time – Lets assume we own the name ‘hello-world’ which resolves to a package used by newbies world wide. Lets say I didn’t pay this month because I was broke. Someone will ill intentions swoops in and takes it. Now they never have to sell or give it back. There is no centralized authority to fight about this. There may be no public shaming if done anonymously. So long as this other individual has enough, they will always have control over it.
Lets trial and error some solutions!
- Names will increase in value the more that are taken within a given letter range
- For 1 letter names, there exists 36 possibilities.
- The first name may be free
- the second may cost a bit
- third more
- Each name’s maximum is the maximum number of Permutations for given length (name.length!)
- What this does is curbs spamming of names and rewards more lengthy unique names
- When done only done to individual accounts, it doesn’t bring into account when a spammer makes 1,000,000 accounts each registering one name
- Puts a cost (though small at times) on registering names. This will prevent most people from ever registering since then they have to actually have ether
- The price of keeping a name increases as the bid to buy it increases
- I buy the name ‘big-money-no-wammies’ name at 0.01 ether
- Years go buy with not another dime spent
- Someone comes in and wants it and offers 0.02 ether
- I don’t want to sell but they other person impatiently waits
- The price of keeping the name is now 0.01 ether
- Another person comes in and sets the price at 0.005
- The price starts at 0.01 ether
- Another person comes in and makes a bid for 0.02 ether
- The price remains at 0.01 ether
- Another person comes and makes a bid at 100 ether
- The price for keeping the name is now 50 ether
- I cannot pay
- I recieve their 100 ether bid, I recieve all the money I’ve had to invest back
- All other bids persist
- People cannot squat on a name
- Its possible to crowdsource the purchase
- Most names do not need to maintain upkeep so people can keep them for free
- People cannot bully others quickly without taking a hit
- This can turn into bullying. Forcing someone to continuously pay .1 is may still cause many people to lose their names
- ‘Fairness’ is not rewarded – I lose my name to someone forcing me to pay 10. I want it back so I use their 10 to make them pay. They dont pay so we get the name. They make a bid for 10 again. And the cycle continues where I must invest while they just force me to invest
- Rising and failing of the price of a name can be solved by making our own crypto currency! Oh wait…. Bad solution…
- Clients can ‘lockin’ a name to a specific user. That user can then point a new name to be considered what the old name was
- I get bullied out of ‘poop in my pants’
- People only trust me despite the fact the other person is in control. In their client that resolved the name, they ‘locked’ me to the name
- I create a new name that points to the old one.
- The next time they resolve my name, they then get redirected.
Ok, those solutions are fine but I still think that competitive centralization is a better form. for a couple of reasons
- Bullying can be avoiding by blocking IP addresses/deleting users and undoing whatever crap has happened. In our examples, we are trying to curb it but it still can exist
- We raise the barrier to entry- We are effectively pushing away people who want to try it and enabling those who want to find reasons to destroy it
- Finding out who is the true owner doesn’t need to happen through parsing possibly millions of transactions
All of these are very real and very bad problems.
Here Enters the “Free Market”
So instead of having a distributed ledger with no one source of truth. Lets try to build tools so that individuals don’t have to depend on one source of truth.
The Client Can
- Use Mulitple Ledgers to resolve a name
- Issue – This may or may not resolve to the same outcome
- Solution – Its in the best interest for each to resolve to the same outcome
- Issue – This may or may not resolve to the same outcome
- Trust one ledger over others when they conflict
- Tell multiple ledgers that they wish to take a name, get rid of a name or transfer a name
- Transfering implies the other user exists on all ledgers and are associated with a single unique identifier
- Do research on a ledger to identify them as someone they want to support or not
A Ledger Can
- Be a part of a network using a distributed ledger – This would be ideal if the market becomes crowded and/or to enable competition. In this manner, all shops can run. Some will be used more than others and some will have quality control tests
- Issue – if adding to the ledger is a free practice, it may result in issues
- Solution – since this is a distributed network rather then attempting to ‘be’ blockchain, ledger writes may be white listed
- Deny access to the resource associated to the name for any of the following reasons
- The person who had registered it had been removed from this ledger for reason X
- The person who registered it has not associated it to anything
- The result of the name does not pass the quality requirements of the ledger
- They don’t feel like it
- A perfectly valid reason that I cannot think of and they may not be able to either
- Send a breif history of that name along with the result of resolving the name to prove validity of themselves or others
Everything else is Survival of the Fittest
So Whats the point?
Well, to be fair, if there are a million name resolvers running around it can get pretty ugly. But additionally, a completely inhuman approach leads to the inability to police it except from a game theory perspective. I think long term the game theory approach is probably the best but long term is not short term and short term I believe the free market approach is far more appealing. We avoid the headaches of ‘Whoops, didn’t think of that’ and allow people who did think of it to implement it. Additionally, I believe people’s priorities will change over time. Now its just about getting a name. In the future, a testing suite might be necessary. In the far distant future, you may be forced only to use certian technologies. I do believe its in a ledgers best interest to use a distributed ledger. But I don’t think that making it trustless is necessarilly possible. Making it safe is much more possible