# Getting Started

## Hello, World!

TinyChain has one of the simplest imaginable "Hello, World!" programs— just open this link in your browser: [http://demo.tinychain.net/state/scalar/value/string?key="Hello, World!"](http://demo.tinychain.net/state/scalar/value/string?key=%22Hello,%20World!%22)

Some things to notice: TinyChain has four types of `Op`: `GET`, `PUT`, `POST`, and `DELETE`. These correspond to [HTTP methods ](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods). Every TinyChain `Op` is accessible over HTTP using the corresponding request method.

TinyChain supports object-oriented programming (OOP), including class inheritance. You can see the superclasses of a TinyChain `String` in its classpath: `/state/scalar/string`. So, `String` is a subclass of `Value`, which is a subclass of `Scalar`, which is a subclass of `State`, which is the parent of every TinyChain class. Any TinyChain `Value` can be constructed by `GET`ting its class.

## Run a TinyChain host

The TinyChain host at [demo.tinychain.net](http://demo.tinychain.net) is provided for convenience, but it may be slow due to the volume of requests it receives, and it may not always have the latest updates and bugfixes. For the best experience, you should run your own host. This is easy to do with Docker:

```bash
# the "docker build" command will output an image ID like "c0c251e99ef1"
docker build https://github.com/haydnv/tinychain.git

# paste the image ID into this command
docker run -it -p 8702:8702/tcp IMAGE_ID ./tinychain --data_dir=/tmp/data
                    
```

Check that it's working by running your own "Hello, World!" program: [http://127.0.0.1:8702/state/scalar/value/string?key="Hello, World!"](http://127.0.0.1:8702/state/scalar/value/string?key=%22Hello,%20World!%22)
