当前位置: 首页 > news >正文

[2024区块链开发入门指引] - 比特币与区块链诞生

一份为小白用户准备的免费区块链基础教程

工欲善其事,必先利其器

Web3开发中,各种工具、教程、社区、语言框架.。。。
种类繁多,是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役?

参见另一篇博文👉 2024最全面且有知识深度的web3开发工具、web3学习项目资源平台

在这里插入图片描述

区块链诞生之前

我们通常把比特币的发明看成是区块链诞生的标志性事件。但区块链就像很多技术一样,并不是凭空出现,通常都会有一些渊源。 1991年,比特币发明出来的17年前,斯图尔特·哈伯(Stuart Haber)和W.斯科特·斯托内塔(W. Scott Stornetta)就提出了区块链的前身。他们创造性地把一系列区块链接起来,最终保证了电子文档的时间戳不可篡改。一年之后,他们升级了这套系统,往其中加入默克尔(Merkle)树。得益于此,系统的效率大大提升,可以在一个区块中放入一组文档。 通过 Hash 链接在一起的区块、默克尔(Merkle)树,构成了比特币诞生的基础,这些最终都成为区块链技术的重要组成部分。

区块链的诞生标志 —— 比特币

2008年10月31日,一名叫中本聪(Satoshi Nakamoto)的用户在密码学的邮件组中发了一个链接,链接指向一篇叫作《比特币:点对点的电子现金系统》(Bitcoin: A Peer-to-Peer Electronic Cash System)的论文,标志着比特币的诞生。

点对点的电子现金系统论文中详细介绍了如何使用点对点技术创建一种电子货币(数字货币)。
在这里插入图片描述

2009年1月3日,中本聪挖出了比特币的创世区块,标志着比特币网络正式上线。中本聪在挖出创世区块的过程中获得了50个比特币的矿工奖励,同时他在创世区块中留下了这句话: The Times 03/Jan/2009 Chancellor on brink of second bailout for banks.(2009年1月3日,财政大臣正处于实施第二轮银行紧急援助的边缘) 这句话是英国《泰晤士报》当天的头版文章标题。通过对头版头条的引用证明了比特币的实际上线时间。

早期数字货币探索

1983年,戴维·查姆(David Chaum)和史蒂芬·布兰德斯(Stefan
Brands)开发了ecash协议,基于ecash协议,不少人发明了多种电子现金系统。 1997年,亚当·巴克(Adam
Back)开发了hashcash协议,主要是为了解决垃圾邮件泛滥的问题,其中用到的技术就是后来被比特币使用的工作量证明算法(proof-of-work)。
1998年,戴伟(Wei Dai)发明了b-money,尼克·萨博(Nick Szabo)发明了bit
gold。两者被认为是最早的分布式加密货币。 这一切可以被认为是比特币的前身,它们都或多或少地影响了比特币的设计。 2008年8月18日,
bitcoin.org 域名注册,
2008年10月31日,密码学(cryptography)邮件列表中收到了一个叫中本聪的人发表论文《比特币:点对点的电子现金系统》。

比特币历史事件

2009年1月9日,知名代码托管网站SourceForge上发布了第一个开源版本的比特币客户端。
2009年1月9日,作为比特币的早期支持者和贡献者的程序员哈尔·芬尼(Hal
Finney)下载了比特币客户端,2009年1月12日,哈尔·芬尼(Hal Finney)收到了中本聪的 10
枚比特币的转账,这是比特币历史上的第一次转账。 2010年5月22日,程序员拉斯洛·汉耶兹(Laszlo
Hanyecz)用10000枚比特币购买了Papa John‘s的两份披萨。这是有记录的第一次在现实中发生的比特币交易行为。
2012年9月,比特币基金会成立,旨在通过开源的协议来加速比特币在全球范围内的增长。 2013年10月29日,加拿大公司发布第一个比特币
ATM,允许用户在咖啡馆里直接购买和出售比特币。 2017年8月1日,比特币发生共识分裂,分叉出 Bitcoin Cash (BCH) 链。
2017年11月28日,比特币价格首次突破1万美元。 2021年11月10日,比特币创下历史最高价达68928.9美元

比特币共识

