主页 > imtoken客户端app > 【干货】比特币:一种点对点的电子货币系统

【干货】比特币:一种点对点的电子货币系统

imtoken客户端app 2023-03-01 07:49:53

邮箱:satoshin@gmx.com

摘要:本文介绍了一种完整的点对点电子货币。 使用这种电子货币(electroniccash),在线支付可以直接从一方到另一方发起和完成,而无需通过任何金融机构。 虽然数字签名(Digital signatures)部分解决了在线支付的问题,但是如果仍然需要可信的第三方介入来避免双花问题,那么这也失去了数字签名的主要价值。 我们提出了一种使用对等网络解决双重支出问题的方法。 这样一个网络时间戳交易,通过随机散列将它们组合成一个不断增加的基于散列的工作证明,并形成一个记录,除非重做整个工作证明,否则将无法更改。 在这个工作证明中,最长的链不仅被用作证明事件序列的证明比特币28结果查询预测网站,而且还证明它来自最大的 CPU 计算能力池。 只要网络攻击者所在的节点不能控制大部分的CPU算力,那么大部分CPU都会依靠自己的算力生成最长的链,而这种链的速度和数量是攻击者追不上的。 对等网络本身只需要最少的结构。 它只需要尽最大努力在全网广播信息。 节点可以随意离开网络然后重新加入。 重新加入时,节点将接受最长的工作量证明链作为自离开网络以来发生的交易的证据。

比特币28结果查询预测网站_比特币现金价格预测_火币网查询自己的比特币钱包地址

1 简介

互联网上的商业交易几乎总是完全依赖金融机构作为可信赖的第三方来处理电子支付。 虽然该系统适用于大多数交易,但它仍然受到基于信任的模型固有的一些缺陷的限制。 由于金融机构不可避免地要进行纠纷调解,完全不可逆的交易几乎是不可能的。 中介成本的存在自然会增加交易成本,限制实际的最小交易规模,也会限制日常的小额交易。 而且,如果不能为不可逆的服务进行不可逆的支付,交易成本也会增加。 如果存在可逆支付,对信任的需求就会大大增加。 商家必须始终警惕他们的客户,向他们索取比实际需要更多的信息,并给他们造成混乱。 人们普遍认为一定比例的欺诈事件是不可避免的。 使用实物货币消除了这些成本和支付的不确定性,但如果通过电子通信渠道进行支付,则无法在没有受信任的第三方的情况下进行。

事实上,适合我们需求的理想模式是拥有一个基于加密证据而不是信任的电子支付系统,它允许任何想要交易的双方直接进行交易,而无需可信第三方的干预。 计算上几乎不可逆的交易可以保护商家免受欺诈,同时可以轻松实施常规托管机制来保护买家。 在本文中,我们提出了一种解决双花问题的方法,即使用点对点分布式时间戳服务器按交易时间顺序生成(交易)计算证明。 只要诚实节点控制的 CPU 计算能力超过任何攻击节点控制的计算能力,系统就是安全的。

2.交易

我们将电子货币定义为数字签名链。 每个电子货币所有者都可以通过对先前交易的哈希和下一个所有者的公钥进行数字签名并将此信息附加到电子货币所有者的末尾来将钱转移给下一个。 收款人可以通过验证数字签名来验证这个币的所有权链。

比特币现金价格预测_火币网查询自己的比特币钱包地址_比特币28结果查询预测网站

如果收款人可以验证电子货币所有者没有重复使用他们的电子货币,那很好,但如果他们不能,那就麻烦了。 这个问题的一个常见解决方案是引入一个受信任的中央机构或铸币厂来检查每笔交易是否存在双重支出。 每次交易完成后,交易币都要送回铸币厂,然后再发行新的币。 只有那些直接从铸币厂发行的货币才值得信赖,并被认为没有双重支付问题。 这种解决方案的问题在于,整个金融体系的命运完全由运营铸币厂的机构说了算,每一笔交易都要经过它,就像银行一样。

