Hyperledger Cello vs Minifabric - hyperledger-fabric

I am a newcomer to the Hyperledger world. While exploring the options to build the blockchain network, I came to the two options.
Hyperledger Cello
Minifabric (https://github.com/hyperledger-labs/minifabric/)
Both the projects are under the hyperledger-labs repo.
I like to understand the purposes of these 2 projects, I looking for an option that can help me to focus on the application layer/Chaincode rather than messing into the multihost network management.
by the way at last I need to deploy the project on production. Possibly I will be using on-premises machines and cloud VMs both. Also, I am looking for options to lay down the production network as well.

In addition to the excellent response by Kekomal, you might also want to consider looking at the free IBM Blockchain Platform extension for VSCode (can be found in the VSCode extensions marketplace). This is designed to help you focus on the application/chaincode layer and provides an inbuilt fabric you can use for testing

For your purpose, use Minifabric. I find it the simpler, faster and lighter way to start your development network to test your chaincodes.
Cello is more oriented to build and maintain your pre-production or production network as a service.
By the way, there is a third option that is building your network from Fabric docker images and Fabric tools, which is the best method to learn how your Fabric network really works. But, for your purpose, I would use Minifabric.

Related

Hyperledger Fabric blockchain network from scratch

I've been studying the Hyperledger Fabric framework reading the docs for quite a while now but I'm getting a little lost in the middle of all that info. My question is: Is there any guidelines/"Step by step" on how to design a blockchain network from scratch? If you are starting a new project, where do you start?
Because I think I would understand it way more quicker if I actually started coding a little instead of reading and reading and reading...
Thanks a lot!
Edit 1:
I've chosen #kekomal answer as the correct one but I'd like to thank #Isha Padalia for the awesome VS Code extension and tutorial.
If you are really interested in learning and diving into Hyperledger Fabric, avoid byfn script. It performs a lot of magic for building a very simple Hyperledger Fabric network. After that, you have a network that you don't know how has been created and you have absolutely no idea of how to start deploying your custom network. There are daily questions here from people who started that way and are absolutely lost.
I find interesting this tutorial: https://medium.com/beyondi/setup-the-hyperledger-fabric-network-from-scratch-b82913b47549. Take into account that it is a little bit outdated.
You can complement it with this newer tutorial: https://www.blockchainexpert.uk/blog/how-to-deploy-hyperledger-fabric-network-from-scratch. Don't only run the steps. Analyze the files in https://github.com/blockchain-expert/hyperledger-fabric-network-from-scratch. Try playing with configtx.yaml, crypto-config.yaml and docker-compose files to customize your network and understand what you are doing.
Customize your organizations, your consortiums, your ordering service, your peers... Create your channels, join them, update your anchor peers... And understand what you are doing.
After that, if your network had one orderer, deploy a new one with more than one (with Raft consensus). If your network was using cryptogen, deploy a new one using Fabric-CAs instead. Or you can follow by playing with chaincodes.
NOTE: Apart from Hyperledger Fabric itself, it is essential to have basic notions of docker and PKI.
You are a beginner in Hypelredger fabric development then you have first cleared the concept of the orderer, peer, CA, and organization concept. And then first you have to start IBM Blockchain Platform VS Code extension for fabric. It will provide a local fabric environment to create, test and deploy a fabric smart contract. Also generate 1 peer, 1 orderer, 1 CA service under VS code environment.
Here is a link to start development with VS code extension.
Hope it will help you:)
hi #d3v9 start from here https://hyperledger-fabric.readthedocs.io/en/release-1.4/build_network.html. also you can find some great article on medium

What are reasons for the deprecation of Hyperledger Composer?

