区块链系统:点对点交易原理

这篇具有很好参考价值的文章主要介绍了区块链系统:点对点交易原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

比特币的交易是一种无需信任中介参与的P2P(Peer-to-peer)交易。

传统的电子交易,交易双方必须通过银行这样的信任机构作为中介,这样可以保证交易的安全性,因为银行记录了交易双方的账户资金,能保证在一笔交易中,要么保证成功,要么交易无效,不存在一方到账而另一方没有付款的情况:

区块链点对点,区块链技术与应用,区块链,p2p,网络

但是在比特币这种去中心化的P2P网络中,并没有一个类似银行这样的信任机构存在,要想在两个节点之间达成交易,就必须实现一种在零信任的情况下安全交易的机制。

创建交易有两种方法:我们假设小明和小红希望达成一笔交易,一种创建交易的方法是小红声称小明给了他1万块钱,显然这是不可信的:

区块链点对点,区块链技术与应用,区块链,p2p,网络

还有一种创建交易的方法是:小明声称他给了小红一万块钱,只要能验证这个声明确实是小明作出的,并且小明真的有1万块钱,那么这笔交易就被认为是有效的:

区块链点对点,区块链技术与应用,区块链,p2p,网络

区块链点对点,区块链技术与应用,区块链,p2p,网络

数字签名

何验证这个声明确实是小明作出的呢?数字签名就可以验证这个声明是否是小明做的,并且,一旦验证通过,小明是无法抵赖的。

在比特币交易中,付款方就是通过数字签名来证明自己拥有某一笔比特币,并且,要把这笔比特币转移给指定的收款方。

使用签名是为了验证某个声明确实是由某个人做出的。例如,在付款合同中签名,可以通过验证笔迹的方式核对身份:

区块链点对点,区块链技术与应用,区块链,p2p,网络

而在计算机中,用密码学理论设计的数字签名算法比验证笔迹更加可信。使用数字签名时,每个人都可以自己生成一个秘钥对,这个秘钥对包含一个私钥和一个公钥:私钥被称为Secret Key或者Private Key,私钥必须严格保密,不能泄漏给其他人;公钥被称为Public Key,可以公开给任何人:

区块链点对点,区块链技术与应用,区块链,p2p,网络

当私钥持有人,例如,小明希望对某个消息签名的时候,他可以用自己的私钥对消息进行签名,然后,把消息、签名和自己的公钥发送出去:

区块链点对点,区块链技术与应用,区块链,p2p,网络

其他任何人都可以通过小明的公钥对这个签名进行验证,如果验证通过,可以肯定,该消息是小明发出的。

数字签名算法在电子商务、在线支付这些领域有非常重要的作用:

  • 首先,签名不可伪造,因为私钥只有签名人自己知道,所以其他人无法伪造签名。
  • 其次,消息不可篡改,如果原始消息被人篡改了,那么对签名进行验证将失败。
  • 最后,签名不可抵赖。如果对签名进行验证通过了,那么,该消息肯定是由签名人自己发出的,他不能抵赖自己曾经发过这一条消息。

数字签名的三个作用:防伪造,防篡改,防抵赖。

数字签名算法

常用的数字签名算法有:RSA算法,DSA算法和ECDSA算法。比特币采用的签名算法是椭圆曲线签名算法:ECDSA,使用的椭圆曲线是一个已经定义好的标准曲线secp256k1:

y2\=x3+7y^2=x^3+7y2\=x3+7

这条曲线的图像长这样:

区块链点对点,区块链技术与应用,区块链,p2p,网络

比特币采用的ECDSA签名算法需要一个私钥和公钥组成的秘钥对:私钥本质上就是一个1~256的随机数,公钥是由私钥根据ECDSA算法推算出来的,通过私钥可以很容易推算出公钥,所以不必保存公钥,但是,通过公钥无法反推私钥,只能暴力破解。

比特币的私钥是一个随机的非常大的位整数。它的上限,确切地说,比要稍微小一点:

0xFFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 5E8C D036 4140

而比特币的公钥是根据私钥推算出的256位整数。

如果用银行卡作比较的话,比特币的公钥相当于银行卡卡号,它是两个256位整数:

这句话我也没理解

区块链点对点,区块链技术与应用,区块链,p2p,网络

比特币的私钥相当于银行卡密码,它是一个256位整数:

18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725

