Category

Blog

Welcome David Boswell, Hyperledger’s Director of Ecosystem

By Blog

We’re thrilled to announce that the Hyperledger team is continuing to grow in 2018. Please join us in welcoming David Boswell as the Director of Ecosystem!

David is a community expert who has worked with Mozilla, Open Networking Foundation, NASA, Sun Microsystems, Nokia and more on their community strategies. Through these past experiences, he has expertise with both launching a new community as well as scaling existing communities.

Now let’s get into some questions to better understand David’s role, what he will be working on and his own aspirations for Hyperledger.

What got you interested in working on Hyperledger and blockchain?

I was fascinated by the ability of blockchain technology to build trust and accountability. In our world today there is a great need for building more trust and accountability so this feels like a very important effort to become a part of.

David Boswell, Director of Developer Ecosystems

What are your main goals now that you’re part of the Hyperledger team?

One of my main goals is to bring in my experience of what has worked (and not worked) in other open source communities.  When I got involved in an open source project for the first time in the late 1990s there was a lot of trial and error since no one knew what was going to be successful.  We’re really lucky now that there is a long history of building successful open source projects we can leverage and I want to take best practices and good ideas from other communities and apply them to the needs of the Hyperledger project.

What do you think is most important for Hyperledger to focus on in the next year in terms of developer traction and community growth?

Scaling a community is a big challenge and I want to make sure that the excitement and enthusiasm around Hyperledger is translated into a growing community that continues to work well for everyone.  A major challenge with growth is that processes and dynamics that worked well when the community was smaller can break down as the size of that community grows.  It can be hard to realize when it is time to change something that has worked well in the past or when to introduce new things to keep a community running well.  I saw this first hand as Mozilla went from a small project to a very large global community and I’m excited to share what I’ve learned about how to scale in an effective way.

What is the best piece of advice you’ve ever received?

A friend of mine who worked with volunteers at the Red Cross told me that the best way she knew to get people to participate was to ask for their help.  I’ve found this to be extremely powerful advice for open source communities.  There is a tendency to think that people will have ‘an itch to scratch’ and will show up and start working on things that they’re interested in.  That is true at times, but there are also many times when people  want to help but don’t know what to work on and letting them know where we need help and asking for their support can greatly increase the amount of participation within a community.

What do you like to do in your spare time?

After seeing the total solar eclipse in Wyoming last summer, I’ve become fascinated with those and am figuring out when to see another.  I might have to wait a few years for the next opportunity though, so in the meantime I enjoy reading, hiking, diving, seeing live music and exploring the interesting things that the Bay Area offers.

Developer Showcase Series: Hrishikesh Nashikkar, Broadridge

By Blog, Hyperledger Fabric

We return to our Developer Showcase blog series, which serves to highlight the work and motivations of developers, users and researchers collaborating on Hyperledger’s incubated projects. Next up is Hrishikesh Nashikkar, blockchain lead at Broadridge. Let’s see what he has to say!

What advice would you offer other technologists or developers interested in getting started working on blockchain?

Blockchain is emerging as a huge collaborative innovation that has powered a paradigm shift from centralized applications to decentralized/distributed applications.

Firstly, the important aspect is a change in the development mindset. As we move applications from centralized to decentralized/distributed world, the development mindset needs to be changed as well.  The solution to a problem may work perfectly in the centralized world, but may not work or even be suitable in the distributed world. For example, the matching logic in the current world business workflows will not be necessary and it can be completely re-designed in the distributed world by multi-party approval process where one party submits a transaction and other party approves/rejects, another example is, the existing data models will no longer be viable as we build granular data privacy requirements and require new data models.

Second, the technology is certainly not fully matured and still has several complex unsolved problems such as scalability, data archival and interoperability which need to be solved for before it can be productionized. Technologists should grab this opportunity to solve the problems and this brings with it immense learning, experience and a chance to innovate.

Third, we are seeing the technology rapidly evolving in both public and private blockchain space. As a developer, one should be open to both public or private blockchain implementations, both have subtle differences but it’s always helpful to be cognizant of pros and cons, design patterns, and application while implementing the use case.

Two years back, I started my journey with Hyperledger Fabric at Broadridge and we’ve always been at the forefront of experimenting with the latest version and testing Fabric for real-world use cases in the financial services. We believe some of the specific privacy, asset modeling requirements in the financial services are very critical to productionize the solution and we as technologists continue to provide the feedback or suggestions to the Fabric community. With this emerging technology, it is very important to share learning and best practices that mutually benefits the development community.

Hrishikesh Nashikkar, Blockchain Lead, Broadridge

Give a bit of background on what you’re working on, and let us know what was it that made you want to get into blockchain?

I am currently working in Broadridge Blockchain Centre of Excellence and leading our efforts on Hyperledger Fabric and post-trade blockchain based projects.

Broadridge is the global fintech leader and plays a crucial role at the center of the financial services industry. We have been driving innovation and adoption of new technologies like Machine learning, Blockchain, Robotic Process Automation to solve real-world problems. Blockchain is one of the key technologies in our innovation strategy. We believe, Blockchain offers a high level of transparency, auditability, data privacy and security and this will certainly bring significant value-add, cost-saving and operational efficiency to our clients.

