区块链学习笔记(一)——比特币概念以及密码学相关的知识

2023-11-19

自己做一些让自己读得懂的笔记

1.Bitcoin History

In 2008, a person under the pseudonym Satoshi Nakamoto published a paper Bitcoin: A Peer-to-Peer Electronic Cash System. Bitcoin software was released in January 2009 and the mining of the Bitcoin cryptocurrentcy officially started. The genesis block included the
“The Times” headline: “Chancellor on brink of second bailout for banks”. The article was about the state of the British financial system following the 2007–2008 financial crisis, and many believe that this is a hint to the purpose of Bitcoin: to create a more stable financial system. Satoshi Nakamoto vanished from the digital space shortly after releasing the code
for Bitcoin, and it is unknown who this person (or possibly a group of people) is. The first known commercial transaction using bitcoin happened in 2010 - two pizzas were bought for 10000 bitcoin.

直接引用了一下教材,简单的解释就是:
比特币是一种加密货币,是一种数字资产,使用密码学来控制其创建和管理,而不是依靠中央机关。所以它具有去中心化。"比特币 "一词是在2008年10月31日发表的一份白皮书中定义的。
创立比特币的原因是为了创造一种不受政府或金融机构控制的数字货币。比特币被设计成一种点对点的货币,意味着它可以直接从一个用户发送到另一个用户,而不需要第三方中介。

1.1 一个关于bitcoin的时间线
  • 2008: Satoshi Nakamoto publishes the Bitcoin white paper.
  • 2009: The first Bitcoin block is mined.
  • 2010: The first known commercial transaction using Bitcoin takes place.
  • 2011: The Bitcoin price reaches $1 for the first time.
  • 2013: The Bitcoin price reaches $1,000 for the first time.
  • 2017: The Bitcoin price reaches $20,000 for the first time.
  • 2018: The Bitcoin price crashes to $3,000.
  • 2021: The Bitcoin price reaches $65,000 for the first time.

关于区块链要读的一些文献这里给个传送门:http://t.csdn.cn/5F64K
(后续如果我看了我也会做笔记写出来的)

关于区块链的学习
这里推荐b站肖臻老师的《区块链技术与应用》,下面是他讲的有关密码学方面的笔记,后面应该也会挑着密码学的部分做笔记

2. Crytography of the Blockchain

bitcoin is a crypto-currency(比特币是一种加密货币),但是其实区块链(blockchain) 上所有的数据都是公开的,转账的金额都是公开的。
区块链密码学知识上涉及的一个是哈希函数,另外一个是签名。

2.1 the Hash function
2.1.1 collision resistance

其他的说法是collision free不过他不是很喜欢

if x ! =y
then H(x) = H(y)

哈希碰撞是客观存在的,不能人为的去制造哈希碰撞,没有高效的方法
暴力遍历寻找,但是这种方法也不实际,考虑到输入空间比较大的情况
(brute-force)

用来对信息求摘要 (message->digest)
H(m) 用来检测对m的篡改

MD5( 淘汰,因为已经知道如何人为制造哈希碰撞)

2.1.2 Hiding

哈希函数是单向不可逆的
由前得到后,得到后推不到前
前提条件是:输入空间要足够大,分布要比较均匀
x -> H(x)

digital commitment / digital equivalent of a sealed envelope(数字等效的密封信封)

两个特性collision resistance 和 hiding 来实现
预测结果不能提前公开
可以把预测结果作为输入,算出一个哈希值
可以公布出哈希值,作为sealed envelope,第二天收盘之后在公布结果
但是这样输入的结果很有限,容易预测出结果,股票就那么点

常用的方法是输入后面拼接一个随机数,之后再一起取哈希
这里引入了nonce(在挖矿miner 后面也会出现)
H(x|| nonce) 保证了输入足够随机,分布均匀

2.1.3 puzzle friendly

哈希值的计算,事先是不可预测的,不能猜测出结果,如果你希望你的哈希值的落在某个范围内,只能一个一个输入去试。
比如你可以尝试得到下面这个proof:
前面20位都是0 (总共是256位)
H(x) -> 000000000(20个零)XXXXXX
(其实已经有点挖矿的概念了)
miner‘s task is to find a nonce
nonce 是你可以寻找的随机数,通过改变它进行哈希得到你想要的结果

比特币是区块链,区块链就是一个一个区块(block)组成的链表(chain),每个区块有一个块头(block header),块头里面有很多域(domain)
其实后面会知道的就是 (XX|| XX|| nonce)