我们需要为收款人找到一种方法来确保某个电子货币的前任所有者(在该交易之前)没有为该电子货币签署任何更早的交易。 为此,我们只需关注最后一笔交易,而无需担心在此次交易后尝试双花。 确认交易存在的唯一方法是清楚地知道所有(以前)交易的信息。 在基于铸币厂的模型中,铸币厂知道所有交易并可以确定交易的顺序。 为了在没有可信第三方干预的情况下实现这一目标,所有交易都必须公开发布[1],我们需要这样一个系统,所有参与者都可以同意存在具有特定交易顺序的单一历史记录。 收款人只需证明在每次交易时,大多数(参与者)节点同意该笔交易是第一笔(因为一笔交易已在公共记录中获得批准)。

比特币28结果查询预测网站_火币网查询自己的比特币钱包地址_比特币现金价格预测

3.时间戳服务器

我们提出的方案从时间戳服务器开始。 时间戳服务器的工作原理是随机散列要加盖时间戳的数据块,然后广播该散列,就像在报纸或全球新闻组网络 (Usenet) 中发布一样。 时间戳证明了一段数据在当时肯定是存在的比特币28结果查询预测网站,这显然是它进入随机哈希所必需的。 每个时间戳在其随机散列中包含前一个时间戳,每个后续时间戳都会增加前一个时间戳,形成一个链。

火币网查询自己的比特币钱包地址_比特币28结果查询预测网站_比特币现金价格预测

4. 工作量证明

为了在点对点的基础上实现分布式时间戳服务器,仅仅在报纸或全球新闻组网络(Usenet)上发布是不够的,我们需要使用 Adam Back(他在 2002 年,哈希现金机制(Hashcash)[6],解决比特币区块链的拜占庭一般问题,被提出来解决类似的工作负载系统。工作负载证明在随机哈希处理过程中引入了对某个值的扫描工作。例如,在 SHA -256散列算法,随机散列以若干个0值开始,平均所需工作量随着所需零值个数的增加呈指数级增长,只需​​要一次随机散列运算即可验证结果。

对于我们的时间戳网络,我们通过向块添加随机数来执行工作证明,直到所需数量的零出现在块的随机数哈希中。 只要消耗的 CPU 工作量满足所需的工作量证明级别,就不能对块进行进一步更改,除非重新完成相当数量的工作。 因为晚于这个出块时间的区块会被链接在它后面,如果要改变这个区块,需要重做它后面所有区块的工作量。

比特币28结果查询预测网站_比特币现金价格预测_火币网查询自己的比特币钱包地址

当少数人的集体投票服从多数人时,工作量证明还解决了谁是多数人的问题。 如果确定多数的方式是每个 IP 地址一票,那么任何人都可以拥有大量 IP 地址,这将打破这种机制。 工作量证明机制本质上是一CPU一票。 大多数人的意见是以最长链为代表的,之所以成为最长链,也是因为在链上投入了最大的工作量。 如果大部分 CPU 计算能力由许多诚实节点控制,那么诚实链将增长最快并超越任何其他竞争链。 如果要修改过去的一个区块,攻击者必须重新完成该区块前后所有区块的工作量,然后赶上并超过诚实节点完成的工作量。 我们后来证明,随着后续区块的不断增加,较慢的攻击者追上诚实链的概率呈指数下降。

考虑到硬件的计算速度在不断提高,节点的参与度也会随着时间发生变化,我们将每小时出块的平均速度作为一个特定的平均值来确定工作量的难度。 如果出块速度过快,难度会相应增加。

火币网查询自己的比特币钱包地址_比特币现金价格预测_比特币28结果查询预测网站

5.网络

网络操作步骤如下:

1) 向所有节点广播新交易。

2) 每个节点将新交易包含到一个块中。

3)每个节点努力为区块寻找一个具有一定难度的工作量证明。

4)当一个节点找到工作量证明时,该节点会将区块广播给所有节点。

5) 只有其中的所有交易都有效且之前不存在,其他节点才会批准该区块。

6) 其他节点继续使用添加该块的链工作,并使用接受块的随机散列作为之前的随机散列,表明该块被识别为有效。

节点将始终认为最长的链是正确的,并将对其进行扩展。 如果两个节点同时广播不同版本的下一个区块,一些节点会收到不同的区块。 在这种情况下,他们在他们第一次收到的区块上工作,但保存另一个分支以防该分支成为更长的链。 当找到下一个工作证明并且一个分支变得更长时,这个僵局就会被打破; 在其他分支上工作的节点也将转移到更长的链上工作。

