What is Hyperledger? - hyperledger

Can you explain Hyperledger for someone who already knows what blockchains are? Their website is really vague and provides minimal information, including a definition as "communities of software developers building blockchain frameworks and platforms". Wikipedia page for Hyperledger gives the impression that it's a set of modular tools that can be adapted for blockchain projects. Then again I've listened to pitches of a few Hyperledger projects and they talk about running their stuff "on" Hyperledger, like they had a distinct blockchain that multiple projects run on. But is it more like a make-your-own-blockchain toolkit?

Hyperledger is a collection of blockchain related projects. Pitches that claim they are running their stuff on Hyperledger most likely means they are using Fabric or Sawtooth, although more likely than not Fabric, to implement the blockchain they are using. Fabric is one of the Hyperledger projects that provides a permissioned blockchain implementation that adheres to the Fabric protocols which define how the network components interact. There is no single Hyperledger blockchain, just like there is no single MySQL databases.

Hyperledger is a technology initiative, not a single project. In fact, several dozen projects are currently in development under that umbrella.
If someone is contrasting Hyperledger with Ethereum, they are probably specifically talking about Hyperledger Fabric. In fact, there is actually an Ethereum node project within Hyperledger-- Hyperledger Burrow! ( You can check that out here: https://github.com/hyperledger/burrow )
So, your first careful question if you are trying to detect bullshit in this space should be to figure out if the person knows what substrate they are using-- Fabric, Burrow, or something else entirely!
Of equal value, make sure they understand that Hyperledger is not just (or even primarily) IBM!
Now, if you ARE talking about Hyperledger Fabric vs. Ethereum, probably the most important difference is to recognize that Fabric does not necessarily inform the entire network about all transactions, whereas for Ethereum this is a given. Fabric allows different chains ("sidechains"-ish) to be spun up on demand between a subset of nodes on the network. This allows, in principle, different competing businesses in an industry to peer-validate public transactions, but also to maintain private smart contracts between a limited set of entities.
More interesting is the potential to build a top-level public contract that requires the results of privately-held parts, so long as they meet certain criteria.
But the super-short version is: Fabric allows privacy; Ethereum mandates global transparency. Which approach is "better" very much depends on the application.

Hyperledger is the open-source blockchain initiative sponsored by the Linux Foundation. The phrase "Hyperledger" is a trademark of Digital Asset Holdings. There are many projects under the umbrella, but the main project contributed by IBM is the Fabric. www.hyperledger.org has more info. Hyperledger focuses on permissioned blockchain technology as compared against public blockchains like Ethereum.

Hyperledger is not a company, not a cryptocurrency. Hyperledger is rather something like a hub for open industrial blockchain development. Hyperledger does not support Bitcoin or any other cryptocurrency. But the platform is thrilled by blockchain technology.
Hyperledger does not intend to establish any kind of Hyperledger coin. Hyperledger Project is an open source, collaborative effort to create a blockchain for business-to-business (B2B) and business-to-customer (B2C) transactions.
Hyperledger blockchains are generally permissioned blockchains, which means that the parties that join the network are authenticated and authorized to participate on the network. Hyperledger does not refer to any specific technology or tool rather it refers to a project where multiple teams are collaborating to develop open source and distributed ledger technology (DLT).

Related

Hyperledger fabric fabtoken energy certification use case

I'm developing a blockchain based system to provide energy certificates handled as tokens in hyperledger fabric. I've been doing some research but found no state of art on how to do this. If anyone can provide a useful link on how to bring this use case into hyperledger fabric tokens, I would be grateful. Also, I don't really know how to include the fabtoken functionality in an already deployed blockchain network. Any links or tips on how to start investigating for this will be welcome.
fabtoken was included in the fabric v2.0 alpha, but was reverted from git due to several issues. In other words, it is a method that is no longer supported.
Currently, fabric provides an example implemented in chaincode as a related token. See the link below.
fabric-samples/token-utxo
fabric-samples/token-erc-20
fabric-samples/token-erc-721

Equivalent of Hyperledger Composer CTO model file in Hyperledger Fabric 1.4

For my Hyperledger Business Network, have defined all my network objects (Enums, Assets, Participants, Transactions, Events etc) in a Composer CTO Model file. I also use the Concept, Abstract and Relationship (-->) features as well in the cto file.
Is there an equivalent of CTO model file in the new development model in HL 1.4 without Composer. If not what's the best way to achieve the same as a model CTO file?
As per my understanding, There is no alternative the same as the CTO file. Hyperledger Composer follows a Modeling language for the asset, participants creation.
Hyperledger Fabric supports Smart Contact development in general-purpose programming languages, such as JavaScript, Java, Go, and Node.js.
If 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. So using VS Code extension you can create a transaction for asset and participate creation.
Hope it will help you :)
Thanks for the info Isha. I had already come across the IBM extension and various examples in the fabric-samples suite and creation of main objects ( assets) via Transactions.
I was more wondering on best ( and fast/less code) way to implement other CTO features like Concept, Abstract and Relationship (-->). But looks like there isn’t.

