Welcome Marco Santori: Blockchain’s new President and Chief Legal Officer

Today we’re thrilled to announce that Marco Santori is joining Blockchain as our President & Chief Legal Officer. Previously, Marco was a partner at the law firm Cooley LLP, where he led the global financial technology practice and built the most acclaimed digital assets-focused legal practice in the industry.

Marco has an impressive legal background and has a roster of world-class clients. He has worked with investors, companies of all sizes, regulators and public institutions to build our industry and shape the future of finance. Notably, Marco is an advisor to the International Monetary Fund, and the Blockchain Ambassador for the State of Delaware. He is most recently known as an author of the “Simple Agreement for Future Tokens” (SAFT) Project Whitepaper, which has set the standard for mitigating investor and consumer risks associated with Initial Coin Offerings (ICOs).

“Marco has a breadth and depth of knowledge that is unmatched and I couldn’t think of a better person to focus entirely on our expansion efforts and strategy as we continue to serve our millions of users globally,” said Peter Smith, CEO and Co-Founder of Blockchain.  

Blockchain experienced a record year of growth in 2017 and we’re focused on scaling our company and leadership team to support the global business we run today.  As President and Chief Legal Officer, Marco will focus on building our compliance, legal and corporate development teams as well as leading the charge to bring new products to market alongside the rest of our team.  

“I’m honored and thrilled to join Blockchain, the leading provider for digital asset software,” said Marco Santori. “It’s a compelling opportunity to contribute to a company that is not only achieving unparalleled business success, but also delivering on a powerful mission to create an inclusive financial system from which everyone can benefit.”

Marco will assume the role of President from Co-Founder Nicolas Cary. As Vice Chairman for the company, Nic will continue to be instrumental in day-to-day operations as well as Blockchain’s public affairs and external relations. “Marco will be a great asset for Blockchain and I look forward to dedicating more of my time on building our brand in key regions like India, hiring the brightest talent, and educating more people on the benefits of digital assets,” said Nic Cary, Co-Founder, Board Member, and Vice Chairman of Blockchain.

More on Marco:

Marco joins Blockchain from Cooley LLP where he was the head of the firm’s Financial Technology practice group. Marco Santori is an authority in the law of blockchain technology, and has been called “The Dean of Digital Currency Lawyers” by American Banker. He is the author of the transformative Simple Agreements for Future Tokens (SAFT) Project Whitepaper, a standard-setting self-regulatory effort that mitigates investor and consumer risks associated with Initial Coin Offerings (ICOs). Additionally, he is the Legal Ambassador for the Delaware Blockchain initiative and an advisor to the International Monetary Fund. He has frequented stages around the world to share his insights, including the Cato Institute’s Cryptocurrency Conference, the American Bar Association Summit, North American Bitcoin Conference, and the Consensus Conference and has been profiled by the Wall Street Journal, Forbes, Bloomberg, Reuters among others.

Building Cryptocurrency Agnostic Components in My-Wallet-V3 and My-Wallet-V3-Frontend

At Blockchain, we’re striving to write reusable, extendable, and flexible code. This practice has become even more important with the recent addition of Bitcoin Cash and ether to our wallet application. For our users, adhering to writing agnostic components makes project delivery speeds faster and more consistent. For our developers, it makes the code fun to work with and less buggy.

A few months ago, we added ether to the Blockchain wallet along with a crypto-to-crypto exchange integration. This feature was the first we’ve built that supports multiple cryptocurrencies (instead of just bitcoin to fiat or vice versa). In our efforts to build reusable, extendable, and flexible code we built it to support any digital currency our wallet currently offers or will offer in the future.

The components that make up our exchange integration are completely agnostic to the currencies the user wishes to shift. Any digital currency can be plugged into the integration as long as it’s “API” in the My-Wallet-V3 core supports a few basic functions. Let’s walk through how this works a little bit.

When the wallet initializes the exchange checkout process it passes the destination and origin wallets to the shift-create component from the shapeShiftCheckout controller:

My-Wallet-V3-Frontend/assets/js/controllers/shapeshift/shapeShiftCheckout.controller.js

...
this.wallets = Wallet.accounts().concat(Ethereum.defaultAccount);
...

And in My-Wallet-V3-Frontend/app/partials/shapeshift/checkout.pug

...
shift-create(wallets="vm.wallets")
...

Note: There are more attributes passed to the shift-create component, but for simplicity I’ve removed them.

The line in shapeShiftCheckout.controller.js (`this.wallets = Wallet.accounts().concat(Ethereum.defaultAccount);`) was for shifting between bitcoin and ether when we initially launched the ether integration. What it does is concatenate all the bitcoin wallets in your Blockchain wallet with the ether default wallet. In checkout.pug, we tell shift-create to load these wallets as possible origins and destinations in an exchange.

A few months later, we added full support of Bitcoin Cash to our wallet. We wanted to give users the ability to exchange their Bitcoin Cash to and from bitcoin and ether. Here is the commit that added Bitcoin Cash to our exchange integration: https://github.com/blockchain/My-Wallet-V3-Frontend/commit/0c44b5bca7951a9a298d5599d5fd872b0eff5de5.

-this.wallets = Wallet.accounts().concat(Ethereum.defaultAccount);
+this.wallets = Wallet.accounts().concat(Ethereum.defaultAccount).concat(MyWallet.wallet.bch.accounts);

Adding Bitcoin Cash was as easy as changing one line of code because we built cryptocurrency agnostic components for exchanging bitcoin <-> ether from the beginning.

