blockfreight / Go Bftx
Programming Languages
Labels
Projects that are alternatives of or similar to Go Bftx
Blockfreight™ the blockchain of global freight
Package: go-blockfreight - Blockfreight™ v0.3.0
Description: go-blockfreight is the reference full node implementation and cli-tool for Blockfreight™ the blockchain of global freight.
A network for the free trade of physical goods so transformative it is part of the most advanced project in global shipping today.
go-blockfreight is a powerful, reliable, efficient and handy Go app for communicating with the Blockfreight™ blockchain.
Requirements:
Golang runtime and build environment
Go version 1.8+ or above.
Quick command line test:
$ go version
Validate you have Go installed and have defined $GOPATH/bin
in your $PATH
. For full instructions see golang.org site.
Dependencie Manager
Golang/dep version 0.1.0+ or above. Golang/dep - https://github.com/golang/dep
To manage all dependencies for go-bftx, it is necessary to have Golang/dep.
$ dep version
Installation
To install go-bftx, (experimental) one-line install, may not work yet!:
wget https://raw.githubusercontent.com/blockfreight/go-bftx/master/cmd/bftx/install_bftx.sh -v -O install_bftx.sh; chmod +x install_bftx.sh; ./install_bftx.sh;
Step-by-step Installation
To install go-bftx, you can do it through:
$ go get github.com/blockfreight/go-bftx
Then, you need to update all dependencies by Golang/dep. First go to go-bftx and update them:
$ cd $GOPATH/src/github.com/blockfreight/go-bftx
$ dep ensure
BFT-Node
Install BFT-Node through
$ cd $GOPATH/src/github.com/blockfreight/go-bftx/cmd/bftx
$ go install
Then, you can execute bftx
to check the options or extra information.
$ bftx
Use
To start using go-bftx, you will have to start a node:
$ bftx node start
Then the Blockfreight API will start listening to transaction on localhost:8080/bftx-api
. You can create, sign, broadcast and query transactions from the API.
After that step, you can read the menu of bftx.
If you’d like to leave feedback, please open an issue on GitHub.
Blockfreight™ Project Layout
Blockfreight™ application code follows this convention:
├──.gitignore
├──.travis.yml
├──glide.lock
├──glide.yaml
├──LICENSE
├──Makefile
├──README.md
├──api
├──assets
├──bin
├──build
│ ├──ci
│ └──package
│ └──version
├──cmd
│ ├──bftnode
│ └──bftx
├──config
├──deploy
├──docs
├──examples
├──githooks
├──init
├──lib
│ ├──app
│ │ ├──bf_tx
│ │ ├──bft
│ │ └──validator
│ └──pkg
│ ├──common
│ ├──crytpo
│ └──leveldb
├──pkg
│ └──blockfreight
├──plugins
├──scripts
├──test
├──third_party
├──tools
├──vendor
│ ├──github.com
│ ├──golang.org
│ └──google.golang.org
└──web
├──app
├──static
└──template
Blockfreight™ Application Code
/api
OpenAPI/Swagger specs, JSON schema files, protocol definition files.
/assets
Other assets to go along with our repository.
/build
Packaging and Continous Integration.
Put our cloud (AMI), container (Docker), OS (deb, rpm, pkg) package configurations and scripts in the /build/package
directory.
Put our CI (travis, circle, drone) configurations and scripts in the /build/ci
directory.
/bin
Application and binary files required.
/cmd
Main application code.
The directory name for each application matches the name of the executable we want to have (e.g., /cmd/bftx
).
Don't put a lot of code in the application directory unless we think that code can be imported and used in other projects. If this is the case then the code should live in the /pkg
directory.
It's common to have a small main function that imports and invokes the code from the /lib
and /pkg
directories.
/config
Configuration file templates or default configs.
Put our confd
or consule-template
template files here.
/deploy
IaaS, PaaS, system and container orchestration deployment configurations and templates (docker-compose, kubernetes/helm, mesos, terraform, bosh).
/docs
Design and user documents (in addition to our godoc generated documentation).
/examples
Examples for our applications and/or public libraries.
/githooks
Git hooks.
/init
System init (systemd, upstart, sysv) and process manager/supervisor (runit, supervisord) configs.
/lib
Private application and library code.
Put our actual application code in the /lib/app
directory (e.g., /lib/app/bftx
) and the code shared by those apps in the /lib/pkg
directory (e.g., /lib/pkg/bftxnode
).
/pkg
Library code that's safe to use by third party applications (e.g., /pkg/bftpubliclib
).
Other projects will import these libraries expecting them to work, so think twice before we put something here :-)
/plugins
Blockfreight™ pluggable architechture support for third-party plugins.
/scripts
Scripts to perform various build, install, analysis, etc operations.
These scripts keep the root level Makefile small and simple.
/test
Additional external test apps and test data.
/third_party
External helper tools, forked code and other 3rd party utilities (e.g., Swagger UI).
/tools
Supporting tools for this project. Note that these tools can import code from the /pkg
and /lib
directories.
/vendor
Application dependencies (managed manually or by our favorite dependency management tool).
Don't commit our application dependencies if we are building a library.
Web Application Directories
/web
Web application specific components: static web assets, server side templates and SPAs.
Notes
Feedback to this project via Github Issues or email [email protected]