미디엄에 올라온 글입니다.IOTA에 대한 문제점을 지적하고,트랜잭션 실험을 통해 성능이 대한 비판도 있습니다.
글을 간단히 요약하자면
IOTA에 나의 트랜잭션을 전송시키기 위해선,내가 먼저 2개의 트랜잭션을 채굴해야 됩니다.그리고 IOTA는 이러한 채굴작업을 IOT장치들이 내부장치을 삽입함으로서 자동적으로 처리 가능하게 하려고 하고 있습니다.
이 글의 필자는 나의 Mac컴퓨터에서조차 GPU풀파워 상태로 2개의 트랜잭션을 채굴하는데 1분 30초가 걸렸다라면서,
Mac에서 1분 30초가 걸리는 것을 삽입장치로 어떻게 처리 할것인지에 대한 의구심.그리고 그로인해서 소모되는 Iot기기의 전기소모량을 지적하고 있습니다.
IOTA개발자들은 코인 가격만 오른다고 다 가 아니라,제대로 개발이나 하고 입 좀 놀렸으면 하는 생각에 한번 퍼왔습니다.

https://medium.com/@valerio.vaccaro/iota-is-not-for-iot-3fc8b74c506f?source=linkShare-bb3f64d1b692-1513239386
I’m interested in IoT from several years and now I work on some solutions using Bitcoin and blockchain plus I always try new things and when I saw the IOTA website I start to learn more about this crypto.
저는 지난 몇년동안 IOT에 관심을 가졌고 지금은 Bitcoin과 블록 체인을 사용하는 몇 가지 솔루션을 작업하고 있습니다. 저는 항상 새로운 것을 시도해 욌고 IOTA 웹 사이트를 보았을 때 나는 이 암호화폐에 대해서 더 많은것을 배우기 시작했습니다.
Can IOTA really work in IoT world? I don’t think IOTA can be a good platform for IoT communications due to the following reasons:
과연 IOTA가 IOT에 활용될수 있을까요?내 생각에는 IOTA가 우수한 IOT플랫폼이 될것 같진 않습니다.그 이유는 아래와 같습니다.
the coordinator is a bright example of centralization and centralization is usually a bad idea on IoT,
IOTA의 코디네이터시스템은 중앙집중화의 대표적인 예시이고,중앙집중화는 기본적으로 IOT에 좋게 작용하지 않습니다.
there are no fees but instead of that you need to mine two transactions on your node in order to attach your transaction to the tangle and mining on embedded devices is a bad idea due to low speed and power consumption,
Iota를 전송하는데에 수수료는 들지 않습니다.하지만 그 대신에 당신의 트랜잭션을 탱글네트워크에 넣기 위해서는 2개의 트랜잭션을 당신의 노드에서 처리해야 됩니다.
Iot에 내장된 장치로 마이닝을 처리하는 방식은 속도면에서나 전력소비면에서나 좋지 않은 방식입니다.
there are no rewards for maintaining a large set information (e.g. 2KB per transaction*144 transaction/day*1000 nodes = 281.25 MB day just for a single simple deployment with 1000 nodes) and I can not imagine how you can fit an IOTA node inside an embedded device,
대량의 데이터처리에 대한 보상이 존재하지 않습니다.
그리고 사실 내장장치에 어떻게 IOTA노드를 설치를 할수 있는지 상상이 되질 않습니다.
I’m not sure about the solutions used in the platform, create a new hashing function was a bad idea, how many “hidden problems” are present in IOTA?
이 플랫폼에서 문제를 처리하는 방식도 믿음이 가질 않습니다.예전이 발생한 보안문제가 발생한 처리한 방식도 좋은 방식이 아니었습니다.얼마나 많은 숨겨진 문제들이 IOTA에 있는지 알수가 없습니다.
I decided to check the performance of IOTA in a real IoT case (or I try to do it) using libraries and information actually available.
나는 실제 사용 가능한 라이브러리 및 정보를 사용하여 실제 IoT 사례에서 IOTA의 성능을 확인해 보기로 했습니다.
Who mines in IOTA?
IOTA는 누가 채굴하나요?
When you want to attach a transaction in IOTA you need to mine other two transactions or you can say that your device has to spend energy for control other two transactions before sending a valid transaction on the net.
Iota에 트랜잭션을 넣기 위해서,당신은 다른 2개의 트랜잭션을 채굴하거나,당신의 IOT 장비에 내장된 장치로 전기를 소비하여 2개의 트랜잭션들을 처리하게 할수 있습니다.
How expensive is the mining on an embedded device?
이 내장장치로 마이닝 하는데에는 얼마만큼의 비용이 들어갈까요?
IOTA want to solve this problem with a specialized hardware (check on https://blog.iota.org/the-transparency-compendium-26aa5bb8e260) in order to increase the centralization of the platform.
IOTA는 이 문제를 특화된 하드웨어로 이용하게 함으로 해결할려고 하고 있습니다.이는 더욱더 중앙집중화를 증가시킵니다.
On the other hand, the function attachToTangle command needs a working node so this means you need a node (or a proxy) in order to write a transaction on the tangle.
반면에 탱글 접속 커맨드 함수는 작업 노드를 필요로하므로 탱글에 트랜잭션을 작성하기 위해 노드 (또는 프록시)가 필요합니다.
You don’t need IOTA to spam IOTA
IOTA를 사용하기 위해서 IOTA가 필요하진 않습니다.
IOTA에는 두종류의 트랜잭션이 존재합니다.
financial transactions when you move IOTA coin from one address to another one,
IOTA코인을 주소간이 이동시키는 금융적 성격의 트랜잭션.
non-financial transactions if you want just write something in the signature field (around 2KB available),
서명 필드에 무엇인가를 작성하기 위한 비금융적 성격의 트랜잭션입니다.
Do you really need IOTA coins in order to write on IOTA tangle? The answer is NO, you can write without balance but coordinator will never confirm your transactions.
IOTA 탱글네트워크에 작성을 하기위해서는 IOTA코인이 필요하할까요?대답은 아니오입니다.코인없이도 작성은 가능합니다.하지만 코디네이터는 절대로 당신의 트랜잭션을 컨펌해주자 않을 것입니다.
Install a proxy
If you don’t want to install an IOTA node on computer you can use a proxy like the one available on https://github.com/TimSamshuijzen/iotaproxy
IOTA노드를 컴퓨터에 설치하는 것을 원하지 않는다면 아래의 주소에서 사용가능한 프록시를 사용할 수 있습니다.
Remember you need a node (or this proxy) in order to run an attachToTangle command.
잊지 마십시오. 탱글접속 커맨드를 사용하기 위해서는 노드나 프록시가 필요합니다.
Write a spam transaction
스팸 트랜잭션 작성.
Now it’s time to send our useless spammy transaction, you can use the the IOTA libraries in javascript in this way.
이제 의미없는 스팸메세지를 보내 보려합니다.
아래와 같은 방법으로 자바 스크립트에서 IOTA 라이브러리를 사용할 수 있습니다.
Create the transaction structure with 0 value, a chosen address and some payload (IOTA allows you to convert a structure in a usable payload or you can write your string with capital letters).
0 값, 선택된 주소 및 일부 페이로드 (IOTA를 사용하여 사용 가능한 페이로드의 구조를 변환하거나 대문자로 문자열을 작성할 수 있음)로 트랜잭션 구조를 만듭니다.
var transfer = [{
‘address’: ‘JGPPQ9VRYGEJBVQS9HZHCVTXVJKPKBMMRFP9HRTTQUKRJRCRLITGSRRYSGEOZYTUEVWMMJKIIYTTJADNAQMDTVZWGX’,
‘value’: 0,
‘message’: ‘IOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAM
}]
Broadcast the transaction using the send transfer function.
Send transfer 기능을 사용해서 트랜잭션을 통보합니다.
// We send the transfer from this seed, with depth 4 and minWeightMagnitude 18
iota.api.sendTransfer(seed, 4, 18, transfer, function(e, bundle) {
if (e) { console.log(e); throw e; }
console.log(“Successfully sent your transfer: “, bundle);
})
After all these steps your proxy will start to communicate with an IOTA node and mines other 2 transactions before broadcast the new one.
위의 모든 단계를 가치고 나면 당신의 프록시는 IOTA노드들과 소통하기 시작하며,당신의 메세지를 통보 하기전에 다른 2개의 트랜잭션을 채굴 할것입니다.
Performances
성능
On my Mac the mining requires many minutes with GPU working at full power (means high power consumption, fan always on, …).
나의 맥컴퓨터에서의 채굴작업에 GPU카드가 풀가동 된체로 수분의 시간이 걸렸습니다.(전기소모량이 많다는 것을 뜻합니다.)
time node scam.js
Successfully sent your transfer: [ { hash: ‘TUKDJUMHCXDEJOF9YTSWFVXWXPVYWUFPXLIZQRGLOWSFJFFDXMHFYQYWBWKPZMQCJGVIEWYIKAY999999’,
signatureMessageFragment:IOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAMIOTAISASCAM999999999
address: ‘JGPPQ9VRYGEJBVQS9HZHCVTXVJKPKBMMRFP9HRTTQUKRJRCRLITGSRRYSGEOZYTUEVWMMJKIIYTTJADNA’,
value: 0,
obsoleteTag: ‘DA9999999999999999999999999’,
timestamp: 1513003518,
currentIndex: 0,
lastIndex: 0,
bundle: ‘UJJYNTJITB9INCFOKYUCQVJWOFFW9DSETKCC9JUDZQQSAWBFTGCTEUHXNWPWCLVSTKVDGJYFWAQWIHGUX’,
trunkTransaction: ‘OUVRMULABCJABSDTCXORZP9JIUWTWFGKFOANNARUAGAYXKAGMFQVILTACHWPWJHUGGACBU9NMGOA99999’,
branchTransaction: ‘LQYRIBKM9JCQOTKIDNUXIPTHDVHCTJDDUTOHW9LIUXXZTGMWQEZBKREZTZJMCCSDCCNMKCUE9FDZ99999’,
tag: ‘DA9999999999999999999999999’,
attachmentTimestamp: 1513003523259,
attachmentTimestampLowerBound: 0,
attachmentTimestampUpperBound: 3812798742493,
nonce: ‘LA99999999CLCPD999999999999’ } ]
real 6m23.499s
user 0m0.346s
sys 0m0.066s
As you can see a lot of time was spent waiting for the answer from the proxy, impossible to use this communication channel in an embedded low-power scenario.
결과에서 볼수 있듯이 프록시네서 응답에 많은 시간이 소요됐습니다.이런 상태로는 내장장치를 통한 저전력 시나리오에서의 사용은 불가능합니다.
On Raspberry PI (a real powerful platform) was almost impossible to compile all the software (libccurl expecially) and the speed . Actually IOTA is too much slow and almost impossible to use on this board.
Raspberry PI (실제 강력한 플랫폼)에서 모든 소프트웨어 (libccurl expecially)와 속도를 컴파일하는 것은 거의 불가능했습니다. 실제로 IOTA는 너무 느리고이 보드에서 사용하기가 거의 불가능합니다.
https://iotasear.ch/address/JGPPQ9VRYGEJBVQS9HZHCVTXVJKPKBMMRFP9HRTTQUKRJRCRLITGSRRYSGEOZYTUEVWMMJKIIYTTJADNAQMDTVZWGX
실험에 사용된 주소.