introductions

Post Reply
encb
Posts: 1
Joined: Tue Sep 08, 2015 9:01 pm
os: windows

introductions

Post by encb »

Hi all. Jeremy asked me to post. I was just introduced to the namecoin project and am interested in learning how to contribute. I am a CS student in a master's program. I have done coding in C, C++, Java, and C#. Current studies include databases and algorithms. Suggestions on beginner projects with namecoin or ways to contribute are welcome.

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

Re: introductions

Post by biolizard89 »

encb wrote:Hi all. Jeremy asked me to post. I was just introduced to the namecoin project and am interested in learning how to contribute. I am a CS student in a master's program. I have done coding in C, C++, Java, and C#. Current studies include databases and algorithms. Suggestions on beginner projects with namecoin or ways to contribute are welcome.
Hi, Jeremy here.

I can't think of any C or C# projects that currently exist, although maybe someone else will chime in. For C++, there's Namecoin Core (the reference implementation of Namecoin) and parts of Armory (a high-security tool for storing Namecoins). For Java, there's NamecoinJ (a library for lightweight Namecoin clients) and the various applications that might use it.

My opinion is that NamecoinJ would be quite productive, mainly because we have no one already working on it and it's in pretty high demand. NamecoinJ is a Namecoin port of the Bitcoin library BitcoinJ.

Armory probably wouldn't be a great fit for you, because it's partially Python and if I recall correctly you don't have a lot of Python experience.

Maybe Daniel or someone else can comment on things that would leverage your knowledge of databases and algorithms.

For a brief introduction, I'd suggest reading Satoshi Nakamoto's paper on Bitcoin: https://bitcoin.org/bitcoin.pdf . Namecoin under the hood is basically Bitcoin with a few extra features tacked on, so that paper will be a good way to get up to speed. After that, Daniel or someone else can probably introduce you to the extra features that Namecoin adds to Bitcoin. If you end up doing NamecoinJ, NamecoinJ mainly needs to add support for the Namecoin-specific features that aren't in BitcoinJ.

Cheers.
Jeremy Rand, Lead Namecoin Application Engineer
NameID: id/jeremy
DyName: Dynamic DNS update client for .bit domains.

Donations: BTC 1EcUWRa9H6ZuWPkF3BDj6k4k1vCgv41ab8 ; NMC NFqbaS7ReiQ9MBmsowwcDSmp4iDznjmEh5

josephbisch
Posts: 69
Joined: Sun Nov 23, 2014 3:34 pm
os: linux

Re: introductions

Post by josephbisch »

For C, you might look at forking picocoin or cbitcoin and adding Namecoin support. Though I don't know if there is a good reason to port those. There are also C# Bitcoin projects that could potentially be ported, but again, I don't know if there is a good reason to do so. But Jeremy is right about there not being any existing Namecoin projects written in C or C#.

For Java, besides NamecoinJ, we were also looking at running NMControl on Android to allow resolving of .bit domain names on an Android device, though I don't remember what we got stuck at with that.

I disagree about Armory not being a good fit if you don't know Python. There is a lot you can do just with the C++ code. You can either pick up Python as you go, or you can have someone else handle the GUI (since that is written in Python using PyQt) and do the lower level stuff like adding Namecoin-specific transaction types. There will need to be some changes to the GUI to represent those transactions, but most of the actual support is handled by C++.

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

Re: introductions

Post by biolizard89 »

josephbisch wrote:For C, you might look at forking picocoin or cbitcoin and adding Namecoin support. Though I don't know if there is a good reason to port those. There are also C# Bitcoin projects that could potentially be ported, but again, I don't know if there is a good reason to do so. But Jeremy is right about there not being any existing Namecoin projects written in C or C#.
Yes, as you point out it's not clear if there's a good reason to port those projects. I'm unaware of any significant usage of those projects in the Bitcoin world, which means they probably haven't had nearly as much security review as things like Armory and BitcoinJ. My general take is that the Bitcoin projects that are highest priority to have Namecoin ports are the ones with the most Bitcoin money behind them (because they have, in practice, gotten the most security review) -- this would be e.g. wallets listed on bitcoin.org (e.g. BitcoinJ), or libraries used by major exchanges/merchants such as libcoin (used by Kraken) and Bitcore (used by BitPay). And libcoin and Bitcore both have partial ports to Namecoin already.
josephbisch wrote:For Java, besides NamecoinJ, we were also looking at running NMControl on Android to allow resolving of .bit domain names on an Android device, though I don't remember what we got stuck at with that.
Ah yes, Android stuff is quite relevant. NMControl has an uncertain future since there's an ongoing discussion about whether to replace it with Hugo's ncdns implementation, but that discussion will probably conclude in the next couple weeks, so we should have a more certain path forward soon.

@encb If you're not aware, NMControl is a "swiss-army-knife" tool for various application-specific DNS and identity functionality. The main Namecoin client (e.g. Namecoin Core or NamecoinJ) is a generic naming system, it doesn't try to interpret the semantics of the data that is stored -- interpreting data is NMControl's job.
josephbisch wrote:I disagree about Armory not being a good fit if you don't know Python. There is a lot you can do just with the C++ code. You can either pick up Python as you go, or you can have someone else handle the GUI (since that is written in Python using PyQt) and do the lower level stuff like adding Namecoin-specific transaction types. There will need to be some changes to the GUI to represent those transactions, but most of the actual support is handled by C++.
Ok then, I'll defer to Joseph, since he has way more knowledge of the Armory stuff than I do (he's interning at Armory Technologies). Armory would be perfectly fine then, if you'd like to work in C++.

@encb By the way, if there's anything you need Joseph or me to elaborate on, just let us know.
Jeremy Rand, Lead Namecoin Application Engineer
NameID: id/jeremy
DyName: Dynamic DNS update client for .bit domains.

Donations: BTC 1EcUWRa9H6ZuWPkF3BDj6k4k1vCgv41ab8 ; NMC NFqbaS7ReiQ9MBmsowwcDSmp4iDznjmEh5

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

Re: introductions

Post by biolizard89 »

@encb any thoughts / questions on any of this?

@anyone else, any further suggestions for things that might be a good fit for encb?
Jeremy Rand, Lead Namecoin Application Engineer
NameID: id/jeremy
DyName: Dynamic DNS update client for .bit domains.

Donations: BTC 1EcUWRa9H6ZuWPkF3BDj6k4k1vCgv41ab8 ; NMC NFqbaS7ReiQ9MBmsowwcDSmp4iDznjmEh5

Post Reply