区块链技术与应用学习笔记(8-9节)——北大肖臻课程

news2024/11/18 9:39:09

目录

8.挖矿

对于全节点和轻节点思考问题?

①全节点在比特币的主要作用?

②挖矿时当监听到别人已经挖出区块并且延申了最长合法链此时应该立刻放弃当前区块在 本地重新组装一个指向最后这个新合法区块的候选区块,重新开始挖矿。节点这么做会不 会太浪费时间,资源了?

挖矿本身具有无记忆性(memoryless/progress free)。也就是说,无论之前做多少大量试验,对后续 继续挖矿没有任何影响。

③全节点除了保存完整账本和验证交易外,还可以有什么作用?

对于挖矿设备演化思考?

①越来越多挖矿设备参与比特币挖矿比特币会不会贬值?

②CPU,GPU的优缺点有什么(简单理解)?

③ASIC优势有什么?

对于矿池出现及矿池组织形式思考?

①什么是矿池?

②矿池的组织形式有哪些?

矿池利益分配思考?

①当矿机来自于不同的机构在矿池中的矿工如何进行利益分配?

②矿池利益分配中矿工可能出现问题与结果?

对于矿池统计数据思考?

51%算力矿池可以带来那些威胁思考? 经过Ghash.io事件过后,我们是否应该阻止大型矿池出现?

9.比特币脚本

比特币脚本:

输入输出脚本的执行:

输入输出脚本的几种形式:

P2PK形式(Pay to public key)

P2PKH形式(Pay to public key hash)最常用

P2SH形式(Pay to script hash)

多重签名

PoB 共识机制:


8.挖矿

对于全节点和轻节点思考问题?

①全节点在比特币的主要作用?

节点需要占用很大的内存去同步所有区块链上的数据,确保能快速验证交易的正确性。区 块链上的所有交易都是实时发生的,全节点在区块链分布式账本中主要作用之一就是负责 链上交易广播和验证。

②挖矿时当监听到别人已经挖出区块并且延申了最长合法链此时应该立刻放弃当前区块在 本地重新组装一个指向最后这个新合法区块的候选区块,重新开始挖矿。节点这么做会不 会太浪费时间,资源了?
挖矿本身具有无记忆性(memoryless/progress free)。也就是说,无论之前做多少大量试验,对后续 继续挖矿没有任何影响。
③全节点除了保存完整账本和验证交易外,还可以有什么作用?

另一个主要作用就是作为比特币网络的第二层防御(第一层是算力)。一旦有人掌握51%的 算力试图改变比特币区块共识,诚实的全节点将会生成最长的、超过攻击者的链条,从而拒 绝这些恶意交易,由此来维护分布式账本的安全(51%攻击于后文提及)。

对于挖矿设备演化思考?

①越来越多挖矿设备参与比特币挖矿比特币会不会贬值?

比特币日产量是固定的现在每产生一个区块的奖励为12.5btc,每10分钟产生一 个区块。矿机越来越多,挖矿难度会上涨,反而抬高比特币的价格。而且恰恰是 比特币价格的一路走高导致越来越多性能越来越强的矿机被制造出来。比特币数 量是有限的,但并不影响人们对于比特币挖矿的需求。

②CPU,GPU的优缺点有什么(简单理解)?

CPU:优点:简单容易组装,成本低。缺点:按现在的全网算力,CPU 毫无竞争 优势,如用 CPU 矿机挖矿获得比特币,它的概率估计比中彩票还低。 GPU:优点:可以集中提供算力。缺点:太贵

③ASIC优势有什么?

他的芯片只有7纳米,芯片尺寸对于矿机而言至关重要,决定了采矿的效率和费用,芯片表面面积越大,通信路径越长,因此数据传输所需要的电力消耗越大,目前的ASIC 矿机相比于最早期的CPU挖矿平均速度提升了1000亿倍,比特币市值越高,矿工的利润越高,同时通过采矿技术的创新提升,降低运营成本,进一步提高挖矿收益。ASIC不需要其他各种操作,只要专心计算HASH就好了!只会做一件事,专心做一件事,做到最省,这就是ASIC的优势。

对于矿池出现及矿池组织形式思考?

①什么是矿池?

由于比特币每日产出的区块基本是固定的,那么在全网算力提升到了一定程度后,单台机器挖到块的概率变得非常的低。这种现象的发展,促使一些矿工开发出一种可以将少量算力合并联合运作的方法,使用这种方式建立的网站便被称作“矿池”(MiningPool)。矿池其实就是聚集矿工的算力组成一个团队,团队里有任何一台矿机挖出区块,矿池就会按区块中获得的奖励按照不同的分配模式分给大家。矿池存在意义为提升比特币开采稳定性,使矿工收益趋于稳定。在矿池中矿工只需要不停计算哈希值,而全节点其他职责由矿主来承担。

②矿池的组织形式有哪些?

1.类似大型数据中心(同一机构),集中成千上万矿机进行哈希 计算。2.分布式。矿工与矿主不认识(不同机构),矿工与矿主联 系,自愿加入其矿池,矿主分配任务,矿工进行计算,获得收益 后整个矿池中所有矿工进行利益分配。

矿池利益分配思考?

①当矿机来自于不同的机构在矿池中的矿工如何进行利益分配?

假定平均分配,所有人平分出块奖励,则会导致某些矿工偷懒,不干活。所以,这里也需要进行按劳分配,需要一个工作量证明的方案。如何证明每个矿工所作的工作量呢? 解决方案如下 现在降低挖矿要求,原来需要计算前70位为0现在只需要前60位为0,这样挖矿会更容易挖到。当然,这个哈希是不会被区块链所承认的,我们将其称为一个share或almost valid share。矿工每挖到一个share,将其提交给矿主,矿主对其进行记录,作为矿工工作量的证明。等到某个矿工真正挖到符合要求的的区块后,根据所有矿工提交的share数量进行分配。因为每个矿工尝试的nonce越多,挖到矿的可能性越大,所能得到的share也会越多,所以这种方案作为工作量证明方案是可行的。

②矿池利益分配中矿工可能出现问题与结果?

一:矿工不提交合法区块,偷出块奖励并不可行,不提交合法区块矿 工自身也无法得到出块奖励,矿工任务由矿主分配并且出块奖励收 款方地址为矿主的。

二:矿工组装区块,收款地址为个人,此时矿工share不合法,矿工为 个人单干和矿池没关系。

三:在矿池里恶意搞破坏的矿工,因为不同的矿池有竞争关系,所以的确存在恶意搞破坏的矿工,故意丢掉合法区块。

对于矿池统计数据思考?

①中国矿池占比很大,某些矿池算力过强导致人们对于 比特币信心动摇,矿工转换矿池很容易,有可能存在矿池 的算力很强只是不表露。

②由这些数据可以得知,矿池本身对BTC系统带来了较大 威胁。某个恶意用户如果想发动攻击,以前需要自己达到 51%算力,现在自己只需要作为矿主,个人算力要求变少。只要能够吸引到足够多的不明真相的矿工 便可以用较低成本实现51%攻击。当然,矿主管理矿池, 也需要收取一定比例(出块奖励、交易费)作为管理费用。 如果恶意者想要攻击系统,会将管理费降低甚至赔本吸引 足够多矿工加入,使得发动51%攻击变得容易了起来。

51%算力矿池可以带来那些威胁思考? 经过Ghash.io事件过后,我们是否应该阻止大型矿池出现?

在PoW共识机制下,以比特币为首,51%攻击威胁会一直存在。 目前,比特币全网绝大多数算力都掌握在少数几家矿池手里,比 特币并不是绝对安全,理论上说,51%攻击威胁一直都存在。 但是,大型矿池在发动51%攻击会重创比特币币值,损人不利己 并且长远看来,矿池的出现的确为矿工带来了更多的收益, 综上所述,51%算力攻击存在理论可能,但几乎不会发生。比起 阻止我个人认为赚钱更重要。
 

9.比特币脚本


比特币脚本:

