Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: st0nefish on January 13, 2017, 06:22:46 PM



Title: Developing a Wallet?
Post by: st0nefish on January 13, 2017, 06:22:46 PM
Bitcoin wallets have different characteristics, while basically having the same features. What we need to know to develop a new bitcoin wallet? What do we need technically?


Title: Re: Developing a Wallet?
Post by: kolloh on January 13, 2017, 06:52:06 PM
Bitcoin wallets have different characteristics, while basically having the same features. What we need to know to develop a new bitcoin wallet? What do we need technically?

Obviously, you'll need programming experience to develop a new wallet. Which language you choose to write it in would be up to you, of course.

It is probably better to try and contribute to an open source wallet that already exists than to try and create your own from the ground up though. Not sure there is really a need for more wallets at this point.


Title: Re: Developing a Wallet?
Post by: MadGamer on January 13, 2017, 06:56:00 PM
Bitcoin wallets have different characteristics, while basically having the same features. What we need to know to develop a new bitcoin wallet? What do we need technically?

We already have enough desktop wallets for the moment , If you want to build something then I suggest targeting phone and web wallets since we don't have that much and If we do , they definitely need improvements.
Unless you know what you are doing and you have the required years of programming experience and security , Its not really a good idea to stop making a wallet , at least not for public use.


Title: Re: Developing a Wallet?
Post by: st0nefish on January 13, 2017, 07:25:11 PM
Actually, what I want to know is the working logic of wallets. For example new altcoins are coming out. Different wallets are being developed for these altcoins.
Is it like the bitcoin wallets in the logic of the wallets developed for the new altcoins?


Title: Re: Developing a Wallet?
Post by: achow101 on January 13, 2017, 09:10:34 PM
A wallet has to follow the protocol and consensus of whatever network and coin it is using. It has to be able to connect to nodes on the network and then send and receive messages to and from the connected nodes. It then has to be able to validate blocks and transactions according to the rules of whatever network and coin it is for.

A wallet also has to have some way to securely store private keys and then be able to use those private keys to sign things (usually transactions). It also has to know how to build transactions and how to sign them.

The actual details for how a wallet works varies from coin to coin as different coins use different technologies and specifications.


Title: Re: Developing a Wallet?
Post by: nekochan on January 14, 2017, 05:45:50 PM
Well technically you could make a wallet on top of the RPC protocol and run the RCP cli in the background. This way you'd only need a GUI which isn't that hard to implement.


Title: Re: Developing a Wallet?
Post by: cr1776 on January 14, 2017, 07:10:06 PM
Actually, what I want to know is the working logic of wallets. For example new altcoins are coming out. Different wallets are being developed for these altcoins.
Is it like the bitcoin wallets in the logic of the wallets developed for the new altcoins?

Depending on the amount of detail of the logic you want, looking at the source code of some open source wallets might be your best bet.


Title: Re: Developing a Wallet?
Post by: jeraldskie11 on January 14, 2017, 11:51:41 PM
all features that we need to develop is to be more trusted and fully secure the walllets and do what they say and don't run away our money so that people didn't have any problem about it saving or storing they're money on to it.


Title: Re: Developing a Wallet?
Post by: senyorito123 on January 15, 2017, 06:06:23 AM
Bitcoin wallets have different characteristics, while basically having the same features. What we need to know to develop a new bitcoin wallet? What do we need technically?

I think you need to pursue other open source work and make some adjustments or add some helpful features in it. Also you need some security measures in it. If you are a skilled programmer, you know what to do. But if you don't have any idea on programming at all. Just proceed another projects. Bitcoin wallets need a lot of programming to be called a safe wallet or safer wallet.


Title: Re: Developing a Wallet?
Post by: st0nefish on January 18, 2017, 03:16:22 PM
A wallet has to follow the protocol and consensus of whatever network and coin it is using. It has to be able to connect to nodes on the network and then send and receive messages to and from the connected nodes. It then has to be able to validate blocks and transactions according to the rules of whatever network and coin it is for.

A wallet also has to have some way to securely store private keys and then be able to use those private keys to sign things (usually transactions). It also has to know how to build transactions and how to sign them.

