IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 区块链与加密货币 -> 正文阅读

[区块链]区块链与加密货币


对区块链和加密货币做了下简单研究,这里记录下。

区块链的目的

区块链的实质是公共账本,目的是降低交易中的信任成本

  1. 公共账本中,如何验证一笔交易是否是交易双方的真实意愿,而非伪造的交易?

    电子签名。

    电子签名的生成原理

    几个要素:

    • 私钥 s k sk sk
    • 公钥 p k pk pk
    • 加密函数 S i g n Sign Sign
    • 验证函数 V e r i f y Verify Verify
    • 信息本身 M e s s a g e Message Message
    • 签名 S i g n a t u r e Signature Signature

    S i g n ( M e s s a g e , s k ) = S i g n a t u r e Sign(Message,sk)=Signature Sign(Message,sk)=Signature

    为什么要使用私钥和信息本身生成签名?

    • 使用私钥可以保证只有私钥持有人能够生成该签名

    • 使用信息保证了其他人不能把签名简单地复制到另一条信息里,来伪造签名

    V e r i f y ( M e s s a g e , S i g n a t u r e , p k ) = T r u e / F a l s e Verify(Message,Signature,pk)=True/False Verify(Message,Signature,pk)=True/False

    用来验证签名是否是由 p k pk pk所对应的 s k sk sk生成的。

    由于生成假签名(只能借助 V e r i f y Verify Verify函数和公钥暴力破解)难度极大,因此如果 V e r i f y Verify Verify函数返回true,就可以认为该签名是由私钥的拥有者生成的。

  2. 如何防止有人在公共账本上使用正确的信息和签名,重复记账?

    每笔交易信息中都包含独一无二的id即可。

理解加密货币的本质

Tips

  • 每种加密货币都是一个公共账本

  • 货币的本质是交易的历史

去中心化

公共账本保存在哪里? 添加新交易记录的规则是什么?

公共账本保存在所有用户手里,当一笔交易发生,必须广播给所有用户,并在所有账本中添加记录。

那么问题来了,如何保证所有用户的账本记录的交易是一样的,并且顺序也相同呢? 这是区块链技术的核心问题。中本聪关于比特币的论文解决的就是这个问题,他的解决方案是工作量证明。
比特币的公共账本结构大致如下:

在这里插入图片描述
由串起来的区块组成(所以又被称为区块链),每个区块包含了前一块的哈希,多条交易记录,和一个工作量证明。只有计算出工作量证明的人,才能打包区块并向全网广播该区块。

工作量证明

工作量证明是接在一段交易记录后的一个数,记为 w w w w w w需要满足以下条件:可以使得交易记录+ w w w这段信息的 H a s h Hash Hash值的前 n n n位值为0。(对于比特币来说, n n n是变化的,以保持平均约10分钟产生一个区块。以太坊约15秒)

工作量证明的特点

  1. 计算 w w w所需算力很大,但验证 w w w的正确性很简单。

这就使得如果篡改了交易记录,则需要花费大量的算力去计算新的 w w w

由于每个区块都加入前一块的Hash值,因此更改了任一历史区块,或者互换了两个区块,后续区块的工作量证明均需重新计算。

总结下打包一个区块的流程:

  1. 一笔交易发生,并向全网广播了这笔交易

  2. 所有节点(俗称“矿工”)开始计算 w w w

  3. 某一个节点计算出了 w w w,则打包区块并向全网广播该区块

    在比特币协议中,打包成功的节点可以在该区块的末尾添加一笔特殊交易,即给自己的奖励。该笔交易无需签名。因此每打包成功一个区块,系统中的比特币都会增加。

问题

  1. 收到不同的区块链广播,选择相信哪个?

    选择相信最长的那一个。如果区块链长度相同,则等待新的区块产生,使得其中的某一条链最长。(假设有人想伪造一个区块,则后续区块的工作量证明均需要重新计算,构成一条“伪造链”。除非伪造者拥有超过全网50%的算力,否则“伪造链”的长度迟早被其他矿工计算得到的链超过)

附录

密码哈希函数(比如SHA256)的特点

  1. 输入任意长度,输出是固定长度

  2. 计算hash值的速度比较快

  3. 防碰撞特性

    任意两个不同的输入值 x 、 y x、y xy,使得 H a s h ( x ) = H a s h ( y ) Hash(x)= Hash(y) Hash(x)=Hash(y)是困难的。 注意这里强调是“困难”的,而非“不可能“的。完全没有哈希碰撞,在理论上不可能

  4. 单向性

    难以从 H a s h ( x ) Hash(x) Hash(x)反推 x x x

  5. puzzlefriendly

    无法从输入数据,判断输出到底是什么样子。这意味着你无法通过控制输入值x来获得想要的输出值 H ( x ) H(x) H(x),比如无法预先判断哪些输入会使得一个hash值前K位是0。

参考链接

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 10:52:08  更:2021-09-07 10:52:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:31:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码