13

Learning without thought is labor lost; thought without learning is perilous - Confucius Jump to the bottom if you want an immediate review. If not, continue along and maybe you might learn a thing or two. As of this writing iri version 1.4.1.2 is the latest release. So the details that follow will be based on this release. Before we begin, lets start ...


10

A full public node is the same as a full node, but with external/remote access enabled. This means that other light wallet users, outside your local network, can use the node as well. Requirements are the same but a busy public node might experience more heavy load due to the extra requests from all light wallet users connected.


9

Requirements for a Full Node OS I have found macOS to be the easiest to get up and running in the smallest number of steps. Your mileage may vary though. Linux/macOS/Windows and anything else that can execute the iri jar. GPU Not required CPU At least 2 or more cores with 64-bit architecture RAM At least 4 GB or more HDD At least 50 GB ...


8

This is not specific to iota but I've often found that UnsatisfiedLinkError usually means that the dll(s) are not in the location specified by -Djava.library.path/PATH property. Try setting the -Djava.library.path the the dll(s) location. Or put the dll(s) in a location already in PATH


8

The key part of the IRI codebase here is Node.java. toProcess corresponds to the length of the receiveQueue of the node. Transactions are added to this queue after they have been received from a neighbour and validated to be valid transactions. The receive queue stores a list of pairs of Transaction Data and Neighbour fields. Transactions in the queue are ...


8

Why are they not using HTTPS? As far as I know, IRI only supports HTTP natively, however HTTPS is possible if you put something in front of it. Why most public nodes are not currently using it is probably simply the fact that it is not required, and involves some additional configuration. Like you, I believe they should be. Is it possible? Yes. My node ...


7

As of now (November 2017) there is no "finished" software available that can just be installed and run as a permanode. People who currently need a permanode (I think some block explorers have that) will have to collect databases from the latest milestones before each Snapshot (I think links some of them are shared on the Slack) and manually import them into ...


7

The API command reference is available here: https://iota.readme.io/v1.2.0/reference At the time of answering, the commands are: getNodeInfo getNeighbors addNeighbors removeNeighbors getTips findTransactions getTrytes getInclusionStates getBalances getTransactionsToApprove attachToTangle interruptAttachingToTangle broadcastTransactions storeTransactions


7

This occurs when you launch the full node with the --remote-limit-api flag and disallow the use of certain commands. Normally it is used to disallow access to attachToTangle, but the same could happen with getNodeInfo too.


7

I'll quote learn.iota.org here, because they have a good explanation. The IOTA GUI makes it possible to choose between Full Wallet, and Light Wallet. The Full Wallet automatically runs an IRI (IOTA Reference Implementation) instance in the background, which in turn means that you need neighbors in order to participate in the network and be ...


6

No there is no build in DDoS protection. In my opinion, you have two options: External Software like https://github.com/jgmdev/ddos-deflate You could whitelist your neighbours with iptables.


6

Cannot think of any problems. Obviously the database dump should be created while your node is down, and the new node should be down too, while you are copying the database. The database might contain stale (unreferenced) transactions which would not get synced when you did not use a database, but those should not hurt either (if you have the disk space). ...


6

A Static IP is the best solution if you can get one. If not, a workaround could be using a dynamic DNS service that creates a (sub)domain that always points to your IP address and is automatically updated using a tool on your computer/server. Some of the Dynamic DNS services you could use are: NoIP freedns.afraid.org (if you wish to use your own domain name)...


6

Nobody can count the amount of full nodes (Because of that, there are also no sites that track them) Why? Every square is a full node. Connected nodes are neighbours. F has 3 Neighbours: E, H and G. F knows is that there are at least 4 nodes in the network. F does not know how many or which neighbours E, H or G have. F has no idea that J or C or D ...


6

if you use a .ini config file, you can also add this to it API_HOST = 0.0.0.0


6

You have to start IRI using the --remote flag. and don't forget to disable some API calls. For example:  java -jar iri.jar -p 14700 -r 14700 -n "udp://neighbor1:14265" --remote-limit-api "removeNeighbors, addNeighbors, interruptAttachingToTangle, attachToTangle, getNeighbors" --remote See here for other IRI startup flags


6