Given my background of a developer and subsequent exposure to the financial markets as a Business Analyst, Blockchain seemed like the next best choice for me as a career, as I can combine both of my skills to deliver next-gen solutions in the financial markets.

What project in Hyperledger are you working on? Any new developments to share? Can you sum up your experience with Hyperledger?

We at Broadridge have been extensively using Hyperledger Fabric for our internal POCs/Pilots since its initial versions.

Recently, Broadridge announced the successful completion of a pilot with Natixis and Societe Generale which leverages blockchain technology to enhance the operational efficiency, reduce risks and auditability of bilateral repurchase, or repo, agreements. The Bilateral Repo solution is for Broker-dealers and Buy-side firms that automate end-to-end processes, streamlines the repo agreement and confirmation processes, offers a faster and more accurate collateral substitution, valuation process and other mid-life events, while eliminating time-consuming manual interventions, and reduces counterparty risk while increasing auditability.

We have utilized Hyperledger Fabric v1.0 to facilitate private/permissioned network between Broadridge and its partners in the pilot. Overall, my experience is – Fabric has performed reasonably well with our pilot requirements during the testing, despite showing few pain points of an emerging technology. The development community has been very supportive and quickly helped us on the critical issues.

What do you think is most important for Hyperledger to focus on in the next year?

I think blockchain is rapidly evolving through enterprise, open-sourced or consortiums based developments. Many blockchain frameworks are available in different flavors, sizes and complexity levels. One of the key requirements is interoperability between different platforms. Various blockchain based application development projects or initiatives are being developed in silos. We see mixed opinions on the different blockchain frameworks and it is difficult to pinpoint the winner at the moment. It’s quite apparent, we’ll witness different blockchain frameworks being used in the industry.

This leads to few important questions. How will different blockchain frameworks co-exist and integrate with different standards of networking, data privacy and security, identity or crypto specifications, assets, smart contracts? Another critical question is – how do we manage interoperability between different legacy systems and new blockchain platforms with complex business logic and data storage? These questions become increasingly important when we set our path to productionize the use case and network with multiple participants with their own choice of blockchain technology.

Obviously, some of these questions are being brainstormed or addressed to a certain extent. But, secure, robust operational designs and common standards need to be incorporated to build the strong ecosystem for the future.

I believe, Hyperledger is playing an important role as a technology incubator in the industry and has multiple cross-industry blockchain projects under its umbrella. Hyperledger is the best platform to start addressing some of these problems and build common standards across different blockchain frameworks.

Announcing Hyperledger Sawtooth 1.0!

By Blog, Hyperledger Sawtooth

Dan Middleton, Hyperledger Sawtooth Project Maintainer

Today, we are pleased to announce Hyperledger Sawtooth 1.0 is now available! This is a major milestone for the Hyperledger community, as it marks the second blockchain framework that has reached production ready status. This Hyperledger Sawtooth 1.0 release is the culmination of work from several companies intent on creating a distributed ledger designed for the enterprise.

Stretching back to at least 2014, the journey began with a research project code-named Sawtooth Lake inside Intel Labs. Its purpose was to explore the security and scalability questions arising from the adoption of Bitcoin and understand the requirements to move blockchain technology into enterprise. By 2016 research had produced Proof of Elapsed Time (PoET), to provide a green and performant alternative consensus to Proof of Work, and Transaction Families, an approach to building safe smart contracts. In the same year, Hyperledger was getting underway and Intel contributed Sawtooth Lake to Hyperledger as an incubated project. From incubation the community rapidly grew with code contributors from diverse companies and individuals and winning an ‘Open Source Rookie of the Year’ award. In May of the following year, Sawtooth dropped the “Lake” and graduated from incubation to “active” status within Hyperledger – a recognition of the maturity of its open source process and community.

We would not have the rich features or deployment maturity today without the collaboration and contributions from these organizations (alphabetically): Active Ticketing, Amazon Web Services, Bitwise.io, Cloudsoft, Context Labs, Dot BC Media, Ericsson, Hacera, Huawei, IBM, Intel, Microsoft Azure, Monax, Open Music Initiative, PokitDok, R3, T-Mobile, Wind River, and several independent engineers.

Throughout this time, we’ve maintained our focus on making smart contracts safe and bringing blockchain to the enterprise without cutting the benefits of blockchain that inspired interest to begin with. While maintaining that focus, we’ve not rested on PoET and Transaction Families. With the launch of Sawtooth 1.0 we introduce several new enterprise features:

  • On-chain governance – Utilize smart contracts to vote on blockchain configuration settings such as the allowed participants and smart contracts.
  • Advanced transaction execution engine – Process transactions in parallel to accelerate block creation and validation.
  • Support for Ethereum – Run solidity smart contracts and integrate with Ethereum tooling.
  • Dynamic consensus – Upgrade or swap the blockchain consensus protocol on the fly as your network grows, enabling the integration of more scalable algorithms as they are available.

Projects over the last 2 years with various consortia, startups, and established companies guided this set of features. For example, we found that it was difficult and error-prone to have manual configuration files on each system deployed at n different companies. If a configuration setting is required to be the same across the network, that seemed a lot like needing shared state agreement, which is after all the goal of a blockchain. Subsequently we added “On-Chain Governance” as a first class feature of Sawtooth. This also satisfies auditability goals that are driving many companies’ interest in blockchain.

