æternity Documentation Hub
Aeternity.comAeternity GitHub
  • æternity Hub
  • Developer Documentation
  • Aeternity Expansions
    • PULL_REQUEST_TEMPLATE
    • AEX X
    • AEXS
      • AEX 1
      • aex-10
      • AEX 11 Fungible Token Standard
      • AEX-130: æpps Metadata Format Specification
      • aex-141
      • AEX 2
      • AEX-3
      • AEX-4
      • AEX 5
      • AEX 7
      • AEX 8
      • aex-9
    • .github
      • ISSUE_TEMPLATE
        • aexpansion
  • AeMdw - Aeternity Middleware
    • Changelog
    • docs
      • AE MDW Architecture
      • AeMdw Hyperhain Setup Documentation
      • AeMdw Docker Setup Documentation
  • Æternity <> Ethereum Bridge
    • Changelog
  • aepp-cli-js
    • CHANGELOG
    • Contributor guide
    • reference
    • user-guide
    • .github
      • ISSUE_TEMPLATE
  • Hyperchain Bridge
    • Changelog
  • æternity's JavaScript SDK
    • Installation
      • Changelog
      • Compatibility Table
      • Quick Start
      • Transaction options
      • Development
        • Releases
      • guides
        • The range of possible address length
        • AENS (æternity naming system)
        • Batch Transactions
        • How to build a wallet
        • Connect an æpp to a wallet
        • Contract Events
        • Contracts
        • Error Handling
        • JWT usage
        • Ledger Hardware Wallet
        • Low vs High level API
        • Aeternity snap for MetaMask
        • Oracles
        • PayingForTx (Meta-Transactions)
        • Typed data hashing and signing
        • Usage with TypeScript
        • migration
          • Migration to 10.0.0
          • Migration to 11.0.0
          • Migration to 12.0.0
          • Migration to 13.0.0
          • Migration to 14.0.0
          • Migration to 7.0.0
          • Migration to 9.0.0
      • tutorials
        • vuejs
          • Vue.js HelloWorld
    • Examples
      • How to connect wallet to æpp using æternity's JS SDK
        • Sample æpp for contracts
        • iframe-based wallet
        • WebExtension-based wallet
    • .github
      • ISSUE_TEMPLATE
        • bug_report
        • feature_request
  • AEproject
    • Changelog
    • docs
      • Quick Start
      • AEproject Library
      • Migration from 3.x.x to 4.x.x
      • Migration from 4.x.x to 5.x.x
      • Upcoming Version Support
      • cli
        • Local Environment
        • Project Initialization
        • Unit Testing
    • .github
      • ISSUE_TEMPLATE
        • bug_report
        • feature_request
  • aerepl
    • Changelog
  • aescan
    • Changelog
    • Contributor Covenant Code of Conduct
    • Aescan Contributing Guide
    • LICENSE
    • .github
      • pull_request_template
      • ISSUE_TEMPLATE
        • bug_report
        • feature_request
    • docs
      • BRANCHING_STRATEGY
  • Sophia Support for Visual Studio Code
    • Changelog
  • aesophia
    • Changelog
    • Contributing to Sophia
    • docs
      • aeso_aci
      • aeso_compiler
      • Introduction
      • sophia
      • Contract examples
      • Features
      • Standard library
      • Syntax
  • aesophia_cli
    • Changelog
  • aesophia_http
    • Changelog
  • Æ Studio - Formerly known as 🔥 Fire Editor ! Aeternity's easy to use editor for writing smart contr
    • ideas
  • aeternity
    • .github
      • The Æternity Code of Conduct
      • Contributing to the Aeternity node
      • ISSUE_TEMPLATE
        • bug_report
        • feature_request
    • Welcome to Aeternity node documentation
      • Summary
      • Node API
      • Introduction
      • Build from source
      • Configuration
      • CUDA Miner
      • debian_ubuntu_packaging
      • Docker
      • Fork resistance in Aeternity nodes
      • Garbage Collection
      • Hacking the Aeternity Codebase
      • Hardware Requirements
      • hyperchains
      • Installation
      • Network Monitoring
      • Operation
      • Rebar Quick Guide
      • Stratum
      • Testing
      • Update
      • release-notes
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • About this release
        • next-ceres
          • GH-3706-micro_block_gas_limit_used_gas
          • GH-4009-allow_contract_call_by_name
          • GH-4056-add_raw_data_pointers_to_AENS
          • GH-4080-wildcard_aens_delegation_signature
          • GH3417-tamper_protection_on_ga_meta_tx
          • aega_only_allow_attach_for_fresh_accounts
          • aens_auction_adjustments
          • aens_preclaim_optional
          • deprecate_swagger
          • fate_extensions
        • next
          • GH-3088-db_direct_access-as-default
          • GH-4087_http_endpoint_info_inner_txs
          • GH4157-control-mempool-sync-start
    • Emergency patching of OTP modules
    • rosetta
    • apps
      • aehttp
        • priv
          • rosetta_README
    • data
      • aecore
        • Token migration contract
  • Hyperchains whitepaper
    • Hyperchains: Bridging Security and Scalability Through Periodic Synchronization
    • LICENSE
    • Periodically-Syncing-HyperChains
    • generations
    • Glossary
    • Hyperchain Properties
    • staking
  • æternity protocol
    • æternity naming system
    • Gossip
    • Stratum
    • SYNC
    • Serialization formats
    • State Channels
      • Off-chain
      • On-chain
      • Authentication
      • Channel off-chain state
    • æternity consensus protocol
      • Bitcoin-NG for æternity
      • Coinbase at height
      • consensus
      • Coins locking
    • Smart Contracts
      • The æternity Ethereum virtual machine (AEVM)
      • contract_state_tree
      • Contract Transactions
      • Virtual machines on the æternity blockchain
      • contracts
      • Events
      • fate
      • The Solidity Language
      • sophia
      • sophia_stdlib
    • Generalized accounts
      • Generalized accounts - explained
      • generalized_accounts
    • Oracles
      • Oracle life cycle examples
      • Oracle state tree
      • Oracle transactions
      • oracles
    • Sync
      • P2P messages
      • Mempool/TX-pool synchronization
    • node
      • æternity node API
        • Account management - intended usage
        • Encoding scheme for API identifiers and byte arrays
        • State channel WebSocket API
        • Channels - intended usage
        • Contracts - intended usage
        • Mining - intended usage
        • Naming System - intended usage
        • Oracles - intended usage
        • Spending coins - intended usage
        • examples
          • æternity node channel WebSocket API examples
            • json-rpc
              • sc_ws_basic_open_close
              • sc_ws_basic_open_close_server
              • sc_ws_broken_open_params
              • sc_ws_close_mutual
              • sc_ws_close_solo
              • sc_ws_leave_reconnect
              • sc_ws_leave_reestablish
              • sc_ws_leave_reestablish_responder_stays
              • sc_ws_leave_reestablish_wrong_fsm_id
              • sc_ws_min_depth_is_modifiable
              • sc_ws_min_depth_not_reached_timeout
              • sc_ws_opening_ping_pong
              • sc_ws_reconnect_early
              • sc_ws_slash
              • sc_ws_snapshot_solo
              • sc_ws_timeout_open
              • sc_ws_update_with_meta
              • abort_updates
                • sc_ws_abort_deposit
                • sc_ws_abort_offchain_update
                • sc_ws_abort_settle
                • sc_ws_abort_shutdown
                • sc_ws_abort_slash
                • sc_ws_abort_snapshot_solo
                • sc_ws_abort_withdraw
                • sc_ws_can_not_abort_while_open
              • assume_min_depth
                • sc_ws_basic_open_close
              • both_sign
                • init_per_group
                • conflicts
                  • sc_ws_conflict_deposit_and_offchain_update
                  • sc_ws_conflict_two_deposits
                  • sc_ws_conflict_two_offchain_updates
                  • sc_ws_conflict_two_withdrawals
                  • sc_ws_conflict_withdrawal_and_deposit
                  • sc_ws_conflict_withdrawal_and_offchain_update
              • changeable_fee
                • sc_ws_optional_params_close_solo
                • sc_ws_optional_params_create
                • sc_ws_optional_params_deposit
                • sc_ws_optional_params_settle
                • sc_ws_optional_params_slash
                • sc_ws_optional_params_snapshot
                • sc_ws_optional_params_withdrawal
                • sc_ws_set_fee_close_mutual
                • sc_ws_set_fee_close_solo
                • sc_ws_set_fee_create
                • sc_ws_set_fee_deposit
                • sc_ws_set_fee_settle
                • sc_ws_set_fee_slash
                • sc_ws_set_fee_snapshot
                • sc_ws_set_fee_withdrawal
              • changeable_fee_higher_than_gas_price
                • sc_ws_optional_params_close_solo
                • sc_ws_optional_params_create
                • sc_ws_optional_params_deposit
                • sc_ws_optional_params_settle
                • sc_ws_optional_params_slash
                • sc_ws_optional_params_snapshot
                • sc_ws_optional_params_withdrawal
              • changeable_fee_lower_than_gas_price
                • sc_ws_optional_params_close_solo
                • sc_ws_optional_params_create
                • sc_ws_optional_params_deposit
                • sc_ws_optional_params_settle
                • sc_ws_optional_params_slash
                • sc_ws_optional_params_snapshot
                • sc_ws_optional_params_withdrawal
              • changeable_gas_price
                • sc_ws_optional_params_close_solo
                • sc_ws_optional_params_create
                • sc_ws_optional_params_deposit
                • sc_ws_optional_params_settle
                • sc_ws_optional_params_slash
                • sc_ws_optional_params_snapshot
                • sc_ws_optional_params_withdrawal
              • changeable_nonce
                • sc_ws_optional_params_fail_close_mutual
                • sc_ws_optional_params_fail_close_solo
                • sc_ws_optional_params_fail_create
                • sc_ws_optional_params_fail_deposit
                • sc_ws_optional_params_fail_force_progress
                • sc_ws_optional_params_fail_settle
                • sc_ws_optional_params_fail_slash
                • sc_ws_optional_params_fail_snapshot
                • sc_ws_optional_params_fail_withdrawal
              • continuous
                • init_per_group
                • sc_ws_deposit
                • sc_ws_failed_update
                • sc_ws_generic_messages
                • sc_ws_ping_pong
                • sc_ws_update_conflict
                • sc_ws_withdraw
              • contracts
                • init_per_group
                • sc_ws_basic_contracts
                • sc_ws_environment_contract
                • sc_ws_nameservice_contract
                • sc_ws_oracle_contract
                • sc_ws_remote_call_contract
                • sc_ws_remote_call_contract_refering_onchain_data
                • sc_ws_wrong_call_data
              • force_progress
                • sc_ws_force_progress_based_on_offchain_state
                • sc_ws_force_progress_based_on_onchain_state
              • only_one_signs
                • init_per_group
                • sc_ws_conflict_on_new_offchain
                • sc_ws_conflict_snapshot_and_offchain_update
                • conflicts
                  • sc_ws_conflict_deposit_and_offchain_update
                  • sc_ws_conflict_two_deposits
                  • sc_ws_conflict_two_offchain_updates
                  • sc_ws_conflict_two_withdrawals
                  • sc_ws_conflict_withdrawal_and_deposit
                  • sc_ws_conflict_withdrawal_and_offchain_update
              • reconnect
                • sc_ws_basic_client_reconnect_i
                • sc_ws_basic_client_reconnect_i_w_reestablish
                • sc_ws_basic_client_reconnect_r
              • with_meta
                • init_per_group
                • sc_ws_deposit
                • sc_ws_remote_call_contract
                • sc_ws_withdraw
              • generalized_accounts
                • both
                  • sc_ws_basic_open_close
                • initiator
                  • sc_ws_basic_open_close
                • responder
                  • sc_ws_basic_open_close
  • Superhero Wallet
    • Changelog
    • Contributing & Guidelines
    • docs
      • Deep link URL Schema
    • .github
      • ISSUE_TEMPLATE
        • bug_report
        • feature_request
  • aerepl-web-bridge
    • AereplApi
    • aerepl_components
