区块链(肖臻笔记)

2023-11-01

区块链的技术与应用

比特币

密码学基础

比特币的数据结构

共识协议和系统实现

挖矿算法和难度调整

比特币的脚本

软分叉和硬分叉

匿名和隐私保护

以太坊

概述:基于账户的分布式账本

数据结构:状态树、交易树、收据树

ghost协议

挖矿:memory-hard mining puzzle

挖矿难度调整

权益证明

Gasper the Friendly Finality Gadget(FFG)

-智能合约

总结与展望

比特币密码学原理

cyypto-currency

cyyptographic hash function

collision resistance 抗碰撞性

理论上并没有证明出来,靠的是实践 collsion free(不建议使用) brute-force(暴力破解) hash碰撞 应用于h(m)篡改内容后找不出h(m·)与之相等 h()是对应用信息求hash值

MD5(可以制造hash碰撞了)

x-h(x) 反向不可退 要足够大,比较均匀

digital commitment (hiding)

digital equivalent of a sealed envelope 预测结果不能公开 (封存在纸上)将h(x)放出来 可以拼接随机数一起取hash

puzzle friendly

是无法预测的hash值是哪个 nonce h(block header)<=target proff of work

difficult to solve,but easy to vertify

SHA-256

secure Hash Algorithm

(public key,private key) 非对称加密 签名用的是私钥,验证签名用的是公钥 加密用的是公钥,解密用的是私钥

公钥相当于银行账号,私钥相当于密码

asymmetric encryption algorithm

encryption key

a good source of randiomness 生成好的随机元

hash指针

tamper-evident log 防篡改日志 保留最后一个hash值,就可以知道篡改了 保留最近的区块

merkle tree

merkle proff 轻节点

sorted Merkle tree

实现

Bernoulli trial:a random experiment with binary outcome

Bernoulli process:a sequence of independent Bernoulli trials memoryless

poisson process 泊松 服从指数分布

BitCoin NetWork

application layer :BItCoin Block coin


network layer: p2p Overlay Network

设计算则:简单,鲁棒,没有高效性

调整挖矿难度

H(block header)<=target SHA-256 2的256次方

difficult=(difficulty_1_target)/target

target=target*actual time/expected time

BTC-比特脚本

分叉

state fork

forking attack

deliberate fork

protical fork 协议不同造成分叉

hard fork block size limit

soft fork

新节点 不认老节点,导致老节点白挖

coinbase extra nonce 4byte
2 ( 32 ) 2^(32) 2(32)

2 ( 96 ) 2^ (96) 2(96)

p2sh

soft fork hard fork


超过半数的节点更新了软件,不会导致永久分叉 只有全部更新,才不会导致分叉

匿名性

hide your identity from whom?
提高匿名性

application layer coin mixing


network layer

零知识证明:一方向另一方证明一个陈述是正确的,而无需透露除该陈述是正确的外的任何信息

思考

hash指针怎样通过网络传播

hash指针只有hash并不是有指针 levelDB

不要用截断私钥的方法,用多重签名(保护安全性)

为什么比特币系统能够绕过分布式共识中的那些不可能结论

并没有达成一定的共识

比特币的稀缺性

量子计算

以太币

Ethereum:decentralized contract 去中心化合约

replay attack 重放攻击 nonce 加一个计数器防止

financial derivative 金融衍生品 不至于找不到人 账户保持稳定

ETH-状态树

单纯的hash树不行,查询比较高效,但是更新繁琐

单纯的Merkle tree 查询低效率

sorted Merkle tree

Patricial tree(trie)

MPT Merkle Patricia Tree 根节点(防篡改) Merkle proff(账户有多少钱,证明有没有账户 )

交易树和收据树

bloom filter false positive(误报没哟漏报)

Ghost

难度调整

-300w 收益由5调到3 调整难度,保证相对公平 保证货币量的稳定

权益证明 proof of stake

virtual mining 虚拟挖矿

权益证明---------比实体高在不会造成直接的影响,得先买币 工作量证明 直接买矿机攻击 altCoin Infanticide

类似于股份制 大量买进会及时引起注意 投入的币会被锁定一段时间,不会造成难易的冲击