When it comes to business logic, we learned how to manage and isolate applications on the blockchain. The resulting design enables parallel execution for better performance. It also enforces complete separation between the core blockchain and the apps, such that you can write the app in just about any language. In fact, that worked so well, that we were able to bring Hyperledger Burrow’s EVM on board as an application we call Seth (a play on words for Sawtooth and Ethereum).

A little more on the decision to prioritize the Seth / Ethereum contract compatibility – We found that a lot of companies had been experimenting with Ethereum but wanted the enterprise features offered in Hyperledger Sawtooth. Seth turned out to be an easy way to enable those companies to bring across their existing business logic and pick up new features like Permissioning and Un-pluggable Consensus.

Sawtooth Integration Testnet Console

For those close to Sawtooth, a lot of this is old news. Many of these features have been in test networks for three to six months by this point. During that period we’ve been focused on stability and performance. The engineering you won’t see are automated integration test networks we’ve built to run each release candidate build through a rigorous 7-day, multi-node test. This is in addition to the existing continuous integration testing we’ve had in place for years.

Where will Hyperledger Sawtooth focus its efforts in 2018? Well, we are already in motion on more work in performance and new work in privacy. To the former, we are looking at both consensus and core implementation. We’d like to add another consensus option for those planning to run small networks. Within the core, we are looking at replacing targeted python modules with optimized components in languages like Rust. On the privacy front, we have contributors investigating both trusted execution and zero-knowledge cryptographic approaches. We look forward to our enterprise users contributing back pilot implementations in these spaces as well.

We get feedback that application development is easier in Hyperledger Sawtooth than other platforms. Nonetheless, we’ll be making some changes to make it even easier. In a related vein, we’ve had great collaboration with Hyperledger Burrow, and we want to expand that collaboration to other Hyperledger projects including Fabric, Indy, and Composer.

We encourage developers to join our efforts on Hyperledger Sawtooth. You can download the code, read the documentation or join the discussion on Rocket.Chat.  You can also follow Hyperledger on Twitter or email us with any questions: info@hyperledger.org.

Finally, on a personal note, it’s been a great privilege to work with my friend and colleague Mic Bowman on his inventions which launched Sawtooth and the inventions and innovations of my friends and fellow maintainers: Shawn Amundson, Tom Barnes, Ryan Beck-Buysse, Richard Berg, Anne Chenette, Define (Greg Setterholm), Nick Drozd, Zac Delventhal, Mark Ford, Andrea Gunderson, Pat Holmes, Jamie Jason, Feihu Jiang (Flying Tiger), Boyd Johnson, Adam Ludvik, Darian Plumb, James Mitchell, Cian Montgomery, Kelly Olson, and Peter Schwarz.

 

 

(Ethereum Logo  used under CC BY 3.0)

Introducing Hyperledger Labs!

By Blog

Today, we’re excited to announce that the Technical Steering Committee (TSC) has voted to approve the launch of Hyperledger Labs! Hyperledger Labs aims to provide a channel suitable for innovation and testing of ideas where work can easily be started without the creation of a formal Hyperledger project. It will allow teams to experiment with new frameworks and new modules without the promise of stable code or MVP.

We believe Hyperledger Labs supports the main goal behind Hyperledger to help build communities by gathering people sharing a common interest in developing blockchain related software.

Why Hyperledger Labs?

Currently, the project lifecycle at Hyperledger requires projects to be started in Incubation and graduate to Active projects. However the only way to currently do this is to submit a project proposal and launch a formal project in Incubation. This is a relatively heavy process that requires a level of endorsement by Hyperledger that is not suitable for cases where projects are immature from a code-complete, production-quality, or community building perspective, or experimental.

Hyperledger Labs lowers the pressure on the TSC to start new projects and allow for work to be done within a legal framework that eases transition to a project in Incubation in cases where this ends up being the chosen path for the Labs.

What can be in Labs?

Examples of possible Labs include: projects too early for TSC approval as an incubator because there’s not a lot of code; demos; documentation examples; sample code from hackathons, research projects, etc.

There is no guarantee that a Lab will become an incubated or fully-fledged project at Hyperledger. If at any point a Lab wants to enter Incubation and become a formal project, a project proposal will need to be submitted for TSC consideration.

How will Labs work?

Hyperledger Labs is not directly controlled by the TSC. Labs are proposed and run by the community. They can be created by a simple request (done by submitting a Pull Request) to the Labs Stewards.

Labs Stewards act in oversight to ensure legal compliance, etc., and will produce a quarterly hyperledger-labs-wide “project” report to the TSC. To help the community understand the status of the different Labs, Stewards will also be responsible for curating the set of Labs, moving to an archives space those that become dormant or unresponsive for an extended period (6+ months), or are explicitly deemed by the committers to be deprecated/obsoleted. In case of issue with the Labs Stewards, requesters and/or committers can appeal to the TSC for arbitration.

The Labs Stewards will consist of the Hyperledger Community Architect(s), who are staff members of The Linux Foundation, and subsequently any volunteer from the community approved by the TSC. The initial list of Lab Stewards is:

  • Arnaud Le Hors
  • Vipin Bharathan
  • Bas van Oostveen
  • Tracy Kuhrt

