2017-02-03 18:17:11 -08:00
|
|
|
# Basecoin Basics
|
|
|
|
|
2017-02-12 22:57:21 -08:00
|
|
|
Here we explain how to get started with a simple Basecoin blockchain,
|
|
|
|
and how to send transactions between accounts using the `basecoin` tool.
|
2017-02-03 18:17:11 -08:00
|
|
|
|
|
|
|
## Install
|
|
|
|
|
2017-03-13 14:23:05 -07:00
|
|
|
Installing basecoin is simple:
|
2017-02-03 18:17:11 -08:00
|
|
|
|
|
|
|
```
|
2017-03-13 14:23:05 -07:00
|
|
|
go get -u github.com/tendermint/basecoin/cmd/basecoin
|
2017-02-03 18:17:11 -08:00
|
|
|
```
|
|
|
|
|
2017-03-13 14:23:05 -07:00
|
|
|
If you have trouble, see the [installation guide](install.md).
|
2017-02-03 18:17:11 -08:00
|
|
|
|
2017-03-13 14:23:05 -07:00
|
|
|
## Initialization
|
2017-02-03 18:17:11 -08:00
|
|
|
|
2017-03-13 14:23:05 -07:00
|
|
|
To initialize a new Basecoin blockchain, run:
|
2017-02-03 18:17:11 -08:00
|
|
|
|
|
|
|
```
|
2017-03-13 14:23:05 -07:00
|
|
|
basecoin init
|
2017-02-03 18:17:11 -08:00
|
|
|
```
|
|
|
|
|
2017-03-13 14:23:05 -07:00
|
|
|
This will create the necessary files for a Basecoin blockchain with one validator and one account in `~/.basecoin`.
|
|
|
|
For more options on setup, see the [guide to using the Basecoin tool](/docs/guide/basecoin-tool.md).
|
2017-02-03 18:17:11 -08:00
|
|
|
|
|
|
|
## Start
|
|
|
|
|
|
|
|
Now we can start basecoin:
|
|
|
|
|
|
|
|
```
|
|
|
|
basecoin start
|
|
|
|
```
|
|
|
|
|
2017-03-13 14:23:05 -07:00
|
|
|
You should see blocks start streaming in!
|
2017-02-03 18:17:11 -08:00
|
|
|
|
|
|
|
## Send transactions
|
|
|
|
|
|
|
|
Now we are ready to send some transactions.
|
|
|
|
If you take a look at the `genesis.json` file, you will see one account listed there.
|
2017-02-07 13:10:17 -08:00
|
|
|
This account corresponds to the private key in `key.json`.
|
|
|
|
We also included the private key for another account, in `key2.json`.
|
2017-02-03 18:17:11 -08:00
|
|
|
|
|
|
|
Let's check the balance of these two accounts:
|
|
|
|
|
|
|
|
```
|
2017-02-07 13:10:17 -08:00
|
|
|
basecoin account 0x1B1BE55F969F54064628A63B9559E7C21C925165
|
|
|
|
basecoin account 0x1DA7C74F9C219229FD54CC9F7386D5A3839F0090
|
2017-02-03 18:17:11 -08:00
|
|
|
```
|
|
|
|
|
|
|
|
The first account is flush with cash, while the second account doesn't exist.
|
|
|
|
Let's send funds from the first account to the second:
|
|
|
|
|
|
|
|
```
|
2017-02-13 21:13:04 -08:00
|
|
|
basecoin tx send --to 0x1DA7C74F9C219229FD54CC9F7386D5A3839F0090 --amount 10mycoin
|
2017-02-03 18:17:11 -08:00
|
|
|
```
|
|
|
|
|
2017-03-13 14:23:05 -07:00
|
|
|
By default, the CLI looks for a `key.json` to sign the transaction with.
|
2017-02-03 18:17:11 -08:00
|
|
|
To specify a different key, we can use the `--from` flag.
|
|
|
|
|
2017-02-13 21:13:04 -08:00
|
|
|
Now if we check the second account, it should have `10` 'mycoin' coins!
|
2017-02-03 18:17:11 -08:00
|
|
|
|
|
|
|
```
|
2017-02-07 13:10:17 -08:00
|
|
|
basecoin account 0x1DA7C74F9C219229FD54CC9F7386D5A3839F0090
|
2017-02-03 18:17:11 -08:00
|
|
|
```
|
|
|
|
|
|
|
|
We can send some of these coins back like so:
|
|
|
|
|
|
|
|
```
|
2017-02-13 21:13:04 -08:00
|
|
|
basecoin tx send --to 0x1B1BE55F969F54064628A63B9559E7C21C925165 --from key2.json --amount 5mycoin
|
2017-02-03 18:17:11 -08:00
|
|
|
```
|
|
|
|
|
|
|
|
Note how we use the `--from` flag to select a different account to send from.
|
|
|
|
|
|
|
|
If we try to send too much, we'll get an error:
|
|
|
|
|
|
|
|
```
|
2017-02-13 21:13:04 -08:00
|
|
|
basecoin tx send --to 0x1B1BE55F969F54064628A63B9559E7C21C925165 --from key2.json --amount 100mycoin
|
2017-02-03 18:17:11 -08:00
|
|
|
```
|
|
|
|
|
2017-02-07 13:10:17 -08:00
|
|
|
See `basecoin tx send --help` for additional details.
|
2017-02-03 18:17:11 -08:00
|
|
|
|
|
|
|
## Plugins
|
|
|
|
|
2017-02-07 13:10:17 -08:00
|
|
|
The `tx send` command creates and broadcasts a transaction of type `SendTx`,
|
2017-02-03 18:17:11 -08:00
|
|
|
which is only useful for moving tokens around.
|
2017-02-08 04:18:26 -08:00
|
|
|
Fortunately, Basecoin supports another transaction type, the `AppTx`,
|
2017-02-03 18:17:11 -08:00
|
|
|
which can trigger code registered via a plugin system.
|
|
|
|
|
2017-02-08 04:18:26 -08:00
|
|
|
In the [next tutorial](example-plugin.md),
|
|
|
|
we demonstrate how to implement a plugin
|
2017-02-07 13:10:17 -08:00
|
|
|
and extend the CLI to support new transaction types!
|
|
|
|
But first, you may want to learn a bit more about [Basecoin's design](basecoin-design.md)
|