比特币是一种基于分布式网络的数字货币,与传统的货币不同,比特币不是在任何政府的支持下发行的货币,也不依赖中心化的银行来记录相应的账本。

如何让比特币的分布式网络中的所有节点,按照一个统一的规则行动,以便最终形成一个所有人都认可的公共账本?

工作量证明

在分布式系统中,如何多台计算机如何同时运行同一个任务,一直是一个“难题”,在比特币系统中,需要如何保持各个节点的账本数据(通常称为“状态”)一致呢。 这就需要各节点达成一个“共识”,所有节点按统一的规则行事。

比特币网络中的所有节点都会接收到一组交易记录(记录作为一个区块保存),然后把这个区块更新到本地的账本记录中。如果节点都随意增加记录,那么整个比特币网络中的记录就无法保持一致。为了保持记录一致,那么必须确认哪个区块被优先写入,也就是需要以某一个节点的操作为准。但如果人为规定以某个节点为准,就意味着这个节点比其他节点更权威,相当于变成了一个中心节点,那么去中心化的优势就荡然无存。

比特币使用的共识算法叫做PoW共识机制,全称是Proof of Work(“工作量证明”),率先完成工作量证明的节点,拥有区块写入权,其他的节点以此区块的基础上(在最长链的基础上)进行后续交易记录的工作量证明。

工作量证明中最重要的是计算一个数学难题,解此难题唯一的方式是不断的尝试,直到试出“答案”,率先完成解答的节点可以获取一笔奖励,最初奖励是每个区块50个比特币,之后每大约4年减半,当前为每区块 6.25 比特币。由于完成工作量证明有一定的随机性,通常这个过程也称为“挖矿”,参与挖矿的节点,则称为“矿工”。

矿工的收益不仅仅包含出块奖励,同时还有交易手续费收益,根据中本聪的设想,当出块奖励越来越小后,矿工的收益将主要来自于交易手续费。

比特币发行量小知识

比特币发行量都来自于比特币的出块奖励,按共识规则初始出块奖励是 50
比特币,之后每隔21万个区块奖励减半,每个区块的生成时间大概是10分钟,因此大致是4年减半一次,大约到 2140
年,比特币的出块奖励就趋于零,此时产出的所有比特币数量将非常接近 2100 万枚。

在下一节,我们会介绍更多比特币如何交易的细节。

比特币有什么价值

比特币具有的“货币”的特性,如:可流通性,可交易性,可存储性,可分割性,同时对比法币,有更好的稀缺性。

但比特币价值并不是由中央权力机构赋予或物理特性(贵重金额)决定,而是由广泛的共识来决定。

由于比特币与黄金有很多的相似性,如:稀缺性、价值存储工具,加上比特币的数字特性,有很多人把比特币称为“数字黄金”, 很多机构购置一部分比特币作为储备来对冲美元风险。一些受美元制裁的国家也在加大比特币的采用率。

比特币特点

从比特币的特点上来看,比特币是去中心化的,主要特点如下:

比特币不需要任何权威机构的背书。 比特币是点对点网络,没有中心化的服务器存在。 比特币的账本数据存储在区块链中,而区块链本身存储在千千万万的节点中,没有一个中心化的存储设备。 比特币账本数据面向所有人公开,任何人都可以把它存储到自己的机器中。 比特币网络没有管理员,比特币网络中的所有节点共同管理比特币网络,维持比特币网络的运行。 任何人都可以成为比特币网络的一个节点,从而具备和别人同等的管理权。 比特币网络中任何节点都是同等地位,它们都可能获得下一个区块的记账权。 由于比特币可能由任意节点凭空产生,所以比特币的供应也是去中心化的。 和传统银行不同,任何人都可以生成任意数量的比特币账户,不需要任何中心化机构的审批。 任何人都可以在比特币网络中发起转账,不需要任何中心化机构的审批。

但是,在现实中,比特币也有一些中心化的倾向,由于奖励机制是凭空生成的比特币,所以比特币网络中的节点争夺记账权的欲望通常比较强大,结果造成了大量的节点联合起来,共同去争夺记账权。当联盟中的任意节点获得记账权,就会把得到的比特币和联盟中的其他节点分享。因此,这种联盟造成了比特币网络节点某种程度上的中心化。这种联盟就是我们经常听说的比特币矿场。