新的交易广播没有必要到达所有节点。 只要它们到达足够多的节点,它们就会在链变长之前被包含在一个区块中。 块广播也对丢弃的消息具有容错能力。 如果一个节点没有收到一个块,当它收到下一个块并意识到缺少块时,它将请求下载该块。

6.动机

我们同意区块中的第一笔交易是一种特殊交易,它创建了区块创建者拥有的新硬币。 这为支持网络工作的节点提供了激励,并且由于没有中央机构发行货币,它还提供了一种最初将货币分配到流通中的手段。 稳步增加一定数量的新币进入流通的做法,类似于淘金者耗费资源获取黄金,重新投入流通。 . 在我们的电子货币系统中,消耗的资源是 CPU 处理时间和电力。

另一个激励来源是交易费用。 如果一笔交易的输出值低于它的输入值,差额就是交易费,它被添加到包含该交易的区块的激励值中。 一旦一定数量的数字货币进入流通,激励可以完全来自交易费用,根本没有通货膨胀。

激励措施鼓励节点诚实。 如果一个贪婪的攻击者可以控制比所有诚实节点更多的 CPU 算力,那么他必须在双花欺诈和利用这个最强大的 CPU 算力获取新币之间做出选择。 攻击者最终会发现按照允许他获得比其他人更多的新数字货币的规则进行游戏更有利可图,而不是破坏系统并影响他自己财富的有效性。

比特币现金价格预测_比特币28结果查询预测网站_火币网查询自己的比特币钱包地址

7.恢复磁盘空间

一旦硬币的最近交易被淹没在足够多的块中,就可以丢弃该交易之前的交易数据,从而节省磁盘空间。 为了在不破坏块的随机散列的情况下促进此操作,事务在 Merkle 树 [7][2][5] 中随机散列,只有根包含在块随机散列中。 然后可以通过砍掉 Merkle 分支来压缩旧块。 这消除了保存内部随机散列值的需要。

比特币现金价格预测_火币网查询自己的比特币钱包地址_比特币28结果查询预测网站

一个没有交易的区块头大约是 80 字节。 如果我们假设每10分钟产生一个区块,那么每年的数据量就是4.2MB(80字节X6X24X365=4.2MB)。 2008年,市场上每台电脑的通用内存(RAM)容量为2GB,根据摩尔定律,预计年增长率为1.2GB。 即使区块头必须保存在内存中,也不会有存储问题。

8. 简化支付验证

无需运行完整的网络节点即可验证付款。 用户只需要保留一份最长工作量证明链的区块头副本,他/她就可以查询网络节点,直到他们确信自己拥有最长的链,得到Merkle分支来链接交易到其时间戳块。 用户无法自己验证交易,但可以链接到链上某个位置进行验证,可以看到有网络节点接受了交易,交易后添加的区块会进一步确认整个网络都接受了这笔交易。

比特币28结果查询预测网站_火币网查询自己的比特币钱包地址_比特币现金价格预测

因此,只要诚实节点控制网络,这种验证机制就是可靠的,但如果具有计算能力优势的攻击者对网络发起攻击,它就会变得脆弱。 虽然网络节点可以自行验证交易,但只要攻击者保持计算能力优势,这种简化的方法就可以被攻击者的虚假交易所愚弄。 为了防止这种情况,一种方法是当节点检测到无效块时发出警报,提示用户软件下载完整的块和交易的完整信息以确认不一致,并且收到警报的节点做同样的就去做。 日常支付业务量较大的企业会希望自己运行多个节点,以保证更高的独立安全性和更快的验证速度。

9.价值组合与分割

虽然可以对每一种电子货币分别进行处理,但是在转账过程中对每一种电子货币单独发起交易显然是一种笨拙的方法。 为了实现价值拆分和组合,交易会包含多个输入。 与输出项目。 一般情况下,输入项可能是一笔较大的先前交易的输入,也可能是多个较小金额输入的组合,但输出项最多有两种:一种用于支付,一种用于用户更改(如果有)给付款人.

比特币现金价格预测_比特币28结果查询预测网站_火币网查询自己的比特币钱包地址

需要指出的是,在扇出场景(fan-out)下,如果一个事务依赖于之前的多个事务,而这些事务又各自依赖多个事务,这里就不会有问题。 永远不需要提取交易历史的完整独立副本(以供检查)。

