On this page:
Glow
8.7

Glow

#lang glow

    1 Glow FAQ

      1.1 How do I ... ?

      1.2 Is Glow a platform? A language? Both?

      1.3 Can you quickly sum-up the benefits of Glow?

      1.4 What blockchains does Glow run on?

        1.4.1 Does Glow work on the EVM?

        1.4.2 Do you directly generate EVM bytecode?

      1.5 What will it take to support another blockchain?

        1.5.1 What will it take to support another EVM blockchain?

        1.5.2 What will it take to support another smart-contract blockchain?

        1.5.3 What will it take to support Bitcoin?

      1.6 What is the product of Glow?

      1.7 What does a typical Glow interaction look like?

        1.7.1 What does reaching an agreement look like?

        1.7.2 What does an agreement execution look like?

        1.7.3 What does holding accountable look like?

      1.8 What can I do with Glow?

        1.8.1 What interactions are included in Glow’s standard library?

        1.8.2 Is there a Glow library for NFTs? for ERC20 contracts?

      1.9 What are Generalized State Channels?

      1.10 Does Glow compile files?

        1.10.1 Does Glow compile DApps into smart contracts?

        1.10.2 Does Glow compile DApps into client programs?

        1.10.3 Does Glow generate any file on a participant’s machine?

        1.10.4 How are you generating JavaScript?

      1.11 Do I have to install other languages or modules to use Glow?

      1.12 Will Glow allow me to make a full DApp from scratch?

      1.13 Will the .glow files I write today be compatible with the next versions of Glow?

        1.13.1 Will your contracts be certified by Etherscan or otherwise self-certifying?

      1.14 Is Glow Free Software?

      1.15 Is Glow Turing-Complete?

    2 Glow Tutorial

      2.1 Intro

        2.1.1 Level 1: I am new to computer programming

        2.1.2 Level 2: I can make standard apps

        2.1.3 Level 3: I can make DApps, and want to make my own smart-contracts

        2.1.4 Level 4: I want to help develop Glow and understand all the details

      2.2 Why use Glow?

      2.3 What is Glow for?

        2.3.1 A programming language for DApps

        2.3.2 What Glow can and can’t do

        2.3.3 More information

          2.3.3.1 Official pages and documents

          2.3.3.2 Team and license

          2.3.3.3 GitHub repo

          2.3.3.4 Our history

          2.3.3.5 Glow’s predecessor

          2.3.3.6 Conceptual Basis

        2.3.4 Environments

          2.3.4.1 Use Glow in any browser

          2.3.4.2 Use Glow locally on Linux and macOS

      2.4 Getting started

        2.4.1 Simplified install on Linux or macOS

          2.4.1.1 Install Glow with only one command line

      2.5 Trying it out with Docker (levels 3 and 4)

      2.6 Install Glow the hard way on other systems (levels 3 and 4)

      2.7 Language Overview

      2.8 Fundamentals: Hello world!

      2.9 Buying a Signature

        2.9.1 Writing the DApp

        2.9.2 Setting up identities to run the DApp

        2.9.3 Generating a document digest for the DApp

        2.9.4 Deploying the DApp

        2.9.5 Interacting with the DApp

    3 Glow Reference Manual

      3.1 Basic Syntax

        3.1.1 The #lang glow line

        3.1.2 Commenting your code

        3.1.3 Naming objects in Glow

      3.2 Definitions

        3.2.1 Value Definitions

        3.2.2 Function Definitions

        3.2.3 Interaction Definitions

        3.2.4 Statement-Block Expressions

      3.3 Interaction Effects

      3.4 Conditionals

      3.5 Datatypes

        3.5.1 Booleans and Equality

        3.5.2 Integers

          3.5.2.1 Integer Arithmetic

          3.5.2.2 Integer Comparisons

          3.5.2.3 Bitwise Integer Operations

        3.5.3 Byte Strings

        3.5.4 Digests and Signatures

      3.6 Near-Future Plans

        3.6.1 Static Safety Analyses

          3.6.1.1 Specifying Application Invariants

          3.6.1.2 Logical Invariants

          3.6.1.3 Security properties we will prove about interactions written in Glow

          3.6.1.4 Correctness of the Glow implementation

        3.6.2 Recursive Functions

        3.6.3 Compound Data Types and Switch Patterns

        3.6.4 Integers with Negatives and BigInts

        3.6.5 Unit and Tuple Types

        3.6.6 Record Types

      3.7 Glow Language Grammar

    4 Glow DApps Supported

      4.1 Closing Agreement

      4.2 Coin Flip Game

      4.3 Rock Paper Scissors Game

    5 Glow How-To

      5.1 How to Get Help about Glow

      5.2 How to Install Glow

        5.2.1 Easy Install for End-Users

        5.2.2 Easy Install for Developers

        5.2.3 Easy Install Using Docker

        5.2.4 Installing the Hard way

      5.3 How to Write or Use Custom DApps

      5.4 How do I run a .glow interaction from my programming language?

    6 Glow Explanation

      6.1 Intro

      6.2 Why Glow?

        6.2.1 DApps: The Very Hardest Programs To Write!

          6.2.1.1 Zero tolerance to bug

          6.2.1.2 All code is fragile

          6.2.1.3 Active Adversaries

          6.2.1.4 All code is public

          6.2.1.5 Usual reasoning techniques are lacking

        6.2.2 DApps: Creating Trust Between Participants

        6.2.3 DApps: What it is not

        6.2.4 DApps: A Narrow Domain Fit for a DSL

      6.3 How Glow?

        6.3.1 Building Trust

        6.3.2 Syntax: No Surprises

          6.3.2.1 Function Definition Syntax

          6.3.2.2 Integer Literals

          6.3.2.3 Scoping

      6.4 What Glow?

      6.5 When Glow?

    Index