How Coinbase went international

Crypto at its core has always been intended for a global audience. Bitcoin and other cryptocurrencies have no concept of borders, allowing for value to transfer seamlessly across the Internet…

Crypto at its core has always been intended for a global audience. Bitcoin and other cryptocurrencies have no concept of borders, allowing for value to transfer seamlessly across the Internet.

Coinbase’s vision and mission is to build an open financial system for the world. As of mid-2017, Coinbase was supporting translations in eight languages and operating in 32 countries, mostly in Europe and North America.

However, as our international growth accelerated in 2018, our engineering team began facing technical limitations that would hinder our international strategy, thereby limiting our ability to make crypto accessible to all.

There are many factors that go into international expansion, including complying with regulations, integrating with local payment methods, staffing support teams with native speakers, and UX design.

This post will focus mostly on the technical challenges that Coinbase’s engineering team faced around internationalization (a.k.a. i18n) and localization (a.k.a. l10n) during this period of international growth, and most importantly, the sequence of solutions. The main challenges were primarily: fragmentation across platforms, lack of translation infrastructure, poor translation quality, and missing i18n culture and process.

Our team started by scouring for existing research but quickly found there weren’t many public resources available for building a scalable international infrastructure. We knew that there were a number of companies already doing this successfully, so we began reaching out to people in our own networks. We found that the localization experts at companies such as Netflix, Airbnb, and Pinterest were more than happy to share their knowledge and experiences with us.

This post and our current localization infrastructure is a culmination of this effort to build a world-class translation pipeline that would support every country in the world. in German prior to upgrade (2015 to mid 2018), 32 countries, 8 languagesCross-platform localization

A primary challenge was the lack of standardization across clients around localization. Most browsers and mobile devices today have built-in localization APIs that utilize CLDR (a repository maintained by the Unicode Consortium for standardizing localization information). However, when you begin to move into browsers, support of these APIs begins to fluctuate, requiring polyfills and some headache (IE doesn’t support the Intl object at all!). To build a cohesive experience and to reduce the performance hit of including these large polyfill libraries, the web product now supports only the latest browsers that are actively maintained.

Mobile operating systems, such as iOS and Android, on the other hand, have built-in localization behaviors that vary slightly but are very good at what they do. We quickly realized that overriding these native APIs would be extremely difficult and would lead to more unpredictable behavior and a subpar customer experience. As a result, we opted to let apps localize with their native libraries coupled with a locale agnostic API. This approach is in line with separating data and presentation between APIs and clients.

Another common issue encountered was that certain platforms have different locale fallback behaviors. For example on iOS, if an app only supports Latin American Spanish (es-LA), a user whose native language is set to Mexican Spanish (es-MX) should fallback to es-LA. This behavior was different across platforms where on web, the same customer would actually see translations for Castilian Spanish (es-ES), which is a completely different language.The fix here wasn’t as simple as recording the user’s desired locale since on mobile devices, locale is determined by device settings. Overriding this OS behavior with a server locale as discussed previously is difficult and could lead to unforeseen bugs, so we couldn’t just add a locale selector on the app to let users change their locale. Instead, we would detect changes to device locale and set that new locale on the server, which would allow this change to propagate to emails and our website. Standardizing this fallback behavior and persisting user locale are some of the key initiatives we took to improve the customer experience. Building translation infrastructure

Our existing translation management platform was beginning to show cracks as our international efforts and our product surface area scaled. Each platform also had their own integration with our existing translation management platform which led to duplicated work. Due to this fragmentation, adding new languages or supporting translations for a new product was a cumbersome process, requiring many days to weeks of engineering time. On Android for example, the workflow was entirely manual, meaning a release manager would compile all the source strings and upload them through the translation management platform interface. If someone forgot to do this, then there would be no new translations for that release!

Because of these constraints, automation would be the number one feature to pursue. We were inspired by Pinterest which is able to maintain a world class localization pipeline with a very lean localization team. Similarly, we wanted to build a developer experience that made it easy and quick for engineers to internationalize their features. In theory, all an engineer would have to do is tag their strings for translation and the tooling would handle the rest. While this part of the translation pipeline could be automated, there were certain parts such as QA that remain a manual process. For these instances, we would default to process and include it as a step in our release cycle.

With this strategy in mind, our team designed a translation workflow for the future. Key parts of this process included finding a translation management platform that would scale as international growth continued, building a common interface for services and clients to access translations, while adding in translation QA to the release cycle.

New translation workflow with Translation Service and QA. Image courtesy of Arjang Navab.

Searching for a TMS

Last year, the search for a new translation management platform (TMS) began. As we thought about what would be required from a vendor, some of our key requirements were:

  1. Integrations with many vendors including popular CMS products
  2. Extensive translation tooling for translators and localization managers
  3. Visual context solutions that allow translators to translate in the context of the app
  4. Powerful translation memory so strings only need to be translated once, saving translation time and cost
  5. Well-maintained and well-documented APIs
  6. Great customer support and technical specialists