银行卡的卡号由银行指定,银行卡的密码可以由用户随时修改。而比特币“卡”和银行卡的不同点在于:密码(实际上是私钥)由用户先确定下来,然后计算出“卡号”(实际上是公钥),即卡号是由密码通过ECDSA算法推导出来的,不能更换密码,因为更换密码实际上相当于创建了一张新卡片。

  • 由于比特币账本是全网公开的,所以,任何人都可以根据公钥查询余额,但是,不知道持卡人是谁。这就是比特币的匿名特性。
  • 如果丢失了私钥,就永远无法花费对应公钥的比特币!
  • 丢失了私钥和忘记银行卡密码不一样,忘记银行卡密码可以拿身份证到银行重新设置一个密码,因为密码是存储在银行的计算机中的,而比特币的P2P网络不存在中央节点,私钥只有持有人自己知道,因此,丢失了私钥,对应的比特币就永远无法花费。如果私钥被盗,黑客就可以花费对应公钥的比特币,并且这是无法追回的。
  • 比特币私钥的安全性在于如何生成一个安全的256位的随机数。不要试图自己想一个随机数,而是应当使用编程语言提供的安全随机数算法,但绝对不能使用伪随机数
  • 绝不能自己想一个私钥或者使用伪随机数创建私钥!
  • 那有没有可能猜到别人的私钥呢?这是不可能的。是一个非常大的数,它已经远远超过了整个银河系的原子总数。绝大多数人对数字大小的直觉是线性增长的,所以256这个数看起来不大,但是指数增长的是一个非常巨大的天文数字。

比特币钱包

比特币钱包实际上就是帮助用户管理私钥的软件。因为比特币的钱包是给普通用户使用的,它有几种分类:

  • 本地钱包:是把私钥保存在本地计算机硬盘上的钱包软件,如Electrum;

  • 手机钱包:和本地钱包类似,但可以直接在手机上运行,如Bitpay;

  • 在线钱包:是把私钥委托给第三方在线服务商保存;

  • 纸钱包:是指把私钥打印出来保存在纸上;

  • 脑钱包:是指把私钥记在自己脑袋里。

对大多数普通用户来说,想要记住私钥非常困难,所以强烈不建议使用脑钱包

和银行账户不同,比特币网络没有账户的概念,任何人都可以从区块链查询到任意公钥对应的比特币余额,但是,并不知道这些公钥是由谁持有的,也就无法根据用户查询比特币余额。

作为用户,可以生成任意数量的私钥-公钥对,公钥是接收别人转账的地址,而私钥是花费比特币的唯一手段,钱包程序可以帮助用户管理私钥-公钥对。

交易

我们再来看记录在区块链上的交易。每个区块都记录了至少一笔交易,一笔交易就是把一定金额的比特币从一个输入转移到一个输出:

区块链点对点,区块链技术与应用,区块链,p2p,网络

例如,小明把两个比特币转移给小红,这笔交易的输入是小明,输出就是小红。实际记录的是双方的公钥地址。

如果小明有50个比特币,他要转给小红两个比特币,那么剩下的48个比特币应该记录在哪?比特币协议规定一个输出必须一次性花完,所以,小明给小红的两个比特币的交易必须表示成:

区块链点对点,区块链技术与应用,区块链,p2p,网络

小明给小红2个比特币,同时小明又给自己48个比特币,这48个比特币就是找零。所以,一个交易中,一个输入可以对应多个输出。

当小红有两笔收入时,一笔2.0,一笔1.5,她想给小白转3.5比特币时,就不能单用一笔输出,她必须把两笔钱合起来再花掉,这种情况就是一个交易对应多个输入和1个输出:

区块链点对点,区块链技术与应用,区块链,p2p,网络

如果存在找零,这笔交易就既包含多个输入也包含多个输出:

区块链点对点,区块链技术与应用,区块链,p2p,网络

在实际的交易中,输入比输出要稍微大一点点,这个差额就是隐含的交易费用,交易费用会算入当前区块的矿工收入中作为矿工奖励的一部分:

区块链点对点,区块链技术与应用,区块链,p2p,网络

计算出的交易费用:

交易费用 = 输入 - 输出 = (2.0 + 1.5) - (2.99 + 0.49) = 3.5 - 3.48 = 0.02

比特币实际的交易记录是由一系列交易构成,每一个交易都包含一个或多个输入,以及一个或多个输出。未花费的输出被称为UTXO(Unspent Transaction Ouptut)

当我们要简单验证某个交易的时候,例如,对于交易f36abd,它记录的输入是3f96ab,索引号是1(索引号从0开始,0表示第一个输出,1表示第二个输出,以此类推),我们就根据3f96ab找到前面已发生的交易,再根据索引号找到对应的输出是0.5个比特币,所以,这笔交易的输入总计是0.5个比特币,输出分别是0.4个比特币和0.09个比特币,隐含的交易费用是0.01个比特币:

区块链点对点,区块链技术与应用,区块链,p2p,网络

小结

比特币使用数字签名保证零信任的可靠P2P交易:文章来源地址https://www.toymoban.com/news/detail-607898.html

  • 私钥是花费比特币的唯一手段;
  • 钱包软件是用来帮助用户管理私钥;
  • 所有交易被记录在区块链中,可以通过公钥查询所有交易信息。

到了这里,关于区块链系统:点对点交易原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 同城跑腿系统源码,点对点配送,帮你省时省力

    随着互联网的发展,越来越多的人开始依赖网络来解决生活中的各种问题。而同城跑腿系统就是其中一个受欢迎的解决方案。 ​同城跑腿系统是指一种基于互联网的服务,通过在线平台将用户和服务提供者连接起来,以便用户可以轻松地安排他们的日常任务和需求。 一、同

    2024年02月06日
    浏览(58)
  • 区块链溯源:实现区块链技术在房地产交易中的应用

    作者:禅与计算机程序设计艺术 随着时间的推移,金融系统已越来越复杂。从最早的结算系统到现代支付系统、征信管理系统、风控系统,现代金融系统已经发生了巨变,而在房地产市场中,由于金融服务的需求增加,更多的客户选择居住地或商业中心进行投资,由此带来的

    2024年02月14日
    浏览(45)
  • 《区块链原理与技术》学习笔记(五) ——以太坊的交易、共识机制和数据结构

    《区块链原理与技术》学习笔记 第五部分 5. 以太坊交易 5.1 交易内容 5.2 交易费用 5.3 交易的周期 5.4 交易的执行类型 6. 以太坊的共识机制 6.1 解决以太坊分叉:Ghost协议 6.2 新的共识机制:PoS 7. 以太坊挖矿难度调整 7.1 自适应难度调整 7.2 难度炸弹 8. 数据结构与存储 8.1 区块和

    2024年02月12日
    浏览(43)
  • 组件分享之后端组件——基于Golang实现的全局的、版本化的、点对点的文件系统go-ipfs...

    近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。 组件: go-ipfs 开源协议:The go-ipfs project is dual-licensed under Apache 2.0 and MIT terms: Ap

    2024年02月01日
    浏览(43)
  • DragGAN-点对点的手动P图

    原文网站link以及论文链接: https://vcai.mpi-inf.mpg.de/projects/DragGAN/ https://arxiv.org/pdf/2305.10973.pdf 深度生成模型近年在合成随机真实感图像方面取得了不错的成绩。在现实世界的应用中,这种基于学习的图像合成方法中一个关键功能是对合成视觉内容的可控性。为了满足这种需求,

    2024年02月08日
    浏览(42)
  • 华为防火墙IPsec点对点配置解析

    主机直连的接口为trust区域,防火墙之间互联的接口为untrust区域 ike proposal xx //首先创建ike proposal xx 这一步的作用就是创建协商ike SA的时候使用的相关安全套件,默认防火墙就会设置了一些默认的安全套件的组合。这一步设置的内容就是用于IKE SA的协商,IPsec双方使用协商好的

    2024年02月05日
    浏览(45)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[15]以太坊-交易树和收据树

     目录 一、以太坊中的三种树 二、状态树、交易树和收据树的区别 三、交易树和收据树的用途         1.交易树和收据树的用途         2.如何实现复杂的查询操作         3.以太坊中Bloom Filter的用途 四、以太坊的运行过程        在以太坊中,存在三种基于树的

    2024年02月05日
    浏览(53)
  • ffmpeg点对点音视频udp协议传输

    参考:https://zhuanlan.zhihu.com/p/636152437?utm_id=0 ffmpeg查看可用设备: 局域网内两台设备间 局域网内两台设备间

    2024年04月10日
    浏览(45)
  • C#实现udp点对点通信的完整示例

    udp和tcp都是传输协议,最大的不同是,tcp通信前需要建立连接,是更可靠的通信协议,而udp是一个无连接的传输协议,可直接发送数据。两种协议不分优劣,各有各的应用场景,实际应用往往会同时使用两种协议。 C#代码实现udp通信的步骤比较简单。 假设:A要向B发送消息。

    2024年02月16日
    浏览(43)
  • 思科路由器点对点故障的解决方法

    思科路由器采用CPOS接口,节省了一个TM传输设备,配线也简单多了,同时还节省很多的同轴电缆,用一根光纤全部解决,CPOS接口内部分为了多个接口,通过这种接口可以用一个端口与多个物理接口相连。   这种连接和帧中继、X.25的虚连接不同,实际上仍然是物理相连,在传

    2024年02月05日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包