web3去中心化
- Web3 DApp
- ETH系开发技能树
- DeFi应用 去中心化金融
- P2P ( Peer-to-Peer) 去中心化网络
- 节点发现
- 建立安全连接
- 网络协议漫游 TCP/IP | UDP | HTTP | P2P | QUIC
- 直播 编解码、 协议、网络传输
- HTTP协议入水
-
- 由三部分组成 状态行(请求行 | 响应行)、首部、主体
- 状态行
- 首部
- 主体
- 深入浅出-HTTP协议请求方法
- GET 获取/查询资源 请求页面指定信息(实体)
- 深入浅出-HTTP协议请求方法
- GET 获取 请求页面指定信息(实体)
- HEAD 服务器不能在 响应里 返回 消息主体 其他同GET
- POST 与GET(无请求内容)类似
- 用于向服务器发送 大量数据 (GET有长度限制 会将发送的数据显示在浏览器端)
- PUT 请求服务器把实体存储在请求资源下(存在替换,不存在创建 <-正文)
- DELETE 请求 服务器删除指定资源
- TRACE 激发 远程 应用层请求消息回路 回显服务器收到请求
- CONNECT
- OPTIONS 获取 有URI标识 的 资源 在请求/响应过程中的 可用功能选项
- 以上 HTTP1.1 标准方法
- ———— WEBDAV --基于HTTP /1.1 通讯协议 拓展
- 深入浅出-HTTP状态码
- 常见状态代码、状态描述 说明
- TCP-IP详解
- 参考
Web3 DApp
区块链:
以以太坊
(Ethereum)为主流,也包括Solana、Aptos等其他非EVM链。
区块链本身是软件,需要运行在一系列节点上,这些节点组成P2P网络
或者半中心化
网络。
节点不仅负责接收新的输入并生成新的区块,还需要存储区块链运行时产生的所有数据,并负责同步、对外提供查询等RPC服务。
钱包:
帮助用户管理自己在区块链上资产的软件,加密存储用户的私钥。
当用户需要和区块链交互时,就需要用到私钥签名;
智能合约:
运行在区块链上的一段托管程序,主要用来和外部账户交互;
UI:
这里特指前端页面,因为直接通过RPC调用合约仅限个别高级用户,普通用户仍需要一个前端页面,并通过JavaScript脚本配合钱包签名与合约交互。
ETH系开发技能树
合约开发:使用Solidity语言;
合约部署工具:可以选择Hardhat、Truffle或Foundry,建议使用Hardhat;
数据聚合服务:选择The Graph提供的托管服务;
数据聚合开发:The Graph给出的模板代码是TypeScript,因此这里使用TypeScript;
前端页面:HTML+JavaScript/TypeScript,也可配合任意前端框架如Vue、React等;
合约交互框架:虽然理论上使用JSON RPC就可以读写合约,但使用Ethers.js可以大大简化开发;
钱包支持:如果仅支持MetaMask,则使用Ethers.js已足够,如果要支持多种钱包,尤其是需要连接手机钱包,则需要使用Web3Modal。
DeFi应用 去中心化金融
P2P ( Peer-to-Peer) 去中心化网络
点对点协议网络
无中心服务器、依靠用户群(peers)交换信息的互联网体系
`ca.crt`(即CA根证书)
CA(Certificate Authority,证书颁发机构)证书是一种数字证书
OpenSSL生成一个RSA私钥,并将其保存到文件中
openssl genpkey -algorithm RSA -out ca.key -pkeyopt rsa_keygen_bits:2048
使用生成的私钥来创建自签名的CA根证书
openssl req -x509 -new -nodes -key ca.key -days 3650 -out ca.crt
输入一些证书信息,
- **国家/地区代码**:例如,美国的代码是`US`。
- **州/省份名称**:微软总部位于美国华盛顿州,所以你可以输入`Washington`。
- **城市名称**:微软总部位于雷德蒙德市(Redmond),所以你可以输入`Redmond`。
- **组织名称**:你应该输入`Microsoft Corporation`或微软的全称。
- **单位名称**(可选):这通常指的是组织内部的一个部门或团队。如果你是在为整个微软组织生成证书,这个字段可以留空或填写`Corporate`、`Headquarters`等表示整个公司的词汇。
- **通用名称**(Common Name, CN):这通常用于标识证书的主题,如服务器的域名或个人的名字。对于CA根证书,这个字段可以填写组织的名称或一个简单的标识符,如`Microsoft Root CA`。
example@outlook.com
定义:
1、Peer-to-peer
是一类允许一组用户互相连接并直接从用户硬盘上获取文件的网络。
2、Peer-to-peer网络
是一个运行于个人电脑上的应用,通过网络在用户间分享文件。
P2P网络通过连接个人电脑分享文件而不是通过中央服务器。
3、P2P是一种分布式网络,网络的参与者共享他们所拥有的一部分硬件资源
(处理能力、存储能力、网络连接能力、打印机等),
这些共享资源需要由网络提供服务和内容,能被其它对等节点(peer)直接访问而无需经过中间实体。
在此网络中的参与者既是资源(服务和内容)提供者(server),又是资源(服务和内容)获取者(client)。
节点发现
- 集中式服务器:通过一个中心服务器维护所有节点的信息,新节点可以通过服务器获取其他节点的地址。
- 分布式哈希表(DHT):使用哈希函数将节点和资源映射到一个分布式的哈希表中,节点可以通过查找哈希表发现其他节点。
- 广播:节点在网络中广播自己的存在信息,其他节点接收到广播后建立连接。
建立安全连接
网络协议漫游 TCP/IP | UDP | HTTP | P2P | QUIC
- TCP:提供可靠的、面向连接的通信服务,适用于需要高可靠性的数据传输场景。
- UDP:提供无连接的、不可靠的数据传输服务,适用于实时性要求高但容错性强的应用,如视频流传输。
- QUIC:结合了TCP和UDP的优点,提供快速、可靠的数据传输服务,适用于需要低延迟和高可靠性的应用。
直播 编解码、 协议、网络传输
直播技术理论基础与实践概论
音视频直播的基本流程都是
采集 → 编码推流 → 网络分发 → 解码 → 播放
这五大环节,
其中又会涉及平台硬件、编解码、网络传输、服务并发、数字信号处理、在线学习
等多方面技术。
-
从交互模式上,
又可以泛分为单对单模式与会议模式两大类; -
从实时性要求上,直播又可以分为
伪实时、准实时与真实时三个等级:
伪实时:
视频消费延迟超过 3 秒,单向观看实时,
通用架构是 CDN + RTMP + HLS,譬如很多的直播平台
准实时:
视频消费延迟 1 ~ 3 秒,能进行双方互动但互动有障碍;
可以通过 TCP/UDP + FLV 已经实现了这类技术,譬如 YY 直播等
真实时:视频消费延迟
编解码
视频封装格式
就是我们通常所说的 .mp4,.flv,.ogv,.webm 等,
它其实就是一个盒子,
用来将实际的视频流以一定的顺序放入,
确保播放的有序和完整性。
视频压缩格式(视频编码)就是指能够对数字视频
进行压缩或者解压缩(视频解码)的程序或者设备。
通常这种压缩属于有损数据压缩。
视频压缩格式和视频格式具体的区别就是,
它是将原始的视频码流变为可用的数字编码。
首先,由原始数码设备提供相关的数字信号流,然后经由视频压缩算法,
大幅度的减少流的大小,
然后交给视频盒子,打上相应的 dts,pts 字段,
最终生成可用的视频文件。
视频编码也可以指通过过特定的压缩技术,将某个视频格式转换成另一种视频格式。
视频封装格式
常见的视频封装格式
(简称:视频格式)
包括了 AVI,MPEG,VOB 等,
即相当于一种储存视频信息的容器,由相应的公司开发出来的。
@ 视频格式
- AVI
AVI 格式(后缀为.AVI):
它的英文全称为 Audio Video Interleaved,
即音频视频交错格式。
它于 1992 年被 Microsoft 公司推出。
优点 : 图像质量好。
由于无损 AVI 可以保存 alpha 通道,经常被我们使用。
缺点:
体积过于庞大,
糟糕的是 压缩标准不统一,
普遍 现象 高版本 Windows 媒体播放器
播放不了采用早期编码编辑的 AVI 格式视频,
而低版本 Windows 媒体播放器又播放不了采用最新编码编辑的 AVI 格式视频,
进行一些 AVI 格式的视频播放时常会出现由于视频编码问题而造成的视频不能播放
或 即使能够播放,但存在不能调节播放进度和播放时只有声音没有图像
等一些莫名其妙的问题。
- DV-AVI
DV-AVI 格式(后缀为.AVI):
DV 的英文全称是 Digital Video Format,
是由索尼、松下、JVC 等多家厂商联合提出的一种家用数字视频格式。
数字摄像机就是使用这种格式记录视频数据的。
它可以通过电脑的 IEEE 1394 端口传输视频数据到电脑,
也可以将电脑中编辑好的的视频数据回录到数码摄像机中。
这种视频格式的文件扩展名也是 avi。
电视台采用录像带记录模拟信号,
通过 EDIUS 由 IEEE 1394 端口采集卡从录像带中采集出来的视频就是这种格式。
- MOV
QuickTime File Format 格式(后缀为.MOV):
美国 Apple 公司开发的一种视频格式,默认的播放器是苹果的 QuickTime。
具有较高的压缩比率和较完美的视频清晰度等特点,并可以保存 alpha 通道。
大家可能注意到了,
每次安装 EDIUS,我们都要安装苹果公司推出的 QuickTime。
安装其目的就是为了支持 JPG 格式图像和 MOV 视频格式导入。
- MPEG
MPEG 格式(文件后缀可以是 .MPG .MPEG .MPE .DAT .VOB .ASF .3GP .MP4 等):
它的英文全称为 Moving Picture Experts Group,
即运动图像专家组格式,
该专家组建于 1988 年,专门负责为 CD 建立视频和音频标准,
而成员都是为视频、音频及系统领域的技术专家。
MPEG 文件格式是运动图像压缩算法的国际标准。
MPEG 格式目前有三个压缩标准,
分别是 MPEG-1、MPEG-2、和 MPEG-4。
MPEG-1、MPEG-2 目前已经使用较少,
着重介绍 MPEG-4,
其制定于 1998 年,MPEG-4 是为了播放流式媒体的高质量视频而专门设计的,
以求使用最少的数据获得最佳的图像质量。
目前 MPEG-4 最有吸引力的地方在于它能够保存接近于 DVD 画质的小体积视频文件。
你可能一定注意到了,
怎么没有 MPEG-3 编码,
因为这个项目原本目标是为高分辨率电视(HDTV)设计,
随后发现 MPEG-2 已足够 HDTV 应用,故 MPEG-3 的研发便中止。
- WMV
WMV 格式(后缀为.WMV .ASF):
它的英文全称为 Windows Media Video,
也是微软推出的一种采用独立编码方式
并且可