A few days ago @dan @dantheman suggested someone should set up a DNS (domain) system with the JSON Metadata. I decided to take that challenge on and see how quickly I could get it up.
The end result? A working .STEEM domain, entirely on the blockchain. Sadly, like Namecoin domains, you'll need to set up a custom DNS server.
If you want to try it out, and you're willing to change a few settings on your PC, follow these instructions and swap out the "Primary DNS" for the following IP address:
My public DNS server is: 159.203.22.60
Be aware that by using someone else's DNS server, all of your DNS queries will go to them. This could allow someone to do bad things, like redirect your bank or bitcoin sites to a phishing page silently and steal your accounts. While I'm highly trusted in the Litecoin community, and somewhat trusted within the Bitcoin community, others might not be. Keep this in mind if you choose to use someone's public DNS server.
I'll try to get an easier way of doing this in the next few days, with a proxy domain for those who don't want to change their DNS settings. I'll be making the program for this open source once I've cleaned it up a bit, and producing a guide for others who want to set up their own DNS, which will remove the security risk of using someone else's public DNS.
How can I set up a .STEEM domain?
There's no web interface for this just yet (but there might be one in the next few days depending on how interested people are), however if you have cli_wallet, you can set your JSON metadata to look like this (subdomain blank or @ works for root domain):
{
"dns": {
"records": [
[SUBDOMAIN, RECORD_TYPE, CONTENT, PRIORITY (ONLY FOR MX RECORDS)]
]
}
}
Here's an example for my domain:
update_account_meta someguy123 "{\"dns\": {\"records\": [[\"@\",\"A\",\"5.196.157.116\"]]}}" true
That command sets the root domain, i.e. someguy123.steem to point to the IP address 5.196.157.116 using an A Record. As soon as my DNS server picks up the new block, the change will be live almost instantly.
How does it work?
I run a DNS server on the public IP at the start of the guide. The DNS server has a script watching the STEEM RPC server.
As soon as new blocks come in, I check if any users have updated their JSON Metadata. If so, then I parse it, extract the records, and feed them to a database.
Finally, as DNS requests come into my server, they hit that database, allowing you to see people's .STEEM domains in a simple way.
Damn. I spent far too long working on this idea and hypothetical future expansions and someone beat me to it.
I actually already made a system using rubydns, and piston api to do this, but your solution sounds like it would be more reliable.
I have the username steemdns and domain steemdns.com if they would be useful for this.
My expansions on the idea:
All subdomains should be mirrored with a suffix at steemdns.com (ie subdomain.ausbitbank.steem = subdomain.ausbitbank.steemdns.com
Optional extra information available via TXT records (eg dig @steemdns.com balance.ausbitbank.steem TXT)
I was really interested in the .sss TLD as well for a freeform domain system not associated directly with your steem username. A good chunk of time was spent pondering ways to stop someone registering all domains or squatting other peoples names - there has to be an interesting solution to this problem using the reputation/web-of-trust system within steemit.
I've been sick as a dog the last few days and haven't been able to focus properly.. If you're seriously wanting to look after this concept long term I'm happy to help + give domain etc
Yeah - I'm a little deflated/dissapointed but TBH money doesn't matter, a truly free alternative DNS system being available to the world is FAR more valuable to me :)
And you're not alone ausbitbank. So happy to see you guys working on this, it's been addressed by several others I know of but for various reasons a robust and adoptable solution is yet to appear the masses can use.
DNS has been one of my strong interests ever since I became aware of blockchain tech. Remember meowbit? Kyehotee? Meowbit was not a bad idea. It was a chrome / firefox extension (I don't recall which one now) based on namecoin. A blockchain solution to this problem is definitely the way to go IMO, tho the namecoin project hasn't been successful in coming up with a solution a community consensus has rallied around.
It's been several years since I was into this, and I need to refresh my internal knowledge base, as I don't quick grock how t use what someguy123 for other domains unrelated to steem. I get this article only describes the first step, just foggy on how it can grow beyond. But that's my issue, you guys carry on and I'll stay tuned and catch up as I can.
Thanks again for your efforts, all of you. Many have recognized the need for a better DNS, and I was surprised not to see a noticeable increase in such efforts when control of ICANN went to the UN.
EDIT: Just now noticed this is a very old thread. Not sure why it popped up on my radar. I don't use steemit very much these days, so I wouldn't have thought something so old would get my attention. But that's what happens when you don't pay attention and follow links from elsewhere! Doh!
Is your script available somewhere?
Not just yet, but it will be in the next day or so. I'll be writing up a guide on configuring the DNS server, and posting a cleaned up python script which handles it. If you PM me on SteemitChat I can get you a copy to look at before I release it. Maybe you can help improve it (it's in python).
It will be awesome if we could integrate this to OpenNIC, they already support .bit (namecoin) domain.
Upvoted because this might be a way to obviate MIM/security issues (but I#m not a security expert - perhaps @discombobulated can elucidate?)
Why is ICANN called as so? Because they can do what ever they want and ICANNOT. Dan and yourself are on the right track for bypassing our "Internet Overlords."
You have it all wrong. ICANN are volunteers selected by ISPs, in fact, they are more decentralized in a way than the founders of something like STEEM is. All the money they make go directly into funding internet projects, and anyone can apply for a grant. STEEM can just buy the .steem GTLD and then nobody needs to use custom DNS.
Awesome work on delivering this quickly! My only concern is that you do not go over the security concerns:
Using custom third-party DNS servers opens users up to potential man in the middle attacks and credential theft!
I am not saying that you are malicious, but if your server gets hacked and it goes unnoticed, then everyone who uses it is vulnerable. If a large portion of Steemit begins using your service (and it's hacked), then a large portion of funds can be stolen.
NOTE: @someguy123 is making this code open source so that others can use it as well. If anyone is planning to use someone else's DNS server, they must ABSOLUTELY TRUST that person is safe and is running the same code.
Upvote for visibility, this is a major issue with using DNS directly to achieve this.
The best solutions I could see (whilst still using dns) was to encourage everyone using steemdns to use a local dns proxy that only forwards the .steem dns requests over the custom server.
Namecoin directions for Acrilic DNS (windows) and polipo (linux) are here https://bitcointalk.org/index.php?topic=205026 - Just swap out references to .bit for .steem and swap IP's for @someguy123's server instead
Of course this is a problem. I will be publishing a guide in the next day or so on how to run a DNS server yourself. Then there's no risk, and of course people could choose DNS servers of people they do trust.
I'm working to become a top witness, I'm already well trusted outside of STEEM, and slowly I'm hoping to gain the same reputation on Steemit.
I've just updated the post to reflect this. Hopefully that will address your concerns.
A little, but you don't really go over the security issues, you just define what a DNS server does. Everyday user's will have no idea why what this means and what the implications are:
What everyday users need to hear is that:
By using a third-party DNS, you are essentially trusting them with ALL OF YOUR INTERNET CREDENTIALS including bank account information. BE VERY CAREFUL!!
Check now. I've updated it again. Hopefully it's clear enough...
Thanks! Sorry I am a stickler on this, but hey. This is what I do for a career.
This is pretty unique no doubt. I'm so curious where this all goes and will be watching . Good stuff :)
Nice, now all you need to do is get a whale so buy a GTLD from ICANN for $200000 and then nobody needs to use a custom DNS server to use .steem DNS.
...And then watch Ethereum and Namecoin follow suit!
Lets start a .steem campaign
Wow this is great! So I need to start thinking of good .steem domains?
Maybe. You'd need to also create the account with that name. It's linked to your username. E.g. having @thedashguy would allow you to control thedashguy.steem and all subdomains of that, like chat.thedashguy.steem etc.
I assume we're going to need some sort of uniqueness constraint available on the json_metadata in order to truly make this work, otherwise what's to prevent two people from using the same name record?
Which leads to an entirely different conversation about the json_metadata field all together, what it could be used for, and what types of rules should exist for it.
Awesome job though! I'm really excited to see projects like this happening :)
It's linked to your username. When you ask for "@" you would get jesta.steem- if you ask for "dev" you would get dev.jesta.steem.
Thanks for the reply
Ahhh I was sort of under the assumption that you could pretty much pick whatever you wanted. But if it's bound to usernames, then that makes sense.
Still, it would be cool if on my
jesta
account I could add a record forstats.steem
with the appropriate DNS :)Yep, but sadly that would be quite difficult to do without some sort-of side chain. If you had the account "stats" or "steemstats" you get a cool domain though :)
Luckily I have steemstats, stats is by a random user though.
Let the username squatting begin! lol
I am pretty sure that two people could not have the same name record, because you need the private key to change the json_metadata field.
But I agree that the json_metadata field is just all around crazy. It has a lot of potential. You could add stuff like about myself to it. Neat. This just gave me a great idea for screem.
Me love me some Screem ;-)
This is great and definitely has potential. Keep up the good work!
You need
Good luck , keep us Updated by Posting more !
Thanks. I'll be sure to keep everyone updated. Next article might be "How to set up your own Steem DNS server", so everyone can do it.
Absolutely bloody brilliant mate, take my vote and 100 awesome points.
Ubuntu and Mac users have internal DNS forwarding server installed by default. Best if they can be configured to use a local node or trusted nodes for .steem domains.
I'll look into that, and see if I can get that working. If you want to produce a guide for that yourself, feel free to.
So, how would file storage work on something like this? I'm a bit out of the loop - I didn't know this was even a possibility on the blockchain.
If I understand correctly, you can run your own Insertnamehere.steem domain for no $$ or something like that?!?! Or for a fee that doesn't cost anything like those .com registration things I get?!?
How would you transfer a domain ? would that even be possible?
Sorry for all of the questions - I'm just amazed by all of this!!
What a wonderful place this community is!!
There'd be no fee. You pretty much already pay that fee to create your account name (which steemit pays for you).
I'm not sure what you mean by file storage. This isn't hosting, it's just the domain. You'd point your domain at your own server, hosted elsewhere.
You wouldn't be able to transfer a domain without handing over your entire account, since it's linked to your account name. To get around this you might make accounts for a project, like "abcd" would get abcd.steem so you'd make @abcd
Nice work on this, as I discussed on chat with you, I would really love to one day see this possible without too much fidding from a non-tech savvy person like myself. I also see some concern in having to place trust in the private dns provider which is an issue.
Do people who wish to see .STEEM addresses also have to modify their default dns server?
For now, yes. But you'll soon be able to go to for example sweetsssj.steem.something - I'm working on getting a domain for this and setting it up.
To reduce the trust, one could set up the DNS server locally (guide coming soon), thus no trust needed.
The most important thing to get on the roadmap is removing reliance on private DNS for all domain level requests on browsers. We need to limit using steemit user provided DNS server requests to *.steem . The change from google or isp DNS to a steemit @user controlled server is not going to happen at this stage in the game for the average user.
Is there a way to use domain-specific DNS servers maybe just add DNS servers to resolv.conf on linux or the hosts file for windoze to bypass the need for users to rely on private DNS for all domains? I need someone with specific technical knowledge of this field as it is not my specialty. - many thanks @blockcodes.
This is so cool but I'm not technically knowledgeable to do this yet. But still very cool
Don't worry. I'm discussing with other developers on Steemit.Chat on ways to make this more user friendly.
Soon this might be much more accessible to the everyday user
And now on top of storing the blockchain I'm off to clear some space to store a DNS registry as well. LOL
And away we go!
Woah! this is crazy cool! Well done!
cant wait to see more...
this gonna be huge ;)
Should I create my own DNS on my laptop, even as I use Comcast as my ISP and will Comcast get mad at me for it or would they even notice?