10.隐私

传统的银行业务模式通过限制相关方和受信任的第三方访问信息来保护隐私。 鉴于公开发布所有交易的比特币系统的性质,这种方法显然不适用。 但是隐私可以通过破坏其他地方的信息流来实现:通过保持公钥匿名。 公众可以看到某人正在向另一个人支付一定数量的货币,但无法将该交易与特定的人联系起来。 这类似于证券交易所的信息发布机制。 虽然每笔交易的时间和金额都是公开的,但人们并不知道交易的双方是谁。

比特币28结果查询预测网站_比特币现金价格预测_火币网查询自己的比特币钱包地址

作为额外的预防措施,可以为每笔交易使用新的密钥对,以避免将多个交易追溯到同一个硬币持有人。 在多个并行输入交易的情况下,一些链接仍然是不可避免的,这必然会泄露它们的输入都属于同一个持有者。 这会产生风险,如果持有人的密钥被泄露,则属于他/她的所有其他交易都将暴露。

11.计算

我们考虑这样一种情况,即攻击者试图以比诚实链更快的速度生成替代链。 即使攻击者能够达到这个目的,也不会允许系统被随意篡改,比如凭空造币或转移属于他人的资金。 节点在支付时不会接受无效交易,诚实节点也不会接受含有无效交易的区块。 攻击者所能做的就是更改他/她自己的交易信息并取回他最近支付给其他人的钱。

诚实链和攻击者链之间的这种竞争可以用二叉树随机过程(binomial random process)来描述。 成功事件是诚实链延长一个区块,领先优势增加1分,失败事件是攻击者链延长一个区块,与诚实链的差距减少1分。

攻击者填补一定空隙并追上诚实链的概率类似于 Gambler's Ruin 问题。 假设一个拥有无限透支额度的赌徒一开始是亏本的,并且必须进行可能无限次的赌博以弥补亏空。 我们可以计算赌徒补缺的概率,即攻击者追上诚实链的概率,如下所示[8]:

p = 诚实节点找到下一个区块的概率

q = 攻击者找到下一个区块的概率

qz = 攻击者从后面的 z 个区块赶上诚实链的概率

比特币28结果查询预测网站_比特币现金价格预测_火币网查询自己的比特币钱包地址

我们假设 p>q,随着攻击者追上诚实链所需的区块数增加,追上的概率呈指数下降。 因为情况对攻击者不利,如果攻击者运气不好在短时间内成功,那么随着时间的推移,会不断产生大量的新区块,他/她的成功将越来越渺茫。

我们现在考虑收款人必须等待多长时间才能确定付款人不能更改交易。 我们假设付款人是攻击者,他打算先让收款人相信自己已经付款,过一段时间后,攻击者再将支付的金额还给自己。 发生这种情况时,收款人会收到警报,但付款人希望为时已晚。

收款人生成一个新的密钥对,并在签名前不久将公钥提供给付款人。 这可以防止付款人提前准备区块链以继续对其进行处理,直到他有幸在执行交易之前有足够的领先优势。 一旦交易被发送,不诚实的付款人就开始秘密地在平行链上工作,该平行链的区块包含其交易的替代版本。

收款人等待,直到交易被添加到一个块并且 z 个块被链接在它之后。 他不知道攻击者的确切进度,但我们假设平均预期区块生成时间用于生成诚实区块,攻击者的潜在进度将服从泊松分布,该分布的期望值为:

比特币28结果查询预测网站_比特币现金价格预测_火币网查询自己的比特币钱包地址

为了得到攻击者现在仍然可以追上的概率,我们将攻击者已经前进的块数的泊松概率密度乘以他从该点追上的概率:

火币网查询自己的比特币钱包地址_比特币28结果查询预测网站_比特币现金价格预测

为避免求和一个无限分布的序列,重新排列如下:

火币网查询自己的比特币钱包地址_比特币28结果查询预测网站_比特币现金价格预测

转换为C语言代码:

#包括

doubleAttackerSuccessProbability(双 q,int z)

{

双p = 1.0 - q;

双 lambda = z * (q / p);

双和 = 1.0;

诠释我,k;

对于 (k = 0;k