nothing at stake 押注多条分支链

Casper the Friendly Finality Gadget(FFG)需与一定量工作性相结合 Validator(投入保证金)

智能合约

错误处理

具有原子性

汽油费-可剩退回 中途没有汽油费直接消耗掉汽油费,并回滚 防止攻击

assert:条件不满足:用于内部

require:输入或者外部

嵌套调用:

直接调用,连锁式回滚

先执行-再挖矿 挖不到-补偿(得不到补偿,还需要验证)

交易成功 Recceipt数据结构 有收据

不支持多线程 --------以太坊确定性状态机 多线程多个核对内存访问顺序不同执行结果可能不同 产生随机数就是多线程

拍卖合约-钱锁住如何取出来-没办法 code is law 智能合约锁仓 irrevocable trust 不可撤销的信托 应对方法 测试测试再测试 预留后门(超级管理员)-达不成共识-与去中心化的理念违背

重新设计拍卖合约-withdraw solidity代码 pay2Beneficiary 重入攻击 收到ETH未调用函数,会立即执行fallback()函数 不停的调用 没有钱,没有汽油费了 先清零再转账 不用call.value调用转账使用send

用来编写控制逻辑-互不信任建立共识才写在只能合约里

DAO:Decentralized Autonomous Organization

The DAO

DAC: Corporation

splitDAO childDAO 拆分 代币投票 先转账再清零 方向错误

硬分叉

反思

1.智能合约-自动合约

智能合约-不可篡改性 Irrevocability is a double sward

2.私钥泄露-转换账户 阻止智能合约的调用,禁止账户交易,软分叉,用黑客漏洞发动攻击

3.Nothing is irrevocability

4.Is solidity the right programming language?

函数式语言-比较慢 formal verification 形式化

5.开源 Many eyeball fallacy

6.去中心化 去中心化的改法也是通过去中心化的规则修改 分叉也是去中心化的体现 可以分叉选择原有的体制

decentralized 不等于 distributed state machine 保持一致性 重复性操作(容错 mission critical application)无间断服务 效率低 分布式是为了提高效率

美链 Beauty Chain

攻击 乘除变为很大的数,溢出变为很小的数 减去很小的数,每个人给很多的数 凭空多了很多代币 solidity SafeMath库检测 solidity不存在精度损失 都是整数

应用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链(肖臻笔记) 的相关文章