Key differences between Hyperledger Aries and Hyperledger Indy?

Both Hyperledger Aries and Hyperledger Indy are platforms for building distributed ledger applications
for identities.
What are the main differences between them? When to choose one over the other to implement a blockchain solution?
Aries is the agent (client) part of a decentralized identity (ledger, DIDs, verifiable credentials) application that is intended to be agnostic to the underlying ledger/DIDs/verifiable credentials layer.
Indy is a decentralized identity implementation including support for a ledger, DIDs and verifiable credentials.
Initial Aries work was to move the agent work in Indy to Aries, and so the first working versions of Aries use Indy underneath for the decentralized identity components. Over time, those components will become pluggable, and additional decentralized identity components will be supported. Thus, major parts of the indy-sdk will be deprecated, as they are implemented in Aries.
For building solutions, you should always be looking at Aries to start. You will need to know what Indy does, but not the details. The only time you would need to dive into Indy is if you what to extend its capabilities to support your use case.
The question is clear, what choice to make between Aries and Indy, we could also rephrase as follows: where to start from?
Indy represents, certainly, a base layer, Aries, at the moment, is the better choice for building identity app. Indy, infact, provides: Blockchain network, DID’s implementation, and all features related to verifiable credentials. Aries, on top of it, helps to build apps which can communicate over peer to peer network through secured communication channel: DIDComm. From the user interaction point of view, Aries is integrated with identity apps and internally talks to Indy. Aim of Aries, obviousely, is to build an interoperable communication layer that can be connected not only to Indy but also others blockchains framework.
Indy, as the first project in the Hyperledger family to build a decentralized identity, offers a real-time view of the transactions and its architecture is based on self-sovereign identity which enables users to have complete control over their identity. At the very beginning Indy was good to build an identity solution but, clearly, it lacks a peer to peer communication which is the heart of identity solution. Aries has filled this part. For building solutions there are lots of things that need to be considered but you should look at Aries to start
For building a decentralized identity solution, Hyperledger Indy project was started. Evernym has donated the codebase to Hyperledger community and thus Indy was born.
In initial architecture, Indy was supposed to provide governance (Consensus), Verifiable Credentials, DID, and DID Communication between different entities and Hyperledger Indy has provided all the above except DID Communication which later gave birth to Hyperledger Aries.
Indy Journey
Now the question is why don't Indy itself provide DID comm feature rather than relying on Aries
1: Hyperledger projects support plug and play architecture, detaching DID communication is a good decision for Indy to focus more on core identity party and Hyperledger Ursa was created for same reason to detach all cryptographic features from Indy.
2: Identity is a fundamental right of citizens, so in later times there would be thousands of service providers who offer Identity solutions and Interoperability would be a key factor. Keeping in mind, building a Ledger agnostic based clients is a good idea where Aries not only support Indy but it will support other Blockchain ledgers too.
So putting all pieces together, Indy is providing a core identity feature where Aries is just one of the clients who is availing those services. It is the same as the relation between Ethereum (Indy) and Web3 (Aries). For a development perspective, we need to be more focused on Aries to develop client apps.
in layman's:
Aries is for communication between agents
Indy is for cryptographic
transactions (issuance/proofing/etc)
Aries primarily covers the agent part of Hyperledger Indy, which has been initially cevered by Indy-Sdk. It supports connections to other Blockchains (For now it's only for Indy ledger).
Whereas Indy covers the blockchain part as of now.

Smart Contracts (Hyperledger vs Eth) [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
Quick few questions on smart contracts
how does hyperledger smart contract (chaincode) stack up against ethereum ?
hyperledger - golang; Expressibility? ; Performance? ; Security?
Ethereum - solidity; Expressibility ; Performance? ; Security?
how to secure smart contracts to ensure that code is not tampered?
how can both parties trust and trace the results of the smart contract? any audit/traceability capability?
Also in a decentralised ideal world, whose legal liability if there is a bug and/or buffer overflow in the smart contract resulting in some losses?
Any performance benchmarks? E.g., 2000 of complicated smart contracts executed during a span of 10 seconds?
How does one enable/restrict security access to these smart contracts? i.e., only Alice and Bob can see the contract and not John
I suspect that it is still fairly rare for someone to have spent a lot of time developing smart contracts on Ethereum and Hyperledger Fabric. Couple that with the fact that anyone who has such experience is probably up to their eyeballs in work right now :-)
I worked on Go chaincode for about a year, building an IoT-oriented platform for smart contracts that has been temporarily suspended while I worked on JavaScript smart contracts through the Hyperledger Composer this year. I don't have direct expertise on Ethereum and Solidity, but I will do my best to answer what I can.
Do note though, that Ethereum is based on crypto-currencies and mining, and a lot of the activity is centered around the public, permissionless network. I.e. this is not designed for secure business networks, which require that you take a version of the Ethereum code base and hack it. This is not the same thing at all as working with Fabric, which is designed from the ground up to be used for secure business transactions.
Quick few questions on smart contracts
how does hyperledger smart contract (chaincode) stack up against
ethereum ?
Ethereum, like Fabric, have multiple smart contract languages. Ethereum's are Solidity -- a JavaScript-like language, Serpent -- a Python-like language, and LLL -- a Lisp-Like Language). The big difference here is that Fabric runs the actual versions of those languages so your skills are portable in both directions.
hyperledger - golang; Expressibility? ; Performance? ;
Security?
Golang looks a lot like C language but is more expressive, with concepts like channels, receivers, and so on. The performance is pretty extreme.
I also favour the Hyperledger Composer infrastructure, which uses interpreted JavaScript code and a powerful business network modelling language. This is worth exploring as it is evolving fast. A lot of security headaches are solved with minimal fuss using their access control language in permissions.acl.
Ethereum - solidity; Expressibility ; Performance? ;
Security?
Not sure about expressibility of any of their languages, but presumably you can do common contract stuff. Performance, though, is limited by definition to the block cadence of the Ethereum network, which is limited by the speed of mining. Bitcoin commits blocks about every 10 minutes. Ethereum is faster, but there will be a limit.
Regarding security of these two -- Fabric is permissioned and is generally expected to run on a private network, in backoffice(s) or on a cloud. Thus, it can be architected and engineered for as much physical security as you desire and / or can afford. Ethereum is likely the same when deployed privately, but not when deployed into an exchange that is meant to be public a la Bitcoin.
There are attack vectors of course, but presuming that you keep your chaincode in private repositories then again you can get as much security as you can afford.
how to secure smart contracts to ensure that code is not tampered?
You have to secure your network and repositories. For example, if you are running on a single Kubernetes cluster for a small blockchain, then you secure the cluster. If you are running on a large collaboration with multiple separate back offices running the HSBN (IBM's Fabric-based High Security Business Network) on Z systems, then you will secure the physical hardware and the internetworks. The chaincode has few to zero attack vectors if you spend enough money. (I'm using cost also as a synonym for effort by the way). Presumably, a private Ethereum deployment will have similar characteristics but again it is conceived as a crypto-currency engine and is natively permissionless.
how can both parties trust and trace the results of the smart contract? any audit/traceability capability?
Fabric has a historian that tracks every transaction and world state change (and I mean all of them ever). You can write complex SQL-like queries to gather and analyze such data. It is extremely powerful.
When I search for similar info for Ethereum, I get article after article discussing the historical price of Ethereum's currency. These are different worlds.
Also in a decentralised ideal world, whose legal liability if there is a bug
and/or buffer overflow in the smart contract resulting in some losses?
With Fabric, someone will be responsible for implementing smart contracts as codified business rules, and there is little logical difference between that and any existing financial system that was implemented either internally or using contracts. The dynamics of liability will be the same.
With Ethereum, I have no idea. There is a funky crypto angle to be aware of and if you try to implement a business network a la Fabric you are probably stepping into territory for which Ethereum takes no responsibility. This is not all that different from Fabric I suppose. But there is a difference in original purpose and that might make a difference when it comes to legal arguments (as in the "what were you thinking?" defense.) That is all pure speculation :-)
Any performance benchmarks? E.g., 2000 of complicated smart contracts
executed during a span of 10 seconds?
I ran some load tests (poisson traffic into a Go smart contract on a 4 node v0.6 fabric on Bluemix) for months at an average of about 23,000 transactions per hour with full history retention in world state. It ran fine. Hyperledger v1 has been engineered to be considerably higher performing than v0.6, however there are more complexities in using it so it will require serious system engineering to eke out its best performance (and what is new about that?)
How does one enable/restrict security access to these smart contracts? i.e.,
only Alice and Bob can see the contract and not John
Take a look at the ACL language in Hyperledger Composer and you will see that there is a rather sophisticated view of participant restrictions.
UPDATE: That link is busted. The new one is https://hyperledger.github.io/composer/latest/reference/acl_language.html
There is also research going on with Go libraries for ACL concepts, but I don't know when such might appear.
Anyway, I hope some of this was useful.