Get involved!

We hope that Hyperledger Labs encourages more developers to get involved and experiment in the community. The following communication channels have been set up for Hyperledger Labs:

If you’d like to learn more, you can visit Hyperledger Lab’s wiki or Github organization.

As always, we encourage developers to join our efforts via github, Rocket.Chat, the wiki or the mailing lists. You can also follow Hyperledger on Twitter or email us with any questions: info@hyperledger.org.

Developer Showcase Series: George Theofilis, Synaphea

By Blog

We return to our Developer Showcase blog series, which serves to highlight the work and motivations of developers, users and researchers collaborating on Hyperledger’s incubated projects. Next up is George Theofilis, CTO of Synaphea. Let’s see what he has to say!

What advice would you offer other technologists or developers interested in getting started working on blockchain?

Get your theoretical background fortified, and start reading, now! Knowing it works is only half the skill, if you can’t explain how and why it works. This might force you to at least dab in economics or legal studies a bit, but it sure is worth your while.

Theoretical background is of major importance and so is market knowledge in order for a development team to quickly grasp the value of the solution they build.

A relatively novice programmer wishing to build a blockchain application with Hyperledger should definitely possess an adequate basic understanding of Docker as well as some fluency in the Go programming language.

George Theofilis, CTO of Synaphea

Give a bit of background on what you’re working on, and let us know what was it that made you want to get into blockchain?

For me it started with academic curiosity during my years in the university. From there it grew into something more very quickly, supported by the hype of the bitcoin community. What my startup and I are working on right now is a wide array of tools for smart-contract management – which began as ways to make our daily lives easier – and an aggregation system for easy deployment for smart-contracts over many blockchain implementations and networks, both public and privately owned.

What’s the one issue or problem you hope blockchain can solve?

I think blockchain technology would help us to further the digitization of the public sector. Thus making public management more transparent and efficient. One such application of blockchain would be digital IDs or an application that would issue needed credentials in an automated way.

What is the best piece of developer advice you’ve ever received?

Every day try to learn a new thing and to push yourself to your limits, is the only way to mastering computer programming.

What technology could you not live without?

On a matter of lifestyle I think it’s the internet. It became synonymous with the western way of life. But on a more pragmatic approach it would definitely be electricity. Humanity depends much on electric current for its survival.

Data Model Considerations in Hyperledger Sawtooth

By Blog, Hyperledger Sawtooth

Guest post: Zac Delventhal, Hyperledger Sawtooth maintainer, Bitwise IO

Hyperledger Sawtooth is an enterprise blockchain platform for building distributed ledger applications and networks. Sawtooth simplifies blockchain application development by separating the core system from the application domain. Application developers can specify the business rules appropriate for their application, using the language of their choice, without needing to know the underlying design of the core system.

In this blog post though, we wanted to get past the “Hello World” content and talk about some of that underlying design to allow advanced developers to extract more performance. (TLDR: Read this design doc). Sawtooth relies on a merkle radix data structure as the underlying data store. This differs from Hyperledger Fabric, but is common with some other blockchain implementations.

If you are just getting started with Sawtooth you really don’t need to understand any of this, but if you are interested in digging deeper or are working on an intensive blockchain application there’s some design considerations to think through on your data model.

Let’s say we have some resources we plan to store as UTF-8 encoded JSON strings. You can use any byte encoding you like, and there are better options than JSON, but this will give us something familiar and human readable as an example. Our resources are going to have a pretty simple structure, just a unique id, a description, and an array of numbers:

  {

    "id": "123",

    "description": "An example resource",

    "numbers": [4, 5, 6]

  } 

 

So now we have to decide how to store this data on the merkle radix tree. Sawtooth addresses are made up of 35-bytes, typically represented as 70 hexadecimal characters. The first six characters are the namespace for our transaction family, but the final 64 characters we can use however we like. Let’s go through three possible setups we could choose:

  1. All of our data is stored at a single address.
  2. Each resource is stored its own address.
  3. Each resource is stored over multiple addresses.

One Address For Everything

This is an absurd design only appropriate for the most rudimentary hello world examples. But why is it absurd? Exploring that should provide some useful insights. Let’s say we just take all of our data, and throw it in one JSON object indexed by the resource ids:

{

    "123": { "id": "123", "description": ... },

    "456": { "id": "456", "description": ... },

   ...

 

And we store this massive string at whatever our namespace is plus 64 zeros:

  123456 0000000000000000000000000000000000000000000000000000000000000000:

    '{"123":{"id":"123","description":...},"456":{"id":"456",...'

  }

(Note that the space after the namespace in the addresses above are just for illustration purposes. Sawtooth addresses do not have spaces.)

From a certain perspective this may be attractive for its simplicity. You don't need to think about addressing at all! You just always read/write from the one address and pull up whatever JSON is there. There are unfortunately two big downsides to this approach:

  • First, you now need to read/write a lot of data anytime you want to make a modification. Anytime anything changes, you will be parsing a huge JSON string, updating some small part of the resulting data, then re-encoding it as JSON and writing it back to the merkle tree. With any number of resources this will quickly become a huge performance bottleneck.
  • Second, you will have hamstrung one of Sawtooth's greatest strengths: parallelism. Sawtooth validators are capable of simultaneously validating multiple transactions, but if those transactions are trying to write to the same address, they cannot be executed in parallel, and must be validated sequentially.  So with all of our data in a single address we guarantee validators will only ever work on one transaction at a time.

