Wayne Wu
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    IOTA 介紹 === 甚麼是 IOTA 以及術語解說 --- ## IOTA 簡介 * IOTA 並不是物聯網(IOT)的縮寫,而是指某物非常微小的意思。 * David Sønstebø、Sergey Ivancheglo、Dominik Schiener 與 Serguei Popov 於 2015 年建立 IOTA。 * 在 2015 年末,IOTA 舉行首次貨幣募集(ICO)。在 2015 年 12 月 22 日總計籌得 1337 BTC(約為 50 萬美金)來作為專案開發之用。 * 所有的代幣(token)均售出給 ICO 投資者。 --- ## IOTA 簡介 * IOTA 團隊在德國柏林註冊並建立了 IOTA 基金會,專注於開發及標準化全新的分散式帳本技術。 * IOTA 主要專注於物聯網與 M2M 經濟,不過此科技亦適用於 P2P 支付等應用。 * Mainnet 於 2016 年 7 月 11 日上線。 * [IOTA White Paper](https://iota.org/IOTA_Whitepaper.pdf) * [中文版 IOTA 白皮書](https://hackmd.io/c/rkpoORY4W/https%3A%2F%2Fhackmd.io%2Fs%2FryriSgvAW) --- ## 貨幣總量 * 所有的 IOTA 貨幣均在一開始 ICO 時就已經全數發出,此技術沒有任何挖礦行為的參與。IOTA 總量為 ($3^{33}$-1) / 2 = 2,779,530,283,277,761 IOTAs = ~2.8 Peta IOTAs。 * 相比之下,到了 2140 年 10 月 8 日比特幣的最大總量會是 20,999,999.9769 個比特幣(約 2 千 1 百萬 BTC)挖出。在 2017 年 11 月 11 日已經挖了 16,675,488 個比特幣,這大概是全部的 79 %。 --- ## 貨幣總量 * 比特幣最大總量換算成其最小單位的話是 2,099,999,997,690,000 Satoshis = ~2.1 Peta Satoshis. * 也就是說到了 2140 年 IOTA 的總供給量仍然會相較於比特幣多約 32 %。 --- ## IOTA 特點 * 擴展性(Scalability) * 去中心化(Decentralisation) * 無交易手續費(No transaction fees) * 抵抗量子計算(Quantum computing protection) --- ## IOTA 特點:擴展性 * 網路會隨著交易數量的增加而越來越強健。 * 2017 年 4 月實驗過一次壓力測試,測試結果顯示 250 個節點所建構的網路能夠達成 112 ctps(每秒確認交易數量)。 --- ## IOTA 特點:擴展性 * IOTA 能夠達成極高的交易流量,如果有越多的交易建立,交易確認的速率也會越來越快。 ![](https://i.imgur.com/WCPhoQI.png) --- ## IOTA 特點:去中心化 * IOTA 並沒有礦工的設計,每個建立交易的人同時也是驗證交易的人,這代表每個人在建立共識的機制中均扮演相同的角色地位。 --- ## IOTA 特點:去中心化 * 相較於比特幣網路中,算力中心化地被集中在少數的礦池中:https://blockchain.info/pools ![](https://i.imgur.com/TacatFm.png) --- ## IOTA 特點:無交易手續費 * 因為 IOTA 沒有交易手續費,所以非常適合微交易(micropayment)用途。 * 你可以發送 1 iota 的交易也不會花費任何手續費。 * 1 iota 是 IOTA 最小的金額單位,相當於比特幣的 1 Satoshi 和以太幣的 1 Wei。 * 像比特幣網路中往往須收取高額的手續費則不適合用於微交易方面,尤其是手續費高於交易價值的狀況。 --- ## IOTA 特點:抵抗量子計算 * 量子計算尚在非常前期的開發階段,但目前預估此科技將會在 2030 或 2050 年發展成熟。 * 量子電腦將能夠以極快的速度破解現今大多數的資訊加密手段。 * IOTA 使用的是 Winternitz One-Time Signature Scheme 屬於能夠抵擋量子計算的演算法,詳細請參考:https://eprint.iacr.org/2011/191.pdf --- ## 區塊鏈 vs 纏結(Tangle) * 在區塊鏈的網路中(以比特幣為例),多筆交易會存在區塊中,然後區塊會連接在一起。 ![](https://i.imgur.com/xanLIIs.png) --- ## 區塊鏈 vs 纏結(Tangle) * IOTA 是第三代公開無權限(permissionless)分散式帳本,其網路所使用的為有向無環圖(Directed Acyclic Graph),IOTA 稱呼此 DAG 為纏結(Tangle)。 * 纏結的本身的架構**不是**區塊鏈。 --- ## 纏結(Tangle) * 纏結是一個基於有向無環圖的資料結構,每個方塊代表一筆交易,**每筆交易**永遠會驗證之前兩個尚未驗證完的交易。 ![](https://i.imgur.com/sQrmwQh.png) --- ## 有向無環圖 * 有向代表的是圖只會指向單一方向。 ![](https://i.imgur.com/lTSaQZT.png) * 無環代表的是圖不會形成迴圈,也就是以下情形不會發生。 ![](https://i.imgur.com/ImDmY0z.png) --- ## 纏結(Tangle) * http://iota.dance/live/ ![](https://i.imgur.com/qUBeeIK.png) --- ## TIPS * Tips 指的是在纏結中尚未確認的交易,它們是尚未開始接受驗證不過已經驗證之前兩筆交易的交易。 ![](https://i.imgur.com/aiDkn3h.png) --- ## 交易如何產生 * 產生交易需要三個步驟: 1. 簽署(Signing):節點產生交易並用你的私鑰進行簽章。 2. Tip 選擇:節點使用隨機漫步蒙地卡羅演算法(Random Walk Monte Carlo)選擇兩個尚未確認的交易(tips)。 --- ## 交易如何產生 3. 工作證明(Proof of Work):節點檢查兩筆交易是否有衝突,算出加密謎題(hashcash)來進行工作證明(PoW)。Hashcash 反覆 hash 相同資料直到 hash 找到前面有幾個 0 的特定數值,此步驟主要是為了防範女巫攻擊(Sybil Attack)。女巫攻擊是假定有半數的算力來自於惡意節點。 --- ## 隨機漫步蒙地卡羅演算法(RWMC) * 隨機漫步蒙地卡羅演算法的目標為在困難的分布狀況下能產生公平的樣本數據。 * RWMC 在此有兩個用途: 1. 產生交易時選出兩筆尚未確認的交易(tips) 2. 判斷交易是否確認完成 --- ## 交易確認 * 綠色:經由共識建立已經確認的交易 紅色:尚未被完全確認的交易 灰色:仍未開始接受確認的交易(tips) ![](https://i.imgur.com/0OicJU1.png) --- ## 交易確認 * 所有交易的目標就是變成綠色 每筆交易希望從灰色變為紅色,最後變為綠色 * 綠色的交易均間接地被**所有**灰色交易驗證 每筆確認的交易絕對存在一條路徑連接到任一 tip。 ![](https://i.imgur.com/0OicJU1.png) --- ## 交易確認 * 欲判斷交易受到確認的等級,我們需要從深度著手。所以我們用 RWMC 跑了 N 次,交易受到確認的機率就會是 M 分之 N。M 代表的是你的交易存在一條路徑連接到不同 tip 的次數。 ![](https://i.imgur.com/0OicJU1.png) --- ## 交易確認 * 假設我們執行 RWMC 100 次,而總計有 60 個 tips 存在與你的交易連接的路徑,我們就說此筆交易為 60% 確認。此比例交由賣家自行決定交易是否已確認並出貨。同樣地,比特幣也是建議高額的交易最少等待 6 個區塊確認。深度越深的交易會花越久的時間去驗證。 ![](https://i.imgur.com/0OicJU1.png) --- ## IOTA GITHUB * IOTA Reference Implementation(IRI)、錢包與 libraries 的參考連結為:https://github.com/iotaledger * IOTA Reference Implementation 是用 Java 編寫 * 目前 IRI 並不算是完成品。 * IOTA libraries 有不同的程式語言支援,像是 JavaScript、Python 以及 Go。 --- ## 完整節點(FULL NODE) * 欲架設完整節點你必須透過交換 IP 與鄰居建立聯繫。 * IP 位址建議只分享給你的鄰居以防安全。 * Peer discovery 目前有 CarrIOTA 團隊在開發。 --- ## IOTA 地址使用注意事項 * 當你用一個地址發送出交易後,你就**不要**再使用此地址來發送。每次你發送一筆交易,該地址的私鑰將會透露一部份出來,IOTA 使用的是 Winternitz one-time signature,要是重複使用地址的話私鑰被取得的機率會上升。 * 你還是能夠用同一個地址無限制地接收交易,但如果該地址已經有發送過交易的話,就不要再拿來**發送或接受**交易。 * 種子不會因此被破解,達成上述條件的地址內所擁有的資金會有危險,而不是整個種子的錢包。 --- ## 離線交易 * 一個纏結是可以暫時與網路分離的,我們稱此為分割(partitioning)。舉例來說,在一艘貨船中貨櫃的感應器因為遠洋運輸與主要纏結失去了連線,感應器是可以建立離線的纏結叢集。 ![](https://i.imgur.com/msjs99l.png) --- ## 協調器(Coordinator) * 協調器(Coo)是由 IOTA 基金會建立數個完整節點分布在網路中。它產生 0 元交易作為 milestones 提供完整節點驗證參考。 * 它的主要目的為暫時保護尚處於嬰兒期階段的網路,以防由 GPUs 產生的大範圍攻擊方式。協調器指引纏結大致上成長的方向並設立些所謂的檢察點。 * 目前網路仍可以算是去中心化的,因為節點與協調器這樣的防衛機制並沒有違反共識的規則。 * 當 IOTA 網路流量夠多且夠穩定的話,協調器將會永遠被撤離。 --- ## SNAPSHOT * Snapshot 是讓帳本資料庫保持一定大小的方式。 * Snapshot 會組合數筆地指交易至一筆紀錄,儲存非零元的餘額並移除其他交易紀錄。 * 地址中的餘額將會扮演像是創世交易的角色,但不會有之前的歷史紀錄和資料附加於其中。 * 目前 Snapshot 為手動進行,不過未來將會設計為自動完成。 * 永久節點(Permanode)將會儲存 tangle 全部的歷史紀錄和資料。 --- ## KECCAK-384 / KERL * IOTA 基於 SHA-3/Keccak 建立自己的 hash function 為 Curl-P。 * 2017 年 7 月 14 日 [DCI 團隊聲稱](https://github.com/mit-dci/tangled-curl/blob/master/vuln-iota.md)此為加密函式且有碰撞漏洞安全危機 * [IOTA 團隊聲明](https://blog.iota.org/official-iota-foundation-response-to-the-digital-currency-initiative-at-the-mit-media-lab-part-1-72434583a2)此並非加密手段而是防抄機制(Copy Protection) * 由於防抄機制發現之後,也就沒有存在的必要,2017 年 8 月 7 日 IOTA 團隊改用 Keccak-384 簡稱做 [Kerl](https://github.com/iotaledger/iri/commit/539e413352a77b1db2042f46887e41d558f575e5) 來產生地址與簽章交易 * Curl-P 仍有用在其他用途:https://github.com/iotaledger/kerl --- ## 謝謝觀賞 --- `IOTA Donation: ZDB9IS9WFPQQVLLQPREF9BSGNZUCWN9IDGOBXTGJEFIYEIJZYNHREMPAVYIDNNZUYHRBHICSXSVWZVSECTGBPNPRKB`

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully