IOTA:【メモ】周辺整理


 2018年になったということで、とりあえず今の時点でのIOTAを軽くメモ。ブラウザのお気に入りがぐちゃぐちゃになってきたので主に自分用メモが欲しかった。
 随時更新していきたい。

Tangle

Tangleネットワーク統計:Tangle metrics per minute
Tx承認:IOTA Transactions, Confirmation and Consensus
Double-Spend防止メカニズム:Without the Coordinator, how will the network decide which double-spend succeeds?

ライブラリ開発言語

公式Github: https://github.com/iotaledger
Javascript: https://github.com/iotaledger/iota.lib.js
Python(Pyota): https://github.com/iotaledger/iota.lib.py
Go: https://github.com/iotaledger/iota.lib.go
Java(Jota): https://github.com/iotaledger/iota.lib.java
Rust: https://github.com/iotaledger/iota.rs

MAM

3wi/mam.client.js:Masked Authentication Messaging wrapper for Javascript (Browser and Node)
iotawtf/IOTA-MAM.lib.js-PoC:Working Proof of Concept of IOTA's MAM technology using Live Nodes to push and receive messages inside tangle
Dutch IOTA Meetup:mam.client.js.zip
Data Integrity and Lineage by using IOTA:データの統合性・信頼性の具体的検証と考察。

API

API概要:https://iota.readme.io/docs/getting-started
APIリクエストリスト:https://iota.readme.io/v1.2.0/reference

ハッシュ関数

Curl

iota.lib.js/lib/crypto/curl/curl.js

2017年夏の脆弱性指摘

Kerl

上記脆弱性指摘後導入された。
iota.lib.js/lib/crypto/kerl/kerl.js

Kerlの用途

Kerl Specificationから引用。

Functionality Curl-P-27 Curl-P-81 Kerl
Address generation(アドレス生成) V^
Signature generation(署名生成) V
Signature verification(署名承認) V
Essence calculation (bundleHash)(Bundleハッシュ) V
Proof of Work V
Transaction Hash (トランザクションハッシュ) V
Milestone verification(マイルストーン承認) V

Curl-P-N: N number of rounds(Nは繰り返し回数)

^ CheckSums are calculated using the last 9 trytes. (チェックサムは末尾9トライト。)

Kerlの周辺

keccak 384: SHA-3

Proof of Work

トライト表

Coordinator(Coo)

 ネットワーク安定まで稼働予定の中央管理者。

フルノード

IRI

Javaで運用中:https://github.com/iotaledger/iri

データベース

 Tangleの保管はRocksDBを使用。RocksDBはNoSQLのKey-value storeの類。Facebookによってスケーラブルな分散型大規模データベース用に開発された。その元になったのはGoogleの研究者に設計されたLevelDB

RocksDBの周辺技術

スナップショット

アドレス;残高(iota)のフォーマットで下のように保管される。ディレクトリはiri/src/main/resources/。ちなみに2ヶ月前のスナップショットで5.72 MB

Snapshot.txt
XGICMHKKFQUZJMNYMTXLZGUUONOZUVWUTQ9B9NEQPIANDDOQDNSEEZAZHSPBWGVATDBCDYAFYTDXOVHGC;1472999900
PMMAEIKPLMTPDF9JCFBFMMMJQNPMVVWFMZXJBPQGEO9OYNYTKQPVBUTYSQTLUUJR9YO9VCGBLYPAGPTTB;131000000
IOVWYIUITDXNXQGREKQZBQ9FLVRONPUBWNFOUDFKJISS9OBLUSQPXZBNGMUVZUSGGLJHVTFUHCNMAIIGA;7000000
OUO9GNUTUJSTLRIWVSYVIUUNNOVDKSNTZPQBNUOGLNCPXOPERDDFTIZPJBMBPPHVYNPXCWRJQZIVUHMSX;150000000
ADWJNAWPQCSNAJHDEZYLQWMXHBVXGGEJXBPMHQGXOVOXMEQRZQRGIRZLFNDOQIRFRGZAYZGYPDEYOPFNZ;1
AONDIAZHEOTRPNSXEGJRHDKPHZCOYEOFMHBNPVKCIWEDNRGNRI9QFGNCRLHQGIFOLBHKDANVKICXQDPI9;7000000000
9TFFYBJURARXQHEBMEYGAOKKZZM9JTYE9KXTFPJQPGEWOZXTCMLDDQYM9JJROWGSTFGEPNEEXCXAAJMIA;45685204
J9DYNRAHZUMYCMFREPR9GCSBZHRXGDRFKBQP9GDRKMOQSFRXMJPGFKCOFSZZVWJPRUYMXFARIGGJFBCLD;115856972
CILYEKPLKIEYMVTOZTMKUZBRQFXBNSUKMTORKYLHYINOJRJIKGNYHQCVLEB9IFJPTMIGZUTVWBEJG9MG9;1000
HI9JBBMTRVT9OTXCAVGDJM9MYBBZWYPFRSKGA9RUNCGKMYBJGNNZGMBCHSSJRJVCUINOIMJRXVQGDZJYD;21173391742
WDXQ9SAYCGZKRITKUQXDKPOLVFXENRSEDRDLSFNIUATGLGXKLS9KEJODS9COFXOAWMPSMMWJXDXTUYAUX;100
X9WNFSPHXNWXBHVWXEIP9NEUHSJVDMZPEDYWNSCIQLNCLURKA9JWJTIXMDI9GUFCPWCOHXCQB9UMKC9ZC;1706799205
FHRVYISIPQQJVFIJGAJLGXOEPOWIWRYXQHHVIMJ9KRWBIQZAIESWQQXRXQCIJKZBHSOHITOBEHAYZMTUC;107863143
FKWST9GTGI9KIABUWAJNQOOOHWVLUCFNPSUPYKOTBGCDRPRCKZVAPDKPJBGFCKLJALLICRVK9ZLFDDJSD;1350000000
HJXNAKARDUMSIUIIJNGVJWKXDBFKKYCVYLTOEPIIHI9RUDTCVGZCTF9QQYUAJ9XGLZCXEWWPZCJULEECY;1999600
KNLCDTRDWEQOILCENC9JCEFCYZFZHCKGIXJFEDCUPM9EXNIWWORIZAAY9IROYNLLITRZRXFXDOBFBAYCD;831595877
GFF9ZONCLXNEOBQMADFTLKPUKHGOSRIEVBNJDIVUZHRXAASFUWUVPZMFZIJ9QGCMPLMTVWZLLILANODSD;206399853
...

 また、スナップショット後に使用済みアドレスを検索できなくなるのを防ぐために、previousEpochsSpentAddresses.txtというファイルも用意されている。

IXI

IRIの後継機。C++で現在開発中。

Nelson

IRIの外部モジュールとして開発された。Neighborを自動で探してP2Pを実現。初心者でも手軽にIOTAに参入できるよう最近リリースされた。
ダウンロードとチュートリアル:https://github.com/SemkoDev/nelson.cli

ウォレット

公式デスクトップ用ウォレット

Javascriptで開発。https://github.com/iotaledger/wallet

公式モバイル用ウォレット

 Androidのみ: https://github.com/iotaledger/android-wallet-app

UCL ウォレット(開発中)

 UCL(University College of London)が中心になって開発中のウォレット。正式名称はTrinity Wallet。2018年上半期には開発終了することを目標に現在アルファ版テスト中。