主页 > imtoken靓号地址软件 > 比特币:没有中介的电子现金系统

比特币:没有中介的电子现金系统

imtoken靓号地址软件 2023-04-18 07:31:37

比特币现金分叉_莱特币还是比特币现金_比特币能换成现金吗

摘要:一种纯点对点的电子现金应该能够在支付过程中从一方直接发送到另一方,而不需要通过中介。 数字签名部分具有这种能力,但仍然需要可信的第三方来避免双重消费。 这里我们提出一个点对点的通信网络来实现无中介的电子现金系统,解决重复消费的问题。 在该网络上,基于哈希算法的工作原理,设计了足以证明工作量的算法。 交易计算得到网络时间戳,加入到一个不断递增的链表中。 添加到这个链表中的数据不能被改变。 最长链不仅作为时间序列的证明,也代表了最大的CPU算力。 只要加入网络的大部分CPU算力不协同攻击网络,它们就会生成最长链表。 网络本身只需要最小的结构来记录哈希链表。 交易消息尽可能频繁地广播,加入网络的节点可以在需要时离开并重新加入,接受最长的链表作为它们离开时发生的事情的证明。

介绍

目前,互联网上的商业活动基本上完全依赖金融机构作为可信的支付中介。 虽然这种方法在许多情况下效果很好,但仍然有一些交易因为脆弱的信任基础模型而受到伤害。 在这个模型中,纯粹的不可逆交易是不存在的,因为金融机构会根据法律等因素进行调解。 中介费用增加了交易成本,限制了实际交易的最低金额,阻止了小微临时交易的可能性,更重要的是,失去了为不可逆服务提供不可逆支付的能力。 因为反向交易的可能性,进一步放大了对信任的要求。 因此,商家必须对他们的客户保持警惕,要求他们提供比他们需要的更多的信息。 在这种模式下,一定的欺诈概率被认为是不可避免的。

电子支付系统需要基于算法证明的信任背书,而不是中介机构,允许任何交易方直接进行交易。 不可逆交易保护卖家免受欺诈,买家基于简单的第三方数据托管。 这里提出的解决重复消费问题的方案是基于对等网络,使用分布式时间服务器,通过引入能够充分证明工作量的算法来定义交易的时间。 只要遵守规则的节点的CPU算力大于联合攻击系统的节点的CPU算力,系统就是安全的。

贸易

这里的电子货币是一串数字签名。 每个所有者在转账时,都必须对上一笔交易的哈希值和下一个所有者的公钥进行签名,并将签名添加到链的末尾。 接收者可以通过检查链末端的签名来验证货币的所有权。

莱特币还是比特币现金_比特币现金分叉_比特币能换成现金吗

对于收款人来说,这里只有一个问题:无法验证付款人是否多次花费了货币。 一个普遍的做法是找一个可信的中介来确认货币是否有双倍消费。 每次交易后,货币返回给中介。 只有来自中介的货币才能被信任(不会被多次消费)。 这个解决方案的问题是所有的货币都依赖这个中间人,任何交易都必须经过他们的确认,就像银行一样。

这里提供一个收款方确认付款方之前没有消费过这个货币的方法。 只要证明当前的交易是最早的,就可以认为是有效的,而不管以后是否有多次消费的可能,只要能得到所有的交易,这是不言而喻的. 在中间人模型中,中间人知道所有的交易并决定交易的顺序。 为了在没有中介的情况下实现这种效果,交易必须公开宣布和广播。 在这里,定义了一个网络,以便所有参与者都可以接收所有交易,并根据他们收到的交易信息同意单个交易。 历史秩序。 收款人需要并且可以很容易地证明大多数节点同意交易是最新的。

时间戳服务

时间戳服务器是这里的重点。 时间戳服务器通过哈希算法将区块中的信息生成时间戳,并将时间戳广泛分布比特币能换成现金吗,就像在报纸或电子公告牌上发布信息一样。 时间戳证明了其对应数据的存在,每一个时间戳都引用了之前的时间戳,从而形成一条链,每一个新进入的时间戳进一步加强了其之前时间戳的证明。

莱特币还是比特币现金_比特币能换成现金吗_比特币现金分叉

比特币能换成现金吗_比特币现金分叉_莱特币还是比特币现金

工作证明

为了在对等基础设施上实现分布式时间戳服务,我们需要使用类似于 Adam Back 的 HashCash 的工作量证明方法。 这里使用的工作量证明是找到一个值,将这个值追加到区块信息商上,计算其汇总结果(如SHA-256),得到的值只与原来的相比加上前缀0值(位为 0)。 这个工作量的复杂度与需要的零个数有关,但是验证可以很简单(可以通过一个散列来验证)。