相关文章:

[2024区块链开发入门指引] - 比特币与区块链诞生

一份为小白用户准备的免费区块链基础教程 工欲善其事,必先利其器 Web3开发中,各种工具、教程、社区、语言框架.。。。 种类繁多,是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役? 参见另一篇博文👉 2024最全面…...

【大数据面试知识点】Spark中的累加器

Spark累加器 累加器用来把Executor端变量信息聚合到Driver端,在driver程序中定义的变量,在Executor端的每个task都会得到这个变量的一份新的副本,每个task更新这些副本的值后,传回driver端进行merge。 累加器一般是放在行动算子…...

深度学习核心技术与实践之深度学习基础篇

非书中全部内容,只是写了些自认为有收获的部分 神经网络 生物神经元的特点 (1)人体各种神经元本身的构成很相似 (2)早期的大脑损伤,其功能可能是以其他部位的神经元来代替实现的 (3&#x…...

Kafka安装及简单使用介绍

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…...

20231229在Firefly的AIO-3399J开发板的Android11使用挖掘机的DTS配置单前后摄像头ov13850

20231229在Firefly的AIO-3399J开发板的Android11使用挖掘机的DTS配置单前后摄像头ov13850 2023/12/29 11:10 开发板:Firefly的AIO-3399J【RK3399】 SDK:rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBrick】 Android11.…...

九台虚拟机网站流量分析项目启动步骤

文章目录 零、操作概述一、服务器分配二、9台虚拟机相互免密登录三、Nginx(反向代理服务器)四、Tomcat(Web服务器)五、测试Nginx反向代理是否成功六、Flume集群配置七、修改LogDemo项目八、项目1703FluxStorm九、Hadoop集群十、整个集群的启动十一、部署项目十二、测试项目…...

迅软科技助力高科技防泄密:从华为事件中汲取经验教训

近期,涉及华为芯片技术被窃一事引起广泛关注。据报道,华为海思的两个高管张某、刘某离职后成立尊湃通讯,然后以支付高薪、股权支付等方式,诱导多名海思研发人员跳槽其公司,并指使这些人员在离职前通过摘抄、截屏等方式…...

数据结构期末复习(2)链表

链表 链表(Linked List)是一种常见的数据结构,用于存储一系列具有相同类型的元素。链表由节点(Node)组成,每个节点包含两部分:数据域(存储元素值)和指针域(指…...

Hive中支持毫秒级别的时间精度

实际上,Hive 在较新的版本中已经支持毫秒级别的时间精度。你可以通过设置 hive.exec.default.serialization.format 和 mapred.output.value.format 属性为 1,启用 Hive 的时间精度为毫秒级。可以使用以下命令进行设置: set hive.exec.defau…...

【深度学习:Recurrent Neural Networks】循环神经网络(RNN)的简要概述

【深度学习】循环神经网络(RNN):连接过去与未来的桥梁 循环神经网络简介什么是循环神经网络 (RNN)?传统 RNN 的架构循环神经网络如何工作?常用激活函数RNN的优点和缺点RNN 的优点:RNN 的缺点: 循…...

HTML 基础

文章目录 01-标签语法标签结构 03-HTML骨架04-标签的关系05-注释06-标题标签07-段落标签08-换行和水平线09-文本格式化标签10-图像标签图像属性 11-路径相对路径绝对路径 12-超链接标签13-音频14-视频 01-标签语法 HTML 超文本标记语言——HyperText Markup Language。 超文本…...

大学物理II-作业1【题解】

1.【单选题】——考查高斯定理 下面关于高斯定理描述正确的是(D )。 A.高斯面上的电场强度是由高斯面内的电荷激发的 B.高斯面上的各点电场强度为零时,高斯面内一定没有电荷 C.通过高斯面的电通量为零时,高斯面上各点电场强度…...

Unity引擎有哪些优点

Unity引擎是一款跨平台的游戏引擎,拥有很多的优点,如跨平台支持、强大的工具和编辑器、灵活的脚本支持、丰富的资源库和强大的社区生态系统等,让他成为众多开发者选择的游戏开发引擎。下面我简单的介绍一下Unity引擎的优点。 跨平台支持 跨…...

【华为机试】2023年真题B卷(python)-猴子爬山

一、题目 题目描述: 一天一只顽猴想去从山脚爬到山顶,途中经过一个有个N个台阶的阶梯,但是这猴子有一个习惯: 每一次只能跳1步或跳3步,试问猴子通过这个阶梯有多少种不同的跳跃方式? 二、输入输出 输入描述…...

【Harmony OS - Stage应用模型】

基本概念 大类分为: Ability Module: 功能模块 、Library Module: 共享功能模块 编译时概念: Ability Module在编译时打包生成HAP(Harmony Ability Package),一个应用可能会有多个HAP&#xf…...

Java 8 中的 Stream 轻松遍历树形结构!

可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理,我们一起来看看…...

Openwrt修改Dropbear ssh root密码

使用ssh工具连接路由器 输入:passwd root 输入新密码 重复新密码 设置完成 rootImmortalWrt:~# passwd root Changing password for root New password:...

js 对象

js 对象定义 <!DOCTYPE html> <html> <body><h1>JavaScript 对象创建</h1><p id"demo1"></p> <p>new</p> <p id"demo"></p><script> // 创建对象&#xff1a; var persona {fi…...

【SpringBoot】常用注解

RequestBody&#xff1a;自动将请求体中的 json 数据转换为实体类对象。 这个例子凑巧传入的json属性键名和User键名一致&#xff0c;可以直接使用User实体类对象&#xff0c;如果键名不一致则需要用一个Map 类接收参数&#xff1a; PutMapping("/update")public R…...

【模拟电路】软件Circuit JS

一、模拟电路软件Circuit JS 二、Circuit JS软件配置 三、Circuit JS 软件 常见的快捷键 四、Circuit JS软件基础使用 五、Circuit JS软件使用讲解 欧姆定律电阻的串联和并联电容器的充放电过程电感器和实现理想超导的概念电容阻止电压的突变&#xff0c;电感阻止电流的突变LR…...

从入门到精通,30天带你学会C++【第十天:猜数游戏】

目录 Everyday English 前言 实战1——猜数游戏 综合指标 游玩方法 代码实现 最终代码 试玩时间 必胜策略 具体演示 结尾 Everyday English All good things come to those who wait. 时间不负有心人 前言 今天是2024年的第一天&#xff0c;新一年&#xff0c;新…...

使用ASP.NET MiniAPI 调试未匹配请求路径

本文将介绍如何在使用ASP.NET MiniAPI时调试未匹配到的请求路径。我们将详细讨论使用MapFallback方法、中间件等工具来解决此类问题。 1. 引言 ASP.NET MiniAPI是一个轻量级的Web API框架&#xff0c;它可以让我们快速地构建和部署RESTful服务。然而&#xff0c;在开发过程中如…...

数据结构: 位图

位图 概念 用一个bit为来标识数据在不在 功能 节省空间快速查找一个数在不在一个集合中排序 去重求两个集合的交集,并集操作系统中的磁盘标记 简单实现 1.设计思想:一个bit位标识一个数据, 使用char(8bit位)集合来模拟 2.预备工作:a.计算这个数在第几个char b.是这个ch…...

Nginx 反向代理负载均衡

Nginx 反向代理负载均衡 普通的负载均衡软件&#xff0c;如 LVS&#xff0c;其实现的功能只是对请求数据包的转发、传递&#xff0c;从负载均衡下的节点服务器来看&#xff0c;接收到的请求还是来自访问负载均衡器的客户端的真实用户&#xff1b;而反向代理就不一样了&#xf…...

SAP FIORI 初步了解

1、对网上存在的部分资料进行收集 一套适合 SAP UI5 开发人员循序渐进的学习教程 SAP Fiori 的学习路线指南 如何根据角色批量激活SAP Fiori服务 关于S/4和Fiori&#xff0c;你必须知道的10件事 SAP Fiori开发教程 SAP FIORI教程 面向ABAP开发人员&#xff0c;SAPUI5 Fiori开发…...

chrome浏览器记录不住网站登录状态,退出后再打开就需要重新登陆的解决办法

chrome浏览器记录不住网站登录状态&#xff0c;退出后再打开就需要重新登陆&#xff0c;比较繁琐。 解决办法&#xff1a; 1、chrome浏览器右上角三个竖的点&#xff0c;然后进入“设置”&#xff08;Settings&#xff09;&#xff0c;选择“隐私与安全”&#xff08;Privacy…...

Linux lpd命令教程:打印服务管理技巧全解析(附实例教程和注意事项)

Linux lpd命令介绍 lpd是Linux操作系统中的一个命令&#xff0c;全称为line printer daemon&#xff0c;其主要职责是管理和控制打印任务。lpd可以接收打印任务请求并将这些请求放入打印任务队列中。当打印机空闲时&#xff0c;lpd会自动将任务队列中的打印请求发送给打印机以…...

利用STM32和可控硅控制220V加热电路

利用STM32和可控硅控制220V加热电路 Chapter1 利用STM32和可控硅控制220V加热电路一、错误原理图二、正确原理图 Chapter2 可控硅驱动芯片MOC3081/3061Chapter3 一个MOC3061的可控硅触发电路的分析Chapter4 可控硅的两种触发方式&#xff1a;移相触发和过零触发1、过零触发2、移…...

在高并发场景下,缓存“雪崩”了怎么办

1. 缓存雪崩的常见原因 缓存“雪崩”是指&#xff0c;因为部分缓存节点不可用&#xff0c;而导致整个缓存系统&#xff08;甚至是整个服务系统&#xff09;不可用。缓存“雪崩”主要分为以下两种情况&#xff1a; 因缓存不支持 rehash 而导致的缓存“雪崩”缓存支持 rehash 时…...

本地git服务器的使用

Windows上使用&#xff1a; 首先要在windows开发机上生成密钥&#xff1a; 1.安装git&#xff0c;首先去git官网下载git&#xff0c;https://git-scm.com/downloads&#xff0c;下载.exe格式并安装。 2.从程序目录启动“Git Bash” 3.键入命令&#xff1a;ssh-keygen -t rsa -…...

外贸自己做网站/网站推广的几种方法

GPFS centos7部署实战准备工作(每个节点)安装(每个节点)创建集群(管理节点)准备工作(每个节点)集群时间同步yum install -y ntpdatentpdate ntp.sjtu.edu.cn关闭不必要的服务systemctl stop firewalldsystemctl disable firewalldsystemctl stop NetworkManagersystemctl disab…...

区网站制作/站长工具的使用seo综合查询排名

点击上方“Github爱好者社区”&#xff0c;选择星标回复“资料”&#xff0c;获取小编整理的一份资料来源&#xff1a;businessinsider 新智元编辑&#xff1a;LRS2020年初GitHub发布年度开源大榜&#xff0c;香港的开发者增速在全球国家和地区中排名第二位。香港在互联网时代…...

公司外贸网站建设/手机域名访问网站怎么进入

21&#xff0e;改变窗口尺寸&#xff0c;应将鼠标放在( )A、窗口内任一位置 B、窗口四角或四边 C、窗口标题栏 D、窗口滚动条22&#xff0e;Word菜单命令旁“… ”表示( )A、该命令当前不能执行 B、可按“…”不执行该命令C、21&#xff0e;改变窗口尺寸&#xff0c;应将鼠标放…...

做综合医院网站/chrome google

VM安装GHOST xp系统后无法进入 http://zhidao.baidu.com/question/257202764.html如图 只出现一个下划线&#xff0c;就不走了&#xff0c;一直这样。我用的是VM完整版。自己安装过汉化补丁&#xff01; 问题补充&#xff1a; 我已经设置了活动分区了&#xff0c;还是没用。会不…...

成都房地产经纪协会/广告优化师是做什么的

Python处理json模块的详细介绍&#xff0c;python安装json库前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。首先&#xff0c;了解下什么是JSON&#xff1f;JSON&#xff1a;JavaScript Object Nota…...

从用户需求看b2b网站的营销策略/福州百度推广电话

7.1 HBase与Hive的对比 1.Hive (1) 数据分析工具 Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系&#xff0c;以方便使用HQL去管理查询。 (2) 用于数据分析、清洗 Hive适用于离线的数据分析和清洗&#xff0c;延迟较高。 (3) 基于HDFS、MapReduce Hi…...