One Address per Resource

This approach is a little more sensible and still fairly simple. While you don't get to ignore addressing completely, all you really need to do is to find a way to turn each resource's unique identifier into 64 hex characters. A common method is to just take the first 64 characters of a hash. Here's how we would store our example resource above if we took the SHA-512 hash of the “id” field:

123456 3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1:

    '{"id":"123","description":"An example resource","numbers":[4,5,6]}'

This is likely the approach you'll see in many applications. It is easy to reason about, and as long as each resource is not too large, or updated too frequently, performance should be reasonable. But what if we do have large or frequently updated resources? Could we split this up further?

One Resource over Multiple Addresses

64 hex characters provides us with trillions and trillions of potential addresses. There is no reason not to get as fine-grained as we like with them. For example we could use the first 60 characters for a hash of the identifier, and then use the remaining 4 characters for a hash of each property name:

123456 3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7a f0bc:

    '{id:"123","name":"id","value":"123"}'

  123456 3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7a 384f:

    '{id:"123","name":"description","value":"An example resource"}'

  123456 3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7a 542a:

    '{id:"123","name":"numbers","value":[4,5,6]}'

This is also a pretty absurd example. In order to reconstruct the resource later we have to spell out the property name and include the resource id repeatedly. Overall we are storing a lot more data, but we have minimized the amount of data we need read/write in each update. Also, while our validator can now do some fancy tricks like updating the "description" at the same time it updates the "number", that probably isn't important with our tiny little array of three numbers.

But what if we had thousands of numbers that changed frequently? We could instead use those last address characters as array indexes. Something like this:

  123456 3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c04 00000000:

    '{id:"123","description":"An example resource","nextIndex":4}'

  123456 3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c04 00000001:

    '{id:"123","number":4}'

  123456 3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c04 00000002:

    '{id:"123","number":5}'

  123456 3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c04 00000003:

    '{id:"123","number":6}'

So now we are using 56 characters for the id hash, and reserving the last eight for pieces of the resource, which gives us room for a few billion pieces. All of the basic resource info is at 00000000, while any remaining addresses each store a single number.

This is starting to get pretty complex, and reconstructing this resource later will be a pain, but adding a new numbers has become extremely simple. Imagine the array was 10,000 items long. In any of the previous designs we would have had to parse that entire gigantic string and then re-encode it, just to add one item. With this design, we just add a new entry to the next index. Also, the validator can be highly parallelized now. Adding new numbers, updating the description, and changing existing numbers can all happen at the same time.

Conclusion

There is no one correct answer or strategy when it comes to structuring your data model. You'll need to decide for yourself what is appropriate based on your developer and application needs. In Sawtooth Supply Chain, we have "Record" resources with multiple arrays of telemetry data that could be updated on a second by second basis, and might stretch to millions of entries. So Records are highly split up in a manner similar to the numbers example above. Logically we are just pushing to an array, but in practice we needed to break that into different buckets. For a full discussion of this pattern take a look at the supply chain doc on the subject.

By contrast, in Sawtooth Marketplace there wasn't as much opportunity or need to do anything so complex, and it follows uses a simple one address per resource pattern.

If you’re interested, you can learn more about Hyperledger Sawtooth and see real world examples of how the technology is being used. You can also read the documentation, join the community on RocketChat or pull the code from GitHub to kick the tires today.

Zac Delventhal is senior software engineer at Bitwise IO, and a maintainer on Hyperledger Sawtooth. When bored, he can be found giving overly long explanations about Hyperledger concepts in blog posts or on RocketChat.

Making Legal Contracts Smart

By Blog, Hyperledger Composer, Hyperledger Fabric

Guest post: Dan Selman and Houman Shadab, Clause.io

The potential to automate a wide variety of business transactions in a way that is secure, transparent, and flexible will likely be one of the most transformational benefits of blockchain. However, software applications that use distributed ledger technology to automate business processes are often confusingly referred to as “smart contracts” despite not being tied to any legally binding obligation or, worse still, not being enforceable in court. In contrast are smart legal contracts: legally binding agreements whose underlying logic is transformed through computation to enable automation, software connectivity, and dynamic business arrangements.  

Automated transactions must be executed according to the terms of a legally binding agreement to provide companies with certainty and the ability to be compensated if something goes wrong. Smart contracts that are executed apart from a legal agreement cannot be fully integrated into an enterprise digital transformation strategy. Fundamental transformation requires consolidating systems end-to-end and involving a company’s legal agreements. And even if legally enforceable, smart contracts that operate without incorporating standards will likely be an isolated phenomenon without the full benefit of marketwide adoption. Worse still, smart contracts that are inaccessible to legal and business professionals are likely to remain more of a curiosity than transformational.

The Accord Project was established, in part, to develop a community driven protocol for smart legal contracting. It is built on the fundamental notion that contracting is, and should be, blockchain agnostic. Users are therefore able to use Hyperledger Fabric, Ethereum, and others as warranted. The Accord Project is an Associate Member of Hyperledger and is a consortium of attorneys, technologists, and organizations collaborating to set techno-legal standards and develop open source technology. But it’s not just talk. The Accord Project has already operationalized its vision through the open source software called “Cicero.”