The actual details for how a wallet works varies from coin to coin as different coins use different technologies and specifications.

As far as I understand it, I need a serious knowledge and experience in programming to develop wallet. It does not seem like a job that ordinary programmers can do.

Which technologies do we need to know? As far as I know bitcoin networks are working with p2p logic. So the programmer who develops the wallet needs to have the network information.

Finally, what programming languages do we need to know to develop your wallet? Can we develop with any programming language?


Title: Re: Developing a Wallet?
Post by: eddyfly on January 18, 2017, 03:38:20 PM
all features that we need to develop is to be more trusted and fully secure the walllets and do what they say and don't run away our money so that people didn't have any problem about it saving or storing they're money on to it.
very important


Title: Re: Developing a Wallet?
Post by: Coding Enthusiast on January 18, 2017, 05:14:49 PM
I am also interested in this so I am going to try and answer and hope others correct me and add more info.

As far as I understand it, I need a serious knowledge and experience in programming to develop wallet. It does not seem like a job that ordinary programmers can do.
Yes, because we aren't talking about a simple tool, a bitcoin wallet deals with other people's money and the security aspect of it becomes paramount.

Quote
Which technologies do we need to know? As far as I know bitcoin networks are working with p2p logic. So the programmer who develops the wallet needs to have the network information.
Cryptography I think is the most part and most important part of it, and then it is network and connecting to nodes, knowing and following the network consensus, saving blockchain and read/write to it.

Quote
Finally, what programming languages do we need to know to develop your wallet? Can we develop with any programming language?
Any programming language should do.
Bitcoin Core is written mostly in C++
Electrum is mostly Python
Multibit is Java
Armory is mostly C++ and Python
Greenaddress is Shell and Javascript and HTML
mSignia is C++
mycelium is Java
breadwallet is Objective C
BitAddress is JavaScript and HTML

I have not yet seen C♯, Ruby, PHP, Go, C


Title: Re: Developing a Wallet?
Post by: Bitcoin_BOy$ on January 18, 2017, 05:34:15 PM
Today, for a person I don't think developing a wallet is a good idea, Only A big company should do it, you won't get any trust by bitcoin users
since they're facing a lot of scams and trust is now a huge problem.

Anyway take a look on Electrum open source project, You need to have goods skills in Python.


Title: Re: Developing a Wallet?
Post by: st0nefish on January 20, 2017, 06:33:16 PM
I am also interested in this so I am going to try and answer and hope others correct me and add more info.

As far as I understand it, I need a serious knowledge and experience in programming to develop wallet. It does not seem like a job that ordinary programmers can do.
Yes, because we aren't talking about a simple tool, a bitcoin wallet deals with other people's money and the security aspect of it becomes paramount.

Quote
Which technologies do we need to know? As far as I know bitcoin networks are working with p2p logic. So the programmer who develops the wallet needs to have the network information.
Cryptography I think is the most part and most important part of it, and then it is network and connecting to nodes, knowing and following the network consensus, saving blockchain and read/write to it.

Quote
Finally, what programming languages do we need to know to develop your wallet? Can we develop with any programming language?
Any programming language should do.
Bitcoin Core is written mostly in C++
Electrum is mostly Python
Multibit is Java
Armory is mostly C++ and Python
Greenaddress is Shell and Javascript and HTML
mSignia is C++
mycelium is Java
breadwallet is Objective C
BitAddress is JavaScript and HTML

I have not yet seen C♯, Ruby, PHP, Go, C

In fact, programming languages are a tool. If it can be written in languages such as Java, Python, and JavaScript, it can be written in any language. But each of the topics you talk about requires special expertise.

As Bitcoin_BOy$ said, there is also a trust part. Even if the individual wallet is developed, it must be accepted by the bitcoin community.


Title: Re: Developing a Wallet?
Post by: Coding Enthusiast on January 21, 2017, 02:08:34 PM

As Bitcoin_BOy$ said, there is also a trust part. Even if the individual wallet is developed, it must be accepted by the bitcoin community.

