{"id":20845,"date":"2017-02-20T20:10:29","date_gmt":"2017-02-21T04:10:29","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=20845"},"modified":"2017-02-21T11:04:44","modified_gmt":"2017-02-21T19:04:44","slug":"hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/","title":{"rendered":"Hyperledger Fabric&#8217;s Chaincode, Practical Byzantine Fault Tolerance, and v1.0"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#An_%E2%80%9CInternet_of_Assets%E2%80%9D\" >An &#8220;Internet of Assets&#8221;<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#A_general_Fabric_v06_overview\" >A general Fabric v0.6 overview<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#Practical_Byzantine_Fault_Tolerance\" >Practical Byzantine Fault Tolerance<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#Chaincode\" >Chaincode<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#Hyperledger_Fabric_v10_is_coming\" >Hyperledger Fabric v1.0 is coming<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#Related_slides\" >Related slides<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#Related_reading\" >Related reading<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#About_the_speaker\" >About the speaker<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"An_%E2%80%9CInternet_of_Assets%E2%80%9D\"><\/span>An &#8220;Internet of Assets&#8221;<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div id=\"attachment_21086\" style=\"width: 160px\" class=\"wp-caption alignright\"><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/thomas-marckx.jpg\"><img decoding=\"async\" aria-describedby=\"caption-attachment-21086\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/thomas-marckx.jpg\" alt=\"Thomas Marckx\" width=\"150\" class=\"size-full wp-image-21086\" \/><\/a><p id=\"caption-attachment-21086\" class=\"wp-caption-text\"><small>Thomas Marckx<\/small><\/p><\/div>\n<p>\u201cThink of a private blockchain as an Internet of Assets, in which you can send anything contained in a contract anywhere in the world,\u201d said <!-- Linkedin Profile Badge: http:\/\/3doordigital.com\/wordpress\/plugins\/linkedin-profile-badge\/ -->\r\n<script type=\"IN\/MemberProfile\" data-id=\"https:\/\/www.linkedin.com\/in\/thomas-marckx-26770955\/\" data-format=\"hover\"  data-text=\"Thomas Marckx\" data-related=\"false\"><\/script>, as a led a <a href=\"https:\/\/www.altoros.com\/webinars\/technical-widening-on-hyperledger-fabric\/\">recent webinar<\/a> on Hyperledger Fabric.<\/p>\n<p>Thomas is a blockchain developer at Optis and co-founder of TheLedger, based in the Antwerp area, Belgium. He took attendees through a fairly deep dive into Fabric v0.6\u2014the current version that&#8217;s being tested by developers throughout the world.<\/p>\n<p>During the presentation, Thomas provided useful information in several areas:<\/p>\n<ul>\n<li>A short recap of distributed ledgers and how they compare to centralized systems<\/li>\n<li>Public permissionless blockchains vs. permissioned enterprise blockchains<\/li>\n<li>A step-by-step explanation of membership services and their responsibilities in Fabric<\/li>\n<li>Security, privacy, and multi-encryption in Hyperledger Fabric<\/li>\n<li>The chaincode structure and how it can be  deployed using a CLI, Rest API, or SDK<\/li>\n<li>How the consensus mechanism works and what is planned for <a href=\"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-v1-0-to-bring-improved-transactions-and-a-pluggable-data-store\/\">Fabric v1.0<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"A_general_Fabric_v06_overview\"><\/span>A general Fabric v0.6 overview<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Thomas described blockchains in general as \u201cmechanisms to draw fact-based conclusions in an auditable way,\u201d adding that \u201cconsensus enhances trust.\u201d He noted advantages of the trusted, private networks that can be built with Hyperledger Fabric, in contrast to a public blockchain, such as Ethereum, in which innate anonymity of users can cause problems with accountability, and in which transaction validation takes a lot of energy.<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-architecture.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-architecture.jpg\" alt=\"Hyperledger Webinar Thomas Marckx architecture\" width=\"640\" class=\"aligncenter size-full wp-image-21012\" \/><\/a><\/p>\n<p>There are four types of members in a private, permissioned blockchain:<\/p>\n<ul>\n<li>users<\/li>\n<li>peers<\/li>\n<li>validators<\/li>\n<li>auditors<\/li>\n<\/ul>\n<p>Membership services provide the specific, unique certificates needed to enable members to execute their tasks. A Certificate Authority (CA) issues all certificates. There is no external registration authority yet, something that will be needed to avoid a single point of failure within the CA.<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-membership-services-certificates-1.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-membership-services-certificates-1.jpg\" alt=\"Hyperledger Webinar Thomas Marckx membership services certificates\" width=\"640\" class=\"aligncenter size-full wp-image-21014\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Practical_Byzantine_Fault_Tolerance\"><\/span>Practical Byzantine Fault Tolerance<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Thomas also mentioned the four key aspects of private blockchains in general and Fabric in particular:<\/p>\n<ul>\n<li>validating peers<\/li>\n<li>smart contracts<\/li>\n<li>membership services<\/li>\n<li>pluggable consensus<\/li>\n<\/ul>\n<p>Validating peers approve transactions for the overall ledger, which is known as the <em>\u201cworld state.\u201d<\/em><\/p>\n<p>Smart contracts are also known as <em>\u201cchaincode\u201d<\/em> and are the transactions themselves, written in either the Go or Java languages. Smart contracts have three external functions:<\/p>\n<ul>\n<li>init<\/li>\n<li>invoke<\/li>\n<li>query<\/li>\n<\/ul>\n<p>Consensus in version 0.6 is achieved when all validating peers agree on the validity of a transaction. They use the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Byzantine_fault_tolerance#Practical_Byzantine_fault_tolerance\" target=\"_blank\">Practical Byzantine Fault Tolerance<\/a> method (PBFT) to reach consensus.<\/p>\n<p>This method is widely discussed at various meetings the Hyperledger community. It is in contrast to the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Proof-of-work_system\" target=\"_blank\">proof-of-work<\/a> validation method used by cryptocurrency blockchains such as Ethereum.<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-PBFT-1.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-PBFT-1.jpg\" alt=\"Hyperledger Webinar Thomas Marckx PBFT 1\" width=\"640\" class=\"aligncenter size-full wp-image-21016\" \/><\/a><\/p>\n<p>With PBFT, transactions reach the validating peers in version 0.6 (and in version 1.0 when more than one peer is involved) at different times, so they don\u2019t have the same order of transactions. The peers then \u201cvote\u201d for a validating leader, which choose the sequence, Thomas explained. The other peers communicate with one another until they have the same sequence and a consensus. Although it&#8217;s unlikely to find a rogue, subversive peer in a trusted network, a rogue peer would nevertheless be overruled by the others and fail to disrupt or corrupt a transaction.<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-PBFT-2.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-PBFT-2.jpg\" alt=\"Hyperledger Webinar Thomas Marckx PBFT 2\" width=\"640\" class=\"aligncenter size-full wp-image-21017\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Chaincode\"><\/span>Chaincode<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The crux of this webinar featured some code that demonstrated how individuals and companies can get started with Fabric. First, he showed some simple chaincode structure:<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-chaincode-structure.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-chaincode-structure.jpg\" alt=\"Hyperledger Webinar Thomas Marckx chaincode structure\" width=\"640\" class=\"aligncenter size-full wp-image-21018\" \/><\/a><\/p>\n<p>Then he showed, and discussed, how to store and call data:<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-chaincode-storage-caller-data.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-chaincode-storage-caller-data.jpg\" alt=\"Hyperledger Webinar Thomas Marckx chaincode storage caller data\" width=\"640\" class=\"aligncenter size-full wp-image-21019\" \/><\/a><\/p>\n<p>This was followed by some deployment options:<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-chaincode-deploy.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-chaincode-deploy.jpg\" alt=\"Hyperledger Webinar Thomas Marckx chaincode deploy\" width=\"640\" class=\"aligncenter size-full wp-image-21020\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Hyperledger_Fabric_v10_is_coming\"><\/span>Hyperledger Fabric v1.0 is coming<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Thomas provided a caveat that a few things will change with the oncoming Fabric v1.0, its first commercial-grade release, scheduled for sometime in the March to April timeframe. The biggest differences will be the addition of new database capability, and the ability to choose a single peer (or multiple peers as desired) to validate transactions, rather than having to wait for all peers on the network for this crucial step. Read our <a href=\"https:\/\/www.altoros.com\/blog\/hyperledger-approaches-version-1-0-with-better-scalability-and-security\/\" target=\"_blank\">recent post<\/a> for more details.<\/p>\n<p>The updated version will incorporate a <a href=\"https:\/\/www.linkedin.com\/pulse\/crypto-20-musings-proof-elapsed-time-alex-batlin\" target=\"_blank\">proof-of-elapsed-time<\/a> method (PoET), in which trust from a transaction submitter and validator has been established within this private environment. This idea is being incorporated into Hyperledger&#8217;s <a href=\"https:\/\/www.altoros.com\/blog\/hyperledgers-sawtooth-lake-bets-on-modular-blockchains-and-elapsed-time-consensus\/\" target=\"_blank\">&#8220;Sawtooth Lake&#8221;<\/a> incubation, and should facilitate new levels of scalability and performance within Hyperledger Fabric.<\/p>\n<p>Thomas urged attendees to get started with their own blockchain test projects. There are several ways to get started: through a CLI, a REST API, or a Node.js SDK. He noted that the REST API will be removed from Fabric v1.0, but SDKs in Java and Python are in the works.<\/p>\n<p>Individual projects can be run on virtual machines on IBM Bluemix (free of charge with Fabric v0.6), \u201cor you can go with AWS with Docker Compose and Kubernetes,\u201d he said.<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-full-stack.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-full-stack.jpg\" alt=\"Hyperledger Webinar Thomas Marckx full stack\" width=\"640\" class=\"aligncenter size-full wp-image-21021\" \/><\/a><\/p>\n<blockquote><p><em>\u201cBuild a full stack if you start your own blockchain company. You can even use centralized databases if you wish, and you can connect with other blockchains.\u201d \u2014Thomas Marckx<\/em><\/p><\/blockquote>\n<p>His last point was in reference another change with version 1.0: the world state will be stored at a different level on the chain, enabling users to create sub-channels. Combine that with the ability to use a single validating peer, \u201cand you can have your own little ledger,\u201d he noted.<\/p>\n<p>He sees this proliferation as the future of private blockchain, along with the use of the <a href=\"http:\/\/interledger.org\" target=\"_blank\">Interledger Protocol<\/a> that will allow a lot of work to be done \u201coff chain,\u201d thereby increasing the performance and scalability of any individual blockchain.<\/p>\n<p>Want details? Watch the <a href=\"https:\/\/www.altoros.com\/webinars\/technical-widening-on-hyperledger-fabric\/\">webinar recording<\/a>!<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Related_slides\"><\/span>Related slides<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><iframe loading=\"lazy\" src=\"https:\/\/www.slideshare.net\/slideshow\/embed_code\/key\/B0H4PzydNQ7Lw2\" width=\"427\" height=\"356\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen> <\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Related_reading\"><\/span>Related reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/hyperledger-approaches-version-1-0-with-better-scalability-and-security\/\">Hyperledger Fabric Approaches v1.0 with Better Scalability and Security<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/how-hyperledger-fabric-delivers-security-to-enterprise-blockchain\/\">How Hyperledger Fabric Delivers Security to Enterprise Blockchain<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-v1-0-to-bring-improved-transactions-and-a-pluggable-data-store\/\">Hyperledger Fabric v1.0 to Bring Improved Transactions and a Pluggable Data Store<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/technical-introduction-to-hyperledger-fabric\/\">Technical Introduction to Hyperledger Fabric<\/a><\/li>\n<\/ul>\n<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"About_the_speaker\"><\/span>About the speaker<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>\n<div style=\"float: right;\"><a href=\"https:\/\/www.linkedin.com\/in\/thomas-marckx-26770955\/\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Thomas-Marckx-TheLedger-bio.png\" alt=\"Thomas Marckx, TheLedger bio\" width=\"150\" height=\"150\" class=\"aligncenter size-full wp-image-21031\" \/><\/a><\/div>\n<div style=\"width: 600px;\"><small><a href=\"https:\/\/www.linkedin.com\/in\/thomas-marckx-26770955\/\">Thomas Marckx<\/a> is Blockchain Developer at TheLedger. After working as an IT consultant in the financial sector for a couple of years, he shifted his focus to newer distributed technologies. Thomas currently works as a blockchain developer for Optis, which is part of the Cronos Group. He is also co-founder of TheLedger, a Belgium-based blockchain consulting company that helps companies to understand and implement blockchain solutions.<\/small><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>An &#8220;Internet of Assets&#8221;<\/p>\n<p id=\"caption-attachment-21086\" class=\"wp-caption-text\">Thomas Marckx<\/p>\n<p>\u201cThink of a private blockchain as an Internet of Assets, in which you can send anything contained in a contract anywhere in the world,\u201d said<br \/>\n, as a led a recent webinar on Hyperledger Fabric.<\/p>\n<p>Thomas is a blockchain developer at Optis and co-founder of [&#8230;]<\/p>\n","protected":false},"author":9,"featured_media":21030,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[7],"tags":[672,753],"class_list":["post-20845","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news-and-opinion","tag-blockchain","tag-hyperledger"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Hyperledger Fabric&#039;s Chaincode, Practical Byzantine Fault Tolerance, and v1.0 | Altoros<\/title>\n<meta name=\"description\" content=\"Thomas Marckx of TheLedger led webinar attendees through a deep dive into Hyperledger Fabric, explaining how validation \/ consensus is implemented.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hyperledger Fabric&#039;s Chaincode, Practical Byzantine Fault Tolerance, and v1.0 | Altoros\" \/>\n<meta property=\"og:description\" content=\"An &#8220;Internet of Assets&#8221; Thomas Marckx \u201cThink of a private blockchain as an Internet of Assets, in which you can send anything contained in a contract anywhere in the world,\u201d said  , as a led a recent webinar on Hyperledger Fabric. Thomas is a blockchain developer at Optis and co-founder of [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-21T04:10:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-02-21T19:04:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-v2.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Roger Strukhoff\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Roger Strukhoff\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\\\/\"},\"author\":{\"name\":\"Roger Strukhoff\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/56ea20d6f280f7a442e89e5884b06fd8\"},\"headline\":\"Hyperledger Fabric&#8217;s Chaincode, Practical Byzantine Fault Tolerance, and v1.0\",\"datePublished\":\"2017-02-21T04:10:29+00:00\",\"dateModified\":\"2017-02-21T19:04:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\\\/\"},\"wordCount\":1032,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/Hyperledger-Webinar-Thomas-Marckx-v2.gif\",\"keywords\":[\"Blockchain\",\"Hyperledger\"],\"articleSection\":[\"News\\\/Opinion\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\\\/\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\\\/\",\"name\":\"Hyperledger Fabric's Chaincode, Practical Byzantine Fault Tolerance, and v1.0 | Altoros\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/Hyperledger-Webinar-Thomas-Marckx-v2.gif\",\"datePublished\":\"2017-02-21T04:10:29+00:00\",\"dateModified\":\"2017-02-21T19:04:44+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/56ea20d6f280f7a442e89e5884b06fd8\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/Hyperledger-Webinar-Thomas-Marckx-v2.gif\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/Hyperledger-Webinar-Thomas-Marckx-v2.gif\",\"width\":640,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hyperledger Fabric&#8217;s Chaincode, Practical Byzantine Fault Tolerance, and v1.0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/56ea20d6f280f7a442e89e5884b06fd8\",\"name\":\"Roger Strukhoff\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/03\\\/roger_strukhoff_user_icon-150x150.jpg\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/03\\\/roger_strukhoff_user_icon-150x150.jpg\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/03\\\/roger_strukhoff_user_icon-150x150.jpg\",\"caption\":\"Roger Strukhoff\"},\"description\":\"Roger Strukhoff is Director of Research at Altoros. He also serves as Executive Director of the Tau Institute for Global ICT Research, Conference Chair of Cloud Expo and Things Expo, Co-Chair of the Big Data World Forum, and Open-Source Chair for the global DCD Converged conference series. He received his BA from Knox College, and conducted MBA studies at California State University\\\/East Bay. Previously in his career, he was VP of New Products at International Data Group and Director of Global Publications at TIBCO Software.\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/author\\\/rstrukhoff\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hyperledger Fabric's Chaincode, Practical Byzantine Fault Tolerance, and v1.0 | Altoros","description":"Thomas Marckx of TheLedger led webinar attendees through a deep dive into Hyperledger Fabric, explaining how validation \/ consensus is implemented.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/","og_locale":"en_US","og_type":"article","og_title":"Hyperledger Fabric's Chaincode, Practical Byzantine Fault Tolerance, and v1.0 | Altoros","og_description":"An &#8220;Internet of Assets&#8221; Thomas Marckx \u201cThink of a private blockchain as an Internet of Assets, in which you can send anything contained in a contract anywhere in the world,\u201d said  , as a led a recent webinar on Hyperledger Fabric. Thomas is a blockchain developer at Optis and co-founder of [...]","og_url":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/","og_site_name":"Altoros","article_published_time":"2017-02-21T04:10:29+00:00","article_modified_time":"2017-02-21T19:04:44+00:00","og_image":[{"width":640,"height":360,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-v2.gif","type":"image\/gif"}],"author":"Roger Strukhoff","twitter_misc":{"Written by":"Roger Strukhoff","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#article","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/"},"author":{"name":"Roger Strukhoff","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/56ea20d6f280f7a442e89e5884b06fd8"},"headline":"Hyperledger Fabric&#8217;s Chaincode, Practical Byzantine Fault Tolerance, and v1.0","datePublished":"2017-02-21T04:10:29+00:00","dateModified":"2017-02-21T19:04:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/"},"wordCount":1032,"commentCount":0,"image":{"@id":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-v2.gif","keywords":["Blockchain","Hyperledger"],"articleSection":["News\/Opinion"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/","url":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/","name":"Hyperledger Fabric's Chaincode, Practical Byzantine Fault Tolerance, and v1.0 | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-v2.gif","datePublished":"2017-02-21T04:10:29+00:00","dateModified":"2017-02-21T19:04:44+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/56ea20d6f280f7a442e89e5884b06fd8"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-v2.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/02\/Hyperledger-Webinar-Thomas-Marckx-v2.gif","width":640,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/hyperledger-fabric-chaincode-practical-byzantine-fault-tolerance-and-v1-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hyperledger Fabric&#8217;s Chaincode, Practical Byzantine Fault Tolerance, and v1.0"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/56ea20d6f280f7a442e89e5884b06fd8","name":"Roger Strukhoff","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/roger_strukhoff_user_icon-150x150.jpg","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/roger_strukhoff_user_icon-150x150.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/roger_strukhoff_user_icon-150x150.jpg","caption":"Roger Strukhoff"},"description":"Roger Strukhoff is Director of Research at Altoros. He also serves as Executive Director of the Tau Institute for Global ICT Research, Conference Chair of Cloud Expo and Things Expo, Co-Chair of the Big Data World Forum, and Open-Source Chair for the global DCD Converged conference series. He received his BA from Knox College, and conducted MBA studies at California State University\/East Bay. Previously in his career, he was VP of New Products at International Data Group and Director of Global Publications at TIBCO Software.","url":"https:\/\/www.altoros.com\/blog\/author\/rstrukhoff\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/20845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=20845"}],"version-history":[{"count":31,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/20845\/revisions"}],"predecessor-version":[{"id":21095,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/20845\/revisions\/21095"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/21030"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=20845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=20845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=20845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}