Cicero enables lawyers and business professionals to turn traditional, legally binding agreements into smart legal contracts. It accomplishes this through an easy-to-use system for enabling legal contracts to be executed in response to external data and be connected to a wide variety of software systems and platforms, including blockchain.

The “virtuous triangle” of functionality implemented by Cicero templates.

The core of Cicero is a smart contract templating system made up of three components. The first is a template’s grammar, which consists of natural language contract text that identifies data-oriented variables such as price, date, etc. Second is the template’s data model that provides a framework for categorizing the variables and the components of the business context that operationalize smart contracts. Once the elements of a legal contract and the business context are categorized with a data-oriented modeling language, the contract can then be executed using the template’s operational logic — the third component of Cicero’s smart contract templating system.

We chose the Hyperledger Composer modeling language because it is a great fit for smart legal contracts and is able to be put to use immediately. Composer is general enough to model any type of contract and make them executable in a variety of environments — a core requirement the Accord Project’s protocol agnosticism.

Hyperledger Composer’s primary elements correspond to the basics of smart legal contracting. Composer’s participant element corresponds to the contracting parties and its asset element corresponds to the goods, services, and other subject matter of a contract. Composer’s transactions element causes assets to be exchanged and, importantly for smart legal contracts, are the means by which external data about assets trigger business logic. Examples of transactions include sending payment when data indicates assets have been delivered, or sending notice of breach when data indicates a temperature condition is violated. Other elements of Composer map well to contracting, including those that capture types of assets (e.g., red, medium), the state of contract (e.g., past due, in-process), and basic terms such as party addresses.

The Accord Project has created an open source repository for Cicero templates and is inviting all those interested in creating a smart legal contract ecosystem to contribute. The full documentation is located here. For more information about joining the Accord Project and the discussion on slack, please visit our website: www.accordproject.org.

Perishable Goods Example

To make things concrete, let’s take a look at an example Hyperledger Composer business network (executing on Hyperledger Fabric v1) which invokes Cicero running on an out-process standalone web server. Hyperledger Fabric stores the state of assets on the blockchain, while Cicero executes contract logic off-chain.

Installation instructions for the demo are here: https://github.com/accordproject/cicero-perishable-network

Hyperledger Composer is used to store the state of shipments, importers, growers, shippers on the blockchain, while the contract logic is invoked out-of-process using the Cicero Server.

High-level architecture for the cicero-perishable-network demo.

Note: it is also possible to embed Cicero execution inside Hyperledger Fabric v1.1-preview, thanks to the support for executing Node.js chaincode.

The Hyperledger Composer Playground can be used to visualize and interact with the data stored on the blockchain.

Shipments being tracked on the blockchain.

The identities of the participants in the permissioned blockchain are managed by Hyperledger Fabric, and their metadata is managed by Hyperledger Composer and is visible in the Hyperledger Composer Playground.

Permissioned access enforced by Hyperledger Fabric, and business network Participant state stored on the blockchain.

Hyperledger Composer playground can be used to interactively test the logic for the business network, submitting transactions that update the state of assets stored on the blockchain, based on the results of executing a Cicero contract.

Simulating submitting IoT transactions using Hyperledger Composer

Behind the Scenes

Both Hyperledger Composer and Cicero are fundamentally strongly-typed and model driven, so we start by defining the data model, and because both Hyperledger Composer and Cicero use the same modelling language, there is no need for complex model mapping when calling from one to the other.

The Composer data model, showing the Shipment asset that is being stored on the blockchain, as well as some of the transactions that update the state of the shipment.

The Hyperledger Composer business network includes a transaction processor function (chaincode) that invokes the Cicero server.

A Composer transaction processor function for the ShipmentReceived transaction. On Line 32 you can see the call to the Cicero server, passing in data from the incoming transaction. After calling Cicero the function can update the state of assets on the blockchain.

You can then create a new (or use an existing) Cicero template. Here we are using the perishable-goods template from the Cicero Template Library at https://github.com/accordproject/cicero-template-library.

The grammar for a Cicero template. The grammar is the natural language text for the clause with embedded variables.

A Cicero template is strongly-typed and the type-information is captured in the template’s Template Model.

The Template Model for the perishable-goods Cicero template. The Template Model captures the names and types for variables referenced in the template grammar. Note that it can reference or include complex types, such as Shipment or Duration.

Cicero combines the Template Grammar and Template Model and uses them to generate a parser for the template. The parser takes input source text and converts it to an instance of the Template Model.

Finally Cicero templates include the executable business logic which implements a function that receives an incoming transaction and the clause data, and returns a response transaction.

Some of the business logic for the perishable-goods template, written in JavaScript. Note that the Accord Project is working on a Domain Specific Language for capturing contract logic.

For more information, and the full source code, please refer to:

 

Developer Showcase Series: Piers Casimir-Mrowczynski, BWPS

By Blog, Hyperledger Composer

Our Developer Showcase blog series serves to highlight the work and motivations of developers, users and researchers collaborating on Hyperledger’s incubated projects. Next up is Piers Casimir-Mrowczynski, head of computer science at BWPS. Let’s see what he has to say!

