We at bitcore (http://bitcore.io) are adding support to/from stealth. We've been playing around with it yesterday (sending to and from a multisig stealth address): https://gist.github.com/eordano/9d311fda42299f153830
We're planning to include it in our 0.9 release
As part of the team that led this refactor, I'd like to send a big thank you to the following people/teams/projects:
One of the things that makes me really proud about this release is the cleaner API and the great docs we wrote for the project, take a look at http://bitcore.io/guide/index.html
tldr up front: porting is another word for translating. BitcoinD is the official bitcoin client, written in C++. He is just simply translating C++ to Javascript. Why? I have no idea.
long version:
my understanding (someone correct me if I'm wrong), bitcoind is the official full-node client software that runs most of the bitcoin network. This is the one that goes beyond just being a wallet manager, and also downloads the entire blockchain to your computer and broadcasts transactions. (But it's not mining software, that's something else). And BitcoinD is written in C++.
Anyways, to the best of my understanding, ryancarnated used to work on a project called bitcore while at Bitpay. Which is basically BitcoinD, but in javascript!. Now that he's at reddit, he forked the bitcore project and is making his own version called fullnode.
Again, why he is doing this, I have no clue. I think it's just because javascript is the only language he knows, and his limited imagination only allows him to take an existing program and make it again in another language. aka reinvent the wheel.
Hmm, how can we upload a trojan into the operating system? How about:
Product Idea
A cutting edge Social Wallet where fund management is secured by multiple authorities in an open source environment, enabling "co-payments" utilizing Javascript based technologies like Bitcore.
Very nice... If you have developed the site yourself and you are a developer you should think about using Bitcore.io and then possible Bitpay if you are not.
Bitcore is a Javascript library (opened source from Bitpay) that makes everything Bitcoin very simple.
Bitpay is a company that provides POS and software support as well as instant exchange.
Now there are other companies out there doing similar like: coinbase.com, .... hell I can't remember the others, but there are a few... I just like Bitpay.
If it's in the blockchain and the address is correct (meaning you also have the private key) then you don't need Mycelium to recognize the transaction.
You can pull out your private key from Mycelium, load it into any other wallet, and send out your funds.
Bitpay's open source bitcore library has a neat playground tool that has been quite useful to me in the past. http://bitcore.io/playground/#/hdkeys You can get your private key out of Mycelium's HD seed there and then create the transaction at: http://bitcore.io/playground/#/transaction
People should absolutely try to break my code as hard as possible and document successes doubts etc...
In terms of trying to game the POE method of /r/GetFairShare with alt accounts there are plenty of people cheating the system already and people should just go look for them and figure out ways to fairly deal with that problem.
They are kind of obvious if you pay attention. I don't know why more people haven't called them out.
Security wise all the crypto at http://fairshare.website is done by http://bitcore.io
Also I'm taking the approach that nothing is secret except your passphrase and temporary reddit session data. Both of which get stored in ram and forgotten as soon as you close tab or refresh the page.
The fairshare.website never even sees any other private data at all.
Python is a great language and I used to write it a lot before I migrated more to javascript.
I'm no crypto god either, I'm using http://bitcore.io to interact with all of that stuff.
Do you know what payout you missed and why?
They are fully automated (aside from the initiation) now so any mistakes I made in the past shouldn't happen again.
Most wallets don't provide that to you AFAIK, because that would allow anyone with it to recreate your whole wallet. That being said, If you don't mind making your own solution, you could use http://bitcore.io/playground/#/hdkeys
see http://bitcore.io/playground/#/hdkeys
I'm working on something similar with BIP44 wallets, Basically what's happening there is that bitcore generates the seed m (hdPrivateKey in example) and from it derives the extended private key for m/44'/0'/0'/0/1337.
What this does is it specs it to a BIP44 wallet, which is just a fine-tuned BIP32 wallet. I'm not sure if Multibit uses the same BIP32 paths as described in the image you posted so without knowing the source or paths it uses I couldn't say which you need. That image just shows that you can have wallets of wallets that contain addresses when using HD wallets if you wanted.
You should try to read the BIP32 article, mainly look at how it describes paths. I don't know everything about how it works, but Andreas' book definitely has a good chapter on it.
I got it from http://bitcore.io/playground/bower_components/bitcore/bitcore.min.js which I found in the source of http://bitcore.io/playground. Since it's not served on https, no, I can't be sure it can be trusted. That's why I filed this issue earlier today: https://github.com/bitpay/bitcore/issues/1077
Having said that, my goal was to make something where I don't have to trust my code. People should only enter their private key on an offline computer and can inspect what it is they're copying back to the online computer.
I really made this tool for myself. I was just excited about it when I got it to work and wanted to share it. Everybody should always be suspicious and cautious.
... plus a fourth for free to keep an eye on!
https://github.com/pembo210/Dogecore
based on bitcore.io. /u/pembo210 announced it a few days ago as a block explorer + API. Such Powerful. Much Excite. Very Open Source.
Depends on what he means by devs but Bitpay ported most core functions to node a while back;-
I have used it and it does everything, I have not used it to grab a full blockchain but you can it seems.
The best solution here is probably to make the transactions in your wallet. If you're working with multiple people, you could consider setting up a multi-signature wallet like Copay to receive bitcoin from BitPay. When John, Bob, and Charlie are ready to split the payments properly, they simply make the transaction with Copay.
If you're looking to build in more automation, you might want to take a look at Bitcore.
BitCore is open source software supported by BitPay:
With it you can create Bitcoin web apps and other kinds of software. It's written in Javascript. Given your background with web development, this might be a good place to start.
Have you considered Bitcore? Bitcore is developed and maintained by BitPay, but is completely open-source.
It's actually not very hard to build bitcoin applications that interact with the real network, rather than a specific company's API.
http://www.rjmacarthy.com/create-a-multi-signature-2-of-3-address-using-bitcore-and-node-js/
We have an inhouse app which takes the encrypted key and the decryption password and returns the key. This is kept offline.
The 1st and 2nd keys are e-mailed directly to each party, and never touched by cryptogrind again unless the party signs the escrow using their key.
with BitPay's Bitcore javascript library and various blockchain JSON API (blockchain.info and others) it is really easy and fun to make a bitcoin wallet nowadays http://bitcore.io/playground/#/address our implementation is ~300 lines of js, it's basic but it does the job https://github.com/720kb/BitNFC/blob/master/www/js/factories/bitcoin.js
That's entirely dependent upon the security of your computer and your ability to select a good passphrase.
Your passphrase gets SHA256 hashed and used as a bitcoin private key:
https://en.bitcoin.it/wiki/Brainwallet
I use the same algorithm as https://brainwallet.github.io (select compressed point conversion)
The actual implementation of this process is done in http://bitcore.io not handrolled by me.
> Bitcoin core just offers normal randomly generated private keys
Bitcore, not bitcoin core: http://bitcore.io/guide/hierarchical.html
>Btw.. What do you want to achieve?
Just have an HD wallet on the server.
Hi Dskloet,
Chris Stewart here from SuredBits. The protected bitcoins are fully controlled by the policy holder. The underwritten bitcoins are held in a multi-sig address controlled by three parties. Those parties are the underwriter, the policyholder and SuredBits.
The private key generation is done client side using Bitpay's Bitcore library. The purpose of this document is to obtain public keys easily from users to create a multisig address. Those public keys on the multisig address are controlled by the private keys on the pdf.
First we are trying to solve the problem where you lose access to bitcoins as demonstrated in this article. Secondly we are investigating the viability of other types of bitcoin protection that could be offered.
Easiest is to use http://bitcore.io/playground/#/transaction if you want to learn how to create a Bitcoin transaction...
If you want to use CoinAwesome there is a coinawesomejs-lib inside the FoundationAwesome Github (https://github.com/FoundationAwesome/coinawesomejs-lib) and use following line of code when you build a transaction:
transactionbuilder.addOutput(coinawesome.Script.fromASM("OP_RETURN " + hexData), 0)
If you just want embed an string into the CoinAwesome blockchain you can also use the browser wallet extension for Chrome and add a tag (your string).
Try Bitcore:
http://bitcore.io/guide/transaction.html
if you can handle javascript, you can use this module with nodejs.
There is a browser version as well:
I am not sure of any webserver implementations, but the general idea is that you provide a single account's HD public key (xpub) from an HD wallet, and the webserver uses that to generate receive addresses. Wallets that can export xpub are Trezor and Mycelium.
This essentially breaks the link between your wallet (the private keys) and your website, while still allowing unique payment addresses for each order.
You can see a working implementation of parent/child key generation in the bitcore playground http://bitcore.io/playground/#/hdkeys. Any HD Public Key can be used to generate child public keys. Addresses can be generated from those keys.
Also, chapter 4 of Mastering Bitcoin has a section on Hierarchical Deterministic Wallets that does a good job of explaining.
EDIT: Added mention of xpub and Trezor after confirming it allows access to the HD public key.
EDIT 2: Added mention of Mycelium.
You don't need a connection to the p2p network to broadcast a transaction! The transaction example in the playground (http://bitcore.io/playground/#/transaction) allows you to send the transaction via insight. Also, you should check the module https://github.com/bitpay/bitcore-explorers
Okay! I went to http://bitcore.io/playground/#/address in Google Chrome on Windows 8.1, left-clicked on the text box to the right of the label "Private Key". I noticed that all the text was selected. I pressed "0" on my keyboard. I would expect to see the text in the "private key" box be replaced with "0", but instead it generated a new, random looking private key.
It looks like the playground behaves better if I type any digit other than 0, but I actually want to type 0 because that is an interesting private key to me.
I have similar difficulties on https://brainwallet.github.io/. It's like some developers never try passing 0 as an input to their code.
Agreed on the importance of Payment Protocol. I'd like to see support for it in all wallets by the end of 2015.
Web-based wallets (or even if your wallet is a hybrid app for mobile) can easily implement Payment Protocol using Bitcore's JavaScript Payment Protocol Implementation. We handle all the hard work (like certificate validation) in JavaScript, and would be happy to support anyone implementing it.
Nice! I was planning to build a similar site using bitcore early next year. Did you try the library? You could implement script validation with it (actually executing the scripts). Let me know if you need help!
Manuel from bitpay here, Running the code on master works as expected:
var addr = new Address("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"); console.log(addr.isValid()); // outputs true var addr2 = new Address("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNb"); console.log(addr2.isValid()); // outputs false
However, running the same code in the bitcore.io browser console (http://bitcore.io/#browser) prints true twice. I remember fixing address validation a long time ago. Maybe the version running on the site is old. Are you running it locally or in the browser console?
Frankly, if you can learn the RPC interface for Bitcoin-daemon it will give you both multisend and the ability to test on testnet (exactly like bitcoin, but with "fake" BTC).
Otherwise, certain APIs and libraries may support Testnet, solving your problem.
BitcoinJ may also be worth a look. Or bitcore, by the BitPay devs: http://bitcore.io/
Because you've already done some work with the Web, you might have a look at Bitcore, which is written in JavaScript:
I would turn the question around, though. What are you interested in with respect to Bitcoin? Learn the language that will help you build what you think is missing there.
An alternative could be to use bitcore and only peer directly with your local bitcoind node and don't use the RPC API. Leveraging the wallet functionality in bitcoind is a fundamentally flawed approach, albeit an intuitive one to reach for first.
Have bitcore work with your own Node.js code to do all of the account management and indexing of the block chain and unspent outputs in your database. Node.js is incredibly fast and efficient and high-quality code so don't let the fact that it's Javascript confuse you. The async I/O code underneath is all libuv. It's basically as performant as Boost.Asio but less C++ heavy. High-quality OO C++ code scares people. It can be elegant to write but a nightmare to debug. Probably why the Node.js team chose libuv.
Scroll down and pay close attention to "Monitoring blocks and transactions." If I had to guess, I'd bet BitPay is moving towards this architecture model if they haven't already. If I were going to run large scaleable Bitcoin infrastructure I'd do this. Trying to hack a large service to work solely using a local node and the RPC API is probably a long-term dead-end. It can be done with sufficient hacking but don't do it. You certainly don't want to maintain a fork long-term.