{"id":205,"date":"2019-05-18T19:14:08","date_gmt":"2019-05-18T23:14:08","guid":{"rendered":"http:\/\/www.podc.org\/podc2019\/?page_id=205"},"modified":"2021-10-29T10:40:36","modified_gmt":"2021-10-29T14:40:36","slug":"tutorial-descriptions","status":"publish","type":"page","link":"https:\/\/www.podc.org\/podc2019\/workshops-and-tutorials\/tutorial-descriptions\/","title":{"rendered":"Tutorial Descriptions"},"content":{"rendered":"\n<a id=\"TutDistributedConsensus\"><\/a><h3 style=\"text-align:left\">Tutorial 1:<br><em>From Classical to Blockchain Consensus: What are the Exact Algorithms?<\/em><\/h3>\n\n\n\n<p><strong>Organizers: Y. Annie Liu and Scott D. Stoller<br>Computer Science Department, Stony Brook University<\/strong><\/p>\n\n\n\n<p>This tutorial will describe well-known algorithms for distributed consensus<br>problems, from classical consensus to blockchain consensus, and will<br>discuss exact algorithms that are high-level as in pseudocode and directly<br>executable at the same time. &nbsp;The tutorial consists of five parts:<\/p>\n<ol>\n<li data-tadv-p=\"keep\">An introduction to different distributed consensus problems, from&nbsp;classical consensus and Byzantine consensus to blockchain consensus.<\/li>\n<li data-tadv-p=\"keep\">An overview of well-known algorithms, from Paxos for classical consensus&nbsp;to the Bitcoin algorithm for blockchain consensus, including important&nbsp;variants such as Viewstamped Replication and Virtual Synchrony, as well&nbsp;as Proof-of-Stake vs. Proof-of-Work.<\/li>\n<li data-tadv-p=\"keep\">An overview of a method and language, DistAlgo, for expressing&nbsp;distributed algorithms precisely at a high-level as pseudocode and&nbsp;having them directly executable at the same time.<\/li>\n<li data-tadv-p=\"keep\">A study of exact algorithms expressed at a high level for the most&nbsp;extensively studied algorithm variants, including Lamport&#8217;s Paxos for&nbsp;classical consensus and Nakamoto&#8217;s Bitcoin algorithm for blockchain&nbsp;consensus.<\/li>\n<li data-tadv-p=\"keep\">A demo of the direct execution of these exact algorithms by&nbsp;distributed processes.<\/li>\n<\/ol>\n<p>Additional information and materials for the workshop will be made<br>available at <a href=\"http:\/\/darlab.cs.stonybrook.edu\/consensus\">http:\/\/darlab.cs.stonybrook.edu\/consensus<\/a><\/p>\n\n\n\n<a id=\"TutInterchain\"><\/a><h3 style=\"text-align:left\">Tutorial 2:<br><em>Byzantine Fault Tolerant State Machine Replication in Any Programming Language<\/em><\/h3>\n\n\n\n<p><strong>Organizer: Ethan Buchman<br>Interchain Foundation<\/strong><\/p>\n\n\n\n<p><span class=\"\">State machine replication is a fundamental primitive in fault tolerant distributed computing,&nbsp;<\/span><span class=\"\">but few production tools exist to support the replication of arbitrary state machines. The tools that do exist, like Apache Zookeeper, CoreOS\u2019s etcd, and Hashicrop\u2019s Consul, include an implementation of a consensus algorithm (eg. ZAB or Raft) for replication, and a service-discovery oriented key-value store as the state machine. While these tools can tolerate crash failures, they cannot tolerate malicious or adversarial (\u201cByzantine\u201d) faults. We present Tendermint, a production-grade Byzantine Fault Tolerant State Machine Replication engine written in Go. Tendermint supports state machines replication for state machines written in any language by using a socket protocol to communicate between the state machine and the replication engine. Tendermint is being used on the public internet today to secure upwards of $1 Billion USD in value, with deployments supporting hundreds of nodes.<\/span><span class=\"\"><br class=\"\"><\/span><span class=\"\"><br class=\"\"><\/span><span class=\"\">In this tutorial, we provide an overview of the Tendermint system and demonstrate how to build Byzantine Fault Tolerant applications in Go and Javascript. We will also introduce the Cosmos Hub, an advanced Proof-of-Stake cryptocurrency system built on Tendermint.<\/span><\/p>\n\n\n\n<a id=\"TutSDN\"><\/a><h3 style=\"text-align:left\">Tutorial 3:<br><em>Central Control over Distributed Asynchronous Systems: A Tutorial on Software-Defined Networks and Consistent Network Updates<\/em><\/h3>\n\n\n\n<p><strong>Organizer: Klaus-Tycho Foerster<br>University of Vienna<\/strong><\/p>\n\n\n\n<p><span style=\"text-decoration: underline\"><span style=\"color: #ff6600\"><a style=\"color: #ff6600;text-decoration: underline\" href=\"http:\/\/ktfoerster.github.io\/slides\/2019-podc.pdf\" data-rich-text-format-boundary=\"true\">Presentation slides available here<\/a><\/span><\/span><br \/><br \/>This tutorial will give an introduction to a topic that lies at the intersection of distributed computing and networking, and combines asynchronous distributed systems with central control, namely consistent updates in Software-Defined Networks (SDNs). We will give an overview on current models and algorithms, \u00a0but also selected related topics, in particular those of potential interest to the PODC community, showcasing avenues for further research.<br \/><br \/>In more detail, SDNs have been an intensively studied topic in networking over the last years, but much of its focus has been on (logical) central control, abstracting away most of its underlying foundation, namely that a network is still a distributed asynchronous system at its core. Summarized in a simplified way, SDNs come with the promise that the network state can be optimized and updated from a global point of view. However, such a simplification becomes especially problematic when consistency guarantees have to maintained. In asynchronous distributed systems, it is not possible to simultaneously change the state of all nodes, such a naive approach will lead to an inconsistent mix of old and new states, introducing e.g. forwarding loops. Notwithstanding, most approaches tackle these issues from the viewpoints of the networking\/systems communities, and we believe could henceforth greatly benefit from connections to relevant works and (new) ideas stemming from the PODC community.<\/p>\n\n\n\n<a id=\"TutPersistent\"><\/a><h3 style=\"text-align:left\">Tutorial 4:<br><em>Specifying, Implementing, and Verifying Algorithms for Persistent Memory<\/em><\/h3>\n\n\n\n<p><strong>Organizer: Wojciech Golab<br>University of Waterloo<\/strong><\/p>\n\n\n\n<p>High-density byte-addressable non-volatile memory became a reality earlier this year when Intel\u00ae launched the long-awaited Optane\u2122 persistent memory module. \u00a0This tutorial is intended for researchers interested in using Optane memory to construct fault-tolerant data structures that can maintain state consistently across power outages and system crashes without relying on conventional secondary storage. \u00a0A number of practical and theoretical topics will be covered including hardware purchasing considerations, operating system and programming language support for persistent memory, correctness properties for fault-tolerant data structures, and techniques for verifying such correctness properties.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tutorial 1:From Classical to Blockchain Consensus: What are the Exact Algorithms? Organizers: Y. Annie Liu and Scott D. StollerComputer Science Department, Stony Brook University This tutorial will describe well-known algorithms for distributed consensusproblems, from classical consensus to blockchain consensus, and willdiscuss exact algorithms that are high-level as in pseudocode and directlyexecutable at the same time. &hellip; <a href=\"https:\/\/www.podc.org\/podc2019\/workshops-and-tutorials\/tutorial-descriptions\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Tutorial Descriptions&#8221;<\/span><\/a><\/p>\n","protected":false},"author":13,"featured_media":0,"parent":189,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-205","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.podc.org\/podc2019\/wp-json\/wp\/v2\/pages\/205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.podc.org\/podc2019\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.podc.org\/podc2019\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.podc.org\/podc2019\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.podc.org\/podc2019\/wp-json\/wp\/v2\/comments?post=205"}],"version-history":[{"count":23,"href":"https:\/\/www.podc.org\/podc2019\/wp-json\/wp\/v2\/pages\/205\/revisions"}],"predecessor-version":[{"id":352,"href":"https:\/\/www.podc.org\/podc2019\/wp-json\/wp\/v2\/pages\/205\/revisions\/352"}],"up":[{"embeddable":true,"href":"https:\/\/www.podc.org\/podc2019\/wp-json\/wp\/v2\/pages\/189"}],"wp:attachment":[{"href":"https:\/\/www.podc.org\/podc2019\/wp-json\/wp\/v2\/media?parent=205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}