Powered by GitBook
On this page
  • Dependencies
  • Install Visual Studio 2019
  • Quick install of MSYS2, Erlang/OTP, Java
  • Custom install of dependencies
  • Install MSYS2 (optional)
  • Erlang/OTP 20.3 (optional)
  • Java Development Kit 11+ (not required)
  • Setup
  • First time installation
  • Additional environment config (optional)
  • Building

Was this helpful?

Export as PDF
  1. aeternity
  2. Welcome to Aeternity node documentation

Introduction

PreviousNode APINextBuild from source

Last updated 22 days ago

Was this helpful?

This document describes how to build an Aeternity node from source on Windows using.

NOTES:

  • Only 64-bit versions of Windows 10 and Windows Server 2016 or later are supported and tested.

  • Make sure you pull with git config --global autocrlf input as windows scripts might not work

  • Administrative privileges are recommended.

Dependencies

You will need (minimal required):

  • Visual Studio CLI Build tools (Community Edition 2017+)

  • Msys2

  • Erlang/OTP (20.1 or 20.3 is officially supported)

  • Java/OpenJDK (11.0.2+)

Note: You might consider easier to use package manager to install the requirements

First you will need to install Visual Studio in its default installation path, else the next steps will fail.

To install only the required components of Visual Studio 2019 Community Edition using run:

> choco install -y visualstudio2019-workload-vctools --params "--add Microsoft.VisualStudio.Component.VC.CLI.Support --locale en-US"

or manually

Make sure to include the following components (use the VCTools workload as base):

  • Command-line compiler support

  • Windows 10 SDK

Note: Visual Studio 2017 Community Edition or later is supported

Quick install of MSYS2, Erlang/OTP, Java

The easiest way to setup the environment is to run scripts/windows/msys2_prepare.bat.

It will install any missing tools to their default locations, except Visual Studio.

Custom install of dependencies

Else you can use the provided helper script scripts\windows\install_msys2.bat.

It will download and install all the dependencies and will dump the ENV vars used by the build scripts. You may optionally provide installation path as an argument.

The default <install_path> could be specified in WIN_MSYS2_ROOT env var or fallback to "C:\tools\msys64"

> scripts\windows\install_msys2.bat C:\tools\msys64
choco install -y msys2

or manually

  • Execute installer and follow instructions

  • Keep note of the install folder

Note: You will need to set properly the var (e.g.):

> SET "WIN_MSYS2_ROOT=C:\tools\msys64"

Note: Odd quoting is not a typo

Else you can use scripts\windows\install_erlang.bat.

It will download and install Erlang/OTP and will dump the ENV vars used by the build scripts

