65 lines
1.7 KiB
Markdown
65 lines
1.7 KiB
Markdown
# `gmplugin_hello`
|
|
|
|
This is a minimal Gajumaru plugin. This is meant to be a minimal working
|
|
template on which development can occur immediately.
|
|
|
|
# Quickstart
|
|
|
|
## System Prereqs
|
|
|
|
## After clone
|
|
|
|
```
|
|
make init
|
|
make build-gm-with-my-plugin
|
|
```
|
|
|
|
## Running
|
|
|
|
```
|
|
make fresh-console
|
|
```
|
|
|
|
```
|
|
(gajumaru@localhost)1> gmplugin_hello_app:hello().
|
|
"hello, world"
|
|
(gajumaru@localhost)2> gmplugin_hello_app:network_id().
|
|
<<"localnet">>
|
|
(gajumaru@localhost)3> gmplugin_hello_app:height().
|
|
{ok,1}
|
|
```
|
|
|
|
|
|
# Questions
|
|
|
|
|
|
## What is a Gajumaru?
|
|
|
|
In the context of this document, "Gajumaru" with no qualification means the
|
|
Erlang software that runs a gajumaru node.
|
|
|
|
## What is a Gajumaru plugin?
|
|
|
|
A Gajumaru plugin is an Erlang application that runs in the same Erlang process
|
|
context as `gajumaru`, meaning it can natively call `aeu_db:whatever`.
|
|
|
|
## What is the point of a Gajumaru plugin?
|
|
|
|
Let's say you're developing a point-of-sale app for your daughter's lemonade
|
|
stand. Your application needs to interact with Gajumaru in some way. You're
|
|
going to have your LemonPay app talk to your own local gajumaru node that
|
|
you're running on your old laptop on `192.168.2.1`.
|
|
|
|
The idea here is that the portion of your LemonPay business logic that needs to
|
|
interact intimately with data on the chain should run in the relatively
|
|
frictionless Erlang-to-Erlang context of the gajumaru application. Then you
|
|
expose a service interface on port `9876` that is tailored specifically for
|
|
LemonPay. LemonPay talks to `192.168.2.1:9876`.
|
|
|
|
## How does anything do anything?
|
|
|
|
The important thing to understand is that **gajumaru starts your plugin**.
|
|
|
|
Therefore, when you're developing and iterating on your plugin, you need to
|
|
have a way to start gajumaru, start your plugin, mess around with it.
|