What programming languages and databases are suported by Hyperledger Fabric?

I have previous experience in using Ethereum and Solidity, but now I want to try writing smart contracts for Hyperledger.
I have few considerations:
First one is regarding supported databases. According to their documentation (http://hyperledger-fabric.readthedocs.io/en/latest/ledger.html) they use LevelDB for storing contract data and CouchDB support is still in beta. Does anyone have any experience using CouchDB in Hyperledger?
Second, I see that Go is mostly used for the specification of smart contracts, but they have support for Java too. Is Java still in beta too, and is there support for any other programming language?
Also, what operating system do you suggest for production server running Hyperledger?
Thank you for the answers.
Is Java still in beta too, and is there support for any other
programming language?
Hyperledger V1.0 doesn't support Java Chaincode.
There will be support for it in the future.
You can ask around in https://chat.hyperledger.org/channel/fabric for ETAs.
There is also a work in progress to have node.js support.
Also, what operating system do you suggest for production server
running Hyperledger?
Ubuntu 16.04 LTS works well
Does anyone have any experience using CouchDB in Hyperledger?
Yes, CouchDB works well if your data is modeled as JSON and you would like to query the content of the data. The default goleveldb state database only supports key-based queries.
You should take a look at Hyperleger Composer that helps you create blockchain applications on Hyperledger Fabric quite easy. (It works better with Ubuntu).
It has is own Modeling Language.
Hyperledger initially was build using Go language.
the aim of the hyperledger team is to support as many languages as possible. currently the hyperledger composer( tool for developing blockchain application) supports javascript for defining the assets, transactions and chaincode.
the transactions log, state data and backed by Level DB and Couch DB
Note :
LevelDB and CouchDB are fully integrated in fabric framework,
currently you can't replace them with other database
Chaincode runs in a secured Docker container, the chaincode (aka smart-contract)can be programmed in Go,Node,Java currently Go is stable and fully supported language.
considering the operating system i have tested the fabric network running on Microsoft Azure platform where created a image of ubuntu 16.04 and installed Fabric framework.till now got no issue on it.

Resources