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

目录

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.mzph.cn/diannao/3737.shtml

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

相关文章

【C++】STL-vector的使用

目录 1、什么是vector? 2、vector的使用 2.1 vector的定义 ​编辑 2.2 遍历修改数据 2.3 迭代器 2.4 vector空间增长问题 2.5 vector的增删查改 3、迭代器失效 3.1 会引起其底层空间改变的操作,都有可能是迭代器失效 3.2 指定位置元素的删除操…

stable diffusion Temporal-kit和EbSynth视频转动画学习笔记

1、打开stable diffsuion webui 点击Temporal-kit 页签,再点击预处理pre-processing,上传视频 在工作目录下得到拆分的关键帧,在input目录里 打开图生图,输入正反描述词,其他配置如下 批量生成图片,找到最满意的那一张&#xff0…

python-opencv实现最近邻插值和双线性插值对图片上采样

使用背景 当我们需要把图像进行放大或者缩小的时候,第一反应是使用resize()实现。很多情况下,我们会调用最近邻插值和双线性插值去放大图片,当然要说没有分辨率的损失那是不可能的,只能说在放大图片的过程中尽可能增加了图片的分…

stm32开发之netxduo组件之mqtt客户端的使用记录

前言 1使用mqtt协议的简单示例记录 代码 MQTT服务端(C# 编写,使用MQTTnet提供的示例代码) 主程序 namespace ConsoleApp1;public class Program {public static async Task Main(string[] args){await Run_Server_With_Logging();}}public static async Task Run_Server_Wi…

js如何点击生成4位随机数

效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Generat…

软件开发最近很吃香,嵌入式建议转行吗?

在当今时代&#xff0c;软件开发确实备受瞩目&#xff0c;也相当吃香。那么&#xff0c;对于嵌入式领域&#xff0c;我们是否应该考虑转行呢&#xff1f; 事实上&#xff0c;嵌入式工程师的薪资水平相较于互联网行业&#xff0c;在某些情况下可能会略低一些&#xff0c;尤其是…

对于AIGC(人工智能)我们应该如何看待

文章目录 前言一、AIGC技术的现状与特点二、AIGC技术在各个领域的应用三、AIGC技术对未来社会的影响四、AIGC技术的可能发展方向 前言 随着科技的飞速发展&#xff0c;人工智能与大数据的结合日益紧密&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;技术作为这一领域…

DRF 查询(排序、过滤、分页)

查询(排序、过滤、分页) 【0】准备 &#xff08;1&#xff09;Q查询 详细内容可见&#xff1a;Django模型层-CSDN博客Django 的 Q 对象提供了一种在数据库查询中构造复杂查询的方法。当你想在单个查询中组合多个过滤条件&#xff0c;并且这些条件之间不仅仅是简单的 AND 关系…

阿里云X魔搭社区Create@AI创客松第四届冠军:MumuLab

4月13日终于迎来了线下Demo Day&#xff0c;此前阿里云 X 魔搭社区 X Datawhale CreateAI创客松已经紧锣密鼓地准备了一个多月时间&#xff0c;全球150团队报名、创作出66作品、评选出25支团队进入决赛&#xff0c;作品范围覆盖从办公效率到法律调解再到游戏互动以及构建童话世…

构建交通新动脉 激活襄阳城市发展动力

—— 襄阳环线提速改造工程通车 即从巴峡穿巫峡,便下襄阳向洛阳。襄阳,这座位于汉江之滨的历史文化古城,自古便为交通要塞,正以崭新的姿态迈入一个新时代——城市交通快速化时代。4月26日,襄阳环线提速改造工程正式通车,“一轴三环九放射”城市骨架路网体系基本形成。它不仅是…

python 实现用户登录

1. JWT Token 参考&#xff1a;https://www.zhihu.com/question/364616467 jwt官网&#xff1a;https://jwt.io/#debugger-io 1.1. Token Token 是一个宽泛的术语&#xff0c;它可以指代任何一种用于身份验证的机制。Token 常常被用在验证和授权流程中。Token 可以有不同的形…

C语言笔试题之找出数组的最大公约数

找出数组的最大公约数 实例要求 1、给定一个整数数组 &#xff0c;返回数组中最大数和最小数的最大公约数&#xff1b;2、两个数的最大公约数是能够被两个数整除的最大正整数&#xff1b;示例&#xff1a; 实例分析 1、要找到数组中最大数和最小数的最大公约数&#xff1b…

python 中使用 ESP8266 实现语音识别(或热词检测)

介绍 我的大部分家庭自动化都是通过对网络中的设备执行 HTTP 请求来控制的。 (例如:开灯、打开收音机、控制加热系统...... 这可以使用ESP8266轻松完成。我有一个控制器和一个触摸传感器,当我在床上时用它来控制灯光和音乐。 像 Amazon Echo 或 Google Homepod 一样添加语…

Apache RocketMQ ACL 2.0 全新升级

作者&#xff1a;徒钟 引言 RocketMQ 作为一款流行的分布式消息中间件&#xff0c;被广泛应用于各种大型分布式系统和微服务中&#xff0c;承担着异步通信、系统解耦、削峰填谷和消息通知等重要的角色。随着技术的演进和业务规模的扩大&#xff0c;安全相关的挑战日益突出&am…

HPE Aruba Networking推出新一代Wi-Fi 7接入点 助力企业高效应对安全、AI与物联网挑战

HPE ArubaNetworking推出的全新Wi-Fi 7接入点&#xff0c;提供全面的AI就绪边缘IT解决方案&#xff0c;旨在为用户和物联网设备提供安全、高性能的连接服务&#xff0c;以实现数据的捕获和路由&#xff0c;从而满足AI训练和推理需求 休斯顿-2024年4月23日-慧与科技(NYSE: HPE)近…

vue+html5+css制作日历代码,工作日配置

目录 1.日历页面 2.工作日查询、自然日查询 js 3.修改工作日配置 4.数据库&#xff0c;表结构 5.初始化数据 因系统需要&#xff0c;需要制作一个功能--工作日配置。 需要的业务有&#xff1a; 1.初始化与国家放假情况一致&#xff0c;之后支持手动进行工作日配置&#…

Python 网络与并发编程(四)

文章目录 协程Coroutines协程的核心(控制流的让出和恢复)协程和多线程比较协程的优点协程的缺点 asyncio实现协程(重点) 协程Coroutines 协程&#xff0c;全称是“协同程序”&#xff0c;用来实现任务协作。是一种在线程中&#xff0c;比线程更加轻量级的存在&#xff0c;由程…

《欢乐钓鱼大师》攻略,钓友入坑必备!

欢迎来到《欢乐钓鱼大师》&#xff01;在这个游戏里&#xff0c;你可以尽情享受垂钓的乐趣&#xff0c;通过不断更换和升级高阶鱼竿&#xff0c;轻松地钓到各种稀有鱼类。因为许多玩家在挑战关卡时遇到了一些困难&#xff0c;所以今天我给大家带来了《欢乐钓鱼大师攻略指南》&a…

日志框架整合SpringBoot保姆级教程+日志文件拆分(附源码)

目录 介绍 日志概述 日志文件 调试日志 系统日志 日志框架 日志框架的作用 日志框架的价值 流行的日志框架 SLF4J日志门面 介绍 环境搭建简单测试 集成log4j logback Logback简介 Logback中的组件 Logback配置文件 日志输出格式 控制台输出日志 输出日志到…

vue-admin-template项目实现中英文切换

实现效果&#xff1a; 1.安装 *注意版本号 npm install vue-i18n8.24.5 -S2.新建文件夹 在src目录下新建lang文件夹&#xff0c;里面有3个文件 // index.js import Vue from vue import VueI18n from vue-i18n import Cookies from js-cookie import elementEnLocale fr…