Hyperledger Composer is a platform for accelerating the development process of Business Network Application. Why is it deprecated and what are the alternatives to composer for development of BNAs?
According to IBM, there are following three problems with Hyperledger Composer:
Composer has been designed from the start to support multiple blockchain platforms, not just Fabric - but this design has come at a cost. This design has meant that there are two completely different programming models - the Fabric programming model (chaincode) and the Composer programming model (business networks). This has caused significant confusion to users, with them needing to make a "choice" between the two programming models, with very few similarities between the two. In this particular case choice has been a bad thing, with many users opting not to use the "optional" part past the initial exploration or POC stage.
This design has also made it a lot harder for us to adopt and expose the latest Fabric features. For example, one of the questions we are constantly getting at the moment is "when can I use the Fabric v1.2 private data feature with Composer?". Whilst we've taken some steps (getNativeAPI) to assist with this problem, it is extremely difficult for us to keep up with and aligned with the latest features in Fabric when we are trying to maintain a design that keeps us blockchain platform independent. This has meant that users have understandably stopped using Composer and instead have reverted to developing with Fabric.
Finally, those of you that have used Composer will likely be fans of our simple, easy-to-use APIs (JavaScript and REST) for building applications that interact with a blockchain network. There is a lot of code behind the scenes to enable these APIs that doesn't really belong in Composer. What we have ended up doing is glossing over the underlying, low-level Fabric APIs instead of pushing improvements directly into these Fabric APIs. Today it takes ~50 lines of code to submit a transaction using the Fabric APIs, whilst in Composer it takes ~5 lines of code, and that's wrong - Composer's value should not come from just making Fabric easier to use.
Please read this for details.
The only problem with Composer is that IBM, et al abandoned it. Composer was (to an extent kind of still is) an effective way for users of Fabric to proof of concept (POC) business solutions for prospective customers -- and for users wanting to justify internal budgets to attempt to deploy projects internally. Using real-world business logic.
Composer should be the business logic stack that sits on top of Fabric and allows users to deploy without having to get down into the weeds.
I don't need to know that I need an orderer or CA for every org -- but I do need to know that I have 6 orgs who will participate in my network, two of them need to communicate using private data on a separate channel from the others and I do need to know what my business use cases rules are. An automated tool or script should allow me to launch an internal network **locally* and go from there. Yes, I will need to know fabric details or have someone on hand that does to be able to tweak my networks -- but Composer let me POC these.
There is no -- as in zero -- equivalent for Fabric -- in fact there is no tool to allow one to easily clone fabric samples for their own use and easily plug in their own network / org settings.
And the IBM VS Code plugin tool is garbage if you're wanting to setup an internal, standalone network without going to the IBM cloud. Really? Seriously?
Without Composer -- or a tool like it -- investing in Hyperledger Fabric is a huge financial & resource gamble and time sink. Period. The code changes almost weekly, there are significant bugs, the community is reticent to fix what at times are glaring documentation issues and address hardware sizing issues. Not to mention the cost to assign engineers and software architects to test what is not-yet-ready-for-prime-time software. Forget the amount of time that is needed to just get familiar with the documentation and fabric components to be able to architect business-grade networks.
Regarding the points made in the answer above:
There should be two distinct programming models because the BNA approach works from a business deployment point of view. To say that having a Composer stack with it's API on top of Fabric "confuses" users is like the old saying "if the customer is too stupid to know how to use the deeply technical product the customer is too stupid" -- that's fundamentally wrong.
I shouldn't have to refresh my knowledge of combustion engines every time I get into a vehicle and press the start button -- I know where I have to go, how I will get there and know how to operate the vehicle to do so. And if I want to tweak or otherwise modify the vehicle, its engine, electrical system, etc. I get out the equivalent of fabric documentation and learn to use those tools or hire a mechanic that already knows how to use them.
And the design did not make it harder to adopt and expose the latest features of Fabric -- what the development team failed to do was to implement those features in Composer in lock step with releases of Fabric. This was a dev team deployment issue and not an end user issue. And to say -- not imply, say -- that the community didn't step up to the plate was a load of crap. If IBM wanted to support it, it could have - it has the personnel, financial and global resources to do so.
Within real-world settings the business perspective of blockchain / distributed ledger viability for enterprise applications is less than enthusiastic -- in fact it's doubtful at best. The number one compliant we get from prospects globally (NA, EMEA) is no one can adequately demo this. No kidding -- showing a prospect via a terminal window that car ownership can move from one user to another is going to solve their business needs? Really? Via a terminal window no less.
For us to POC a complex use case and be able to back of the napkin demo it we now have to write entire fabric apps or hope we can cobble through fixing a fabric samples example -- and in the process work through the bugs in samples.
We've spent hundreds upon hundreds of hours building out POC use cases only to have Composer go by the way side, Fabric version x not work with the just released Fabric version xx, have prerequisite software versions change or issues with god forbid Raft or Kafka that haven't been fully tested prior to "alpha" next greatest thing Fabric release. etc., etc, etc.
And to the writers last point above -- the value of Composer should absolutely be making Fabric easier to use for basic network stand up and POCs. No one is suggesting that getting into the weeds with Fabric is a bad thing -- but from a BUSINESS point of view having something like Composer to POC before committing to projects it's essential.
Will we continue to work with Fabric and hope that the development team catches up with real-world business needs -- probably. All those IBM and other training sessions for composer we've put employees through for the most part have been a waste.
So, from a team who is trying so very hard to justify what is good about Hyperledger and Fabric -- please don't just sack something like Composer in the future. Because we're not going to invest in personnel and train them if this is just the next big thing to go by the wayside. I have 15 teams deployed with prospects globally working prospective use cases and implementations -- trying to tweak and push customer-centric use case demos to them has been Hyperledger Fabric hell.
One persons rather small opinion. GR
I think the reasons are clear from the previous comments, but for your last question one option hundreds of devs are taking is using Convector. Convector is a Hyperledger Labs project that was created before Hyperledger Composer was deprecated but that looks similar to developers. It follows a model controller pattern (similar to Composer assets and transactions) however it compiles natively to Fabric code and does not create a runtime.
Code created with Convector can be taken to production and include all sorts of helpers like an API generator, a development environment bootstrapper (one command to create a local network), decorators for making models more predictable, unit tests by default (CI/CD friendly), tens of code samples and real-life projects to use as reference.
Convector has a community of hundreds of devs, some of them migrated from Composer rather easily, others it is the first tool they get to know for Fabric. The main difference about why Convector won't go away anytime soon even if it looks and feels similar to Composer is its decoupled architecture and capability to use and run natively with Fabric.
If you'd like to join the community there people will help you migrate from Composer to Convector. You can join here.
Here's a blog post mapping concepts from Hyperledger Composer to Convector.
Small recap about Convector:
Looks familiar to Hyperledger Composer.
Same code can be taken to production.
Run natively and scales natively with Fabric.
An ecosystem of tools: unit tests, developer environment, API generator, etc.
Great and friendly community in Discord.
--
Disclaimer: I work with Covalent, the developers of Convector. Convector is a free open source Apache 2.0 group of projects.