After evaluating a few TMS providers, we ultimately chose a vendor that met all these criteria.Building a common i18n interface

The next step was to build a common interface for services to access translations. To accomplish this we built a translation service written in Golang that sits between clients and the TMS. The service validates all incoming files in case of a malicious attacker compromising the TMS. The service also enables greater control over our content and delivers translations on the fly. For example, on web, we were previously bundling all translations with the app which took up over 75% of our bundle size. By integrating with the translation service, we were able to pull translations dynamically based on the user’s locale, thus decreasing our time to interactive by 27%.

Standarding our integration with the TMS across all clients enables changes to be quickly deployed to our translation workflow. Adding new languages is now as easy as coordinating with translators and a few lines of code. Since the start of this project, we’ve added 10 new languages in 102 countries and translation support for our Commerce product and internal tools. In the future you’ll see many more Coinbase products begin to support translations, as well as expanded language support. Improving translation quality

While we supported translations, the quality of those translations weren’t on par with products created by native speakers. In order for customers to find value in the product, it needs to not only support translations but also feel local. A number of factors contribute to a product feeling local including locale specific features and UI/UX, but the first step was to focus on improving translation quality.

The most common problem was lack of context, whereby translators were translating strings in isolation without context of the greater application. To address this, we enforced adding descriptions to all strings through linters for each platform. Images were also uploaded to the TMS through an automated screenshot tool in order to contextualize string usage, which would help translators see how the string is used in the app. Further, we revamped our glossary of common terms with industry-specific terminology.

QA has also been an important part of improving translation quality. Following Pinterest’s model, we have also identified internal owners for specific languages to address quality issues and triage bugs. Employees are encouraged to use the product in a different language to understand customer pain points. Our team is currently working towards having language owners for every language and also exploring third party vendors for QA. in German (March 2020 — now), 102 countries, 18 languagesMaking international a first class citizen

Building an international product isn’t something that happens all at once, it’s a continual process. It’s not something that one person or team can tackle on their own: Designers need to design for different language constraints, such as character size, word length, or possibly right to left languages. Copywriters need to think about gender and plurality in different languages. Engineers are required to tag all their strings early for translation and build responsive UI. Product managers need to think about how certain features will change international customer behavior. Much of this involves educating new employees and making it easy for people to think internationally.

Providing our customers with a great international experience is a critical stepping stone for building an open, global financial system.

If you’re interested in helping us achieve this mission, visit our careers page.

The opinions expressed on this website are those of the authors who are associated persons of Coinbase. Information is provided for general educational purposes only and is not intended to constitute investment or other advice on financial products. Unless otherwise noted, all images provided herein are the property of Coinbase.

How Coinbase went international was originally published in The Coinbase Blog on Medium, where people are continuing the conversation by highlighting and responding to this story.

How To Use Trading Bots

Crypto trading bot is a tool that makes trading cryptocurrencies easier. In this post, Changelly explain how to use trading Bots

Trading is a popular way to make cryptocurrency, so it shouldn’t be a surprise that there would be tools to make it easier and more efficient. Crypto trading bot is one of such tools. With it, traders can automate their work, allowing for faster reactions and more consistent profits. In this article, we’ll explain the basics of working with trading bots: what is a trading bot, why should you use it, and how to set it up.  

What is a Crypto Trading Bot?

Crypto Trading Bots

A crypto trading bot is a computer program that automatically buys and/or sells assets when its price reaches a certain goal. That’s basically it. Now, let’s take a closer look at how exactly that works.

Most trading bots work on a rather simple principle that can be described as “signal generator — risk allocation — execution”. That’s the pattern behind every decision made by such bots.

The signal generator is the part where bot makes its predictions. Data (be it one collected from indicators or other sources) enters in the generator, and it decides whether to put out a buy or sell signal. Afterward, this signal proceeds for the risk allocation. 

Once the buy or sell signal is there, a crypto trading bot has to decide how much it should buy or sell. It decides whether to allocate a whole capital to the trade, or just a part of it, and so on. 

The final part of the trade is execution, the part where the deal actually happens. With all of the processes ascertained and decided, it is a simple task of concluding the said deal. While it may seem like this is the least important part, it is not so. If other traders use the same algorithms to conduct their trading, you may get an unfavorable deal at a lower price. 

This part of the algo decides how best to conduct the deal itself, whether buying/selling in one piece will bring greater profits or not. So, to make sure that your trading bot is actually working in your best interests, you will need one to excel in all three parts of the trading.

Benefits of Using Trading Bots