随机推荐

  • python搭建微信小程序卖货要收费用吗_开发一个微信小程序需要多少钱?

    很多朋友在微信上都在问司瓦图老张 也就是我本人 下面简称老张 关于小程序商城的开发费用 今天老张跟朋友分享下 开发一个微信电商小程序商城到底需要多少钱 有的朋友关心为什么小程序费用有几百 几千差距这么大 文章底部老张有介绍 在介绍开发一个微
  • 全网多种方法解决com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure的问题

    文章目录 1 复现错误 2 分析错误 3 解决问题 4 解决该错误的其他方法 1 复现错误 今天在使用knife4j 调用后端接口时 报出如下错误 于是 赶紧查看控制台的错误信息 错误信息如下所示 com mysql cj jdbc exc
  • ctf.show wed6

    1 or 1 1 返回sql注入错误 当无空格是正常返回 1 or 1 1 password 查库 1 union select 1 database 3 password 查表 1 union select 1 group concat
  • Linux驱动,如何添加驱动,让make menuconfig识别到

    在 drivers input touchscreen Makefile中添加驱动 obj CONFIG TOUCHSCREEN GSLX680 gslx680 只要当配置了CONFIG TOUCHSCREEN GSLX680的选项才会去编
  • Flink报错处理-1

    在 flink job 运行一段时间后 观察日志发现出现了如下的 warn日志 The operator name exceeded the characters length limit and was truncated 完整的 war
  • 一个可拖拽顺序,可添加可删除的React标签组件

    关于react ts中react draggable tags onChange事件不会触发 拿不到拖拽后的数组 官方回复是 示例上确实触发了 但是在实际的react ts项目中并没有触发这个onChange事件 于是我就自己写了一个 im
  • 基于MATLAB的FastICA算法实现语音信号盲分离

    基于MATLAB的FastICA算法实现语音信号盲分离 FastICA Fast Independent Component Analysis 是一种常用的盲源信号分离算法 可以应用于语音信号处理等领域 本文将介绍如何使用MATLAB实现F
  • 用白盒的思想黑盒地测试

    好久没写自动化测试的文章了 忘了自己的主业 实在是罪过罪过 今天就来点热闹的 抛个砖 分享一个我对某个案例的看法 题目虽然看起来比较晦涩 而且有堆砌关键词的嫌疑 但是我相信还是比较贴切的 相信现在业界都还是认为白盒测试是比较高级的一种测试
  • 晶振

    晶振是石英晶体谐振器 quartz crystal oscillator 的简称 也称有源晶振 它能够产生中央处理器 CPU 执行指令所必须的时钟频率信号 CPU一切指令的执行都是建立在这个基础上的 时钟信号频率越高 通常CPU的运行速度也
  • 动手学深度学习——5. 数据清洗

    动手学深度学习 5 数据清洗 记录一下学习深度学习的一些 本篇简述如何使用 cleanlab 清洗分类数据 所使用环境 Ubuntu 16 04 8700K GeForce RTX 1080Ti Python 3 8 Pytorch 1 7
  • 【Docker】 docker 命名空间(namespaces)

    神秘代码 5Lmd5biI5YWE5ZSv5LiA5Y6f5Yib5paH56ug77yM56aB5q2i6L2s6L29 1 概述 Docker 的出现一定是因为目前的后端在开发和运维阶段确实需要一种虚拟化技术解决开发环境和生产环境环境一
  • php在apache中的三种工作方式:CGI模式、FastCGI模式、Apache 模块DLL

    原文地址 http hi baidu com thisuc item 818a77725234f011d1dcb314 一 CGI模式与模块模式比较 php在apache中两种工作方式的区别 CGI模式 Apache 模块DLL 这两种工作
  • LSM6DSR驱动

    ST陀螺仪LSM6DSR的驱动 由于最近MPU的价格疯涨 不得已只能更换主控上的陀螺仪芯片 刚好VL53L1X这颗激光芯片的厂家ST有几颗陀螺仪可以用 就拿了几颗试一下 感觉效果还不错 好像可以用于手机做单击双击的判断 于是突发奇想是不是也
  • 【华为OD机试真题 Java】加扰字符串(100%通过+全网最详细注释)

    前言 本专栏将持续更新华为OD机试题目 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于OD机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun09
  • PCA降维以及维数的确定

    概述 PCA principal components analysis 即主成分分析技术 又称为主分量分析 旨在利用降维的思想 把多个指标转换为少数的几个综合指标 主成分分析是一种简化数据集的技术 它是一个线性变换 这个线性变化把数据变换
  • Dialog DA14585+Sensirion SHT3X+SGP30环境温湿度检测设计

    好记性不如烂笔头 既然不够聪明 就乖乖的做笔记 温故而知新 Phosphor IOT Module是以DA14585作为主控的用于环境监测的评估板 DA14585是符合Bluetooth 5 0标准 16M 32位ARM Cortex M0
  • 学习Redis(持续更新...)

    文章目录 前言 一 redis入门 二 10大数据类型 1 字符串String 2 列表list 3 哈希表Hash 4 集合set 5 有序集合zset sorted set 6 位图bitmap 7 基数统计HyperLogLog 8
  • springboot 2.0多模块标准父类pom文件,别再问问什么找不到主类了,照着个写就行

    标准如下
  • ECharts动态加载数据绘制折线图

    Echarts动态加载数据绘制折线图 ECharts 引入ECharts 步骤 连接数据接口 动态加载图表 动态加载数据 整体代码 折线图绘制 总结 绘制多个图表的方法 ECharts 纯Javascript的图表库 支持各种图表的绘制 下
  • 区块链(肖臻笔记)

    区块链的技术与应用 比特币 密码学基础 比特币的数据结构 共识协议和系统实现 挖矿算法和难度调整 比特币的脚本 软分叉和硬分叉 匿名和隐私保护 以太坊 概述 基于账户的分布式账本 数据结构 状态树 交易树 收据树 ghost协议 挖矿 me