Dash币中PrivateSend 的过程
錢包準備過程
錢包首先將需要PrivateSend的UTXO中的value拆分,拆分成Private Send需要的面額. 具體來說,就是錢包往自己的地址進行轉賬,UTXO中的錢拆分成10.001, 1.00001, 0.100001,0.0100001, 0.00100001 五種面額. 例如,假如你的錢包有20個Dash, 錢包會拆分成1個10.0001和9.9999的Dash, 繼續對剩下的Dash拆分成9個1.00001Dash…, 超出5中面額拆分范圍之后剩余的Dash繼續轉到自己錢包.
將錢包中的錢拆分后發送到錢包地址中,但是這筆交易并沒有發布,這是為了進行PrivateSend時的collateral, collateral用來支付mixing的費用.
注意: 上述的操作和其他交易一樣,拆分時需要提供交易費.
創建Collateral的過程
PrivatreSend collaterals用來支付mixing的費用,但是與denominations過程分離,以最大保證用戶隱私. 在Dash 70213協議以后, collateral 費用最少是五種面額中最低面額的1/10, 也就是0.000100001, 在DashCore中, collaterals最少應該是0.004Dash.
PrivateSend Mixing
-
用戶決定進行PrivateSend之后,向masternode發送一個dsa 的消息,請求加入到當前mixing pool中,如果當前存在mixing queue,masternode會試圖將用戶的請求加入mixing queue中,否則master會新建一個mixing queue.當用戶提出PrivateSend請求時,必須攜帶一個已簽名的collateral 交易. 一般來說, 33%的概率masternode需要新建一個mixing queue.
-
master會向用戶錢包返回一個dssu的消息, dssu中包括當前mixing的進度, mixing pool 中用戶個數, 是否接收用戶的請求等信息.
-
當接收用戶的mixing請求后,當master準備好后,會繼續給用戶一個dsq, 告知用戶mixing queue的進度, 以及何時進行簽名等消息. 如果消息指示隊列未就緒,則節點將驗證消息是否有效。它還驗證masternode沒有用dsq消息淹沒網絡,試圖控制排隊過程。然后,它將消息轉發給其連接的對等方。在70214協議中,每次mixing session中參與值最少3個,至多5個.而在此之前,每次mixing的過程中是固定了了3個參與者.(注意:協議70214指的是,運行dash-cli getinfo命令時得到的錢包的一些信息,如下圖中顯示的"protocolversion"字段) ?
-
如果隊列就緒,那么每個收到dsq的用戶都會給masternode回復一個dsi消息. 每個用戶都會向masternode提供一個未簽名的inputs列表, 一個已經簽名的collateral 的轉賬交易,以及接收inputs的地址列表.collateral轉賬交易用來防止用戶作惡,另外也是為了隨機的進行收取mixing 費用.每個用戶最多提供9個intpus和9個outputs進行mixing.這個mixing的過程,只有用戶和masternode知道其中的inputs和outputs,其他人無法看到這些信息. 如果用戶在30秒中內沒有對masternode的dsf消息進行回復, 用戶則會丟掉用戶的押金.
-
masternode 收到每個用戶的dsi消息之后, masternode開始進行mixing,會給用戶返回一個dssu消息, 告知用戶當前mixing的進度, mixing pool中用戶數等消息.
-
當到達最后一輪mixing transaction時,masternode會向用戶發送dsf, dsf消息包括最后一輪mixing的交易, 但是這個交易中的input沒有簽名.
-
同時也會向用戶發送dssu消息以告知當前狀態.
-
用戶收到dsf消息之后,對其中的交易進行檢查是否符合要求, 如果符合要求,隨后向masternode返回一個dss消息, 在該消息中,對沒有簽名的input進行簽名,隨后發送給masternode.如果用戶在15秒中內沒有對masternode的dsf消息進行回復, 用戶則會丟掉用戶的押金.(ps:我想是masternode會發布用戶的之前的collateral trx),這樣來減少用戶的作惡行為.
-
masternode收到用戶的dss消息后,會對驗證所有的簽名,隨后回復用用戶一個dsc消息, 同時還會廣播一個dstx的消息以通知用戶mixing, 用戶如果收到dsc消息,則表明privateSend已經完成. dstx的消息只能由masternode發布,并且這個消息中交易的交易費用為0. dstx中帶有證明masternode身份的簽名信息.dsc消息主要包括mixing session的id等信息.
注意: 上述消息中,除了dsq和dstx消息需要廣播之外,其他的信息都是masternode和用戶之間單獨通信,沒有第三方參與.
參考
https://dash-docs.github.io/en/developer-guide#privatesend
總結
以上是生活随笔為你收集整理的Dash币中PrivateSend 的过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mac安装unrar解压rar的文件
- 下一篇: 项目客制化文档