Why should I care about blockchain
November 07, 2018, in Blockchain
As business owners we have to understand that our business always has an expiration date. We have to be thinking not only about our day-to-day operational challenges, but also those that may come in the future. Specifically, we need to make a plan that allows us to sustain our business over time, in which we are able to re-invent and re-shape the way we do things.
If technology is supposed to be how we leverage and improve our work, as long as technology moves forward, our business needs to move forward too. And if we aren’t moving, somebody else is.
Blockchain is yet another technology that promises to make us work differently, as other techs before it, but with a huge twist.
New technologies will often become essential business tools once we, as users, feel confident with them. Typically, we start by trusting in the creator of the technology, then the team producing the brand, and then finally the brand itself. The brand name then becomes what instills a sense of trust.
With blockchain, trust in a brand is not necessary. The technology itself is trustworthy by design.
Let’s look at an example. To send money from country A to B we could hypothetically:
- Find somebody on Facebook from country A that will be travelling to country B, contact them and ask if they are willing to take money to a friend (and declare the money appropriately, so that is legal). We would put this person in touch with our friend and hope that they bring them the money. There is nothing that will guarantee that the money will end up in our friend’s hands. We have to trust that this stranger won’t lose our money, keep it for himself, or give it to another person by mistake. Also, we will only know that the transaction has been completed once our friend receives the money.
- Make a bank transfer: We would only need our friend’s bank account number and then to send the money using our bank. This is a secure method, since we can trust our banking institution to correctly deliver the funds.
Obviously, the first scenario is not desirable. We are willing to pay banking fees in this situation since trust is essential.
Bitcoin, the first blockchain made, acts as a type of virtual currency that allows us to directly send money from one account to another, without using a bank. Why would we feel safe doing this? Because these transactions are made via the blockchain, giving them a permanent, public record. A blockchain doesn’t exist on a physical server, but is instead a kind of shared ledger in which transactions can be recorded. The Bitcoin blockchain is supported by a network of distributed and remote servers, known as “nodes”, where “miners” process data and are rewarded with fractions of Bitcoin for the use of their computing power. Once a transaction is sent to be recorded on the blockchain, it can never be undone. Blockchain therefore takes away our need for an intermediary that we trust, like a bank. By design, blockchain gives us the trust we need.
Now let’s think about smart contracts and how they empower the ledger. Essentially Smart Contracts (SCs), used on blockchains like Ethereum, are small programs or sets of rules that will execute under specific circumstances and without any human interaction. Furthermore, the programs themselves and their execution can’t be changed or altered even by their creator or administrator.
For example, we could create a unique signature for a PDF file by hashing it (a mathematical function that produces a kind of data ID). We can store the hash on the blockchain and send the file and the hash from person A to person B. Person B can validate that the received document is the original because the only way to generate the same signature by the hashing process is by using the exact same file.
Having this hash in the blockchain acts as irrefutable proof that the document exists and hasn’t been altered.
Work done by a notary isn’t so different from this process, as their role is to prove that the content of a document is real and hasn’t been altered. But while a notary is an intermediary that gives us a way to trust content, blockchain is giving us this same level of trust by design.
But it’s not just a notary’s work that blockchain could potentially replace. In most cases where we have public, shareable information that needs to be validated and protected we can consider the use of blockchain. Copyrights and patents are an example of this, and there are many blockchain startups already beginning to re-address how we approach these services.
Smart contracts might seem like an abstract concept, but you may have to consider their utility if they could make your business processes more efficient. For example, if you need to ensure multiple participants have done their work on time, or would like to trigger actions like automatic payments.
To illustrate this idea, imagine you have one party providing a service and another receiving it. Usually there’s a contract between them that says something like: If the app is published in the app store before the specified date, you will be paid X amount of dollars and, if not, there will be a fine of Y. Smart Contracts, on the other hand, can do this automatically. In this case, when the app is published the SC can check the established dates and release/discount funds accordingly. This way you don’t have to worry about your customer not paying on time or your provider being aware of delivery dates.
Blockchain isn’t something that will be used with all information systems and it won’t replace them, but it certainly will have an essential role.
Will your business be positively or negatively affected by blockchain? This is my checklist of points to consider:
- Do I manage information that needs to be validated & marked in order to be trusted? (Monetary transactions, documents, etc.)
- Do I have or manage assets that could be assigned an abstract value (like a token)?
- Do I manage any proprietary transfers between parties?
- Am I an intermediary that provides trust of any kind?
If your answer is yes to any of these questions, you should be learning more about blockchain and smart contracts. Being aware and prepared is the best way to take advantage of this incredible technology that will be creating many new business opportunities in the future.
If your answer is yes to any of these questions, don’t panic. We have built a step-by-step process that can help you make your transition into blockchain.
What is Blockchain
June 10, 2018, in Blockchain
The news is filled with stories about blockchain, Bitcoin, Ethereum and cryptocurrency. We’re told they’re here to stay. We’re told they’re going to change everything. That this is the New Internet. All of this sounds great, but: what is blockchain? Why is it such a revolutionary thing? What should we do about it? And most of all: how will it impact us?
The first answer we get is: if you know what Bitcoin (the first cryptocurrency) is, then you already know what blockchain is or at least you how it can be used, since Bitcoin was the first successful implementation of blockchain.
In fact, blockchain isn’t at all new, it was created in 1996, brought to us by the world of cryptography. It was only in 2008 that bitcoin was created by Satoshi Nakamoto. But in the last two or three years, bitcoin became hugely popular, its value grew and it became a currency for services and goods, which in return made blockchain so much more relevant.
Cryptocurrencies are an integral part of blockchain, since they are used for sustaining and rewarding components of the block. But blockchain is so much more than that and the opportunities abound. Let’s explore them.
Blockchain should be seen as an amazingly spread out database. Every component (nodes) has access to the same information as well as to the totality of transactions carried out. For instance, the ethereum network currently has more than 30 thousand nodes. Information is so spread out, it’s impossible that any of it will ever get lost.
Everyone is allowed to access all information with a public key, but you can’t generate a transaction on blockchain without a private key, since it’s completely encrypted. Besides the person who generated the transaction, and who also owns the private key, no one else can participate in the transaction. We can find out how many bitcoins a “user” has, we can see their public key, but we don’t know who they are. We can even trace the money, without knowing the identity of those involved. In Ethereum we can see each and every transaction.
Registries in blockchain can’t be modified. We can only add a transaction but we can never modify an already existent transaction. Each transaction block generates a unique coding called hash (kind of like a verification code) which is calculated according to the block. Say we have block 0 (zero) or genesis block.
Now let’s say a successive transaction block is generated: it’s composed of transactions that are added to the block 0 hash. Therefore, the transaction 1 hash block depends entirely on block 0, meaning its linked. This happens with every block. Each and every n block depends on the n-1 block in order to be validated, and so on, all the way to block 0. This is how the blockchain is created.
Imagine a pile of heavy blocks. Each time a block is added on top, those underneath are less likely or even impossible to modify or move. The result is a robust and unalterable chain.
Every time a transaction is made, it must be verified in order to make sure it’s valid and legal. Each block of transactions is generated by a miner, a kind of problem solving machine (we’ll cover this aspect more extensively in another article). Since there are many miners, there’s a set of pre-established consensus rules which make sure that the new block is valid and that it’s taken as a base for the following blocks. As a result, each confirmed block will further confirm the previous blocks.
Since a transaction can’t be modified and every transaction is registered in every node of the block, we can trace any transaction from the beginning until today. This means we can know the entire history of a good or record.
What can we use it for?
The most attractive thing about Bitcoin is that it cuts the middleman. There’s no need for a central authority giving confidence to the process of transactions between one or more protagonists. The design of the blockchain is enough to provide this confidence. Besides monetary transactions, we can also generate contracts o small programs regulated by the rules we just described. This brings forth new possibilities for exchanges and agreements.
Let’s talk more about transactions. Smart Contracts generate a monetary transaction or goods exchange. Contracts establish rules or agreements (just like paper contracts) between participants concerning an asset. The transaction is complete when the contract is fulfilled, which registers on the block. Fulfillment is made according to rules which are programmed inside the blockchain. Once they’re executed, they can’t be modified. Besides, the contract can’t be changed either once it exists inside the blockchain. Even if the contract needs to be changed, the results given by the previous contract are never erased.
Let’s say we have two participants, Peter and Anne. Anne has a car with license plate number A54–3697. The car is in her name and she’s the sole owner of the car, so the record on the block will indicate that the car belongs to Anne. A new smart contract is created, establishing that, if Peter has enough funds (condition), he can buy Anne’s car. When the contract is executed, and if the condition is verified, the car can be owned by Pedro, since a new record is generated, representing the transaction. Since no one can modify a block or its history, we’re guaranteed that the car is indeed Anne’s car, and we can even know the entire history of that car, since it first appeared on the block until today.
Now, if we wanted to generate a change in the contract, for instance, having a third party (a salesperson) receive a commission on the sale of the car, this wouldn’t modify the previous transactions. Either we assume the salesperson will only charge for posterior sales, or we create a special contract that generates said commission on current payments, with the risk that they could remain incomplete, since Peter or Anne could possibly not have enough funds.
This means that, nowadays, we can exchange virtual money but we can also execute contracts that may or may not involve payments. We can generate decisions which cannot be disposed of once they’re taken, which brings us a level of transparency unheard of before.
Governments, banks or insurance firms could greatly benefit from this technology. And this is just the tip of the iceberg. Cutting the middleman also translates as a cost reduction for the final user.
If we allow for a utopian vision, we can imagine a not so distant future where concepts such as blockchain and IOT (Internet of Things) are linked by smart contracts, bringing an endless amount of services to the community. This new era is barely starting and evolving steadily. We must be ready for it and for the work and business opportunities it will bring. But let’s not get carried away, blockchain won’t replace current systems, it will just help us strengthen and improve some parts of them.
At inmind we’re working hard to create and develop solutions in order to offer the best consulting regarding blockchain technologies and how to use them.
I need a mobile app for…
October 18, 2017, in Mobile
Everyday our company gets more requests of this kind, either by phone, email or the web.
I need an app for…
The first thing we do is make sure our client actually needs a mobile app in order to interact with its clients. Is it necessary to be able to use the app offline? What data should be available offline? These might be simple questions, but they let us build a secure base for our budget. In any case, our job is far from being done, and we haven’t made the sale yet!
Next, we assess our client’s technical knowledge. When our counterpart is technical, it’s easier to explain and to agree on certain aspects of the software development. But if they lack that expertise, we must double our efforts in order to bring the best service to our clients.
Every software development follows a life cycle. The product is BORN, it LIVES and it DIES. Just like with life itself, a software will spend more time living than in any other stage. Therefore, we must make sure our clients understand that they’re going to invest more money in maintaining their products than they will to actually make them or to discontinue them.
This is particularly the case in the Mobile world. Companies like Apple and Google are constantly modifying the hardware and software of our products. Every year Apple comes up with a new iPhone or iPad, along with new iOS (Apple’s operating system for these devices) versions. And we’re not even contemplating the many partial updates. The same thing happens with Google, launching a new Android version each year. And how about those devices? When we actually buy one… it’s already become obsolete!
This means that, when our mobile app is ready, we must implement updates at least once or twice a year, within the platforms we use. Otherwise, we must make sure to not make any type of changes. Adjustments, modifications and additions need to be made in order to contemplate new functions and user’s suggestions. If we consider all of this, it’s quite obvious we need to consider a maintenance budget.
Let’s go back to the explanations given to our clients. Having a development budget is crucial. In general, we won’t know it until the moment we actually send the estimate to the client. In today’s competitive world, this is acceptable and even unavoidable. However, we do understand how this aspect could have a negative impact on the product’s future. Once we have a global budget as well as a development budget we can advise on the other stages of the production, which also require funding. For instance: an amazing app, but without any marketing budget, is doomed to fail.
Next, we’ll detail the technical options for the development of mobile apps. There are 3 main types of techniques/technologies to create a mobile app.
Native, hybrid and generated code apps
We won’t deal with whether one technique is better than the other one. Each one has a specific purpose and they all have pros and cons. However, we do want to provide all the data so that our clients have the necessary tools to make an informed decision and so they can benefit from it.
With tools like Xamarin we can develop mobile apps which implement a native code, developing on C# through Visual Studio. In theory, just one development allows us to generate an app for both IOS and Android. These apps will probably have the same performance as a native one.
Pros. The biggest benefit is the initial development cost: one development, two apps.
Pros. If we already have experience with C# language, we don’t need to learn XCode or Java.
Pros. We can develop it with just one person.
Cons. Just like with any tool, we must consider the fine print of the contract. There could be licensing costs, like with ReactNative.
Cons. If the client wishes to further maintain (with his own team) the app, they will have to find capable resources with experience in this specific platform. This will increase the maintaining costs. This aspect is the most sensible and least considered by our clients.
Cons. These tools have no official support by makers of mobile devices such as Google or Apple. This means that, at any given moment, they could be bought by another company, they could close or disappear. If this should happen, our client’s product will need to be developed again from scratch.
Hybrid apps are kind of like an application or website within a masked browser, which we call the shell. Just like with other apps, they let us, with just one development, change the shell in order to keep our app working on both platforms.
Pros. One development, two platforms supported. This has a very positive impact on budget.
Pros. One developer should be enough to do all the work.
Cons. This technique creates more layers than the other ones, which means we’ll never be able to achieve the same performance or speed that we can have with a native code app. An app featuring a lot of multimedia, or a game, is unfeasible.
This type of app has a more pure construction. They’re developed by using the mechanisms, languages and tools provided by or officially supported by the maker of the operating system. In the case of Android (Java and now Kotlin or C++) with Android Studio, and in the case of iOS (Objective-C or Swift 1, 2, 3) with XCode. It’s clear we have to make two developments, possibly with two people.
Pros. We have almost complete guarantee that our product will work on most devices. We have the support of the technology’s makers. There’s no need for middlemen or generated code, which has a positive impact on the resources management.
Pros. We can make any kind of app that we get asked for. The only limits come with operative systems.
Cons. The main negative aspect is budgetary, since we need a double effort in order to achieve both platforms (if that should be the case).
Pros. Support within time. Many know the story of Parse (backend platform, bought by Facebook some time ago). It was the base of many apps until Facebook decided to shut it down, forcing many people (with just one year notice) to migrate their apps. This is one of the many things that can happen when using a tool from a third party. With native apps, as long as the operative system is still functioning, we won’t encounter this problem.
Beyond pros and cons, it’s important to make sure we have a clear idea of what the budget for an app will be, since we have to consider the entire life cycle of said app. There’s no use in selling an app that won’t be able to survive.
At inmind we focalize on the development of native apps. We have enough experience to know that, in some scenarios, other mechanisms can be the best option. Still, we focus our effort, knowledge and experience on native apps.