在这个网络中,一旦某个 CPU 通过工作量证明算法获得响应结果并将区块添加到链表中,除非重做工作,否则无法更改区块。 随后的块都链接到这个块,如果你想改变这个块,你必须对所有后续块做同样的事情。

莱特币还是比特币现金_比特币现金分叉_比特币能换成现金吗

工作量证明还解决了多数投票决定的问题。 如果根据投票IP地址的数量来决定,当一个投票者有很多IP时,公平性就会被颠覆。 这里的工作量证明其实就是一CPU一票。 多数人的决策结果用最长的链表示,因为这条链代表了最大的努力投入。 如果大部分 CPU 算力由可信节点控制,那么可信链长度增长最快并超过其他竞争链长度。 要修改过去的一个区块,攻击者必须投入算力重新计算这个区块和所有后续区块,还要超越和赶上可信节点的工作量。 稍后,我们将证明后期攻击者赶上工作量的概率随块数呈指数下降。

考虑到硬件计算速度的不断提高和网络中运行的节点数量的变化,工作量证明的难度应根据每小时出块数的增加进行调整。 如果增加太快,则应增加难度。

互联网

运行这个网络的步骤如下:

新交易被广播到所有节点。 每个节点将新事务发送到一个块。 对于这个区块,每个节点计算一个困难的工作量证明。 如果一个节点找到了这个工作量证明,它就会向所有节点广播。 如果这个区块中的所有交易都是有效的并且没有被使用过,节点接受这个区块A节点创建下一个区块基于区块A来表示接受这个区块。下一个区块将使用A的哈希

节点总是认为最长的链是正确的,并总是尝试扩展它。 如果两个节点同时广播下一个区块的不同版本比特币能换成现金吗,有些节点可能会先接受其中一个,此时它们会在自己先收到的区块上工作,但应该保留另一个分支,以防止它变得更长。 这个分支的选择将在收到下一个工作证明时被确认,较长的一个应该保留,其他的应该被丢弃。

新的交易广播不需要到达所有节点,只要到达足够多的节点,不久就会进入一个区块。 块广播还允许丢失消息。 如果一个节点没有收到一个块,它可以通过请求下一个块来填补缺失的部分。

比特币现金分叉_莱特币还是比特币现金_比特币能换成现金吗

励磁

这里约定,一个区块中的第一笔交易是一种特殊的奖励,即创建者拥有一枚新币。 因为没有中央权威来发行它们,所以这种激励机制鼓励每个节点实现第一个货币。 保持一定数量的货币稳定增长,类似于金矿开采矿产,将黄金投入流通。 这是 CPU 时间和消耗的电量。

激励也可以来自交易费用。 如果该笔交易的入账金额与出账金额成正比,是因为该区块承载该笔交易的手续费增加了。 一旦预定数量的货币投入流通,激励将完全来自费用。

激励措施将鼓励节点保持诚实。 如果攻击者可以组织所有诚实节点的冗余CPU算力,他有两种选择,一种是通过欺诈取消他的支付动作,另一种是产生新的币。 他很容易发现遵守规则是有利的,这使他获得的新硬币多于他通过攻击系统所能节省的硬币。

回收磁盘空间

如果一个币经历了太多的交易,在最后一笔交易时,可以丢弃之前的交易以节省存储空间。 我们使用 Merkle 树来管理区块的交易哈希值,避免打乱区块的哈希值。 旧块可以从树的分支上切掉,分支内的哈希就不需要再存储了。

比特币能换成现金吗_比特币现金分叉_莱特币还是比特币现金

一个没有交易的区块头大约是80字节,假设每10分钟产生一个新区块,那么一年产生的区块所占用的空间是80 * 6 * 24 * 365 = 4.2MB,当前(2008年)计算机系统一般配置2GB内存,而摩尔定理预测每年增长1.2GB,所以即使将这些块的头部全部存储在内存中也不成问题。

简化付款验证

支付的验证不需要所有节点参与。 用户只需要保留最长的工作量证明链的区块头,他可以从网络中获取,直到他确认它是最长的,并随时间获得将交易链接到特定区块的Merk分支邮票。 通过检查交易在链上的位置,确认网络节点是否接受。 如果在其后添加一个块,则进一步确认网络已接受交易。

比特币能换成现金吗_莱特币还是比特币现金_比特币现金分叉

