热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

区块链技术入门区块链技术学徒

在"区块链"网络上,数据以区块的形式存储,想象一下有很多存储着数据的区块,它们被链接在一起,这些数据一旦被链接就对链上的任何人都

在区块链网络上,数据以区块的形式存储,想象一下有很多存储着数据的区块,它们被链接在一起,这些数据一旦被链接就对链上的任何人都可见,并且再也无法改变了。这是一项具有非凡革新意义的技术,可以用来记录我们能想到的几乎所有数据(如:产权、身份、余额、病历等等),不用担心被篡改

我们以比特币为例,来看看区块链是什么样子的。

比特币区块链是现存历史最悠久的区块链,它只存储比特币的交易数据,就像一个庞大的交易记录库,可追溯至第一笔比特币交易。

假设有三个存储着数据的区块,如下图:
在这里插入图片描述
这三个区块内都存储了一些交易数据,就像三个独立的excel表格一样,记录了交易的内容。

区块1按照时间顺序从第一笔交易开始记录,直到存满(1MB),之后的交易记录会继续依次存到区块2、区块3,以此类推.

每个数据块会根据内部数据生成一个特殊的独一无二的数字签名。

将区块1的数字签名添加到区块2中,就把区块1的数据和区块2的数据关联起来了,区块1的签名与区块2的其他数据一样成为了区块2签名的基础。如下图:
在这里插入图片描述
正是这些签名将数据块链接在了一起,形成了一条区块链。现在加上区块3,这条链就像这样:
在这里插入图片描述

为什么说它无法更改

先看看签名是怎么生成的。

将数据块中数据串,代入一个哈希函数得到一个独一无二的64位的值就是签名。

这看上去好像只需要逐个生成新的签名就可以神不知鬼不觉的更改数据了。怎么避免这种情况的发生呢?

我们再定义一下挖矿

区块链协议会对签名有一些要求,只有合格的签名才可以作为签名用,比如比特币区块链会根据前面一定数量的区块签名的算力,给出目前签名的难度,比如只有不少于连续10个零开头的签名才算是合格的签名,对应的区块才可以上链。

不要小看这“连续10个零开头”的规定,就是它让篡改数据的人头疼。

因为并不知道代入什么值才可以得到连续10个零开头的64位的值,只能不断的改变代入哈希函数的值计算,直到得到合格的签名为止,这个过程中不知道需要代入多少次,纯粹看运气。

数据块中的交易记录、上一个块的签名,是不可变数据,如果只将它们代入哈希函数会得出一个固定的值。

数据块中除了那些不可变数据,还另外添加了一段特定长度的、可以改动的数据,这就是nonce。nonce不是预先确定的数据,而是根据实际需要而找出的一串完全随机的数字。

也就是不断改变nonce,直到找到一个合格的签名,确定下nonce的值。这种反复更改nonce,对区块数据进行哈希运算以寻找合格签名的过程叫做挖矿,也就是矿工做的事。

最长链规则

在区块链上的所有矿工都必须在区块链协议下工作,这是中本聪共识机制的一部分,始终以最长链为主链(有效链)的原则,所谓的“最长链规则”。(不是所有区块链都采用了中本聪共识机制)。

现在,我们再次假设有一个攻击者修改了某个数据块的数据。并且他想为之后所有的数据块生成新的签名。注意,网络上不只有他一个矿工,如今比特币区块链上有数百万矿工,其他的矿工都在夜以继日的挖矿,在不断的生成新的数据块,新的签名。这个攻击者要有多大的算力多么爆棚的运气才可以超过全网的矿工。

挖矿需要投入大量的电力,转化成算力,来找到合格的签名。也就是说找到一个合格的签名相当难,而且是需要大量成本的,而要超过全网的矿工,其成本投入不可估量。

总结

区块链上的矿工数越多,整条链的安全性就越高。

有一种例外,恶意参与者的算力真的超过全网其他人的总和,从理论上讲是有可能篡改区块链的,这就叫做51%攻击,目前遭受过51%攻击的著名区块链如bitGold、Verge、Ethereum Classic。想深入学习的同学可以点击系统学习区块链进入深入浅出区块链-技术博客网站。


推荐阅读
  • a16z 宣布成立全新的加密研究实验室,旨在推动加密技术和 Web3 领域的科学发展。 ... [详细]
  • 斯坦福区块链精英:从辍学到创业的传奇故事
    斯坦福大学的Griffin 304宿舍曾孕育了一批区块链领域的杰出人物。本文深入探讨了这些年轻人如何在校园内通过不懈努力和创新思维,逐步成长为行业领袖的故事。 ... [详细]
  • 本文探讨了Go语言(Golang)的学习价值及其在Web开发领域的应用潜力,包括其独特的语言特性和为什么它是现代软件开发的理想选择。 ... [详细]
  • IOSG Weekly Brief | Fat NFT Thesis 与艺术朋克 #68
    IOSG Weekly Brief | Fat NFT Thesis 与艺术朋克 #68 ... [详细]
  • 2023年1月28日网络安全热点
    涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ... [详细]
  • Hadoop发行版本选择指南:技术解析与应用实践
    本文详细介绍了Hadoop的不同发行版本及其特点,帮助读者根据实际需求选择最合适的Hadoop版本。内容涵盖Apache Hadoop、Cloudera CDH等主流版本的特性及应用场景。 ... [详细]
  • 计算机架构基础 —— 冯·诺依曼模型
    本文探讨了计算机科学的基础——冯·诺依曼体系结构,介绍了其核心概念、发展历程及面临的挑战。内容涵盖早期计算机的发展、图灵机的概念、穿孔卡的应用、香农定理的重要性以及冯·诺依曼体系结构的具体实现与当前存在的瓶颈。 ... [详细]
  • 2017成都物流技术创新峰会:深入探讨区块链应用
    2017年3月30日,第二届物流技术大会在成都成功举办,会上特别举办了关于区块链技术及其在物流行业应用的专题讨论,深入分析了区块链技术的发展历程、现状及未来趋势。 ... [详细]
  • 深入解析闪电网络现状及其在CKB上的应用前景
    本文从技术实现、实际应用、对比特币的影响及在CKB上的潜在优势四个方面,全面分析了闪电网络的现状和发展潜力。 ... [详细]
  • 强人工智能时代,区块链的角色与前景
    随着强人工智能的崛起,区块链技术在新的技术生态中扮演着怎样的角色?本文探讨了区块链与强人工智能之间的互补关系及其在未来技术发展中的重要性。 ... [详细]
  • 近年来,区块链技术备受关注,其中比特币(Bitcoin)功不可没。尽管数字货币的概念早在上个世纪就被提出,但直到比特币的诞生,这一概念才真正落地生根。本文将详细探讨比特币、以太坊和超级账本(Hyperledger)的核心技术和应用场景。 ... [详细]
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
  • 本文介绍如何使用PHP在WordPress中根据分类类别ID或名称获取所有相关文章,提供详细的方法和代码示例。 ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • 鼠标悬停出现提示信息怎么做
    概述–提示:指启示,提起注意或给予提醒和解释。在excel中会经常用到给某个格子增加提醒信息,比如金额提示输入数值或最大长度值等等。设置方式也有多种,简单的,仅为单元格插入批注就可 ... [详细]
author-avatar
mobiledu2502881467
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有