What advice would you offer other technologists or developers interested in getting started working on blockchain?

The way forward is a combination of the academic and the practical. Buy one of the well regarded Blockchain/Bitcoin books. Dive in and it will reward you with a real sense of blockchain warmth and wellbeing coupled with a solid architectural background. Follow it with a highly accessible and well formed blockchain solution builder such as Hyperledger Composer. You’ll then move from the theory to the practice. It’s a brilliant way to begin your blockchain journey!

Piers Casimir-Mrowczynski, head of computer science at BWPS

Give a bit of background on what you’re working on, and let us know what was it that made you want to get into blockchain?

Aside from a continued assimilation and accumulation of knowledge, I’ve been prototyping a document management and ownership recording system aimed at the Compliance function you would find in a Hedge Fund. Such immutable applications are the bread and butter of what blockchain can achieve and support. Hyperledger Composer, running on a Linux platform, and its associated elements, is ideally suited to such a blockchain application, where ease of development and confidence in the underlining architecture are imperative.

For me, Blockchain is an incredibly exciting new technology. There’s a certain irony though, that when I was 17, back in the late 70’s, studying at college, many blockchain related technologies already existed. I was learning about stacks, arrays, basic cryptography and hash totals. It feels a little like coming back home and taking these old technologies forward in a new and much more sophisticated way. Blockchain is a truly exciting phenomenon just waiting to mature.

What do you think is most important for Hyperledger to focus on in the next year?

For me it’s education, education and education. There needs to be a focus on Hyperledger specific education for its many business application solution builders. Technical infrastructure, business network solution planning as well as supporting the development, testing and implementation project lifecycle are all important.

With sound and accessible education in place, anything is possible. It starts with management understanding and then builds from there. Hyperledger is the future of mainstream blockchain applications and with the plethora of educational tools and resources, both old school as well as new technology based, there are simply now no excuses for not building world class educational resources.

What’s the one issue or problem you hope blockchain can solve?

It’s a non-technical one; that management gain the understanding and confidence needed to champion the development of blockchain applications that provide real world solutions for real world benefit. Once those foundations are in place, great solutions will follow. In addition, the open source mentality will go a long way in supporting eco-friendly, sustainable and ethical resolutions to real first and third world problems.

Where do you hope to see Hyperledger and/or blockchain in 5 years?

I see greater acceptance, better understanding and the realisation that blockchain is much more than a Bitcoin facilitation platform. Hyperledger feels like the solid, proven technology that will satisfy both the technical and non-technical innovators and implementers. This business as usual approach will disrupt the traditional applications and their associated corporate users and I hope this will support the very real creation of innovative and positive organic business solutions.

What is the best piece of developer advice you’ve ever received?

Plan first, build and test, test and test again. And actually talk to your users about what they want – before development begins. Keep it simple.

What technology could you not live without?

Easy. My Apple Mac. ( And a flushing toilet ).

Developer Showcase Series: Cody Burns, Accenture

By Blog, Hyperledger Sawtooth

Our Developer Showcase blog series serves to highlight the work and motivations of developers, users and researchers collaborating on Hyperledger’s incubated projects. Next up is Cody Burns, a blockchain architect at Accenture. Let’s see what he has to say!

What advice would you offer other technologists or developers interested in getting started working on blockchain? 

The best time to get into blockchain was likely 9 years ago, the next best time is today. The world of distributed computing and specifically blockchain is rapidly growing up. This is a great time to take the leap into the technology that the next 20 years of the internet will be built upon. Awesome tools and new languages are being developed and rolled out every day. I really see these as what will be the formative years of the next generation of technology and it is being built by the best and the brightest from around the globe today.

The only thing holding you back from getting in on the ground floor is yourself. The open source projects and communities are always looking for help, there are hundreds of hours of video online, and many free and paid courses are available to you right now. Enterprise companies are really leaning forward in the space, Accenture has dedicated an entire floor of their innovation center in Ireland, known as the Dock, specifically to blockchain tech and regularly hosts hack-a-thons and meetups.

Finally, I would strongly recommend everyone avoid the temptation of becoming a “trader” or becoming overly fixated on the money side of the tech. The public blockchain space has become lousy with developers who, through no fault of their own, became rich quickly through purely the adoption of blockchain technology. The fact that the tech you are working on becomes valuable doesn’t mean you are suddenly Gorden Gekko. It means you were lucky. Technology is about exploration and learning, not lambos and getting rich quick.

Cody Burns, blockchain Architect at Accenture

Give a bit of background on what you’re working on, and let us know what was it that made you want to get into blockchain?

I’ve been involved with applied cryptography since around the year 2000 and have always loved the concept of encrypted communication systems and peer to peer networks. I joined the Marines out of high school and was assigned as a 2841, Ground electronic repairman, so anything electronic in the military you could talk to or through I ended up working on, learning about, and teaching others. After I left the military I went to college, and along the way found bitcoin and fell in love. I continued learning about it and expanded to other projects like ethereum and ethereum classic and, after getting my MBA, I decided it was time to move into enterprise level systems and began looking for leaders in the technology field with exposure to fortune 500 companies. I found what I was looking for when I joined Accenture.

Here at Accenture, we have been working with enterprise clients on projects solving problems that have been pain points for decades; logistics, health & safety, and risk management. Companies are learning that some areas they traditionally viewed as impossible to collaborate on are now within their reach since we can cryptographically verify with a single source of truth. We are exploring proof of concepts with a wide variety of industry players, from food safety and provenance with Campbells soup, global identity solutions with the World Economic Forum, and helping streamline freight bill audit and pay in the oil field services arena. I am currently working on a project that will be presented at theWorld Economic Forum as part of a global traveler identification system. Very cool stuff.

What do you think is most important for Hyperledger to focus on in the next year?

This is a very exciting time for Hyperledger. Over the next 12 months, I think the ecosystem will see many of the PoCs it partners have been working on move into larger scale roll outs. From conversations and summits I’ve been involved with, I can say many enterprise companies are very interested in the technology and are looking for the right opportunities and partners to move forward.

I do think the two largest barriers that will bring the largest adoption improvements are oracle & api integration and improving the overall user experience. As companies begin to interact more and more with blockchains they will be looking for the best pathway to onboard their legacy data into the new systems. Making this seamless should be everyone’s priority number one. Another shortcoming in the blockchain space in general is the poor design of UI/UX. I’m very comfortable using the cli for nearly everything I do on my system. But that experience doesn’t translate well to mass adoption.

As Hyperledger’s incubated projects start maturing and hit 1.0s and beyond, what are the most interesting technologies, apps, or use cases coming out as a result from your perspective?

Intel’s Proof of Elapsed time consensus algorithm being integrated with Seth on the Hyperledger Sawtooth project is exciting. It has the potential of making both public and enterprise chains much more energy efficient without relying on overly convoluted game theory systems to solve leader election.  

What’s the one issue or problem you hope blockchain can solve?

I hope that we can continue to improve on the inefficiencies that have been left over from the pre-internet era In the enterprise environment; wasteful data storage practices, mis-aligned industry standards on the same project, and lost revenue due to time-to-process to name a few. Having an immutable ledger tying together industry players is something that has never been capable before at the scale blockchain allows for.   

Where do you hope to see Hyperledger and/or blockchain in 5 years?

Silently and securely grinding away in the background of many enterprise networks. The industry is in its wild teenage years and needs to embrace the fact that its ok to be boring. Reliable systems are awesome. Focus on formal verification of code, mitigation of risk through bug, and scaling. For me the true measure of success will be when blockchains are as exciting as databases are today. They will become trust machine in the background obediently connecting the worlds logistics, finance, and commerce systems together.

What is the best piece of developer advice you’ve ever received?

Find something you are passionate about and never give it up. I love open source communities and specifically the blockchain communities, I have been fortunate enough to be able to work on public and enterprise systems and love every minute of it. Do not get too focused on the 1% of disagreement that you have in the communities. Everyone is there because they are as passionate about the tech as you are.

What technology could you not live without?

I use my Trezor for everything. U2f and key management. It is the must have device for blockchain architects and crypto enthusiasts everywhere.

 

Developer Showcase Series: Deverick Crippen, GrandView Technology

By Blog, Hyperledger Composer, Hyperledger Fabric

Our Developer Showcase blog series serves to highlight the work and motivations of developers, users and researchers collaborating on Hyperledger’s incubated projects. Next up is Deverick Crippen from GrandView Technology. Let’s see what he has to say!

What advice would you offer other technologists or developers interested in getting started working on blockchain?

My advice to technologists or developers interested in getting started with blockchain, would be to first invest time in studying what it is and how it will impact the world. YouTube offers some great speeches and training on blockchain technology and Hyperledger.

Deverick Crippen, GrandView Technology

Give a bit of background on what you’re working on, and let us know what was it that made you want to get into blockchain?

The project I’m currently working on is using blockchain, in conjunction with IoT, to create a supply chain solution for specific industries that my team has knowledge and years of experience in. Blockchain offers the security, traceability and transparency that the world needs in these areas for quality, as well as, efficient production and transport of goods.

What project in Hyperledger are you working on? Any new developments to share? Can you sum up your experience with Hyperledger?

We are currently using Hyperledger Fabric and Hyperledger Composer for our solution. The solution isn’t developed yet, but I must say that IBM and Hyperledger offer great development tools, tutorials, videos, and other resources, that have made us go far in our development.

What do you think is most important for Hyperledger to focus on in the next year?

I think developer education and promotion should be the focus of Hyperledger next year. I’d love to see more developer conferences and meetups. We live in a connected and mobile world, so great minds are in every corner of the earth.

As Hyperledger’s incubated projects start maturing and hit 1.0s and beyond, what are the most interesting technologies, apps, or use cases coming out as a result from your perspective?

I’m excited about the financial applications. This is our country’s most profitable industry and leads the rest in adoption of new technologies for business.

What’s the one issue or problem you hope blockchain can solve?

Voting.

Where do you hope to see Hyperledger and/or blockchain in 5 years?

In the next 5 years, I hope to see blockchain used globally and as common a term as the internet. I’m hoping Hyperledger becomes/maintains the #1 Influencer.

What is the best piece of developer advice you’ve ever received?

Learn Javascript!

What technology could you not live without?

I cannot live without my iPhone.