比特币能换成现金吗_莱特币还是比特币现金_比特币现金分叉

这样,只要诚实节点控制网络,验证就是可靠的。 但如果网络被攻击者控制,它就很容易受到攻击。 由于网络节点可以自行验证交易,只要攻击者可以继续控制网络,交易者就可以通过伪造交易来作弊。 防止这种情况的一种策略是在网络节点检测到无效块时接受来自网络节点的警报,提示用户的软件下载完整块并警告确认交易的不一致。 频繁接收付款的企业可能仍希望运行自己的节点以获得更独立的安全性和更快的验证。

合并和拆分

尽管可以单独处理每个硬币,但在一次交易中转移每个硬币是不明智的。 为了允许组合或拆分,事务包含多个输入和输出。 通常输入为一枚大面额硬币或多枚小面额硬币,输出为一枚给收款人,一枚找零(退还给付款人)。

比特币现金分叉_莱特币还是比特币现金_比特币能换成现金吗

需要注意的是,一个事务可能会依赖其他几个事务,以此类推,会依赖很多其他事务,这不是问题。 我们的工作不需要交易历史的完整副本。

隐私

传统的银行业务模型通过将对信息的访问限制在感兴趣的各方和受信任的第三方来实现一定程度的隐私。 此处要求公开所有交易,因此放弃了该方案,但仍可以通过保持公钥匿名来维护隐私。 公众可以看到有人正在向其他人汇款,但没有任何信息将交易与任何人联系起来。 这类似于证券交易所发布的信息,其中公开了单笔交易的时间和规模,但不公开所涉及的各方。

莱特币还是比特币现金_比特币能换成现金吗_比特币现金分叉

可以添加另一层防御,可以为每个交易生成一个新的密钥对,以避免链接到特定的所有者。 但是必要的关联仍然存在,它仍然会将交易标识为来自同一所有者。 如果必要的所有者信息被泄露,这些协会将泄露其所有相关交易。

计算

在这里考虑一个场景:攻击者试图生成另一个比可信链更长的链。 即使攻击者实现了这一点,他也不能随意修改系统数据,例如凭空发行货币或获取部署在自己身上的货币。 节点不会接受无效交易,可信节点也不会接受包含它们信息的区块。 攻击者智能地修改自己的交易以恢复最近花费的硬币。

比特币能换成现金吗_比特币现金分叉_莱特币还是比特币现金

供应链和可信链之间的竞争可以描述为二项式随机游走。 成功事件是可信链增加一个区块,领先1,失败事件是攻击链增加一个区块,差距减少1。

攻击者追逐给定差距的概率类似于 Gambler's Ruin 问题。 假设一个拥有无限信用的赌徒从亏损开始,可能会无限次尝试以达到收支平衡。 我们可以计算出他打平的概率,即攻击者追上诚实链的概率,如下:

p = 可信节点生成下一个区块的概率

q = 攻击者生成下一个区块的概率

qz = 攻击者从区块 z 赶上的概率

比特币能换成现金吗_比特币现金分叉_莱特币还是比特币现金

假设 p > q,随着区块数量的增加,攻击者追上的概率呈指数下降。

考虑交易的接收者必须等待多长时间才能获得足够的证据证明发送者无法更改交易。 如果付款人是攻击者,他肯定希望收款人相信他已经付款,并在一段时间后将交易收款人发送给自己。 当收款人收到警报时,付款人希望为时已晚。

收件人生成一个新的密钥对,并在签名前不久将公钥提供给发件人。 这可以防止发送方提前准备一个块,一旦交易被发送,攻击者就必须开始处理其新版本的交易。

接收者等待交易被添加到一个块,并且在它之后连接 z 个块。 他不知道攻击者的确切进度,但可以假设城市街区的平均时间是可预测的,攻击者的潜在进度服从泊松分布:

比特币能换成现金吗_比特币现金分叉_莱特币还是比特币现金

比特币现金分叉_莱特币还是比特币现金_比特币能换成现金吗

为了得到攻击者成功的概率,指定点的概率需要以z块概率的累加为指导:

比特币能换成现金吗_比特币现金分叉_莱特币还是比特币现金

简化如下:

莱特币还是比特币现金_比特币现金分叉_比特币能换成现金吗

C代码如下:

#包括

双攻击者成功概率(双 q,int z)

{

双 p = 1.0 - q;

双 lambda = z * (q / p);

双和 = 1.0;

诠释我,k;

对于(k = 0; k