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年夏の脆弱性指摘
- 概要:Cryptographic vulnerabilities in IOTA By Neha Narula
- 詳細レポート:IOTA Vulnerability Report: Cryptanalysis of the Curl Hash Function Enabling Practical Signature Forgery Attacks on the IOTA Cryptocurrency By Ethan Heilman (Boston University, Paragon Foundation, Commonwealth Crypto), Neha Narula (MIT Media Lab), Thaddeus Dryja (MIT Media Lab, Lightning Network Dev), Madars Virza (MIT Media Lab, Zcash)
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
- APIリクエストをさばくところ:iri/src/main/java/com/iota/iri/service/API.java
- TangleのDBプロバイダー:iri/src/main/java/com/iota/iri/storage/rocksDB/RocksDBPersistenceProvider.java
- Node.java:iri/src/main/java/com/iota/iri/network/Node.java
データベース
Tangleの保管はRocksDBを使用。RocksDBはNoSQLのKey-value storeの類。Facebookによってスケーラブルな分散型大規模データベース用に開発された。その元になったのはGoogleの研究者に設計されたLevelDB。
RocksDBの周辺技術
- Level DB: LevelDB入門 (基本編)
- Level DB Python:PythonでLevelDBを使ってみる(plyvel)
- Column Family: Understand the Cassandra data model
- Log-structured merge-tree: LSM-TreeとRocksDB、TiDB、CockroachDBが気になる
スナップショット
- スナップショットを取る方法:https://github.com/iotaledger/Snapshot.ixi
- スナップショットコード:iri/src/main/java/com/iota/iri/Snapshot.java
アドレス;残高(iota)のフォーマットで下のように保管される。ディレクトリはiri/src/main/resources/。ちなみに2ヶ月前のスナップショットで5.72 MB。
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年上半期には開発終了することを目標に現在アルファ版テスト中。