If you check the shift-create component where the wallets are passed, you won’t find any reference towards a specific cryptocurrency itself: (https://github.com/blockchain/My-Wallet-V3-Frontend/blob/master/assets/js/components/shapeshift/shift-create.component.js). You’ll only see functions called on the wallets that the API in My-Wallet-V3 core requires them to have.

  1. `getAvailableBalance` -> How the component calculates the total amount the outgoing wallet has available to send/exchange. Below are the functions for each cryptocurrency:
    1. bitcoin: https://github.com/blockchain/My-Wallet-V3/blob/master/src/hd-account.js#L311
    2. ether: https://github.com/blockchain/My-Wallet-V3/blob/master/src/eth/eth-account.js#L138
    3. Bitcoin Cash: https://github.com/blockchain/My-Wallet-V3/blob/master/src/bch/bch-account.js#L68
  2. coinCode -> The wallet’s coinCode to be used later in the cryptoCurrencyMap.
    1. bitcoin: ‘btc’
    2. ether: ‘eth’
    3. Bitcoin Cash: ‘bch’
  3. Balance -> Used to check for balance updates in the wallet. If a user’s balance changes, the component calls getAvailableBalance.
  4. cryptoCurrencyMap -> Used to calculate conversions between each digital currency and their fiat values.

When everything comes together, the final result looks like this:

Screenshot of initial Blockchain exchange integration using agnostic components

Despite the ease of adding new currencies, we wanted to continue improving the exchange experience for our users.

In version 1 of our exchange integration, there was no loading state to tell users that the component was working on getting a quote. Under good network conditions requests like these can seem instantaneous and a loading state might even seem a little jarring. However, because of the high traffic on digital currency networks, requests can take up to 5 seconds to resolve. Bitcoin, ether, Bitcoin Cash, and other digital currencies are handling more transactions than they ever have before. Record high transaction volumes are leading to network congestion, in turn leading to slow loading times from services like ShapeShift.

Depending on how long a request took to make, it could look like the component was frozen or that something broke and no error was returned. In reality, a request was being made and we weren’t correctly indicating that to the user. We decided to add a loading state to the component as you can see in version 1 vs version 2 below.

GIF showing Blockchain's initial exchange integration using agnostic components with a loading screen
Version 2
GIF showing Blockchain's initial exchange integration using agnostic components without a loading screen
Version 1

 

 

 

 

 

 

 

Users were relieved to see an indication of the app working to get a quote after the launch of version 2. Our transaction volume increased by 10% the week after we rolled out these changes, ~30% over the 2 weeks after, and 75% over the following month. Seemingly small improvements like this make a big difference to users.

Building components that are resilient to cryptocurrency’s rapid growth and constant change is just one of the many ways we ensure our users are getting a best-in-class experience on our platform. We hope you’ve enjoyed learning a little more about our process and look forward to continuing to deliver new and innovative solutions in our effort to create an open, fair, and accessible financial future.

Sound exciting? Check out our open positions available to join our incredible UX development team.

Introducing Our First Dedicated Open Source Developer

It’s a great joy to welcome (back) Sjors to the family. Sjors joined our team as one of our earliest engineers and was at the center of rewriting and scaling our web wallet for three years. After some time off for exploring, Sjors has decided to focus on open source protocol development. I know he’ll bring a valuable perspective from his time working on our platform.

Sjors has been passionate about contributing to open source for a long-time. In fact, that’s how we met him – he made a pull request on an early version of our iOS wallet. He’s already contributing to Bitcoin Core and has previously run some really fun smart contract experiments on Ethereum.

We want to make sure Sjors is independent, so we’ve been clear that:

  1. Sjors is sponsored for the work and is an independent from our main engineering team
  2. Sjors can work on any protocol that we’re currently supporting on our wallet
  3. Everything Sjors does under the sponsorship is open sourced

Sjors has already had a tremendous impact on the way millions of people use digital currencies, but I’m excited to see him continue making that impact, across an even greater user base by shifting his focus to the protocols themselves. To the OS community, you should know you’re getting one of the best – a person I don’t always agree with, but a person whose opinion I’ve always found to be of the highest quality, and whose integrity is without a doubt.  

Meet our Team: November 2017

With less than two months left in 2017, we’re waiting (some more enthusiastically than others) for snow fort season to begin. In the meantime, we’ve kept a clear focus on enhancing our platform for our 18+ million users around the world. Here are some of the newer team members helping us do just that and then some.

Read more “Meet our Team: November 2017”

Meet our Team: May 2017

Can you believe it’s nearly summer already? Between the rising trends for global adoption and all the stellar price movement, 2017 has been a record-setting year so far for bitcoin. Joining us on this epic journey are three new Blockchain team members that we can’t wait for you to meet!

Read more “Meet our Team: May 2017”

Support for our Russian users: Поддержка для русскоязычных пользователей

Recently, our support team was in the spotlight on our blog for their outstanding performance in customer service. This week we’re back with more related news that we’ve yet to officially announce: мы предоставляем поддержку на русском языке (that’s “we’re providing Russian support” for all you non-Russian speakers). Keep on reading to find out more about how we’re supporting our growing Russian userbase (scroll down to the end for the Russian version of this post).

Read more “Support for our Russian users: Поддержка для русскоязычных пользователей”

Meet our Team: January 2017

It takes guts to embark on a new career adventure but the bitcoin space is likely one of the more fast-paced, exciting and rewarding industries out there. And luckily for us, it tends to attract the best and brightest. Our most recent hires are no exception. Meet four marvelous new additions to our team who have all made quite the impression on us since they came aboard in the latter half of 2016.

Read more “Meet our Team: January 2017”