Dash币中PrivateSend 的过程

钱包准备过程

  1. 钱包首先将需要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继续转到自己钱包.

  2. 将钱包中的钱拆分后发送到钱包地址中,但是这笔交易并没有发布,这是为了进行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

MPEG-DASH是一种基于HTTP的流媒体传输协议,可以实现高质量的音视频传输。下面是MPEG-DASH实现过程: 1. 视频编码:将视频文件进行压缩编码,生成MPEG-DASH所支持的编码格式,如H.264。 2. 切片:将编码好的视频文件按照特定的时长(通常为2秒)切分成多个分段,每个分段称为一个切片。 3. 生成清单:生成一个MPEG-DASH清单文件,该文件包含了所有切片的URL地址和时长信息,以及视频的元数据信息。 4. 服务器部署:将生成的切片和清单文件上传至服务器,部署MPEG-DASH流媒体服务。 5. 客户端请求:用户通过浏览器或移动设备请求MPEG-DASH视频。 6. 清单请求:客户端请求MPEG-DASH清单文件,获取视频的URL地址和时长信息。 7. 切片请求:客户端根据清单文件的URL地址请求视频切片,服务器返回对应的切片。 8. 播放:客户端按照清单文件的时长信息和URL地址,依次请求和播放所有的视频切片,实现高质量的音视频传输。 9. 动态调整码率:根据网络带宽和设备性能,客户端可以动态调整视频的码率和分辨率,以达到最佳的播放效果。 总的来说,MPEG-DASH实现过程就是将视频文件进行编码、切片,生成清单文件,部署到服务器上,客户端请求清单和切片,实现视频的播放。同时,MPEG-DASH还支持动态码率调整,提高了视频的播放效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值