从零入门区块链和比特币(第三期)

欢迎来到我的区块链与比特币入门指南!如果你对区块链和比特币感兴趣,但不知道从何开始,那么你来对地方了。本博客将为你提供一个简明扼要的介绍,帮助你了解这个领域的基础知识,并引导你进一步探索这个激动人心的领域。

感兴趣的话可以看看第一期👉从零入门区块链和比特币(第一期)👈

                                 第二期👉从零入门区块链和比特币(第二期)👈

目录

密码学知识简介

为什么传统加密解密不安全

非对称加密简介

如何生成交易账号

交易解读

比特币没有余额

UXTO = Unspent Transaction Output

交易输入

交易输出

案例: Alice发送1 btc给Bob,签名和公钥是Alic的,交易必须验证Alic能不能使用自己上笔交易获得的收入。

更多支付方式


密码学知识简介

为什么传统加密解密不安全

传统加密使用同一个密码加密解密,一旦密码泄漏就毫无安全性。 即使密码安全,但是利用统计学原理,配合计算机暴力计算,依然可以轻松破解。 密码每天变就安全了吗?每个字变密码都没用,恩尼格码表示我想静静。

非对称加密简介

加密解密使用不同的秘钥,加密的密码无法用来解密,必须成对使用。

通讯双方A/B分别生成自己的公钥/私钥对,把公钥发送给对方。A发送信息时使用B的公钥加密,并使用自己的私钥签名。

B收到消息后,用A的公钥检查签名是否是A发出,确认成功后,用私钥解密查看信息。

B用A的公钥加密信息,并用自己的私钥签名。

最大缺点是速度慢,效率大大低于常规的对称加密。 一些技巧

如何生成交易账号

  1. 生成256位(64字节)私钥: 这个私钥是通过随机数生成器生成的,通常以十六进制表示。

  2. 非对称算法生成公钥: 通过私钥,使用非对称算法(如椭圆曲线加密算法)可以生成对应的公钥。

  3. 计算公钥的SHA-256: 对公钥进行 SHA-256 哈希计算,得到一个长度为 32 字节的哈希值。

  4. 计算ripemd-160: 将第 3 步的 SHA-256 哈希结果再进行 RIPEMD-160 哈希计算,得到一个长度为 20 字节的哈希值。

  5. 在头上加上地址版本: 在第 4 步的结果前面添加一个字节,用于表示地址的版本信息。比特币主网的地址版本通常为 0x00

  6. 计算SHA-256: 对第 5 步的结果进行两次 SHA-256 哈希计算。

  7. 取第6步的前4个字节,也就是8个16进制个位数,也就是字符串前8位: 从第 6 步得到的结果中取出前四个字节,通常以十六进制表示。

  8. 把第7步的4个字节内容添加到第5步结果后面作为校验: 将第 7 步得到的四个字节追加到第 5 步的结果后面。

  9. 对第8步的结果做base58编码,得到最终地址: 将第 8 步的结果进行 Base58 编码,得到最终的比特币地址。

这个过程中,私钥和公钥用于数字签名和验证,而最终的比特币地址用于接收和发送比特币。

交易解读

比特币没有余额

UXTO = Unspent Transaction Output

先了解一下流水账

         交易1: 系统发工资50元给A

        交易2(使用交易1获得的50元)

                        向B买包烟话费30元

                        给自己找零发20元

        交易3(使用交易2获得的20元)

                         叫外卖向C支付5元

                         给自己找零15元

        A的账户余额由多少?

著名的10,000个BTC买披萨的交易: 

交易输入

         上一笔交易输出的hash,钱从哪里来。

         scriptSig: 用来解锁上一笔交易的scriptPubKey用于这次交易的消费

交易输出

        金额,单位(聪)

         scriptPubKey:等下一笔教育的scriptSig来解锁

案例: Alice发送1 btc给Bob,签名和公钥是Alic的,交易必须验证Alic能不能使用自己上笔交易获得的收入。

        输出T1(钱从哪里来): TX1输出的scriptPubKey:OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

         输入T2(把T1的钱花掉): scriptSig:<签名> <公钥>

逐步执行验证脚本,合法花掉UXTO:

         实际验证脚本: <签名> <公钥> OP_DUP OP_HASH160 <pubKeyHash>         OP_EQUALVERIFY OP_CHECKSIG 常数入栈,栈内容:<签名> <公钥>

        OP_DUP复制栈顶元素,栈内容:<签名> <公钥> <公钥>

        OP_HASH160对栈顶元素计算Hash,栈内容:<签名> <公钥> <公钥哈希> 常数入栈,栈内容:<签名> <公钥> <公钥哈希> <pubKeyHash>

        OP_EQUALVERIFY OP_CHECKSIG检查栈顶元素是否相等,相等的话再比较签名。