Actually I don't agree with the trust part. Trust is earned over time, if any developer gives up because he has no history and no trust, development is over.
Also everything is open source and if it is good, it will get peer reviewed, you can see this on GitHub in the number of "Stars" and "watchers" and "contributors" and some other stuff.


Title: Re: Developing a Wallet?
Post by: kolloh on January 22, 2017, 07:22:05 AM

As Bitcoin_BOy$ said, there is also a trust part. Even if the individual wallet is developed, it must be accepted by the bitcoin community.

Actually I don't agree with the trust part. Trust is earned over time, if any developer gives up because he has no history and no trust, development is over.
Also everything is open source and if it is good, it will get peer reviewed, you can see this on GitHub in the number of "Stars" and "watchers" and "contributors" and some other stuff.

Yeah, everyone may not trust a new wallet initially until others have had the time to inspect and audit the code, but this shouldn't discourage development. Trust comes with time and if the software is built well, you should be able to gain trust after some time as long as the code is open source.


Title: Re: Developing a Wallet?
Post by: novemberwoah on January 22, 2017, 08:16:15 AM

As Bitcoin_BOy$ said, there is also a trust part. Even if the individual wallet is developed, it must be accepted by the bitcoin community.

Actually I don't agree with the trust part. Trust is earned over time, if any developer gives up because he has no history and no trust, development is over.
Also everything is open source and if it is good, it will get peer reviewed, you can see this on GitHub in the number of "Stars" and "watchers" and "contributors" and some other stuff.

Yeah, everyone may not trust a new wallet initially until others have had the time to inspect and audit the code, but this shouldn't discourage development. Trust comes with time and if the software is built well, you should be able to gain trust after some time as long as the code is open source.
Yes it is difficult for a new wallet to get the trust of many people, and it was reasonable in my opinion. I am very agree with you say that the trust will be built come with time and development wallet. To develop a new wallet I think it might be better if it focused on the development of security. Because if the security on wallet growing and increasingly secure, I'm sure many people will begin to believe and use the wallet.


Title: Re: Developing a Wallet?
Post by: stardustin on January 22, 2017, 09:56:08 AM
Nowdays there are so many bitcoin wallets which are safer and it's waste of time if you are going to built one wallet alone and that's hard doo. You need to know porgramming language, mostly c++ but also you can to write wallet in another language but I advice you c++


Title: Re: Developing a Wallet?
Post by: saqibmunir on January 23, 2017, 12:01:58 PM
there are many online wallet for bitcoin and there is no need to create new one but of course for developing a wallet you have to expert in a certian programming language you use it for making a wallet.........


Title: Re: Developing a Wallet?
Post by: hitjariwala on January 23, 2017, 12:30:25 PM
HI,

Any Member use NBitcoin Library?
skype : hit.jariwala


Title: Re: Developing a Wallet?
Post by: annie9771 on January 25, 2017, 05:10:05 PM
You need Programming Skill and as well you need enough information in linux to use RPC protocol with  bitcoin daemon after you can use any opensource web or android wallet
Bitcoin wallets have different characteristics, while basically having the same features. What we need to know to develop a new bitcoin wallet? What do we need technically?


Title: Re: Developing a Wallet?
Post by: Rahar02 on January 25, 2017, 09:41:08 PM
Today, for a person I don't think developing a wallet is a good idea, Only A big company should do it, you won't get any trust by bitcoin users
since they're facing a lot of scams and trust is now a huge problem.

Anyway take a look on Electrum open source project, You need to have goods skills in Python.

To create a new bitcoin wallet require some skills regarding code and nodes that had explained before.
But if someone wants to create his own/individual wallet as long as it can be secure the private key, be able connect to nodes on the network and could validate blocks and transactions, and then it doesn't need to gain trust from others. Moreover, it's a great idea to create your private wallet.


Title: Re: Developing a Wallet?
Post by: georgem on January 26, 2017, 02:02:38 AM
Moreover, it's a great idea to create your private wallet.

Exactly, I'm currently in the process of creating my own dream wallet. I call it spreadwallet.

I create it using C++ in combination with Qt-Library and some others.

