Tag: blockchain apps

  • Why the Public Versus Private Blockchain Debate Is the Wrong Conversation

    Why the Public Versus Private Blockchain Debate Is the Wrong Conversation

    When blockchain burst onto the scene in 2009/2010, we watched as Bitcoin forever disrupted our monetary system. As the technology hits critical mass—a recent Deloitte survey showed a 2000% increase in interest in blockchain since its inception—the revolution has forked into two sides. There are the purists who want to only keep blockchains public, and the upstarts who see huge value in its private uses. 

    When lines are drawn in the sand of any disruptive change, it can seem like there is an undeniable right. But, what if we’re getting in the way of real revolution by fighting an unnecessary battle?

    Breaking Down the Beef

    The Argument for Public, or Permissionless, Blockchains

    Down with centralization, eliminate the middleman. Satoshi minimalists evangelize for a pure peer-to-peer system, uncorrupted by larger networks, corporations or governments. The beauty of Bitcoin was the emergence of databases both immutable and unburdened by firewalls, accessible to anonymous players who bought into a shared economic belief system. Complete transparency on a global scale was its defining feature. In this thrilling first wave of ICO-driven public blockchains, it was considered unsportsmanlike, if not unethical, to build and sell permissionless entities without an associated cryptocurrency. Any enterprise-driven motive would surely pollute the blockchain’s democratic roots.

    The Argument for Private, or Permission, Blockchains

    Amid all the enthusiasm for open read-and-write blockchains around cryptocurrencies, there started a rumble around the question of private blockchains. Permission-based platforms, in which access to read and write was assigned, were designed to address two vital issues:

    • Data relevancy — Bitcoin lovers champion a world in which institutions don’t have control over information and transactions. But, the reality in the enterprise world is commerce businesses need a hold on both. If the data you’re tasked with managing is relevant to only a handful of parties, why would you want to broadcast it to more?
    • Data privacy — If at the end of the day, not all data is meant to be shared at large—supplier-vendor relationships, financial transactions or health data, for instance—it has no place on a public blockchain to begin with. 

    What the Debate Is Missing

    The conversation regarding public versus private blockchain doesn’t have to be a polarizing one. It’s not an either/or debate but rather a question of application. Private blockchains don’t have to be viewed as the enemy, or a replacement for public ones. They are simply a case-specific option.

    When taken out of the theoretical arena, there is room for both open read-and-write blockchains and those with access restrictions. What we find in practice, having developed numerous blockchain applications for both entrepreneurs and intrapreneurs, is that the apparently different requirements of each tend to converge over time.

    That is, many applications built by entrepreneurs will integrate with one or more large corporate enterprises at some point, and will therefore need to address their needs (affordability, speed, boundaries, etc.). Similarly, many enterprise applications are tackling obstacles that currently prevent them from making their solutions more open and capable of incorporating tokens of some form.

    Both sides are invested in the value of bringing integrity around data. So, arguing over whether to support private or public blockchains misses the point. The real world has needs for both.

    A Call for Both Public and Private

    The gifts of blockchain technology are extraordinary. It is our best defense against the threats of theft, fraud and hackers, and can bring needed efficiency to every aspect of the digital landscape. Enterprises need to ensure some level of security, privacy, compliance and performance that only a private blockchain can provide.

    We also need public blockchains. They serve an enormous purpose whose value should never be denied. But private blockchains are not the enemy. To waste time demonizing them gets in the way of our tackling larger, more urgent questions. Where is this technology going next? How can we make best use of it in our daily lives? And, most importantly, how powerful will we be if we understand we’re all in this together?

     

    Andrew Filipowski

     

    This article was co-authored by Andrew “Flip” Filipowski, co-founder and co-CEO at Fluree. Flip was COO of Cullinet and was also the founder and CEO of PLATINUM technology, inc. He grew PLATINUM into the 8th largest software company in the world at the time of its sale to Computer Associates for $4 billion dollars. Upside Magazine named him one of the Top 100 Most Influential People in Information Technology. A recipient of Entrepreneur of the Year Awards from both Ernst & Young and Merrill Lynch, Flip has also been awarded the Young President’s Organization Legacy Award and the Anti-Defamation League’s Torch of Liberty award for his work fighting hate on the Internet.

  • How to Create Bug-Free Blockchain Apps

    How to Create Bug-Free Blockchain Apps

    While all developers strive for bug-free code, it’s particularly crucial in a blockchain deployment where sensitive data or other confidential info is being exchanged, such as in health care or finance. However, some businesses have learned that lesson the hard way. Cryptocurrency exchange Binance recently revealed a devastating security breach that resulted in a loss of more than $40 million. While this is a large sum, a security breach could be even more costly for businesses that lose private messages, confidential contracts and more.

    Rebuilding (and regaining customer trust) is not where organizations should be spending their time. A better way forward is for company leadership to mandate a blockchain test automation strategy from the very beginning.

    While most software testers are familiar with testing web applications, they may not be sure how to approach blockchain testing. The good news is, some of the same focus areas of web testing apply to blockchain testing, too (functional, performance and security). However, blockchain involves a greater number of tests, effort and focus areas, such as infrastructure orchestration, staging and simulating scenarios in a distributed environment, which requires an even greater level of expertise.

    Because of these additions, fixing a bug in a blockchain app requires several extra steps and, as a result, it is more time-consuming and costly than fixing bugs in other apps. For example, to reproduce bugs or verify code, developers should perform these steps multiple times:

    1. Form a new endpoint.
    2. Deploy new code to the new endpoint.
    3. Migrate the current data to the new back end.
    4. Suspend the old back end.
    5. Update all front ends to the current version.

    After that, verifying the bug-fix performed by testers or continuous integration (CI) tools will require these steps again. This complexity makes it difficult to release bug-free blockchain applications, yet doing so puts organizations and their customers at risk of financial harm. Due to the high-risk nature of deploying blockchain applications, it’s critical that testing is included in the managerial vision and strategy.

    To release blockchain apps with bug-free code, businesses should follow these guidelines:

    Integrate Test Automation Into Your Blockchain Testing Strategy

    Test automation can relieve testers from performing thousands of orchestrating tests manually, which is both difficult and inefficient. A good system architecture should be scalable, maintainable and testable, so teams can test components independently along with mocked components. If a test requires a different environment or infrastructure, infrastructure as code (IaC, such as Puppet, Chef, Ansible and AWS is invaluable in setting up appropriate test environments. Another crucial part of the strategy is to provide the infrastructure with declarative definitions and allow developers to implement codes that support test automation.

    Run Unit and Integration Tests to Cover Both Back End and Front End Code

    Blockchain applications contain at least a back end (a set of smart contracts or chain codes running on a blockchain) and a front end (where users can interact with data stored in the blockchain). Performing unit tests will cover both back end and front end code, and, because of its critical role to blockchain apps, its primary focus should be on the chain codes. Integration testing, however, should cover the various types of oracles and front end applications. Performing additional tests will eliminate any holes that can threaten the back end by verifying the integration between the UI and chain codes.

    Perform Tests in a Local Infrastructure

    Though public blockchains (such as Bitcoin or Ethereum) have several test-nets, it’s optimal to perform the tests in a local infrastructure. Local infrastructures are lightweight, faster and more stable for unit and integration tests. For example, in a Ganache local infrastructure, it’s possible to run more than 1,000 unit tests on five Ethereum smart contracts with approximately 3,000 deployments in an hour or less.

    Continuously Update Security System Test Suites

    Blockchain is a multi-party infrastructure and in some cases, it is a public network. As a result, these applications will be visible to many stakeholders and may even be open-sourced to the world. This level of transparency means that hackers are able to study the programs and plan attacks based on a particular system. Continuously updating security system test suites will ensure applications are protected against all common security vulnerabilities.

    Minimize Continuous Testing Pipelines for Each Phase of the Development Process

    Layering integration and unit tests in a local infrastructure with continuous updates to the security system test suites creates a continuous testing pipeline that is essential to high-quality blockchain code. Continuously verifying code changes in multiple environments, such as local blockchain and test-net, ensures high-quality code is delivered to the production blockchain. These tests, however, can last hours or days for each code change, so it’s important for teams to minimize and create lean pipelines that focus on test stages, test types and test environments, and develop multiple pipelines for code at each phase of the development process.

    Build Customized Tests Suites to Eliminate Prospective Cheating Holes

    Test teams also need to customize test suites in the pipelines to cover both functional and security testing. Covering security cases is important, but unit test modules should also exercise smart-contract-unit potential security threats, such as overflow and re-entrancy, to eliminate as many prospective cheating holes as possible.

    Due to the nature of decentralization and orchestration of underlying infrastructure, developing bug-free code for blockchain applications presents many more challenges than other applications. By taking best practices from traditional software testing, especially test automation, and customizing them for blockchain development, businesses can achieve bug-free blockchain coding and protect their most vulnerable applications.

    — Thong Nguyen