Getting started

The Phaeton SDK is an open-source software development kit which enables developers to build scalable Blockchain applications in JavaScript.

Highlights

The most important highlights and features of the Phaeton SDK:

  • One blockchain per app: Blockchain applications each run on their own customized blockchain.

  • Programming language: JS logo (JavaScript) & TS logo (TypeScript)

  • Consensus algorithm: Phaeton DPoS & Phaeton BFT

  • Completely modular: Configure, exchange or extend any of the blockchain related logic in the application with Modules and Plugins.

  • Convenient development tools:

    • Phaeton Commander:

      • Bootstrap a complete default blockchain application with a single command.

      • Generate skeletons for modules, assets, and plugins.

      • Use the Phaeton SDK libraries directly in the terminal via the interactive Phaeton console.

      • Many other convenient CLI tools such as creating accounts, encrypting passphrases / messages and more.

    • Dashboard plugin: Communicate conveniently with your blockchain application during development via a dashboard.

    • SDK testing utilities: simplifies the testing of all components of a blockchain application by providing dedicated fixtures, mocks, and utility functions.

  • Interoperable (coming soon, see roadmap): Make your app interoperable with other blockchain applications, by registering it as a sidechain on the Phaeton Mainchain.

Quickstart

The quickest way to bootstrap a blockchain application with the Phaeton SDK is explained here.

Supported Operating Systems

The Phaeton SDK will run on both the Ubuntu and MacOS operating systems listed below:

  • Ubuntu

  • MacOS

  • 18.04 (LTS)

  • 20.04 (LTS)

  • 10.13 (High Sierra)

  • 10.14 (Mojave)

  • 10.15 (Catalina)

  • 11.04 (Big Sur)

Please note that the SDK does not come with any official support for Windows.

Dependencies

The following dependencies need to be installed to run the Phaeton SDK:

Dependencies Version

Git

v2 (latest)

Node.js

v12 (latest)

Phaeton Commander

v5.1.5 (latest)

Node.js

If you are using NVM, ensure you install the correct version as shown below:

nvm install v12.22.3

Phaeton Commander

It is recommended to install Phaeton Commander globally with NPM to facilitate the convenient usage of the Phaeton Commander CLI.

npm install --global phaeton-commander

Project setup

mkdir new_app
cd new_app
new_app/
phaeton init

The user is asked for the application name, description, author, and license after running phaeton init.

Next, all the required files are created by Phaeton Commander.

Using template "phaeton-ts"
Initializing git repository
Updating .phaetonrc.json file
Creating project structure
? Application name new_app
? Application description My blockchain application
? Author mona
? License ISC

Start the application

Execute the following command to start the blockchain application.

new_app/
./bin/run start

To verify that the application has started, check the log messages in the terminal. If the start was successful, the application will enable forging for all genesis delegates and will begin adding new blocks to the blockchain every 10 seconds.

The application CLI offers various commands to conveniently manage your blockchain application.

To see an overview of all the available CLI commands, execute the following commands in the root folder of the application:

new_app/
./bin/run --help

Using the application CLI globally

To use the application commands globally, create an alias in the .bashrc file.

~/.bashrc/
alias new_app="$HOME/new_app/bin/run" (1)
1 Adjust to the path where your new_app is located.

After updating the .bashrc file, make it directly available in the terminal by executing the following command:

. ~/.bashrc

Now it is possible to conveniently run the application CLI commands from anywhere by referring to the alias.

new_app --help
Next steps

After completing these steps, the default blockchain application of the Phaeton SDK will now be running.

It is now possible to customize your application by registering new Modules and Plugins, and also adjusting the genesis block and config to suit your specific use case.

More information can be found in the following guides: