37

Citing response of the IOTA's Co-founder David, Ternary is the optimal radix, actually Base E (2.71....) is, but you can't make processors like that. So it comes down to Base Binary (2) vs Base Ternary (3). 3 is closer to the universal optimum 2.71 than is 2. That is the absolute most simple elevator pitch for ternary. There are plenty of great articles on ...


34

Yes, you can upload images or any files or other data to the tangle. As long as their size is less than 2187 trytes you can put them into one tx (=transaction). If they are bigger (=more trytes) than that, you can still send them by just putting them into multiple txs that reference each other (similar to a bundles for value txs). So for example if you ...


20

Three questions were made: Why does IOTA use a ternary number system? What are the benefits of the ternary number system over the more traditional binary number system? Are there drawbacks to ternary with respect to binary, aside from the obvious of less adoption? The other answer concerns question number 2, which doesn't concern IOTA specifically, but ...


19

Transferring IOTAs from one address to another requires several different transactions: An output transaction that increments the recipient's balance by the desired amount. (usually) 1-3 inputs that authorise the spending of the IOTAs from the sender's address(es)1. (if necessary) a change transaction that sends any remaining amount to a new address owned ...


19

Trinary Note In the "normal" world we have bytes & bits, where 1 byte is 8 bits giving us 2^8 = 256 possible data values for 1 byte. In the trinary world we have trytes & trits, where 1 tryte is 3 trits giving us 3^3 = 27 possible data values for 1 tryte. This is what IOTA uses to stores its transaction data. Transaction Composition One IOTA ...


17

Fragments of the private key of that reused address are leaked. An attacker could find a bundle hash (via brute-forcing) that can be signed with the leaked fragments. Luckily for the user, the window for the attack is short (only while the spending transaction is not confirmed). But if more iotas come to the reused address the attacker can spend them right ...


15

To expand on CFB's answer, because IOTA uses Lamport signatures, half of the private key is leaked each time. This halves the security level of the address (from 54 trytes of security to 27 trytes for a typical address with security level 2), making it exponentially easier to brute force the remainder of the private key with each key reuse. While after a ...


11

This cheat sheet present a bundle with : 2 outputs: 100 iotas to address B and 202 iotas to address C. the remainder : 49 iotas The inputs are comming from 3 addresses: A1, A2 and A3. In the example, all signatures expand on 2 blocks - except the output1 on 3 blocks - credit to @abmushi (on slack) for the bundle cheat sheet :)


10

