STEEM DNS - Your username DOT STEEM. DNS on the Blockchain

in #steemit8 years ago (edited)

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.

Got any questions? Leave them in the comments and I'll answer them.

Sort:  

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.

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:

Be aware that by using my DNS server, all of your DNS queries will go to me.

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 for stats.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.

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.

Coin Marketplace

STEEM 0.20
TRX 0.12
JST 0.029
BTC 61740.86
ETH 3453.31
USDT 1.00
SBD 2.51