比特币系统中使用的脚本语言非常简单,唯一可以访问的内存空间只有栈,所以也 被称为“基于栈的语言”如果存在 一个交易有多个输入,那么每个输入都要说明币 的来源并给出签名(BTC中一个交易可能需要多个签名。除了第一笔交易是矿工的 挖矿所得外,每一笔交易都拥有一个或多个输入(TxIn),以及一个或多个输出 (TxOut)

输入输出脚本的执行:

在早期,直接将两个脚本按照如图顺序(input script在前,output script在后) 拼接 后执行,后来考虑到安全性问题,两个脚本改为分别执行:先执行input script,若无 出错,再执行output script。如果脚本可以顺利执行,最终栈顶结果为true,则验证 通过,交易合法;如果执行过程中出现任何错误,则交易非法。如果一个交易有多个 输入脚本,则每个输入脚本都要和对应的输出脚本匹配执行,全部验证通过才能说明 该交易合法。

输入输出脚本的几种形式:

P2PK形式(Pay to public key)

特点:输出脚本直接给出收款人公钥。(CHECKSIG为检查签名操作)

P2PKH形式(Pay to public key hash)最常用

特点:输出脚本不直接给出收款人公钥,而是公钥的哈希。

P2SH形式(Pay to script hash)

特点:输出脚本给出的不是收款人公钥的哈希,而是收款人 提供的一个脚本的哈希。该脚本称为redeemScript,即赎回 脚本。等未来花钱的时候,输入脚本要给出redeemScript的 具体内容以及可以使之正确运行需要的签名。

多重签名

1.早期实现方法: 该方法通过CHECKMULTISIG来实现,其中输入脚本提供N个签名 输出脚本给出N个公钥和阈值M,表示N个人至少有M个签名即可实 现转账(N>=M)。输入脚本只需要提供N个公钥中M个合法签名即可。

2.当下实现方法:如图为使用P2SH实现多重签名 本质上是将复杂度从输出脚本转移到输入脚本,该赎回脚本在输入脚 本提供,即收款人提供。收款人只需要公布赎回脚本哈希值即可,用 户只要在输出脚本中包含该哈希值,用户无需知道收款人的相关规则

PoB 共识机制:

PoB(Proof of Burn),燃烧证明机制,即通过销毁加密货币来证明 用户对网络的投入,从而获得“挖矿”以及验证交易的权利。燃烧 (销毁)得越多,拥有的(虚拟)算力就越大。

本期到此结束!

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

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

相关文章

AbstractRoutingDataSource实现多数据源切换以及事务中无法切换问题

一、AbstractRoutingDataSource实现多数据源切换 为了实现数据源的动态切换,我们采用了AbstractRoutingDataSource结合AOP反射来自定义注解。通过这种机制,我们可以在运行时根据自定义注解来选择不同的数据源,从而实现灵活高效的数据访问策略…

Linux文件/目录高级管理一(头歌实训)

目录 任务描述 相关知识 Linux修改文件权限命令 Linux修改所有者权限 Linux修改同组用户权限 Linux修改其他用户权限 编程要求 任务描述 相关知识 Linux修改目录权限命令 Linux修改所有者权限 Linux修改同组用户权限 Linux修改其他用户权限 编程要求 任务描述 相…

Linux(Centos)服务器探索ffmpeg笔记 (命令行、Nvidia硬件加速、GPU、CPU、CUDA、h264_nvenc、过滤器、加水印)

目录 前言内容简介为什么会有这篇文章 1、服务器上怎么使用ffmpeg1.1 使用编译好的(需要root权限)1.2 自己怎么编译(需要root权限) 2 、非Root用户要怎么安装和使用3、ffmpeg命令的一些使用引导和参数介绍3.1 编译参数3.2 查询支持…

labview中TDMS读写波形图

TDMS与二进制读写速度区别不大,但是它具备关系型数据库的一些优点,经常用于存取波形数据。

数据库工程师的工作职责(合集)

数据库工程师的工作职责1 职责: 1. 日常数据库的基本安装,维护,升级,监控的; 2. 配合研发部门进行数据库设计支持,协助开发、设计和进行SQL语言优化; 3. 配合相关部门数据库相关的任务,比如数据导入导出&am…

单片机LCD1602显示电子时钟设计,含汇编程序、仿真、论文

目录 1、摘要 2 系统方案 2.1 系统整体方案的论证 3 硬件设计与实现 3.1单片机最小系统 3.2振荡电路的工作原理 3.2时钟电路的工作原理 3.3单片机最小系统电路图 3.4 时钟芯片 3.5 液晶显示电路 4 实物调试及测试 4.1 实物图 4.2仿真结果图如下所示 5、单片机源…

JAVA实现easyExcel动态生成excel

添加pom依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version> </dependency><!--工具类--> <dependency><groupId>cn.hutool</groupId><…

请编写一个函数void fun(char*ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 请编…

三星电脑文件夹误删了怎么办?恢复方案在此

在使用三星电脑的过程中&#xff0c;我们可能会不小心删除了某个重要的文件夹&#xff0c;其中可能包含了工作文件、家庭照片、视频或其他珍贵的数据。面对这种突发情况&#xff0c;不必过于焦虑。本文将为您提供几种有效的恢复方案&#xff0c;希望能帮助您找回误删的文件夹及…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

Java面试八股之Java中为什么没有全局变量

Java中为什么没有全局变量 Java中没有传统意义上的全局变量&#xff0c;这是因为Java语言设计遵循面向对象的原则&#xff0c;强调封装性和模块化&#xff0c;以及避免全局状态带来的副作用。 封装性&#xff1a; 全局变量违反了面向对象编程中的封装原则&#xff0c;即隐藏对…

【ARM 裸机】模仿 STM32 驱动开发

1、修改驱动 对于 STM32 来说&#xff0c;使用了一个结构体将一个外设的所有寄存器都放在一起&#xff0c;在上一节的基础上进行修改&#xff1b; 1.1、添加清除 bss 段代码&#xff0c; 1.2、添加寄存器结构体 新建一个文件&#xff0c;命名imx6u.h&#xff0c;注意地址的连…

JS手写set与map

目录 setaddhas与equalsdelete迭代器完整实现 map set set是一个没有重复元素的集合&#xff0c;事实上我们无法完全的使用js来模拟出set的全部功能&#xff0c;因为浏览器原生的set底层是使用c实现&#xff0c;能直接访问内存&#xff0c;所以我们只能实现set的一部分功能 这…

Django与mysqlclient链接不成功

先检查自己的python是什么版本&#xff0c;是64位还是32位&#xff0c;这个自己去网上查。 我的是32位的&#xff0c;因为直接pip下载不了&#xff0c;网上也没有32位的whl&#xff0c;所以卸载重装一个64位的3.9.6的python 网上直接搜mysqlclient&#xff0c;找到对应py39也…

WPF2 样式布局

样式布局 WPF中的各类控件元素, 都可以自由的设置其样式。 诸如: 字体(FontFamily) 字体大小(FontSize) 背景颜色(Background) 字体颜色(Foreground) 边距(Margin) 水平位置(HorizontalAlignment) 垂直位置(VerticalAlignment) 等等。 而样式则是组织和重用以上的重要工具。…

ray.tune调参学习笔记1:超参数优化器tuner设置

最近研究中学习使用python的ray.tune进行神经网络调参。在这里记录学习过程中的收获&#xff0c;希望能够帮助到有同样需求的人。学习过程主要参考ray官网文档&#xff0c;但由于笔者使用的ray为2.2.0版本&#xff0c;而官方文档为更高级版本&#xff0c;笔者代码和官方文档代码…

Python实现本地视频/音频播放器

Python实现本地视频/音频播放器 在Python中&#xff0c;有几个库可以用于视频播放&#xff0c;但是没有一个库是完美的&#xff0c;因为它们可能依赖于外部软件或有一些限制。 先看介绍用Python实现本地视频播放器&#xff0c;再介绍用Python实现本地音乐播放器。 Python实现…

【C 数据结构】图

文章目录 【 1. 基本原理 】1.1 无向图1.2 有向图1.3 基本知识 【 2. 图的存储结构 】2.1 完全图2.2 稀疏图和稠密图2.3 连通图2.3.1 (普通)连通图连通图 - 无向图非连通图 的 连通分量 2.3.2 强连通图强连通图 - 有向图非强连通有向图 的 强连通分量 2.3.3 生成树 - 连通图2.3…

重仓比特币

作者&#xff1a;Arthur Hayes Co-Founder of 100x. 编译&#xff1a;liam ccvalue (下文中表达的任何观点均为作者的个人观点&#xff0c;不应作为投资决策的依据&#xff0c;也不应被视为参与投资交易的建议或意见&#xff09;。 我们中断牛市常规节目&#xff0c;为您播报这…

【研发管理】产品经理知识体系-产品创新中的市场调研

导读&#xff1a;在产品创新过程中&#xff0c;市场调研的重要性不言而喻。它不仅是产品创新的起点&#xff0c;也是确保产品成功推向市场的关键步骤。对于产品经理系统学习和掌握产品创新中的市场调研相关知识体系十分重要。 目录 概述&#xff1a;市场调研重要性 1、相关概…