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.
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.
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
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;
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
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
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™ 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
OpenAPI/Swagger specs, JSON schema files, protocol definition files.
Other assets to go along with our repository.
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.
Application and binary files required.
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.
Configuration file templates or default configs.
Put our confd
or consule-template
template files here.
IaaS, PaaS, system and container orchestration deployment configurations and templates (docker-compose, kubernetes/helm, mesos, terraform, bosh).
Design and user documents (in addition to our godoc generated documentation).
Examples for our applications and/or public libraries.
Git hooks.
System init (systemd, upstart, sysv) and process manager/supervisor (runit, supervisord) configs.
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
).
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 :-)
Blockfreight™ pluggable architechture support for third-party plugins.
Scripts to perform various build, install, analysis, etc operations.
These scripts keep the root level Makefile small and simple.
Additional external test apps and test data.
External helper tools, forked code and other 3rd party utilities (e.g., Swagger UI).
Supporting tools for this project. Note that these tools can import code from the /pkg
and /lib
directories.
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 specific components: static web assets, server side templates and SPAs.
Feedback to this project via Github Issues or email [email protected]