挖矿的目的就是对这个块头求哈希,使得整个
H(block header)<= target‘s space
在目标的范围内,其实也就是proof of work,是你工作量的证明

概念在这里:

Proof of Work (PoW) is a consensus mechanism used in blockchain networks, including Bitcoin. It is a computational puzzle that requires a significant amount of computational power to solve. The purpose of PoW is to ensure the security and integrity of the network by making it difficult and resource-intensive for malicious actors to manipulate the blockchain.
In PoW, miners compete to solve a complex mathematical problem, typically a cryptographic hash function, by repeatedly hashing different inputs until they find a solution that meets certain criteria. This solution is known as the "proof" and serves as evidence that the miner has expended a significant amount of computational effort.

第一段是proof of work的概念,第二段是矿工们的工作以及通过这个指标来进行工作量的证明。

“difficult to solve, but easy to verify”
虽然找到一个合适的nonce需要很大的工作量,但是一旦找到之后发布(broadcast)出去,其他人要验证(validate its valid)是不是符合要求是很容易的,只需要算一次哈希值来判断。

比特币中用的哈希函数叫做 SHA-256 (secure hash algorithm)

2.2 Signature

因为比特币是去中心化的,它没有第三方进行管理,是P2P结构,所以在比特币中如果你要注册,就只需要个人开户,创立公钥和私钥一对
(public key and private key)
这就代表了一个账户,比特币的信息
Bitcoin: local generate public(address) privacy(password)

  • 不理解的自己可以去了解非对称加密算法(加密用的是公钥,解密用的是私钥(但是这样不能保证identification 身份认证))

比特币是反过来,先用私钥进行签名 verifiied key,验证签名用的是这个人的公钥,因为我要明白的是这个人给我转钱

  • 公私钥对产生的相同怎么办?
    实际当中不可行,位数为256,为什么要做这种暴力拆解的事情
    他说比地球爆炸的概率还要小。

前提是有一个好的随机源
a good source of randomness

每一次签名都需要好的随机源,防止泄露私钥

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链学习笔记(一)——比特币概念以及密码学相关的知识 的相关文章

  • VUE-CLI学习第七天

    VUE CLI学习第七天 vue vuex学习 vuex结构 引入vuex vuex的使用 state mutation action modules getters 对象解构 vuex模块封装 vue vuex学习 vuex结构 src
  • Python爬虫分析CSDN个人博客数据

    前言 到周末了 产生一个idea 就是获取个人的全部博客标题及链接 发布时间 浏览量 以及收藏量等数据信息 按访问量排序 整理成一份Excel表存储 使用时 输入个人博客ID即可 从数据获取到解析存储 用到requests Beautifu
  • Hystrix-Dashboard介绍+案例+图分析

    测试中使用到的代码到在这里https download csdn net download zhou920786312 10853300 Hystrix Dashboard介绍 实时监控Hystrix的各项指标信息 是Hystrix的仪表盘