A full node has a local database of current IOTA balances (which gets initialized from the latest Snapshot and then updated by confirmed transactions). When the full node performs its validation of a transaction bundle, it will verify that the balances of the spending transactions do not exceed the amounts stored in its database. This is done sequentially so ...


6

The "problem" is, anyone is free to send funds to any address they want, even if this address has been emptied before (the protocol is agnostic to the source & destination address). A partial solution/safeguard could be a warning message in the GUI wallet. In any case, as noted here https://iota.stackexchange.com/a/441/249 there is a future plan to ...


6

ixi/hello_world/package.json {"main": "index.js"} ixi/hello_world/index.js function hello_world_impl(req) { return com.iota.iri.service.dto.IXIResponse.create({greeting: "Hello, world!"}); } API.put("helloWorld", new com.iota.iri.service.CallableRequest({call: hello_world_impl})); How to call: curl http://localhost:14700 -X POST -H 'X-IOTA-API-...


6

A full node contains the full data (that is, all transactions) generated after a snapshot. The benefit is that nodes can have reduced hardware specs. The drawback is that information that resides in transactions is lost after every snapshot, if the transaction is behind (older than) the snapshot, and has no balance on it. A permanode contains all ...


6

Core Client a.k.a. Full Node Full Nodes store all transactions since the last snapshot. It is required to be online (= available to its neighbours) 24/7 Permanodes A Permanode is a Full Node that doesn't do snapshots and stores all transactions since the genesis transaction. Light Client A Light Client does not store any transactions. To make ...


6

The network topology IOTA is designed around is a mesh network. In order to emulate that topology over the classical internet, full nodes are configured to reject any requests from neighbors that weren't mutually tethered with it. It is possible that this has come from a neighbor with a changing IP address, an old neighbor that is still trying to connect, ...


6

MAX_DEPTH prevents against malicious getTransactionsToApprove calls that give a huge depth and therefore create a large "Subtangle" to walk in. But in this case, a user gives a normal depth (e.g. 5), so MAX_DEPTH cannot prevent this. Assume that the current milestone is M and the side tangle has been forked off milestone M-1000. Also, assume that there is ...


5

(This is specific to linux) To dump all iri process threads, one can issue the following command: jstack -l <pid of iri java process> Search for the named thread of interest. Example: test@test:~$ pgrep -l java 10783 java test@test:~$ jstack -l 10783 > /tmp/thread_dump.log test@test:~$ du -s /tmp/thread_dump.log 212 /tmp/thread_dump.log ...


5

While not officially supported by the IOTA foundation, I put together a few scripts that can be used to start up your private testnet (possibly consisting of only a single node). If you want to go this route, you should have some experience in patching, compiling and running Java applications, so this is no simple point-and-click solution for newbies. When ...


5

If possible, you should make it available via HTTPS as well (as some wallets will only talk to HTTPS nodes). You should definitely disable commands related to neighbors, otherwise others could remove your neighbors or add some others (to send them an UDP flood). The official GUI wallet needs the following commands: getNodeInfo - to retrieve the latest ...


5

Full node A full node stores the whole Tangle, it needs neighbours to broadcast transactions to and you need a static IP address or any other static address so that your neighbours can broadcast transactions to you. Light node As a light node you do not store the Tangle and you don't need any neigbours. You just need to select a host (e.g. https://node....


5

Currently the tip selection is only performed on full nodes, and cannot be performed on light nodes. This is not only true for the tip selection, but also for broadcasting transactions and for searching the balance or inclusion (confirmation) states. You run a full node because either you are an individual who wants to help the network or have influence on ...


5

Log statement: log.info("toProcess = {} , toBroadcast = {} , toRequest = {} , toReply = {} / totalTransactions = {}", getReceiveQueueSize(), getBroadcastQueueSize() , transactionRequester.numberOfTransactionsToRequest() , getReplyQueueSize(), TransactionViewModel.getNumberOfStoredTransactions(tangle)); To get a better understanding, ...


5

Full nodes should not be public. Some reasons: If they were, attackers could easily find out, which nodes they have to connect to, in order to get the best result out of an attack. (Omnipresence, Double Spending) If they were displayed in an ordered list, people would very likely pick the first few or as their neighbours. This would result in a few nodes ...


Only top voted, non community-wiki answers of a minimum length are eligible