Why would I even need to use a trading bot if I can do it myself? Well, there are a few reasons for that:

  • We have limitations that bots simply don’t. We can’t monitor the market 24/7, and even if the trader sets up an intricate web of alerts, he wouldn’t be able to react to them immediately. Bots don’t need to sleep, eat, and do not get distracted. 
  • Trading bots also can react faster than any human, and every moment can cost trader money.
  • Crypto trading bot can easily process more data than any human. It can analyze and predict how the market would turn earlier than a trade, granting it an edge, and you, a profit.
  • We tend to lose ourselves in the thrill, wishing for more money, or wanting to return the losses. This can lead to even more losses. A trading bot does not have that weakness, as it operates on cold logic and does whatever is more profitable according to statistics. This means that bots will lose less often and bring more profits overall.

There are different reasons why humans may outperform trading bots on similar deals, as taking risks may result in a bigger payout, or a hunch can allow guessing the trend. Bots are more effective at bringing in money than humans, and that alone should be a reason enough to employ them.

How to Make a Trading Bot

Buying a trading bot is not your only option. If nothing on the market strikes your fancy, you can always try and create your own. It would require some technical expertise, as well as knowledge of trading and market trends, to create a truly efficient one. 

To code a trading bot by yourself, you will need: 

  • Conduct research: what do you want from your bot? What is his main goal? What platform would you use? Answer those questions, create your own risk profile, based on your capital and time constraints. Once you’ve created that, you can start coding.
  • Base coding: a trading bot is only as good as its code. It can’t really get outside of what it was programmed to do, so you need to carefully consider what you need it to do, and what tools you should include. The most common are setting up entry and exit rules, and the number of units to sell/buy. 
  • Cleaning data: to get accurate readings during your testing, you need to get sure that you’ve got accurate data. Cleaning and compiling it, so that gathered information is as close to the real trading as possible is vital there. 
  • Testing: unless you’ve thoroughly tested your bot, you can’t say that it really works. You need to make sure to find out little bugs and issues that may cost you money before you use it for trading. Of course, you can’t catch them all, but the more you get before setting it up, the fewer problems you’ll get later on. 
  • Design: with the code done and tested, you need to make sure that your bot’s design takes into account the market’s risks and flaws. 

With all of that resolved, you should ensure that your bot uses viable trading strategies. You can do that by programming it to create sound statistical models, from which said strategies would be built. This will allow your bot to follow the guidelines and to execute commands at the right time. 

How to Set Up a Crypto Trading Bot

With all of that handled, it is time to actually set up your bot. Whether you’ve bought one, or you created it yourself, there are a few steps you’ll need to follow before you can actually use it. 

  1. Find and install Python and Python Library: you will need to have at least a basic understanding of how it works and how to run a simple script in this language.
  2. Get API keys from brokers: depending on the broker you’ve chosen, you will need to know different languages to integrate them with your bot. A good idea would be to brush up not only on Python but also on MQL4/5, and C#.
  3. Make sure to not allow withdrawals from your account: if you allow the bot to do so, it will be at risk of spending more money than you intended to, or even to be attacked by a hacker. A crypto trading bot with withdrawal permission is a security and financial hazard.
  4. Set up evaluation procedures: this will allow you to track your bot’s performance so that you can easily fix any problems that may occur, or just improve its efficiency based on the data.
  5. Keep a hard copy of the generated key pairs on hand and keep it safe.

Your trading bot is ready to get out and start making you profit. Just check up on it and apply upgrades and fixes if necessary, and it will serve you well.


We conclude our guide on what trading bots are, why would traders use them, and how to create and set up one for yourself. Crypto market is one that benefits the most from trading bots since most cryptocurrencies are really volatile assets, so traders would need to make snap decisions, and even one or two seconds of delay can spell disaster for their investment. 

Trading bots are not as limited in their perception, so they can make your trading more profitable overall, for the price of making slightly less money per trade. As many experienced traders would say, a consistent lower profit is much better than the inconsistent one. Stay tuned for more trading and crypto insights. About Changelly

Changelly is a secure instant crypto exchange that has 150+ cryptocurrencies available to be swapped and bought at market-best rates. Operating since 2015, the platform and its mobile application attract over a million visitors monthly, who all enjoy quick and simple exchanges, low transparent fees, and 24/7 live support.

The post How To Use Trading Bots appeared first on Changelly Blog.

Donald Trump’s Senior Economic Advisor Is Working on a Stablecoin

There’s at least one blockchain bull in Washington D.C. 

Stephen Moore currently serves as Donald Trump’s senior economic adviser. Moore played an instrumental role in the writing and passage of the Tax Cuts and Jobs Act (2017) and briefly entertained a Trump nomination to serve as a governor of the Federal Reserve and help manage the nation’s currency (Moore would withdraw his name from consideration.) 

Continue reading “Donald Trump’s Senior Economic Advisor Is Working on a Stablecoin”

What will happen to cryptocurrency in the 2020s

Yesterday I recapped the last decade in crypto. Today, let’s look ahead to the future and what I think will happen in the 2020s. Of course, no one can predict the future with much accuracy, but one way to predict it more accurately is to invent it!

Continue reading “What will happen to cryptocurrency in the 2020s”