更多支付方式

        支付到公钥(早期做法) scriptPubKey:<公钥> OP_CHECKSIG scriptSig:<签名>

        支付给任何人 scriptPubKey:<空> scriptSig:OP_TRUE

        永久销毁 scriptPubKey:OP_RETURN 直接返回,没法消费了。 签名消费(要求提供一段数据,hash后与<hash>相等。) scriptPubKey:OP_HASH256 <hash> OP_EQUAL scriptSig:<data>

结语:看我这么努力的份上,麻烦点赞收藏加关注,有问题在评论区call爆我,我一定会改的。谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/829602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一些基础知识FK

1. 群体稳定性指数PSI 通过 PSI(Population Stability Index) 指标&#xff0c;可以得到不同样本下&#xff0c;模型在各分数段分布的稳定性。用于衡量两个群体(比如两个时间点、两个子群体等)之间稳定性的指标。通常PSI被用于评估信用风险模型、预测模型等在不同时间点或不同群…

安装配置Maven(idea里面配置)

放在这个路径下&#xff08;如果需要可以免费发给你&#xff0c;dd我就好了&#xff09; D:\IearnSoftware\maven\apache-maven-3.6.1-bin.zip&#xff08;我自己的路径下面&#xff0c;防止忘记&#xff09; 1.首先测试maven在不在&#xff0c;配置对不对 mvn -v 这样就是成…

STM32HAL库++ESP8266+cJSON连接阿里云物联网平台

实验使用资源&#xff1a;正点原子F1 USART1&#xff1a;PA9P、A10&#xff08;串口打印调试&#xff09; USART3&#xff1a;PB10、PB11&#xff08;WiFi模块&#xff09; DHT11&#xff1a;PG11&#xff08;采集数据、上报&#xff09; LED0、1&#xff1a;PB5、PE5&#xff…

【微信小程序调用百度API实现图像识别实战】-前后端加强版

前言&#xff1a;基于前面两篇图像识别项目实战文章进行了改造升级。 第一篇 入门【微信小程序调用百度API实现图像识别功能】----项目实战 第二篇 前后端结合 【微信小程序调用百度API实现图像识别实战】----前后端分离 这一篇主要讲述的是在第二篇的基础上新增意见反馈功能&a…

第72天:漏洞发现-Web框架中间件联动GobyAfrogXrayAwvsVulmap

案例一&#xff1a;某 APP-Web 扫描-常规&联动-Burp&Awvs&Xray Acunetix 一款商业的 Web 漏洞扫描程序&#xff0c;它可以检查 Web 应用程序中的漏洞&#xff0c;如 SQL 注入、跨站脚本攻击、身份验证页上的弱口令长度等。它拥有一个操作方便的图形用户界 面&#…

实验8 NAT配置

实验8 NAT配置 一、 原理描述二、 实验目的三、 实验内容1.实验场景2.实验要求 四、 实验配置五、 实验步骤2.静态NAT配置3.NAT Outbound配置4.NAT Easy-IP配置 一、 原理描述 2019年11月26日&#xff0c;全球43亿个IPv4地址正式耗尽&#xff0c;这意味着没有更多的IPv4地址可…

Taro引入echarts【兼容多端小程序(飞书/微信/支付宝小程序)】

近期接到公司新需求&#xff0c;开发飞书小程序&#xff0c;并且原型中含有大量的图表&#xff0c;本想使用飞书内置图表组件 —— chart-space&#xff0c;但官方表示已经停止维护了&#xff0c;无奈之下&#xff0c;只能另寻他路&#xff0c;于是乎&#xff0c;图表之王&…

【Godot4.2】自定义Todo清单类 - myTodoList

概述 在写myList类的时候&#xff0c;就想到可以写一个类似的Todo清单类。 基础思路 本质还是在内部维护一个数组&#xff0c;在其基础上进行增删改查操作的封装为了方便存储数据&#xff0c;编写一个自定义内置类TodoItem&#xff0c;内部数组就变成了Array[TodoItem]类型的…

【Flutter】GetX

前言 状态管理 / 路由管理 / 依赖管理 这三部分之间存在联系 参考文章 建议看官网文章&#xff0c;很详细 &#xff0c;pub.dev搜索get pub.dev的文档 状态管理文章相关链接 状态管理 案例 实现一个计算器&#xff0c;运用GetX去管理它 构建界面 构建一个计算器界面 …