随机推荐

  • 使用Pytorch框架

    文章目录 Python深度学习神经网络的API pytorch简介 pytorch安装 GPU和CPU 张量 1 基本概念 2 图像作为输入 3 张量的创建方式 弄好一个numpy数组后 利用它有四种方式创建张量 没有预先确定数据 生成默认
  • a标签设置下载设置文件名,并且设置无效的解决方法

    设置 a 标签的 download属性 可以重置 文件名 如下代码 文件名重置为 file xlsx a href http 192 168 1 1 abcd xlsx 下载 a 这种写法有个前提 href 的下载地址 和 当前网站地址 必
  • SQL中ALL、Any、Some的区别

    SQL语句中存在3个著名的量词 some all 和 any All 只有当其所有数据都满足条件时 条件才成立 Any 只要有一条数据满足条件 条件就成立 Some 其中存在一些数据满足条件 作用和Any大致相同 常规的使用中看作一致即可
  • 来这里读懂英文!!!认清楚API !!!

    API Aplication Programming Interface 应用程序接口 直接的说 API就好比是一个信使 发送请求 告诉系统你想要做什么 然后把结果告诉你 再或者说 不论何时想到API 都应当把它想象成为餐馆的服务生 奔波于
  • Qt自带的日志框架

    描述 Qt中使用Qt qInstallMessageHandler 注册日志消息 日志级别 qDebug 调试信息 qWarning 警告信息 qCritical 严重错误 qFatal 致命错误 代码实现 void outputMessa
  • 服务数据的定义和使用

    1 自定义数据服务 在包下创建srv文件夹 在文件夹下创建Person srv 在Person srv下输入以下内容 代表数据类型 string name uint8 age uint8 sex uint8 unknown 0 uint8
  • Linux系统安装android studio

    版权声明 本文为博主原创文章 未经博主允许不得转载 标签 空格分隔 Linux android studio 下载openjdk 7 jdk 通过终端直接安装的方式 不需要进行jdk配置 如下 sudo apt get install op
  • 如何把本地项目的代码上传到 GitHub 上(详解)

    此教程适用于已经安装 git 并且已经注册 GitHub 账号的电脑 如果没有下载 git 或者还没有注册过 GitHub 账号的 可以找相关教程弄一下 下面直接开整 说明 这里的案例就用我之前写的一个前端页面 内蒙古招生考试信息网首页 来
  • 【头歌-Python】Python第六章作业(初级)

    第1关 列表的属性与方法 任务描述 初始化一个空列表 输入一个正整数 n 接下来 你将被要求输入 n 个指令 每得到一个指令后 根据指令的字符串进行对应的功能操作 指令形式及对应功能如下 insert i e 在第 i 个位置插入整数 e
  • 5秒之后自动跳转页面

  • 基础备忘:数组指针与对一维数组名取地址

    一 指向一维数组的数组指针 数组指针是指向一个数组的指针 如 int p 10 p是一个指针 指向一个包含10个元素的一维数组 数组元素是整形 如果写成了int p 10 则是一个指针数组 由于 的优先级比 的高 p先与 结合 p就是数组类
  • Mac maven删除与安装

    Mac maven删除与安装 一 删除maven 找到maven安装目录 打开终端输入 mvn version找到安装目录 终端输入sudo rm rf maven的路径 二 安装maven 到maven官网下载 选择apache mave
  • [2021首届“陇剑杯”网络安全大赛] SQL注入

    2021首届 陇剑杯 网络安全大赛 SQL注入 题目描述 某应用程序被攻击 请分析日志后作答 黑客在注入过程中采用的注入手法叫 布尔盲注 格式为4个汉字 例如 拼搏努力 黑客在注入过程中 最终获取flag的数据库名 表名和字段名是 Sqli
  • vue3中实现el-dialog弹窗

    vue3中的父子组件传递依然和vue2中的一样使用props和emit 但是写法略有不同 emit 自定义事件 子传父 props 父传子 父组件中
  • 【数学建模】预测模型——多元回归分析 SPSS实现

    线性回归介绍 回归分析是研究变量之间因果关系的一种统计模型 因变量就是结果 自变量就是原因 基于结果变量 因变量 的种类 回归分析可分为 线性回归 因变量为连续变量 logistic回归 因变量为分类变量 柏松回归 因变量为计数变量 这三种
  • config:fail,Error: 系统错误,错误码:40048,invalid url domain

    调用微信接口报出的错误 这个错误原因是因为安全域名配置错误 分两种情况 若是公众号的测试号 你完全可以写一个内网ip 比如192 168 1 100 8080 不必内网穿透 当然如果是需要微信回调的话还要外网可访问 若是公众号的正式号 可以
  • 使用Flink1.16.0的SQLGateway迁移Hive SQL任务

    使用Flink的SQL Gateway迁移Hive SQL任务 前言 我们有数万个离线任务 主要还是默认的DataPhin调度CDP集群的Hive On Tez这种低成本任务 当然也有PySpark 打Jar包的Spark和打Jar包的Fl
  • shell 脚本编写总结(1)

    知识点1 变量 1 环境变量 1 变量 BASH Bash Shell的全路径 比如 echo BASH 2 变量 BASH VERSION Bash Shell的版本号 3 变量 EUID 记录当前用户的UID root用户值为0 4 F
  • vue + 高德地图 + 标记点

    其他 高德地图引入及使用 vue 高德地图 标记点 变大变小闪烁动画 多标记点 同一位置标记点显示个数 增加标记点 绘制地图 this map new AMap Map map resizeEnable true center 120 35
  • 区块链学习笔记(一)——比特币概念以及密码学相关的知识

    自己做一些让自己读得懂的笔记 区块链学习笔记 一 1 Bitcoin History 1 1 一个关于bitcoin的时间线 2 Crytography of the Blockchain 2 1 the Hash function 2 1