Making a development and deployment environment for blockchain applications. Tools needed

I would like to learn a little bit from Blockchain and I need to make an university task based on this question.
The main idea is to conceptually learn about what should an environment need to develop and deploy the blockchain solutions.
My problem is that I am not a developer and I am an industrial engineer. This is my first experience with something like this and I have no idea about this stuff. I read a lot about this on github sites about some of these platforms, mostly Hyperledger Fabric and Ethereum. I am very confused about what I have read is the need of an application generator, a code editor, containers such as dockers, something about APIs and REST servers, CLI tools, Frameworks, clients, libraries as node.js or npm...
I know how Blockchain works but I do not have an idea of how to create it and start with it.
So I need a list of the vital tools because I did not find anything well explained for a beginner.
Thank you.
Consider taking the Hyperledger "Introduction to Blockchain Development" course. It's free, unless you want a certificate.
https://www.edx.org/course/blockchain-for-business-an-introduction-to-hyperledger-technologies
Hyperledger has multiple blockchain platforms, such as Sawtooth or Fabric. They are all permissioned blockchains and do not use cryptocurrency.
If you want to use a public blockchain that uses cryptocurrency, consider Ethereum.

How do I deploy hyperledger fabric/composer in the cloud?

I've finished the Hyperledger Composer tutorial and successfully deployed/run it locally (with composer-rest-server).
Now I want to deploy it (eg. Google Cloud) so that I can show it to external people, but I feel confused about what to do now and haven't been able to find any good tutorial for this "next step".
Since composer is running on fabric, I guess I need to get fabric going - but that consists of many docker containers running. So I presume I should collect all that in a stackfile or similar (right?).
Question: How would you go about moving forward beyond deploying/running hyperledger fabric/composer locally and deploying it somewhere? (I understand that there are many ways of doing this but I would appreciate some general guidance as well as some concrete example)
If you are not concerned with scaling to a more robust deployment, and just want to host a small development environment on your favorite cloud platform, you can provision a VM that is configured similarly to the vagrant devenv that the team developing Fabric used before the availability of native support for Docker on Mac and Windows. Then you can simply use Docker Compose to spin up the fabric-samples/first-network tutorial network. It would be suitable for developing in the cloud.
If you are looking for a framework to deploy to various cloud platforms, you might look into use of the Cello Ansible driver. It has been tested against a few of the cloud providers.
Here is one path. Sign up for an IBM Bluemix account. You get one free cluster to play with. Follow the instructions here
https://ibm-blockchain.github.io/ for a cloud sandbox including the composer rest server.
You end up installing the .bna file using the installed playground.
I used the IBM cloud foundry template to create a simple Node site with a single page hitting the API exposed in the cluster. If you just want to show the blockchain you can just use the explore page that the Rest server exposes or use something like Postman to hit the API.
Note that they do not mention. The command line tools require Python 2.6 so I had to downgrade from 3.
IBM Bluemix offers the following with respect to Blockchain:
Hyperledger Composer based Solution Architecture here https://hyperledger.github.io/composer/introduction/solution-architecture.html
Hyperledger Composer Online Playground here https://hyperledger.github.io/composer/installing/getting-started-with-playground.html
You can deploy to live network using this IBM Blockchain Platform Recipe here https://ibm-blockchain.github.io/platform-deployment/
Sample Apps
Marbles App https://github.com/IBM-Blockchain/marbles
Fabrid Car App https://github.com/hyperledger/fabric-samples/tree/release/fabcar
Do go through the links and try it out.
Hope this helps.

Using Hyperledger Fabric in production

I am using HF for some time and trying different things regarding business network specification and configuration.
But, I have couple of question regarding best practices (if there are any yet) in using HF in production.
When we talk about using HF in production, should we use docker-compose-base.yaml, docker-compose-cli.yams, cofigtx.yaml.... etc. as files used to setup and configure our business network, and if not, can you please specify what is the best practice use-case?
Thank you for your answers.
You could use Docker Swarm/Compose with derivatives of the sample compose files you referenced, or you could use Kubernetes to manage a network (or subset of same). Project Cello is working on delivering such capability. The Ansible driver in particular has been demonstrated to work effectively - though it is far from a 1.0 level of maturity.
The reality is that you'll want to manage (likely) more than just four peer nodes all on the same VM or host, but manage multiple peers on multiple VMs/hosts even across multiple networks for a production deployment.
Further, you will obviously need to add management and monitoring to the deployed containers for a true production experience. The Hyperledger chat and mailing lists can be good sources of help and insight.

Resources