TrustNote 是支持挖礦的 DAG 公有鏈,具有創(chuàng)新的雙層共識機制,面向數(shù)字通證發(fā)行、區(qū)塊鏈游戲和社交網(wǎng)絡(luò)等應(yīng)用場景,基礎(chǔ)代幣稱為“TTT”。TrustNote的宗旨是“極輕、極速、極趣”。“極輕”是指 TrustNote 擁有輕量化的架構(gòu)和智能合約系統(tǒng),支持輕量級應(yīng)用擴展和微錢包;“極速”是指 TrustNote 支持高并發(fā)交易、交易確認(rèn)速度快、dApp 開發(fā)簡單上線快;“極趣”是指 TrustNote 打造的應(yīng)用生態(tài)體系,讓新奇特的想法在 TrustNote 上流暢地運行,讓使用區(qū)塊鏈成為一種生活方式。
關(guān)鍵特性
擁有雙層共識機制,是支持挖礦的 DAG 公有鏈
支持高并發(fā)交易,交易極速確認(rèn)
支持高級聲明式智能合約
數(shù)字通證發(fā)行平臺
哈希算法:BLAKE2
簽名算法:EdDSA
多平臺錢包、輕錢包、微錢包,支持第三方擴展
有向無環(huán)圖
若一個有向圖無法從某頂點出發(fā)經(jīng)過若干條邊回到該點,則稱該圖為有向無環(huán)圖(Directed Acyclic Graph,DAG)。使用 DAG 數(shù)據(jù)結(jié)構(gòu)存儲區(qū)塊鏈賬本數(shù)據(jù)的模式,正逐步受到更多開發(fā)者的關(guān)注。已有 IOTA 和 Byteball 等多個項目利用DAG 技術(shù)成功構(gòu)建了能夠穩(wěn)定運行的公有鏈,證明了 DAG 鏈的可行性。
在 TrustNote 中,交易被視為一種消息,支持多種類型的消息,多個消息可組合成一個數(shù)據(jù)塊,該數(shù)據(jù)塊稱作一個單元(Unit),單元與單元之間相互鏈接組合成一個 DAG 圖。由于單元可以鏈接到任意一個或多個之前的單元,不需要為共識問題付出更多的計算成本和時間成本,也不必等待節(jié)點之間數(shù)據(jù)強同步,甚至沒有多個數(shù)據(jù)單元拼裝區(qū)塊的概念,因此可以極大提高交易的并發(fā)量,并把確認(rèn)時間降低到最小。
TrustNote 使用以下方案解決雙花問題(一份數(shù)字貨幣被花了兩次)。首先,嘗試在 DAG 圖上找到一條以創(chuàng)世單元為起點的主鏈(Main Chain,MC),并給位于主鏈上的單元分配索引,創(chuàng)世單元索引為 0,創(chuàng)世單元的子單元索引為 1,以此類推。然后,對于不在主鏈上的單元,定義其索引等于引用此單元的第一個主鏈單元的索引。最終,DAG 上的每筆交易都擁有了一個索引。如果兩筆交易嘗試使用同一筆輸出,只需要比較其索引(Main Chain Index,MCI)的大小,小的有效,大的無效,由此解決雙花問題。例如,圖 2-2 中存在兩筆雙花交易,當(dāng)它們的 MCI 確定后,其中一筆雙花的 MCI 是 11,而另一筆雙花的 MCI 是 15。所以,我們可以認(rèn)定 MCI 為 11 的交易有效,而拒絕 MCI 為 15 的交易。
安全性方面,不同于比特幣的區(qū)塊鏈以巨大算力作保障,基于 DAG 的TrustNote 依靠交易的快速推進,以及交易之間關(guān)聯(lián)關(guān)系的不確定性作為“防火墻”,使整個系統(tǒng)毫無規(guī)則,無從攻擊。TrustNote 具有創(chuàng)新的雙層共識機制和 TrustME共識算法,利用該算法周期性地選出若干超級節(jié)點,賦予它們數(shù)據(jù)單元的公證權(quán),并會根據(jù)它們發(fā)出有效的公證單元獲得 Coinbase 獎勵。
項目對比
TrustNote 站在巨人的肩膀上,吸納現(xiàn)有區(qū)塊鏈項目的優(yōu)點,解決它們的突出問題,構(gòu)建更加繁榮的應(yīng)用生態(tài)。TrustNote 采用創(chuàng)新的雙層共識機制,具有高安全性的密碼算法,以挖礦的方式使超級節(jié)點參與單元公證。TrustNote 與當(dāng)下知名 DAG 鏈(IOTA 和 Byteball)進行了橫向?qū)Ρ龋瑢Ρ冉Y(jié)果如表 2-1 所示。
共識機制
TrustNote 采用雙層共識機制,該共識機制包括基礎(chǔ)共識和公證共識?;A(chǔ)共識是指節(jié)點發(fā)送的新交易單元對舊交易單元的驗證與引用,也稱“DAG 共識”;公證共識是指根據(jù)公證節(jié)點提交的公證單元嚴(yán)格確定其它單元的順序,也稱“TrustME 共識”。這種雙層共識機制有利于提供較高的交易吞吐量和較短的交易確認(rèn)時間,能有效解決過度分叉和雙花問題。
為使 TrustNote 生態(tài)更加健壯,我們設(shè)計了兩種 TrustME 共識方案。TrustNote將在早期采用基于工作量證明(Proof of Work,PoW)的 TrustME 共識方案,該方案稱為“TrustME-PoW”;未來,TrustNote 計劃采用基于拜占庭協(xié)商(ByzantineAgreement,BA)的 TrustME 共識方案,該方案稱為“TrustME-BA”。無論哪種方案,若超級節(jié)點參與共識并被選作公證節(jié)點,它將會獲得 TTT 作為獎勵。
在 TrustME-PoW 中,超級節(jié)點通過證明自己的運算能力獲得公證權(quán),而在TrustME-BA 情況下,利用偽隨機算法選擇超級節(jié)點并賦予其公證權(quán)。無論哪種TrustME 共識方案,公證節(jié)點發(fā)出的公證單元都同樣遵守單元引用規(guī)則,并且不會影響其它單元之間已經(jīng)建立的引用關(guān)系。而只有在公證單元成為主鏈上的穩(wěn)定單元后,才能最終證明某個公證節(jié)點做了有益于維護 TrustNote 的工作,并因此獲得公證獎勵。另外,兩種 TrustME 共識機制都鼓勵所有節(jié)點公平參與,相比中心化和弱中心化的方案更加公平、可信、安全。
1.節(jié)點
TrustNote節(jié)點有四種類型,分別為超級節(jié)點(super node)、全節(jié)點(full node)、輕節(jié)點(light node)和微節(jié)點(micro node),節(jié)點對比如表 4-1 所示。
TrustNote 具有與比特幣相似的 P2P 網(wǎng)絡(luò),每一個節(jié)點可選擇一組隨機的 peer節(jié)點,并利用 Gossip 協(xié)議來傳播消息。為了保證消息不被偽造,每一個消息都被原始發(fā)送者的私鑰簽名,其它節(jié)點在轉(zhuǎn)發(fā)它之前要驗證簽名是否有效。為了避免消息傳播出現(xiàn)前向回環(huán),節(jié)點不會轉(zhuǎn)發(fā)重復(fù)的消息。
成為 TrustNote 超級節(jié)點,需滿足以下條件:
有資源:具有良好的網(wǎng)絡(luò)帶寬、存儲空間和運算能力,最好擁有公網(wǎng) IP;
有幣:在多個共識周期內(nèi)平均持有一定數(shù)量的 TTT;
有信用:之前提交的所有單元都被認(rèn)為是有效的。
成為超級節(jié)點之后,可參與 TrustME 共識,進而成為公證節(jié)點。公證節(jié)點可通過發(fā)送公證單元獲得公證獎勵并能賺取普通單元的公證費。
單元引用
TrustNote 中每個單元可引用多個彼此之間沒有父子繼承關(guān)系的單元,而且新的子單元會優(yōu)先鏈接有更多父單元的單元。如果沿著某個父單元向子單元方向推進,當(dāng)一個單元被多個子單元引用時,我們將觀察到許多分叉,而當(dāng)多個父單元被同一個子單元引用時,這些單元將逐漸匯聚。
引用父單元的目的是建立單元之間的模糊次序。引用父單元之前,需要驗證父單元有效性,如簽名是否有效、單元引用是否合規(guī)等。TrustNote 不要求節(jié)點之間強同步,不同節(jié)點看到的 DAG 鏈圖存在臨時性的不一致,但這并不會破壞已經(jīng)建立的父子關(guān)系,只可能會使一個父單元有多個子單元。而正因為不追求節(jié)點之間的單元數(shù)據(jù)強同步,TrustNote 可以容忍高交易吞吐量和網(wǎng)絡(luò)延遲。
為減少 DAG 中可能出現(xiàn)的垃圾單元,所有節(jié)點提交新單元時需要支付交易費。交易費分成兩部分,分別支付給將該單元作為父單元的節(jié)點以及為該單元提供公證的節(jié)點。若一個單元被多個子單元引用,那么發(fā)送擁有最小哈希值單元的節(jié)點獲得引用獎勵。同時,限制獲得引用獎勵的子單元的 MCI 值應(yīng)等于或略大于其父單元的 MCI,激勵節(jié)點盡可能快地引用更多最新的父單元,以獲得更多引用獎勵。這有助于 DAG 快速收斂,減少分叉。
3.主鏈
主鏈?zhǔn)窃谥付▎卧姷?DAG 圖中沿著子-父鏈接找到一個單鏈,可以把所有單元都關(guān)聯(lián)在一起。所有的單元要么直接在這條主鏈之上,要么從主鏈上的單元沿著 DAG 的邊緣通過少量的跳躍可以到達。如果我們從另一個頂點開始,我們會構(gòu)建另一條主鏈。如果以相同的規(guī)則在兩個不同的頂點選擇主鏈,這兩條主鏈在回溯過程中一旦相交,它們會在交點之后完全重合。最壞的情況,兩條主鏈在創(chuàng)世單元相交。雖然節(jié)點生成單元的過程中是相互獨立的,也不存在任何協(xié)調(diào)的可能,我們?nèi)云谕麈溨g的交點可以盡可能的靠近頂點。
一旦某單元選擇出一條主鏈(MC),它就可以在兩個沖突的無序單元之間建立總序。首先,給直接位于主鏈上的單元做個索引,創(chuàng)世單元索引為 0,創(chuàng)世單元的子單元索引為 1,以此類推,沿著主鏈給主鏈上的所有單元分配索引。對于不在主鏈上的單元,我們找到第一個直接或間接引用此單元的主鏈單元。這樣,就給每一個單元分配了一個主鏈索引(MCI)。然后,給定兩個單元,擁有較小MCI 的單元被認(rèn)為是更早生成的。如果兩個單元的 MCI 恰好相同并且存在沖突,則擁有較小哈希值的單元有效。TrustNote 會保留雙花的所有單元,包括最終認(rèn)定無效的單元。
主鏈構(gòu)建過程實際上是父單元選擇算法的遞歸調(diào)用過程。通過參與 TrustME共識,超級節(jié)點有機會成為具有公證權(quán)的節(jié)點,可以發(fā)送公證單元。通過比較可選路徑中公證單元的數(shù)量,父單元選擇算法能在給定的所有可選父單元中選出一個作為“最優(yōu)父單元”。對于不同節(jié)點,主鏈構(gòu)建過程是完全獨立的,僅依賴于節(jié)點自身能看到的 DAG 圖。從 DAG 圖的無子單元開始,沿著最優(yōu)父單元的路徑做歷史回溯,節(jié)點可以構(gòu)建一條能通達創(chuàng)世單元的主鏈。
4.交易確認(rèn)
當(dāng)獲得新的單元時,每一個節(jié)點會持續(xù)追蹤自身的當(dāng)前 MC,好像他們將要基于當(dāng)前的所有無子單元構(gòu)建新單元。不同節(jié)點各自的當(dāng)前 MC 也許不同,因為它們有可能看到不同的非穩(wěn)定單元集合。而當(dāng)新單元到達時,當(dāng)前 MC 會不斷變化。然而,當(dāng)前 MC 的足夠老的那部分會保持不變。
未來所有的 MC 在回溯時將會匯集某個 MC 單元,這個 MC 單元以及之前的所有 MC 單元都是穩(wěn)定的,不會因為新單元的到來而改變。事實上,創(chuàng)世單元是一個天然的初始穩(wěn)定節(jié)點。假設(shè)我們已經(jīng)基于當(dāng)前的非穩(wěn)定單元集合構(gòu)造了一條當(dāng)前 MC,并且這條鏈上已經(jīng)有一些之前認(rèn)定穩(wěn)定的節(jié)點,也就是說未來的當(dāng)前 MC 都被相信會在這個點或早于這個點匯集,然后就沿同一條路徑回溯。如果我們能找到一個方法,把這個穩(wěn)定點向遠(yuǎn)離創(chuàng)世單元的方向推進,就可以根據(jù)數(shù)學(xué)歸納法證明這個穩(wěn)定點存在。而被這個穩(wěn)定點所引用的單元將獲得確定的 MCI,包含在這些單元中的所有消息也將被確認(rèn)。
5.交易費與挖礦獎勵
發(fā)布交易需要支付交易費,節(jié)點根據(jù)生成單元的字節(jié)數(shù)計算交易費。交易費被分成兩部分,60%作為單元引用費,40%作為公證費。引用費將被該單元的子單元獲得,而公證費將被累加到主鏈中 MCI 值最接近的公證單元所在共識輪的公證獎金池。公證單元也需要支付交易費,交易費計算方法與普通單元相同。公證單元包含較多信息,通常比普通單元占用更大的存儲空間,因而交易費也相對較高,激勵其它節(jié)點引用公證單元。
在 TrustNote 中,DAG 鏈的增長與 TrustME 共識是異步的,每輪共識會選舉出多名公證人,這些公證人有權(quán)提交公證單元。在主鏈沒有穩(wěn)定的情況下,無法確定哪些公證單元在主鏈上,也無法計算公證單元的有效引用,所以沒辦法像比特幣一樣直接給出 Coinbase。當(dāng)某共識輪的所有公證節(jié)點發(fā)出的所有公證單元都成為穩(wěn)定單元后,才能確定該共識輪的每個公證節(jié)點分別可以獲得多少公證獎金。需要說明的是,普通單元也可能會出現(xiàn)在主鏈中,它們可能會獲得父單元支付的引用費,但不會分享公證獎金。
TrustME 共識周期性地執(zhí)行,每輪都會選出一定數(shù)量的公證節(jié)點。如果某輪公證節(jié)點發(fā)送的所有公證單元都成為穩(wěn)定單元,則稱該輪共識穩(wěn)定。每個公證單元的第一個消息是公證節(jié)點自身的公證權(quán)證明。每次達成 TrustME 共識后,當(dāng)前輪公證節(jié)點生成的首個公證單元必須包含最新穩(wěn)定共識輪的 Coinbase。需要說明的是,最新穩(wěn)定共識輪的 Coinbase 在進行新一輪 TrustME 共識時已經(jīng)確定,是TrustME 共識算法的輸入變量之一。在同一共識輪內(nèi),由不同公證節(jié)點生成的其它公證單元不再包含上述內(nèi)容,而是通過驗證并引用首個公證單元的方式確認(rèn)穩(wěn)定共識輪的 Coinbase 內(nèi)容。這樣做可以進一步削弱公證節(jié)點的能力,防止惡意的超級節(jié)點通過多次獲得公證權(quán)干擾穩(wěn)定共識輪公證節(jié)點的 Coinbase 收益。
6.TrustME-PoW
TrustME-PoW 是基于工作量證明選擇公證節(jié)點的共識機制,每輪共識將選擇少量節(jié)點成為公證節(jié)點,并確定相關(guān)公證節(jié)點的優(yōu)先級。TrustME-PoW 共識算法每五分鐘執(zhí)行一次,每次達成共識會選出不超過二十個超級節(jié)點作為公證節(jié)點,這些公證節(jié)點有權(quán)發(fā)送公證單元并以此獲得公證獎勵。
TrustME-PoW 基于 Equihash 算法,以 BLAKE2 為底層哈希函數(shù),降低使用ASIC 挖礦的優(yōu)勢,更多超級節(jié)點可以公平參與挖礦,使超級節(jié)點成為公證節(jié)點的概率分布更加合理。Equihash 算法的輸入為當(dāng)前輪數(shù)、種子和難度系數(shù)等內(nèi)容。當(dāng)前輪數(shù)起始為 0,每輪加 1;每輪共識的種子根據(jù)上一輪共識的種子和取得的共識結(jié)果計算得出,種子可被公開獲得及驗證;難度系數(shù)根據(jù)全網(wǎng)平均算力推算得出,通過調(diào)整難度系數(shù)可以控制達成共識的平均時間間隔。
公證單元必須滿足前文所述的單元引用規(guī)則。公證單元只能引用非穩(wěn)定單元,并且必須驗證引用單元及其“子-父”鏈的正確性,直到驗證到穩(wěn)定的 MC 單元。鼓勵公證單元引用多個非穩(wěn)定狀態(tài)的最優(yōu)父單元,加速單元穩(wěn)定,促使 DAG 鏈向前推進并收斂。
只有公證單元成為主鏈上的單元,才能獲得相應(yīng)的公證獎勵。同一共識輪內(nèi),所有主鏈上公證單元按照各自的有效引用單元數(shù)量計算當(dāng)前共識輪公證獎金的分配比例。每個公證單元在成為主鏈單元并穩(wěn)定之后,計算出該公證單元的有效引用數(shù)量。公證節(jié)點直接引用自己發(fā)送的公證單元或普通單元不計為有效引用,防止公證節(jié)點之間惡意爭奪獎金,發(fā)送無意義單元。
7.TrustME-BA
TrustME-BA 是一種基于可驗證隨機函數(shù)(Verifiable Random Function,VRF)和 BA 算法構(gòu)建的共識機制,該共識機制能夠隨機選出少量超級節(jié)點作為公證節(jié)點,并確定公證節(jié)點的優(yōu)先級。
TrustME-BA 每一分鐘執(zhí)行一次,每次達成共識將隨機選出若干超級節(jié)點作為公證節(jié)點,公證節(jié)點有權(quán)發(fā)送公證單元,公證單元須滿足 DAG 共識中的父子引用規(guī)則。公證節(jié)點發(fā)送的公證單元成為穩(wěn)定主鏈的單元后,該公證節(jié)點可以獲得公證獎勵。當(dāng)交易活躍時,新單元不斷產(chǎn)生,則公證節(jié)點會及時獲得公證獎勵;當(dāng)交易不活躍時,極端情況下一分鐘內(nèi)沒有新單元產(chǎn)生,已經(jīng)發(fā)送公證單元的節(jié)點在發(fā)送的公證單元成為穩(wěn)定主鏈單元時獲得公證獎勵,沒有發(fā)送公證單元的節(jié)點不獲得公證獎勵。
智能合約
TrustNote 擁有非圖靈完備的聲明式智能合約系統(tǒng),支持布爾運算、數(shù)學(xué)運算、合約數(shù)據(jù)存儲,不支持棧和跳轉(zhuǎn)指令。這種智能合約語言能直接描述合約期望的目標(biāo),表達能力強,易于理解,安全性高。與以太坊相比,TrustNote 的智能合約系統(tǒng)具有復(fù)雜度低、輕量化和高性能等優(yōu)勢,同時還降低了合約編寫難度和出錯概率。
TrustNote 沒有賬戶的概念,TTT 以 UTXO 的形式存儲在不可篡改的分布式賬本的數(shù)據(jù)單元中。在 TrustNote 的智能合約語言里,地址定義是一個布爾表達式,可計算出是 true 或者 false 的結(jié)果。智能合約的所有表達式,最終都會計算出一個布爾值,多個子表達式可以通過布爾操作聯(lián)合起來。例如,下面這個定義需要兩個簽名。
[“and”, [
[“sig”, {pubkey: “one pubkey”}],
[“sig”, {pubkey: “another pubkey”}]
]]
為了花費與以上定義地址的資金,必須同時提供兩個簽名。我們使用 JSON來編寫表達式,可以使用具備很好支持的、已經(jīng)過優(yōu)化的 JSON 解析器。
“Or” 操作可以用來描述需要提供任意一個公鑰所對應(yīng)私鑰的簽名。
[“or”, [
[“sig”, {pubkey: “l(fā)aptop pubkey”}],
[“sig”, {pubkey: “smartphone pubkey”}],
[“sig”, {pubkey: “tablet pubkey”}]
]]
可以用以上定義實現(xiàn)在三個不同設(shè)備上可以控制同一個 address,這三個設(shè)
地址定義的指令可以嵌套,如:
[“and”, [
[“or”, [
[“sig”, {pubkey: “l(fā)aptop pubkey”}],
[“sig”, {pubkey: “tablet pubkey”}]
]],
[“sig”, {pubkey: “smartphone pubkey”}]
]]
地址定義可以要求一個集合中參與者必須達到某個閾值,例如 2-3 簽名。
[“r of set”, {
required: 2,
set: [
[“sig”, {pubkey: “l(fā)aptop pubkey”}],
[“sig”, {pubkey: “smartphone pubkey”}],
[“sig”, {pubkey: “tablet pubkey”}]
]
}]
上面的表達式意味著任意兩個簽名便可以使表達式為真。如果一個密鑰丟失了,這個地址仍然可用,并且能夠修改這個定義,給丟失的密鑰設(shè)置一個新值。
另外,不同條目可以賦予不同的權(quán)重,并可以設(shè)定一個最小權(quán)重要求。
[“weighted and”, {
required: 50,
set: [
{weight: 40, value: [“sig”, {pubkey: “CEO pubkey”}] },
{weight: 20, value: [“sig”, {pubkey: “COO pubkey”}] },
{weight: 20, value: [“sig”, {pubkey: “CFO pubkey”}] },
{weight: 20, value: [“sig”, {pubkey: “CTO pubkey”}] }
]
}]
地址定義可以引用其它地址。
[“and”, [
[“address”, “ADDRESS 1 ”],
[“address”, “ADDRESS 2”]
]]
這種定義意味著把簽名委托給其它地址,這對于構(gòu)造共同控制的地址是很有用處的。這種語法給予了用戶很多方便,他們能根據(jù)自己的意愿去改變他們自己有權(quán)管理的那部分地址的定義,而不會影響別的用戶。
地址定義可以用來配備添加到 DAG 中的數(shù)據(jù)。
[“in data feed”, [
[“ADDRESS1”, “ADDRESS2”, …],
“data feed name”,
“=”,
“expected value”
]]
如果由某地址添加到 DAG 的數(shù)據(jù)反饋結(jié)果與期望值相等,則表達式的結(jié)果為 true。通過指定數(shù)據(jù)反饋的來源,可以實現(xiàn)鏈上預(yù)言機功能。利用鏈上預(yù)言機可以擴展出非常強大的功能。
[“or”, [
[“and”, [
[“address”, “ADDRESS 1”],
[“in data feed”, [[“EXCHANGE ADDRESS”], [“EURUSD”, “+”, “0.200”], “》”,
“1.1500”]]
]],
[“and”, [
[“address”, “ADDRESS 2”],
[“in data feed”, [[“TIMESTAMPER ADDRESS”], “datetime”, “》”, “2016-10-01
00:00:00”]]
]]
]]
上面的表達式依賴兩個預(yù)言機,一個會發(fā)布?xì)W元/美元的匯率,另外一個會發(fā)布時間。首先,雙方為這個表達式定義的地址準(zhǔn)備資金,向這個地址支付各自相應(yīng)的份額。然后,如果由兌換地址公布的歐元/美元匯率加上 0.200 曾經(jīng)超過1.150,則地址 1 將得到全部資金。如果在 2016 年 10 月 1 日之前,以上情況沒有發(fā)生,則地址 2 將得到全部資金。另外一個有趣的例子中,消費者向商人購買貨物,但是他不是很信任商人,如果貨物沒有發(fā)給他,希望錢可以退還給自己。
此時,消費者可以把錢付給用以下方式定義的一個共享地址。
[“or”, [
[“and”, [
[“address”, “MERCHANT ADDRESS”],
[“in data feed”, [[“FEDEX ADDRESS”], “tracking”, “=”, “123456”]]
]],
[“and”, [
[“address”, “BUYER ADDRESS”],
[“in data feed”, [[“TIMESTAMPER ADDRESS”], “datetime”, “》”, “2016-10-01
00:00:00”]]
]]
]]
這個定義有效的前提是 FedEx 會在鏈上存儲包裹的單號。如果貨物發(fā)放了,根據(jù)第一個條款,商人可以解鎖資金。如果在商定的日期之前,貨物沒有發(fā)放,消費者可以拿回自己的資金。
地址定義可以實現(xiàn)交易查詢。假定用戶想購買至少 1200 個單元的數(shù)字資產(chǎn),但是只愿意支付 1000 TTT,而且他不愿意一直在線等待賣家。他可以只在交易平臺發(fā)布一個訂單,當(dāng)匹配的賣家出現(xiàn)時,自動完成交易。他可以按照以下方式創(chuàng)建地址,并發(fā)送 1000 TTT 到該地址。
[“or”, [
[“address”, “USER ADDRESS”],
[“and”, [
[“address”, “EXCHANGE ADDRESS”],
[“has”, {
what: “output”,
asset: “ID of alternative asset”,
amount_at_least: 1200,
address: “USER ADDRESS”
}]
]]
]]
第一個或條件的含義是用戶在任何時候都可以撤銷訂單,拿回他的 TTT。第二個或條件當(dāng)滿足條件的交易出現(xiàn)后,將 TTT 付給委托交易平臺,授權(quán)它來花費資金。交易平臺會公開發(fā)布訂單信息,賣家可以查看訂單列表,生成一個交換資產(chǎn)交易,并且和交易平臺一起簽名。
發(fā)行量和分發(fā)規(guī)則
TTT 是 TrustNote 基礎(chǔ)代幣的簡稱,單位是 Mega Notes (MN)。
發(fā)行總量:1,000,000,000 MN,無增發(fā),500,000,000 MN(占比 50%)為初始分發(fā),投資兌換的方式分發(fā);500,000,000 MN(占比 50%)為公證獎金,可挖礦獲得。支持 PoW 挖礦的主鏈預(yù)計于 2018 年 Q4 正式上線,屆時用戶可以下載和使用挖礦客戶端,并申請成為超級節(jié)點,通過積極參與主鏈共識獲得公證權(quán),通過發(fā)布有效的公證單元獲得公證獎勵。
公證獎勵策略為首年提供總公證獎金的 6.79%,之后公證獎金逐年衰減,衰減情況參見圖 7-1。其中,公證獎金的 90%分配給提供有效公證單元的超級節(jié)點,公證獎金的 10%分配給基金會,用于社區(qū)運維、項目孵化、貢獻者獎勵等。
TrustME-PoW 共識平均每 5 分鐘一輪,每年共約 10 萬輪,每輪公證獎金總量 = 公證獎金*90% + 單元公證費。
? 第一年,每輪公證獎金約為 323.04 MN;
? 第二年,每輪公證獎金約為 262.39 MN;
? 第三年,每輪公證獎金約為 232.34 MN。
評論
查看更多