I hope that by doing this I will get a firm understanding over every tiny aspect of what makes up not just a wallet but also a node.

Also, I want to create it as a multiwallet (capable to work with many coins) and with integrated explorer.

Yeah, pretty bold goals I know, but you have to aim for the stars.

Here are a few videos about the current state:

https://vimeo.com/hamsterinthemachine

https://i.imgur.com/8Zaqb0C.jpg?1 (https://vimeo.com/hamsterinthemachine)

It's in a very early stage right now, and has barely any functionality, but I love working on it.

I plan to open source it once it enters public beta.




Title: Re: Developing a Wallet?
Post by: target on January 26, 2017, 02:24:52 AM
Aren't those wallet developers also have the github of themselves so users can also check their codes and are they opensource?
I was also thinking of having my own wallet which i can collect fees as well, is there a wallet that functions like myethwallet where other token contracts can work?
It would be neat to have something WAVES or Lisk can be my gas when sending tokens.


Title: Re: Developing a Wallet?
Post by: anonymous2061 on January 26, 2017, 02:55:38 PM
I can dev a wallet for you. But please tell me exactly what you need? Secondly what escrow service you are willing to use?


Title: Re: Developing a Wallet?
Post by: fasdorcas on January 28, 2017, 12:48:07 PM
i think the main characteristics of any wallet for which a beginner has to see is to easy to use because for a beginner you have to understand that basically hat a wallet is and how it works...... and i think the blockchain is easiest to use.....


Title: Re: Developing a Wallet?
Post by: st0nefish on February 03, 2017, 11:44:43 PM
Moreover, it's a great idea to create your private wallet.

Exactly, I'm currently in the process of creating my own dream wallet. I call it spreadwallet.

I create it using C++ in combination with Qt-Library and some others.

I hope that by doing this I will get a firm understanding over every tiny aspect of what makes up not just a wallet but also a node.

Also, I want to create it as a multiwallet (capable to work with many coins) and with integrated explorer.

Yeah, pretty bold goals I know, but you have to aim for the stars.

Here are a few videos about the current state:

https://vimeo.com/hamsterinthemachine

https://i.imgur.com/8Zaqb0C.jpg?1 (https://vimeo.com/hamsterinthemachine)

It's in a very early stage right now, and has barely any functionality, but I love working on it.

I plan to open source it once it enters public beta.


The wallet's screen display is very nice. Also supporting multiple coins is a complete innovation. As far as I know, wallets only support their own coins. You have brought an innovation with this wallet you have made.

My recommendation is that you continue to develop the project on github. If you get it in community support, you will be done quickly.

Good Luck


Title: Re: Developing a Wallet?
Post by: georgem on February 08, 2017, 03:44:07 PM
The wallet's screen display is very nice. Also supporting multiple coins is a complete innovation. As far as I know, wallets only support their own coins. You have brought an innovation with this wallet you have made.

My recommendation is that you continue to develop the project on github. If you get it in community support, you will be done quickly.

Good Luck

Thanks, ...

As soon as I have the basic architecture/functionality finished and a beta version ready I will release the source on github.
After beta version is done I not only want to but also REQUIRE that other people take a look at the code.

Right now to bring in more people would only add chaos, since I have a pretty solid vision, and a very tight agenda,
but I am currently investing 1 day a week working on that wallet, so steady progress is happening.

Looking forward to the public release...

In the meantime, if you want to support me to achieve beta-status, I am already sending out closed-source preview-versions every weekend to my patrons:

https://www.patreon.com/hamsterinthemachine

Thanks!


Title: Re: Developing a Wallet?
Post by: PremiumCodeX on February 08, 2017, 07:38:01 PM
Before getting too technical, you need a good purpose. A purpose that motivates you. Why would you create a new wallet? Why would people use your new wallet? The answers to these questions usually include the technical guideline too. Personally, I would love a nice, open-source, web-application Java wallet. I would love it because web-applications are accessible from anywhere and I am developing in Java and to a nice base I can expand my own features easily.


Title: Re: Developing a Wallet?
Post by: piotr_n on February 08, 2017, 08:47:22 PM
First of all it would be nice to know what the wallet is, that you want to make.

For my experience, the word wallet as referred to bitcoin, has at least two different meaning:

The first meaning is sort of created and advertised by bitcoin.org website, where it tells you to "Choose your wallet", then referring you to all kind of bitcoin applications facilitating online bitcoin payments; from full nodes, through SVP clients and clients based on central servers keeping private keys local, all the way to online banks that manage the keys for you.

The second meaning is the best described by a "hardware wallet", although it might just as well be a software solution doing the same thing.
In this meaning the wallet is mostly a storage for private keys, although usually also capable of signing transactions.
It rarely has any online capabilities - if any, then rater in a "slave" mode.

The second type of wallet is definitely much easier to make, as it would be just a fragment of the first type of wallet.


Title: Re: Developing a Wallet?
Post by: georgem on February 08, 2017, 09:26:21 PM
First of all it would be nice to know what the wallet is, that you want to make.

For my experience, the word wallet as referred to bitcoin, has at least two different meaning:
...

Since most people use their real world wallet not just for money but also ID-cards, important phone numbers, organ donor card, photos of their loved ones, grocery lists, and what not,
it should be easy for them to grasp that a "wallet" is actually much more than just a "cash box".

Wallet as in "container for important stuff that is NOT meant for the public".

As a developer you are allowed to play with the definition of this word and stretch it as far as you like as long as this basic meaning isn't lost, I guess....

IMHO it is confusing and wrong to include a full node daemon within this definition of "wallet".
A node of any kind is NOT a wallet.

But, wallets need to communicate with nodes to be able to have access to the blockchain.
And the farther away your wallet is from actual nodes the more bad things could happen along the way,
therefor it's a good solution to fuse wallet/node in a single program.


Title: Re: Developing a Wallet?
Post by: Gloiri on February 09, 2017, 04:35:12 AM
To creating website you need languages like HTML CSS ETC. of course nod doubt you need to learn about programming. + web hosting or vps hosting to host your website 24/7. or you can hire someone to make a wallet site for you


Title: Re: Developing a Wallet?
Post by: DuddlyDoRight on February 09, 2017, 06:08:41 AM
You could probably make one in Python in less than a thousand lines using no libraries/modules except maybe for crypto. No native ECC etc..

Why someone like me doesn't: Because it's already done and nobody cares.. There is no way to capitalize off of it besides donations.. It's not a real technical challenge you're just implementing someone's design.


Title: Re: Developing a Wallet?
Post by: PremiumCodeX on February 18, 2017, 09:16:49 PM
Do you intend to develop this wallet, OP? Or what else was the reason to collect these suggestion? There are some very useful advice in this thread. Good enough to start with. However, if you are a developer yourself, I can give you additional tips related software technology and security.


Title: Re: Developing a Wallet?
Post by: DuddlyDoRight on February 19, 2017, 08:27:43 AM
Do you intend to develop this wallet, OP? Or what else was the reason to collect these suggestion? There are some very useful advice in this thread. Good enough to start with. However, if you are a developer yourself, I can give you additional tips related software technology and security.


Someone forgot to give such advice to the coders behind most of the crypto coins to date.. You don't even need math or memory flaws in most cases.. Go to their github and just browse for 2.5 hours and you have at least a half dozen protocol bugs..


Title: Re: Developing a Wallet?
Post by: st0nefish on February 19, 2017, 03:11:53 PM
Do you intend to develop this wallet, OP? Or what else was the reason to collect these suggestion? There are some very useful advice in this thread. Good enough to start with. However, if you are a developer yourself, I can give you additional tips related software technology and security.

I do not think about developing a wallet for the moment. I do not have much time for this.
But I care about the technical information necessary to develop the wallet. Because someone who knows how to develop a wallet can develop any kind of project related to bitcoin. The best example of the Bitcoin protocol is wallets. That's why I asked for help with technical knowledge in this regard.

I am a software developer. I always look favorably on recommendations. I am a person who constantly develops on about software technology and security. I will gladly listen to your advice in this regard.

If you write your suggestions under this topic it will be useful to other people.

Good Work