First, a subseed is derived from the seed Treat the seed as a (little-endian) number and add the index to it (a seed starting FEDCBA... and an index of 1 therefore results in GEDCBA.... Hash the result of the previous step with Kerl (keccak) Then, a private key is derived from the subseed. The private key consists of multiple blocks (number depends on ...


9

There was a bug in the wallet software related to absence of https://github.com/Come-from-Beyond/ISS/commit/de1a279450558848a81858fd57b023719eb9a0d3. "M" should be avoided to prevent leakage of the corresponding (and following) private key fragments.


8

Here is the JINN website: http://iotanodes.org/jinn/ Nobody knows much about Jinn project except its global scope. The idea is to develop a low energy ternary processor. Everything else remains secret. It's important for IOTA because IOTA uses ternary to compute hashes and so all computation to sign transactions involves ternary operations, which are not ...


8

How can I safely withdraw the funds a second time ? Second withdraw will be less secure. The security decrease exponential with every withdraw. There is nothing you can do against that. How can I ensure that people do not emit transactions to an address that has already been used-up? As far as I know, there is nothing in IOTA protocol that prevent an ...


7

A user will usually broadcast a collection of multiple transactions (also called a bundle) when interacting with the network. One bundle could consist of Withdrawal transaction (acquire funds to be spent from some address) Payment transactions (pay some other address a sub or total amount of the funds withdrawn) Change transaction (deposit unspent funds ...


7

There are several ways to convert bytes to trytes, caused by the fact that you can take a different number of bytes at once to convert (the more bytes you take, the less space is wasted). In theory, you will need log 256 / log 3 = 5.047438028571 trits for each byte. bytes as starting point The implementation in ascii2trytes uses 1 byte and converts it to 2 ...


6

Every new address is generated by incrementing a seed and doing some hashing. This gives a useful feature: If you don't want to see the whole history of the transfers then increment the seed before entering it into wallet software and transactions associated with the very first address won't be shown (this process can be repeated). The feature may work ...


5

JINN is currently under NDA and doesn't release any information about its development. Here are some snippets of what we know about JINN via the developers on Slack: JINN is a low cost (target price: $1) ternary processor which is designed to have a small footprint to be put into any sort of device, including very low power, cheap, and small IoT devices in ...


5

With every spend a random 50% of the private key is exposed. The reason that it is a one-time signature follows from what a second spend can reveal: The overlap of the 2 random 50% reveals can be anywhere from 0% to 100%. Since it is random, the distribution for this will be on a bell curve. Which makes 0% overlap (left/bottom of bell curve) and 100% (...


4

As far as I know Lets say you were receiving donations on Address X, my recommendation is to not use this address till you REALLY need to withdraw from it. After you withdraw from address X, make sure you never use it again to send/receive funds from/to address X. Generate a new address Y and update donation address wherever you've posted it. Another ...


4

The main reason for JINN to be ternary, is that it is based on development of a ternary general purpose processor. I have searched alot on this topic, but the only conclusion I can draw is that they don't want to give up on the ternary idea, or because they think it is cool, but not because of performance reasons. In the ideal theoretical case, when only ...


4

JINN ternary microprocessor is not created for the desktop, laptop, tablet or smartphone markets. The markets that JINN is aiming for are the blue oceans of the Internet of Things, smart sensors, artificial intelligence, virtual/augmented reality... The efficiency of ternary processors is optimal for these markets. For example, Ternary Neural Networks can ...


4

Qubic is the name of a protocol which will be built on top of the IOTA Tangle. The Qubic protocol provides general-purpose, cloud- or fog-based, permissionless, multiprocessing capabilities on the Tangle. It does this by allowing the transfer of prepackaged computational tasks from a device to some assembly of oracle machines, and have them perform said ...


3

Trits are not very readable by humans, so English letters and a separator ('9') were used for combinations of 3 trits. Calling them "characters" would require to add "used in IOTA addresses" sometimes which is not convenient. Long story short, I decided to call them "trytes", that term wasn't used anywhere else anyway. Regarding a byte being able to store ...


3

The method you mentioned converts each byte into 5 trits, so the output array needs to be 5 times the length of the input array. Note that this function is not suitable for encoding any byte combinations, as bytes with value 243 to 255 will result in an error. It is only suitable for converting bytes back into trits, which have been converted from trits to ...


2

Transactions are conflicting if they try to spend the same money from the same address (and the address does not include enough money to satisfy both at the same time - but this should not happen anyway, as compliant clients will move the remaining balance to a change address - but can of course happen if an adversary tries this). Either this can be because ...


2

Starting from the bundle hash, call the findTransactions API to get the transaction hashes of all transactions in your bundle. Pass the hashes to getTrytes to retrieve the transactions as tryte-encoded strings. You may want to sort the transactions in the original order (i. e. so that they are chained by trunk transaction hash) to avoid surprises when ...


2

For now, you need to make sure that you consider an address a temporary place to receive funds for the exact reason you bring up: You will be compromising your security by withdrawing from a static address multiple times. There have been discussions for a future possibility of creating "alias" addresses. An alias would be able to dynamically move between ...


2

The message is stored in the space where the signature normally would be. In the signatureMessageFragment of the first transaction in the bundle, there is GACDZCTCEAADTCGDGDPCVCTCGA and a whole lot of 9's. These trytes translate to "oke message" as you can see on the ASCII Message to Trytes converter here.


2

One main difference in the language: Abra is a functional language (source : "Qubic tasks are specified using an intermediate trinary-based functional programming language called Abra.") and Solidity (main language for Ethereum smart contract) is a classical procedural language. Writing a formal proof (i.e. a mathematical proof) that a program is correct is ...


2

I was in discord around the time this was originally posted. I figured someone would have provided the answer right after we discussed it... @Come-from-Beyond brought it up himself, and he said that it was a good write-up, and question, but he was concerned that the answer was too simple. Java (the language it was first implemented in) uses 4 bytes for an ...


1

IOTA will use a smart contract language called Abra - which is an intermediate trinary-based functional programming language. More information on Abra can be found here.


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