In short: a cryptocurrency is an attempt at a completely digital fiat currency, backed by encryption and (often, at least the classical ones) some sort of distributed ledger data structure, which creates a broader security via community/network consistency. It is referred to as a 'currency' as it is a medium of facilitating transactions within a certain scope or domain. In recent years the mainstream has latched onto cryptocurrencies as a speculative asset (and perhaps many will become routinely considered as investments), but the space has also seen inroads being made towards using these technologies in various forms to facilitate transactions not directly intended as a means of speculation. For example, using various cryptocurrency tokens to access computing resources or get various tasks performed (ie smart contracts). Ethereum is notable for exploring this 'smart contract' space (and is, in many circles, considered the second most likely candidate for mainstream speculative investment, next to bitcoin… time will tell if either of these remain at the top of these charts), and IOTA endeavors to make similar inroads specifically in the IoT (internet of things) space.
There appear to be at least 2 potential candidates for command-line wallets:
Make sure that the npm and nodejs packages are installed, and that you have root access to the machine in order to install it.
machine:~$ sudo npm install -g iota-cli-app /usr/local/bin/iota-cli -> /usr/local/lib/node_modules/iota-cli-app/index.js email@example.com /usr/local/lib/node_modules/iota-cli-app ├── firstname.lastname@example.org ├── email@example.com ├── firstname.lastname@example.org ├── email@example.com ├── firstname.lastname@example.org (email@example.com, firstname.lastname@example.org, email@example.com) ├── firstname.lastname@example.org (email@example.com, firstname.lastname@example.org) ├── email@example.com (firstname.lastname@example.org, email@example.com) ├── firstname.lastname@example.org (email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org) ├── email@example.com ├── firstname.lastname@example.org ├── email@example.com (firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org) └── email@example.com (firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, email@example.com) machine:~$
The default permissions set an ownership of user nobody, which prevented my regular user from accessing (short of opening up permissions). I opted just to change ownership to my user:
machine:~$ sudo chown -R wedge /usr/local/lib/node_modules machine:~$
At which point, assuming /usr/local/bin is in the user's path, you can then run iota-cli right on the command line.
machine:~$ iota-cli Running IOTA CLI v1.0.8 iota (http://localhost:14265 disconnected):
First up, what sort of actions can we perform? Let's see…
iota (http://localhost:14265 disconnected): help Commands: help [command...] Provides help for a given command. exit Exits application. address Generates an address. api [command...] Sends an arbitrary command to the node. balance Gets balance for current seed depth <depth> Sets depth. healthcheck Looks for any node problems. history [options] [hash] Gets last transactions. Provide a hash for additional details. minWeightMagnitude <mwm> Sets minWeightMagnitude. neighbors [address] Shows neighbor information. Address can be a partial match. node <address> connects to a new iota node. (ex. 188.8.131.52) nodeinfo Shows connected node information. promote <hash> Promotes a pending transaction. Provide an id for additional details. replay [options] <hash> Replays a pending transaction. Provide an id for additional details. seed [seed] Sets your seed/password. If you don't provide a seed one will be generated. transfer <address> <value> Sends iotas to the address iota (http://localhost:14265 disconnected):
I know I'm not currently running a node, and as we can see from the wallet, it is not currently connected to the IOTA network (the 'tangle' as they call it). So, let us explore the node command:
iota (http://localhost:14265 disconnected): node Missing required argument. Showing Help: Usage: node [options] <address> connects to a new iota node. (ex. 184.108.40.206) Options: --help output usage information
Okay, so we'll need some potential nodes to connect to. A quick google search revealed the following sites:
I chose one near the top of the list at the time of writing: iota.bitfinex.com:80
What you ideally want is to use the loadbalanced node address as given; if not, then go for a node that has the highest matching milestone numbers (also listed on that same page).
So let us try connecting to THAT node:
iota (http://localhost:14265 disconnected): node iota.bitfinex.com:80 Changing node to http://iota.bitfinex.com:80. This may take a few seconds for a remote node. Did you turn on remote access? iota (http://iota.bitfinex.com:80 ✓):
We can query the connected node for its information:
iota (http://iota.bitfinex.com:80 ✓): nodeinfo appName: IRI appVersion: 220.127.116.11 jreAvailableProcessors: 4 jreFreeMemory: 4447394704 jreVersion: 1.8.0_151 jreMaxMemory: 7494696960 jreTotalMemory: 7494696960 latestMilestone: ZDIPZQLYZWJGB9VVXBUOIDETMLXONYXICAUGSDMLNOWFNGSXQ9ECBATFQPSMFZKSDDABSXYUHGUZ99999 latestMilestoneIndex: 363877 latestSolidSubtangleMilestone: ZDIPZQLYZWJGB9VVXBUOIDETMLXONYXICAUGSDMLNOWFNGSXQ9ECBATFQPSMFZKSDDABSXYUHGUZ99999 latestSolidSubtangleMilestoneIndex: 363877 neighbors: 5 packetsQueueSize: 0 time: 1525007841803 tips: 10005 transactionsToRequest: 3592 iota (http://iota.bitfinex.com:80 ✓):
To access our particular wallet, we need to provide our iota seed that we got in the process of setting things up (assuming we had done this before with other wallets; I had, so I have a seed). If you are entirely new to iota, you will likely need to generate a seed.
At any rate, the seed command is what we want to specify our seed (I've obfuscated mine, obviously, for security):
iota (http://iota.bitfinex.com:80 ✓): seed MYIOTASEED Setting seed to "MYIOTASEED". Retrieving account data in the background. You can continue working. iota (http://iota.bitfinex.com:80 ✓):
Of course, a wallet is only as good as its ability to report your current balance of IOTA. Let's see what we've got:
Account data retrieved. iota (http://iota.bitfinex.com:80 ✓) 0ι : balance One moment while we collect the data. Your current balance is 0ι. iota (http://iota.bitfinex.com:80 ✓) 0ι :