started app5
This commit is contained in:
parent
f405bdf761
commit
12a180786a
|
@ -29,7 +29,7 @@ NOTE: This documentation is a work-in-progress!
|
|||
information
|
||||
- [auth.AnteHandler](core/app3.md#antehandler) - The `AnteHandler`
|
||||
verifies `StdTx`, manages accounts, and deducts fees
|
||||
- [bank.CoinKeeper](core/app3.md#coin-keeper) - CoinKeeper allows for coin
|
||||
- [bank.CoinKeeper](core/app3.md#coinkeeper) - CoinKeeper allows for coin
|
||||
transfers on an underlying AccountMapper
|
||||
- [App4 - ABCI](core/app4.md)
|
||||
- [ABCI](core/app4.md#abci) - ABCI is the interface between Tendermint
|
||||
|
@ -45,7 +45,9 @@ NOTE: This documentation is a work-in-progress!
|
|||
- [App5 - Basecoin](core/app5.md) -
|
||||
- [Directory Structure](core/app5.md#directory-structure) - Keep your
|
||||
application code organized
|
||||
- [Clients](core/app5.md#clients) - Hook up your app to standard CLI and REST
|
||||
- [Tendermint Node](core/app5.md#tendermint-node) - Run a full
|
||||
blockchain node with your app
|
||||
- [Clients](core/app5.md#clients) - Hook up your app to CLI and REST
|
||||
interfaces for clients to use!
|
||||
|
||||
- [Modules](modules)
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
# App5 - Basecoin
|
||||
|
||||
As we've seen, the SDK provides a flexible yet comprehensive framework for building state
|
||||
machines and defining their transitions, including authenticating transactions,
|
||||
executing messages, controlling access to stores, and updating the validator set.
|
||||
|
||||
Until now, we have focused on building only isolated ABCI applications to
|
||||
demonstrate and explain the various features and flexibilities of the SDK.
|
||||
Here, we'll connect our ABCI application to Tendermint so we can run a full
|
||||
blockchain node, and introduce command line and HTTP interfaces for interacting with it.
|
||||
|
||||
But first, let's talk about how source code should be laid out.
|
||||
|
||||
## Directory Structure
|
||||
|
||||
TODO
|
||||
|
||||
## Tendermint Node
|
||||
|
||||
Since the Cosmos-SDK is written in Go, Cosmos-SDK applications can be compiled
|
||||
with Tendermint into a single binary. Of course, like any ABCI application, they
|
||||
can also run as separate processes that communicate with Tendermint via socket.
|
||||
|
||||
For more details on what's involved in starting a Tendermint full node, see the
|
||||
[NewNode](https://godoc.org/github.com/tendermint/tendermint/node#NewNode)
|
||||
function in `github.com/tendermint/tendermint/node`.
|
||||
|
||||
The `server` package in the Cosmos-SDK simplifies
|
||||
connecting an application with a Tendermint node.
|
||||
For instance, the following `main.go` file will give us a complete full node
|
||||
using the Basecoin application we built:
|
||||
|
||||
```go
|
||||
//TODO imports
|
||||
|
||||
func main() {
|
||||
cdc := app.MakeCodec()
|
||||
ctx := server.NewDefaultContext()
|
||||
|
||||
rootCmd := &cobra.Command{
|
||||
Use: "basecoind",
|
||||
Short: "Basecoin Daemon (server)",
|
||||
PersistentPreRunE: server.PersistentPreRunEFn(ctx),
|
||||
}
|
||||
|
||||
server.AddCommands(ctx, cdc, rootCmd, server.DefaultAppInit,
|
||||
server.ConstructAppCreator(newApp, "basecoin"))
|
||||
|
||||
// prepare and add flags
|
||||
rootDir := os.ExpandEnv("$HOME/.basecoind")
|
||||
executor := cli.PrepareBaseCmd(rootCmd, "BC", rootDir)
|
||||
executor.Execute()
|
||||
}
|
||||
|
||||
func newApp(logger log.Logger, db dbm.DB) abci.Application {
|
||||
return app.NewBasecoinApp(logger, db)
|
||||
}
|
||||
```
|
||||
|
||||
Note we utilize the popular [cobra library](https://github.com/spf13/cobra)
|
||||
for the CLI, in concert with the [viper library](https://github.com/spf13/library)
|
||||
for managing configuration. See our [cli library](https://github.com/tendermint/tmlibs/blob/master/cli/setup.go)
|
||||
for more details.
|
||||
|
||||
TODO: compile and run the binary
|
||||
|
||||
Options for running the `basecoind` binary are effectively the same as for `tendermint`.
|
||||
See [Using Tendermint](TODO) for more details.
|
||||
|
||||
## Clients
|
||||
|
||||
TODO
|
Loading…
Reference in New Issue