赞
踩
化名:在交易的时候不使用真实的姓名
匿名:或者在交易的时候完全不使用任何名字。
在计算机中的定义,匿名指的是具有无关联性(unlinkability
)的化名。
做到更强的匿名性,应该做到以下几点:
时间以及实际的增加或者减少币的量所带来的的统计分析都可能暴露身份
努力地做到更有限度的匿名性:
想象一个特定的攻击者的情况,你的交易匿名集(anonymity set)是指该攻击者无法把你的交易从其中分辨出来的交易集合。即使该攻击者知道你完成了一个交易,但是他也仅仅知道这个交易是某一个合集中的一个,但并不能确定是哪一个。
努力去最大化这个匿名合集
交易记录被公开在区块链中,而身份信息是匿名的
将技术手段与一种明智的激励机制相结合,做到了去中心化
比特币如何做到去中心化这个问题拆解如下:
点对点是极好的去中心化的实现,任何一个人都可以运行一个比特币节点,不需要与一个核心机构进行认证,而且基本没有什么入门门槛,下载客户端→运行相关软件,但是存在的问题就是:挖矿需要极大的算力,并不是每一个人每一个机器都有很好的算法,所以算力依旧集中在每一个算力强大的中心里——这样就又有中心化倾向了,所以如何解决这样一个中心倾向就是很关键的问题了;
直观的感觉:将财奴币进行去中心化
目的:建立一个分布式的电子现金系统主要就是建立分布式共识
但是比特币发展到现在建立一个分布式的电子现金系统的关键技术问题,就在于要达成分布式共识
意义:建立了分布式共识的系统之后,我们可以使用key-value键值对的方式将一些重要的信息存储起来,
key | value |
---|---|
开启键 | 身高 |
开启键 | 名字 |
开启键 | … |
IP | 域名 |
公钥(当做用户的身份) | 电子邮件 |
分布式协议具有的属性:
理解比特币交易在分布式系统中的表示意义:
比特币是个点对点的系统;
当爱丽丝向鲍勃付款的时候,她其实是在向构成比特币网络上的所有节点广播其交易行为。
与常识相悖的地方:
对区块共识做出的设计以及不足的地方:
从上图可以直达,比特币协议达成共识时必须直面两大障碍:
不好的网络导致最明显的结果就是在各个节点的时间不同步,就像各个联网手表之间会有时间的差异,因为联网的时间有延时的原因,而随着科技的发达也使得差异越来越小,这也侧面验证了这个结论。
从时间不同步的角度就产生了不可能系统的结论,但是这种不可能共识是建立在一个通用的系统情况下。所以有人做出了在特定货币下使得共识机制做到可能。那么他引入了那些不一样的概念呢?
如何相对解决这一问题呢?我们从生活中得出一点启发,就是比如你去买一个体育彩票,你会发现你需要身份证就可以买中奖了还能够去兑,那为什么能够这么做呢,可以试着回想一下买完体育彩票之后老板给了你什么,没错他给了你一个纸条上面就有一长串的特征码。
放到区块链中,我们为了防止女巫攻击的话,就需要采取一定的措施,在彩票或者区块确认发放的时候,固然黑客产生了很多女巫,但是这些女巫最终只能得到一个彩票或者区块。——关键看这个假设如何成立,如何聪明的设置交易确认发放过程
对付恶意节点的隐形共识实现:
新的交易被广播到所有节点上。
每个节点都将新的交易放进一个区块。
在每个回合,一个随机的节点可以广播它的区块。
其他节点可以选择接受这个区块,前提是如果区块里的交易都是正当的(有真的签名)。
节点们可以把以上区块的哈希值放进自己的区块里,以此来表示它们对那个新区块的认可。
为何这样的共识算法是有效的?——通过模仿攻击去验证是否有效
窃取比特币
拒绝服务攻击
双重支付攻击
产生的原因是:
过程:
图示如下:
增强双重支付攻击成功的概率的方式:
假设一个恶意黑客控制了发起下一个区块的节点。但如果鲍勃允许爱丽丝在没有收到区块链一条确认信息的情况下就下载软件,那么爱丽丝可以立刻广播一条双重支付交易,一个诚实节点就有可能把这个交易放进下一区块,而不是支付给鲍勃的那笔交易。
防止双重支付的一种方式:
事实证明:双重支付攻击成功的概率将随着确认的数目的增加而指数级降低。
总结:
因为在区块链中本身是没有身份的,当你确认他是恶意节点之后,想要对他做出惩罚,这时候你再想要去惩罚他这是不现实的因为找不到他。
而当他形成区块链时我们是可以将本身交易的比特币奖励一些给他的,所以之所以是奖励机制这是从可行性来看的
以这种货币为单位奖励那些表现诚实的节点。
就像之前的双重支付攻击一样,不过那个是爱丽丝自己想偷偷多使用比特币一次,而这里的奖励则是官方拿出一部分额度允许节点去造币,然后指向自己的地址。最终所造的币就是属于自己的了。但是多少以及额度都是有规定的,规定如下:
最终达到的目的:
由于奖励只有当区块最终被纳入长期共识链才会实现。因为造币交易和其他每一笔交易一样,只有当它最终被纳入共识链,才会被其他节点接受;所以他尽量会在生成这个区块同时纳入;区块一般是伴着比特币的
所以如果网络中大部分节点遵循去延展最长支链的规则,那这样的设计将激励所有节点去遵循这个规则。
任何交易的制造者都可以选择让交易输出值比输入值小。
比如:
因为把最后的落在一定的范围内是需要做很多尝试的,得有一定的工作量,所以就叫做工作量证明
启用工作证明的目的:
两种证明方式:
这里我们主要讲工作量证明系统,该系统允许节点用它们的计算能力来互相竞争,导致的结果是计算能力的比例决定了节点被自动选中的概率。所以对女巫来说当他分出很多身份的时候每一个分身就没那么强的计算力了,从而解决了女巫的事情。
哈希函数解谜来证明工作量的。
把这个临时随机数、前序块的哈希值还有要填进这个区块的交易列表连接起来,组成一整串字符,计算出它的hash值,使之能够落在某一个目标之内。在目标之内就说明成功了。
H
(
n
o
n
c
e
‖
p
r
e
v
_
h
a
s
h
‖
t
x
‖
t
x
‖
…
‖
t
x
)
<
t
a
r
g
e
t
H(nonce‖prev\_hash‖tx‖tx‖…‖tx)<target
H(nonce‖prev_hash‖tx‖tx‖…‖tx)<target
hash指针:
这样的hash计算具有的特点:
在一个博弈过程中,无论对方的策略选择如何,当事人一方都会选择某个确定的策略,则该策略被称作支配性策略。如果任意一位参与者在其他所有参与者的策略确定的情况下,其选择的策略是最优的,那么这个组合就被定义为纳什平衡。
我们默认矿工挖矿是满足纳什平衡的,不过并没有定论
对于某个特定的矿工:
发现下一区块的平均时间=10分钟/占全部计算能力的比例
如果:
挖矿奖励>挖矿成本
那么:
矿工赚钱
条件是:
挖矿奖励=区块奖励+ 交易费
挖矿成本=硬件成本+ 运营成本(电费、空调费等)
有两个成分还是难以确定的:
具体来说,没有“1比特币”这样的特别名称。比特币只不过是交易输出,在现在的规则里,它们可以是精确到小数点后8位的任意值。可能的最小价值是0.000 000 01 BTC(比特币),我们称之为1个中本聪(比特币的发明人)
事实上是按照发放的比例分割
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。