You can start your Nxt adventure by downloading and installing the Nxt software. Nxt is written in Java, and requires an up-to-date Java installation in order to be run. Up-to-date instructions for manual installation can be found here:
- Windows installation (also see this YouTube video tutorial for Windows installation, created by pinarello)
Begin working with NxtEdit
In order to send or receive Nxt, you need to create an account number. You can create an account within the Nxt client software. Your account number will be your address. Pick a very strong random passphrase that is greater than 30 characters.
Before creating an account, you will need to install the Nxt client software on your machine and run a local node (which will assist the network).
Creating an accountEdit
- Within the Nxt client software, click on the orange picture of a padlock. It will be located in the UPPER LEFT HAND CORNER of your browser window.
- A pop-up window labeled ACCOUNT will appear.
- In the text field that appears, enter a secret passphrase.
- VERY IMPORTANT:
- Record your passphrase, and keep it in a secure location. It will be used to generate your account number
- Once you create and enter this passphrase, it can never be changed
- If you ever lose your passphrase, you will lose access to your account
- Your passphrase is more secure if it is long and complex. Use a string that is at least 30 characters long. If possible, do not base your passphrase on any complete words in any language.
- Do not share your passphrase with anyone.
- VERY IMPORTANT:
- Click Unlock account.
- The orange padlock will change from a "locked" position to an "unlocked" position
- Your newly-generated account number will appear in green text to the right of the padlock icon
- Record your account number!
Sending Nxt to an accountEdit
- Access your local client (https://localhost:7875/)
- Unlock your account
- Click on the orange picture of a padlock in the TOP LEFT CORNER. A popup labeled ACCOUNT will appear.
- Enter your secret passphrase, and then click on the Unlock account button
- Send Nxt by clicking on the violet arrow on the TOP RIGHT CORNER of the browser window.
- A popup labeled TRANSACTION appears. Complete the fields as follows:
- Recipient : enter the Nxt account number of the receiver.
- Amount : choose the amount of Nxt coin you would like to send
- Fee : Set a number of coins to use for the transaction fee. The software will suggest a fee of 1 coin for every 1000 coins sent (which equates to 0.1%), but you can set the fee to as low as 1 coin for any transaction amount.
- Deadline : enter a small number (1 hour is fine; the default is 24 hours)
- A popup labeled TRANSACTION appears. Complete the fields as follows:
- Click the Send Money Button
- The message Money is sent will appear
The Nxt client interfaceEdit
General notes on working with the interfaceEdit
The client window is organized into two main areas:
- a menu bar
- a display area
Hovering over most areas in the interface will give you a small "tooltip" pop-up that describes it. Additionally, each panel in the display area has some common functions:
|Click this button to close any open panel|
|Click this button to expand a collapsed area in a display block|
|Click this button to collapse an expanded area in a display block|
The Menu barEdit
The black bar at the top of the Nxt client interface is essentially a menu bar, with the following items available:
|Padlock: Use this button to unlock your Nxt account. When you click it, you will be asked for your secret passphrase. Once it is entered, the padlock will switch to an "unlocked" version and your account number will be displayed, in green, on the right side of the icon.|
|Transactions: Click this button to toggle visibility of the "transactions" block. If your account is unlocked when you click this button, your account's transactions will then be visible.|
|Peers: Click this button to toggle visibility of the "peers" block, which gives you information about other servers that are visible on the network.|
|Blocks: Click this button to toggle visibility of the "blocks" block, which gives you information on the blockchain.|
|Accounts: Click this button to toggle visibility of the "accounts" block. As of client version 0.3.16, setails of this block have yet to be implemented.|
|Send button: This button will only appear in the menu bar when your account is unlocked. Clicking it will allow you to send Nxt from one account to another. Note: If your account balance is zero, this button will be greyed out, and unavailable.|
Authorization token: Clicking this button will allow you to generate authorization tokens for third-party web sites.
The "transactions" blockEdit
This area displays transaction information. When your account is unlocked, "My transactions" will display all of the transactions for your account.
The "Unconfirmed transactions" area displays information about all unconfirmed transactions on the network, including transactions that are not yours.
The "Double-spending transactions" area is still under development.
|The time and date of the transaction.|
|The account number of the sender/recipient|
|The transaction amount, in Nxt|
|The transaction fee, in Nxt|
|The number of confirmations for the transaction. Once this number goes higher than 10, it will be displayed as "10+". If you hover your mouse pointer over this number, however, the exact number of confirmations will be shown.|
|The transaction identifer. Hover your mouse over this icon to see the unique number associated with the transaction.|
The "peers" blockEdit
This area displays information about other nodes on the network that are processing transactions. The "Active peers" area displays nodes that are currently active. The "Known peers" area displays nodes that your client is aware of, but that are not currently active. The "Blacklisted peers" area lists nodes that were recently online but have become unavailable (the term "blacklisted" may eventually be changed, as it is a little misleading).
The following icons and fields may be shown in this area:
|Signifies that you are currently connected to the node listed|
|Signifies that this node has "announced itself" on the network|
|Signifies that this node is "well-known" on the network. These nodes are generally permanent, or are active for very long periods of time.|
|Provides a value for the weight of the node|
|Amount of data (in bytes) downloaded by this node|
|Amount of data (in bytes) uploaded by this node|
|The version of the server software running on this node|
|Click this button to manually delete this node from your list|
The "blocks" blockEdit
This area displays information about the blockchain. The blockchain represents the full history of transactions on the Nxt network, and each block in the chain can contain up to 255 transactions. Nodes on the Nxt network compete to create these blocks through a process called "forging" (known in other crypto-currencies as "mining"), and once a block has been added to the blockchain it helps document and reinforce every transaction on the network. Blocks are forged once per minute.
The "recent blocks" area shows the most recently-forged blocks, with the newest ones at the top.
The "orphaned blocks" area lists blocks that were forged by nodes on the network but were not accepted as part of the official blockchain.
The following icons and fields may be shown in this area:
|Block height, or block number. Each block in the blockchain is numbered sequentially, so the higher the number, the more recent the block.|
|The number of transactions included in the block. Since blocks are generated once per minute, it is possible for this number to be zero.|
|The version of the block. Since the format of blocks may change as Nxt develops, but all blocks are permanent, this field is used to keep track of what "version" of the block format is being used.|
|The account number that generated this block. In Nxt, new blocks are forged by active accounts. When an account successfully generates a block, all of the fees included in that block are given to the generator. This is part of the "forging" process.|
|The number of coins included in the block, and the total fees included. This is displayed in the format "X + Y", where X is the number of coins sent, and Y is the number of coins used for transaction fees. All transaction fees are given to the account that generated the block.|
|This value represents the digital signature of the previous block, signed by the generator of the current block.|
|The date and time that the block was generated. The exact time will be expressed in the same time zone as the system time on your server.|
|The size (in bytes) of the payload for the block (i.e. the size of all of the transactions in the block, combined)|
|The block target, expressed in percent. This figure represents the prpoportion of ALL Nxt that were active at the time this block was generated. For example, a value of 400% means that one quarter (or 100/400) of all coins were active when this block was formed. The higher this number is, the better chance your account had of forging that block.|
The "accounts" blockEdit
Features for this block have not yet been implemented.
Advanced software operationsEdit
This section outlines advanced operations for people who are running the Nxt software. They are not at all mandatory, and the information presented here assumes you are comfortable working on a command line, creating script and batch files, and formulating HTTP requests.
Graceful stop and start of the Java processEdit
This minimizes chances of data corruption when you want to stop the client
- Select a local TCP port (I would pick between 10000 and 60000) and a local password to use for stopping the client. These become the STOP.PORT and STOP.KEY values in the next step.
- Change your .bat file that starts the client and add the following after "start.jar ":
- STOP.PORT=10000 STOP.KEY=password
- Create a second .bat file that is used to stop the client. It is identical to the commands in the start file, including your addition ins step 3 above, except it also contains the following at the end: " --stop"
- Just run the second .bat file whenever you need the client to stop.
Network ports and NAT/firewallsEdit
There are three TCP ports in use by the client.
TCP port 7874 is the peer-to-peer port used for communications between peers across the world. While it is not a requirement to forward this port in the firewall to your client, it does help the network if this is enabled. If this port is not forwarded to the client host, then the client host will initiate all connections outbound to peers in the network but will never be able to receive initiated connections. In addition, it should be possible to use multiple clients behind the same NAT to connect out to external peers. Obviously though, if this is desired, then only one of the client hosts behind that NAT can be selected to have TCP 7874 forwarded by NAT to it for external inbound connections.
TCP port 7874 is also currently the port used for API request into the client to access different API operations. For example, see below for an API request to decode an auth token.
TCP port 7875 is the HTTPS port used to point your web browser at to begin mining. It is suggested for most users to not forward this port on a NAT firewall unless you really know what you are doing.
TCP port 7876 appears to no longer be in use, at least for the latest versions of the client. It use to be the API port.
If you are on an internet connection that frequently changes its IP address, such as DSL, and in some cases, cable modem service, using this hallmark feature will become a headache, and all active peers will disappear when your IP address changes, and you will be unable to forge. Your IP address for DSL changes every time your modem/router resets. Some cable modems will change IP address when they are reset.
Hallmarks are a way for your node to prove to the p2p network that for the client running on a particular IP addres, you own the account you say you do (and thus do have the balance claimed)
The result is network protection against zombie hosts messing with NXT in an attack
Thus, hallmarks can be used to tie an account/balance to an IP address, so consider if this is OK for you.
These instructions assume that you only ever run 1 client for a particular account.
- From the host that runs the NXT client, do web request to http://www.whatismyip.com and find out what your publicIP address is. In order to be 100% sure the correct data gets returned, this web request must be sent from the host that runs the NXT client. The IP address you get will be used for the MY_HOST field later on.
- Do such a request: http://localhost:7874/nxt?requestType=markHost&secretPhrase=MY_SECRET&host=MY_HOST&weight=100&date=CURRENT_DATE where CURRENT_DATE is a date in "yyyy-mm-dd" notation.
- Copy hallmark value (just the hexadecimal characters) into "myHallmark" field, just between these 2 tags: <param-value> and </param-value> in the file web.xml. This file is in the nxt\webapps\root\WEB-INF\ directory.
- Copy the IP address you found from step 1 into the myAddress field, just between these 2 tags: <param-value> and </param-value> in the file web.xml. This file is in the nxt\webapps\root\WEB-INF\ directory.
- Save changes to the web.xml file.
- Launch your client/node.
You can decode your hallmark by doing such a request: http://localhost:7874/nxt?requestType=decodeHallmark&hallmark=HEX_STRING. The hallmark does NOT contain your private key (only public one and signature).
An example to retrieve your hallmark: http://localhost:7874/nxt?requestType=markHost&secretPhrase=123&host=22.214.171.124&weight=1000&date=2013-12-13
An example to check a hallmark: http://localhost:7874/nxt?requestType=decodeHallmark&allmark=f2593579978536d185336032190675342356009a3e1b578a7f54e85c14090c0039382e38392e3130332e3235640000008d2d3301a8e38e0db768a7b4db1b83517e23c676b0885c00093ed908a1ac29d00b4c0d540327127c17ce416b03ee800c663764456ce175aa33746d02553ad8b4c0d1221f256271
You should generate a different token for each site you are on, unless you have the same exact ID on different sites.
To generate a token for use on a particular site:
- Get java process and client running, unlock and use your passphrase
- Click on the key in the upper left. A popup box comes up asking for a domain. Just put in your username for the site you want to generate a token for.
- You will be given a LONG string. This is your token. Give it out freely.
To verify a token from another member:
- Make sure your local client is running
- Use the values given to you <USERID> and <TOKEN> in the following URL:
- Surf to: http://127.0.0.1:7874/nxt?requestType=decodeToken&website=<USERID>&token=<TOKEN>
- Your client will tell you if it checks out OK. Look for ' "valid":true ' in the response.