GateWay具体的使用之全链路跟踪TraceId日志

1.创建全局过滤器&#xff0c;在请求头上带入traceId参数&#xff0c;穿透到下游服务. package com.by.filter;import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.jwt.JWTValidator;…

数据结构1(初):时间复杂度和空间复杂度

目录 1、引言 1.1、什么是数据结构&#xff1f; 1.2、什么是算法&#xff1f; 1.3、如何学好数据结构和算法 &#xff1f; 2、算法效率 2.1、如何衡量一个算法的好坏 2.2、算法的复杂度 3、时间复杂度 3.1、时间复杂度的概念 3.2、大O的渐进表示法 3.3、常见时间复杂…

C语言自定义类型【联合体与枚举】

文章目录 1.联合体1.1联合体的声明1.2联合体的特点1.3联合体的大小计算联合体的使用案例 2.枚举2.1枚举类型的声明2.2枚举类型的优点(为什么使用枚举)2.3枚举类型的使用 结语 1.联合体 1.1联合体的声明 和结构体一样&#xff0c;联合体也是由一个或多个成员构成&#xff0c;同…

Atcoder Beginner Contest351 A-E Solution题解

文章目录 [A - The bottom of the ninth](https://atcoder.jp/contests/abc351/tasks/abc351_a)[B - Spot the Difference ](https://atcoder.jp/contests/abc351/tasks/abc351_b)[D - Grid and Magnet](https://atcoder.jp/contests/abc351/tasks/abc351_d)E Note&#xff1a;…

Rust 实战练习 - 12. Axum Web 简单demo

Rust Web 历程 Rust 的异步框架tokio非他莫属&#xff0c;而web框架一直是悬而未决&#xff0c;说到底还是因为没有官方成熟的方案指引&#xff0c;大家各玩各的&#xff0c;互不兼容&#xff0c;白白浪费精力。 这个事情一直等到半官方组织tokio推出axum有了改善。但是市场上…

如何将本地Android studio项目上传到GitHub

操作步骤&#xff1a; 1、在GitHub上创建账户 2、在androd studio中添加上述创建的GitHub账号 3、在android studio上找到"share project on GitHub"&#xff0c;点击此选项上传当前项目到GitHub 上传成功后&#xff0c;会在GitHub上创建默认仓库repository 注&a…

mysql-sql-练习题-2-窗口函数

窗口函数 访问量max sum建表窗口函数连接 直播间人数 第1、3名建表排名sum 访问量max sum 每个用户截止到每月为止&#xff0c;最大单月访问次数&#xff0c;累计到该月的总访问次数 建表 create table visit(uid1 varchar(5) comment 用户id,month1 varchar(10) comment 月…

阳光能源,创造永远:光模块的未来”:随着大数据、区块链、云计算和5G的发展,光模块成为满足不断增长的数据流量需求的关键技术

光模块的类型介绍&#xff1a; 为了适应不同的应用需求&#xff0c;不同参数和功能的光模块应运而生。光模块的分类方式及类型详见如下&#xff1a; &#x1f50e;封装形式&#x1f50d;&#xff1a; &#x1f4e3;&#x1f4e2;光模块按照封装形式来分有以下几种常见类型&a…

声光控路灯控制系统设计与仿真

目录 前言 一、设计任务 二、系统组成及工作原理 1、总体设计思路 2、电路各模块设计简介 &#xff08;1&#xff09;光控电路 &#xff08;2&#xff09;声控电路 (3) 逻辑控制电路 (4) 延时电路 三、系统中电源模块的设计 1、方案比较和确定 2、 设计思路 3、直流…

OpenHarmony实战开发-如何实现自定义绘制 (XComponent)

XComponent组件作为一种绘制组件&#xff0c;通常用于满足开发者较为复杂的自定义绘制需求&#xff0c;例如相机预览流的显示和游戏画面的绘制。 其可通过指定其type字段来实现不同的功能&#xff0c;主要有两个“surface”和“component”字段可供选择。 对于“surface”类型…

AcrelEMS-MH民航机场智慧能源管平台解决方案【可靠供电/降低能耗/高效运维】

民航机场行业背景 自2012年以来&#xff0c;我国民航运输规模出现了显著增长&#xff0c;旅客运输量&#xff1a;从2012年的3.19亿人次上升至2019年的6.6亿人次&#xff08;注&#xff1a;为剔除疫情影响&#xff0c;此处采取疫情前2019年的数据&#xff0c;下同&#xff09;&…