One of the main priorities at BitPay is to make our platform, Copay (complete with a multisig wallet), as featureful as possible. Along with this is our core implementation of Bitcoin, aptly named Bitcore. Both of these projects can be run in the browser.
In our open source javascript projects, we implement multisig/pay-to-script-hash/HD wallets, and every other new Bitcoin improvement and buzzword you can think of.
However, up until now, as strange as it may seem for a platform that tries to implement every cutting-edge bitcoin improvement there is, Bitcore and Copay have lacked support for the extremely beneficial Payment Protocol (BIP-70). It ultimately became our primary goal to make Payment Protocol easy to use for everyone via Bitcore.
Bitcore and Payment Protocol?
Payment Protocol is a method by which the traditional procedure of sending transactions is scrapped for a client<->server
based model.
Keep your seats. This doesn't mean Bitcoin is no longer distributed. It allows a server to decide how many bitcoins you need to pay, and where you need to pay them. After that, the server broadcasts your transaction for you. Most importantly, it solves the problem of verifying identity in Bitcoin by using an X.509 Certificate Chain. In the spirit of a distributed system, anyone can make a Payment server or client. We wanted to make that last part easily possible.
Furthermore, BIP-70 does not specify X.509 as the only method to verify identity. In the future, there may be a superior decentralized system of identity verification, without the warts X.509 has accumulated throughout its 20+ year design history. This could ideally replace X.509 in Payment Protocol.
Since we like doing things that have never been done before...
We fully implemented the complicated stuff in Bitcore for you: BIP-70 and X.509 Certificate Chain Validation. We leveraged these capabilities in Copay. Now that we have implemented both of these technologies, it means anyone can do a number of things that were never possible in javascript or the browser before.
Payment Protocol in the browser has never been done before, and it means you
can use Bitcore to implement the Payment Protocol in your own javascript app,
whether it be serverside or in the browser.
If you choose to use these capabilities, you can now do proper X.509
certificate signing and chain validation in the browser or node.js, for
BIP-70, or any other use you may have for it.
Implications for Copay
You may not realize it, but when you click a bitcoin URI
(bitcoin:...?...&r=https%3A%2F%2Fbitpay.com%2Fi%2F...
) and your wallet opens
up, ready to send a transaction to bitpay.com, you are using Payment
Protocol. Wallets like Bitcoin-Qt have a rather easy time implementing this
since it's not bound by the rules of the browser.
Instead, you can now use Copay as your Multisig wallet to create transaction
proposals for other copayers based on payment protocol requests sent from
payment servers (i.e. bitpay.com). When you click that same bitcoin:
URI in
your browser, you can have Copay open up and gladly use Payment Protocol to
create and send your raw transaction back to the server.
When these, or any transaction proposals are created, Copay also now offers the
ability to create them for other Copayers to see without them having to be
online at the time. If you have a 2-of-3 wallet, the other two people you trust
with your funds do not have to be online to see your transaction waiting to be
signed by them.
While our Copay platform does offer a highly sophisticated wallet, we hope to
see developers begin to build on top of Copay and Bitcore. These two projects
offer features that are scarcely found elsewhere: Pay-To-Script-Hash and now
BIP-70. Bitcore/Copay(+Insight) can be used as a backend and basis for a
completely new wallet if anyone so chooses.
Insight into the Blockchain
Copay uses Insight, our open source blockchain explorer & API, to grab balances among other things. Once again, anyone is welcome to host their own blockchain explorer.
The conclusion for now
Using these three projects, there are no limits to what one can accomplish with
Bitcoin. Distribution is key: you can run your own Bitcore node, your own Copay
server (or as a standalone app), and your own Insight server. We encourage
everyone to build their own platforms or add on to an existing one.
We are absolutely committed to contributing to Bitcoin open source. Our general
philosophy here at BitPay is, "If it's good for Bitcoin, it's good for us." We
want to continue contributing to Bitcoin open source as much as possible with
Insight, Copay, and Bitcore.
We want to do the hard things that no one has done before, and we want to make
the complicated parts of Bitcoin as easy to implement as possible. More
wallets, more implementations, by more people, is always a good thing for
Bitcoin. That is what a distributed protocol like Bitcoin is all about.