> scripts\windows\install_erlang.bat 20.3 C:\tools\erl9.3
...
SET "WIN_OTP_PATH=C:\tools\erl9.3"
SET OTP_VERSION=20.3
SET ERTS_VERSION=9.3
choco install -y erlang --version=20.3

or manually

  • Execute installer and follow instructions

  • Keep note of install folder

Note: You will need to set properly the vars (e.g.):

SET "WIN_OTP_PATH=C:\Program Files\erl9.3"
SET OTP_VERSION=20.3
SET ERTS_VERSION=9.3

JDK in no longer essential for building Aeternity and will not be installed by the preparation script.

Setup

This script uses the following environment variables and default values:

SET "WIN_MSYS2_ROOT=C:\tools\msys64"
SET "WIN_OTP_PATH=C:\tools\erl21.3"
SET ERTS_VERSION=10.3
SET OTP_VERSION=21.3

Note: Odd quoting is used to escape any spaces in the values. Make sure paths do not include quotes and trailing slashes.

If your local setup differs, you need to set the proper values yourself before running the preparation script.

It is recommend to persist these vars into the user registry, so you don't need to set it every session, e.g.:

SETX WIN_MSYS2_ROOT C:\tools\msys64
SETX WIN_OTP_PATH C:\Program Files\erl9.3

Note: In contrast of SET, do not put quotes in SETX commands, as they will end up in the values

First time installation

The helper scripts will try to detect where msys2.exe is installed searching WIN_MSYS2_ROOT or the system paths (%PATH%). If the detection fails, install_msys2 script will be used to install it.

Similarly, if Erlang/OTP is missing it will be installed using install_erlang script.

After that script will download, install and update the Msys2 dependencies and tools. Any consecutive runs will check for new updates.

Additional environment config (optional)

Msys2 specific paths can be specified in MSYS_INCLUDE_PATH which are in POSIX(Unix-style) form, separated by ":".

For instance, to add Java in msys2 you have to set the path to its bin directory (the one that includes java.exe)

SET "MSYS_INCLUDE_PATH=/c/Program Files/OpenJDK/jdk-12.0.2/bin:%MSYS_INCLUDE_PATH%"

You can execute the script directly in a cmd window.

Building

Use the helper script scripts/windows/msys2_shell.bat to do so.

That script uses the following environment variables (defaults):

WIN_MSYS2_ROOT=C:\tools\msys64
WIN_OTP_PATH=C:\tools\erl21.3
PLATFORM=x64
ERTS_VERSION=10.3
OTP_VERSION=21.3

In the opened shell (MinGW64) go into your build directory and build the system like on any other UNIX system:

cd PATH_TO_REPO_CHECKOUT
make

NOTE: Disk drives are mounted in the root folder (i.e. C: is /c)

Note: For a release package build you can use .circleci\windows\build.cmd which will build and produce ready-to-install packages

Refer to docs/build.md for more information on how to build.

Download:

Alternatively you can use to reduce install size (no GUI).

If you do so, you may skip to

(optional)

Note: If you don't want to install manually, the preparation script will do it automatically for you.

Or if you prefer you can install Msys2 using

Download:

(optional)

If you don't want to install manually, the preparation script will do it automatically for you.

Alternatively you can install Erlang/OTP using

Download:

(not required)

Now the environment needs to be prepared. This can be done automatically by the helper script scripts/windows/msys2_prepare. It will set the environment variables and download any missing essential tools.

Open a shell with the proper paths set.

MSYS2
Chocolatey
Install Visual Studio 2019
Chocolatey
Visual Studio 2019 Installer
vs_buildtools.exe
Install MSYS2
MSYS2
Chocolatey
MSYS2 Windows Installer
Erlang/OTP 20.3
Erlang/OTP
Chocolatey
Erlang/OTP 20.3 Windows Installer
Java Development Kit 11+
MSYS2
MSYS2
Setup