自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(227)
  • 资源 (5)
  • 收藏
  • 关注

原创 03 Rust中的结构体

一文掌握Rust中的结构体

2023-03-07 18:25:31 303 1

原创 02 Rust中的字符串

一文掌握Rust中的字符串

2023-03-07 18:20:00 378

原创 01 Rust 中的路径` :: `

一起来学习Rust吧

2023-03-04 19:39:37 358

原创 以太坊Layer2

以太坊作为公链的二当家,在比特币的基础上确实直接或间接贡献了太多的技术方向和概念,如跨链桥、零知识证明、DeFi(去中心化金融)、DAO(去中心化自治组织)、智能合约..., 任何一个单拎出来都是非常重要的研究议题

2022-10-31 22:13:01 1704 1

原创 Offchain Worker (下)

向链上发起签名交易

2022-10-25 22:35:00 289

原创 Offchain Worker (中)

本节内容我们将会分享一些案例,以展示offchain 在实际业务场景中到底是如何使用,主要是涉及存储以及http请求。在最后一节,我们将会使用offchain worker 执行一些交易操作

2022-10-23 17:19:39 431

原创 Offchain Worker (上)

区块链上的存储和计算资源都非常有限,这无法满足我们对性能的要求。Offchain Features 的引入可以在一定程度上解决这种问题

2022-10-22 21:53:56 1741

原创 通过例子学习Rust

通过例子学习rust,学习Rust的必看的官方文档之一

2022-06-27 08:33:20 903

原创 React

1 React基础1.1 React 简介声明式UI(JSX)组件化:通过搭积木的方式拼成一个完整的页面,通过组件的抽象可以增加复用能力和提高可维护性react既可以开发web应用,也可以使用同样的语法开发原生应用(react-native),比如安卓和IOS应用,甚至可以使用react开发VR应用,React更像一个源框架,为各种领域赋能1.2 环境初始化现在的前端开发基本都使用工程化的环境开始开发,所以我们先利用工具初始化一些文件,这个环节会装很多依赖包npx create-react

2022-05-29 20:49:20 151

原创 智能合约Lottery全栈实现

1 创建项目创建项目文件夹,我们先要创建一个总的目录文件,存放所有项目内容mkdir Lottery创建Next.js appNext.js是一个react框架,可以让我们更快的构建web应用https://nextjs.org/learn/foundations/about-nextjs/what-is-nextjs具体而言构建一个web应用需要考虑包括但是不限于以下几个方面User Interface - how users will consume and interact w

2022-05-26 01:08:26 519

原创 GoWeb - GORM

GORMGORM : Object Relational Mapping对象:程序中的对象、实例,如结构体关系:关系数据库,例如MySQL数据表;结构体数据行:结构体实例字段:结构体字段ORM的优点在于提高开发效率缺点:牺牲执行能力,牺牲灵活性以及弱化SQL能力11.1 在本地或远程启动并连接数据库11.1.1 启动服务器和Dockerssh [email protected] start docker //启动docker11.1.2 使用容器启动MySQ

2022-05-18 22:16:27 388

原创 Go Web开发框架 Gin

Go Web开发框架 Gin10.1 Gin现在的开发模式是后端只提供一份数据,然后不管是移动端还是网页端,如果想要展现出不同的效果,可以自己根据这份数据个性化构建展示效果下载Gin packageGOPROXY=https://goproxy.cngo get -u github.com/gin-gonic/gin引入使用即可import "github.com/gin-gonic/gin"//使用Gin框架func main() { r := gin.Default() //

2022-05-17 21:10:42 600 1

原创 密码学与网络安全 - 13 数字签名 & 14 密钥的管理和分发

13 数字签名数字签名前面已经讲过很多次了,我们再来详细的看一下13.1 数字签名概述13.1.1 特征消息认证可以保护消息不受第三方攻击,但是不能保证交易双方的错误必须能验证签名者、签名日期和时间必须能认证被签的消息内容由第三方仲裁以解决争执13.1.2 攻击和伪造唯密钥攻击,破解私钥已知消息攻击,用公钥和合法签名破解一般选择消息攻击,基于消息攻击定向选择消息攻击,可以轮训A何为成功破解完全破译通用伪造;能伪造出合法签名选择伪造;伪造出对特定信息的合法签名存在性

2022-05-14 16:10:56 949

原创 密码学与网络安全 - 12 消息认证码

12 消息认证码12.1 对消息认证的要求攻击类型:保密消息消息透露给没有合法密钥的任何人或程序传输分析 在面向连接的应用中,分析连接的频率和持续时间,确定消息的数量和长度,无连接应用中确定消息数量和长度消息认证伪装内容修改顺序修改计时修改:对消息的延迟和重播数字签名发送方否认数字签名和抗攻击协议接收方否认12.2 消息认证函数消息认证或数字签名机制在功能上基本都有上下两层,下层是产生某种认证符的函数,上层协议中将函数作为原语使接收方可以验证消息的真实性可以

2022-05-13 13:36:47 1407

原创 密码学与网络安全 - 11 密码学Hash函数

11 密码学Hash函数Hash函数输入长度可变,而输出长度固定合格的Hash函数输出应该均匀分布,看起来随机Hash函数两个要求:1. 抗碰撞性(找到两个不同的输入对应相同的输出在计算上不可行),2.单向性(通过Hash值找到输入值在计算上不可行)Hash函数的操作过程:把输入数据的长度填充成固定长度分组的整数倍,填充内容包括原始消息的位长度信息,填充长度信息能够增加攻击者更改数据而要保持hash值不变的难度11.1 密码学Hash函数的应用Hash函数用于各种安全应用和网络协议中11

2022-05-13 11:06:15 2298

原创 密码学与网络安全 - 9 公钥密码学与RSA & 10 密钥管理和其他公共密码体制

9 公钥密码学与RSA公钥和我们之前讲的密码完全不同,它是基于函数的而不是替换和置换澄清几点:任何密码的安全性都依赖于密钥长度和破译密文所需要的时间公钥密码学和传统密码学各有各的使用场景9.1 公钥密码体制的基本原理为了解决两个问题:密钥分配数字签名9.1.1 公钥密码体制公钥密码算法特点:只有公钥和算法在计算上求解私钥不可行公钥和私钥都可以用来加密和解密(用私钥加密就是数字签名,别人可以用公钥验证,用公钥就是别人可以用它来发送信息/转账等,然后自己用私钥收取)公钥密码体制的

2022-05-12 19:15:47 562

原创 密码学与网络安全 - 7 分组加密的工作模式 & 8 伪随机数的产生和流密码

7 分组加密的工作模式7.1 多重加密与三重DES7.1.1 双重DES双重DES所对应的映射不被单DES所定义,所以是强于单DES的中间相遇攻击:可能的密钥加密明文,然后用可能的密钥解密密文,如果能前后两个密钥能匹配,则说明是正确的密钥7.1.2 使用两个密钥的三重DES具体过称则是:加密-解密-加密当前暂无对3DES有效的攻击方法7.1.3 使用三个密钥的三重DES这种情况下,密钥很长7.2 五种工作模式工作模式是为了增强密码算法和使算法适用于不同的技术模式描述典型应

2022-05-12 14:51:20 1166

原创 密码学与网络安全 - 5 有限域 & 6 高级加密标准

5 有限域许多加密算法都依赖于有限域的性质,特别是高级加密标准和椭圆曲线加密算法,还包括消息认证码CMAC以及认证加密方案GMC5.1 群群、环和域都是数学理论中的一个分支5.1.1 群群记做G,定义二元运算 · ,对于任何一对有序偶(a,b),满足:封闭性结合律单位元逆元根据元素个数有限和无限分为有限群和无限群5.1.2 交换群满足交换律5.1.3 循环群如果群中每一个元素都是一个固定元素a的幂a^k(k为整数),则称群G为循环群5.2 环环 R满足1-5乘法

2022-05-12 09:52:11 548

原创 密码学与网络安全 - 2 数论基础 & 3 传统加密技术

2 数论基础注:本内容部分章节知识罗列了大概目录以及主要概念,仅为本人在阅读相关资料时的随笔,有些地方也并不是很理解,暂且挖坑,等随后再填2.1 整除性和带余除法2.1.1 整除性b|a 表示a处以b没有余数,几个重要的性质如下:若 a|1, 则a = ± 1若 a|b 且 b|a, 则a = ±b任何不等于0的树整除0若a|b,b|c, 则a|c对于任意整数m,n,若b|g,b|h, 则有 b|(mg + nh)‼️2.1.2 带余除法对于任意正整数n, 非负整数a,会有:a

2022-05-11 19:56:59 424

原创 密码学与网络安全 - 前言 & 1 计算机与网络安全概念

前言密码学是什么?编制密码和破译密码的学科古典密码学 古代史近代密码学 近代史现代密码学1.古典密码学加密方法:核心原理 :替换法、移位法凯撒密码破译方法:频度分析2.近代密码学核心原理:替换法、移位法3.现代密码学散列函数MD5,SHA-1, SHA-256, SHA-512对称加密DES/AES 加密解密对称加密的核心原理:流加密和块加密加密模式ECB CBC填充模式NoPadding 和PKS%padding非对称加密RSA与ECC算法数字摘要bas

2022-05-10 01:47:53 514

原创 计算机网络 下 传输层和应用层

5 传输层5.1 传输层概述是什么?是主机才有的层次,为上面的应用层提供服务能够干什么?提供进程和进程之间的逻辑通信,而网络层提供的是主机与主机之间的逻辑通信分用和复用(使用同样的传输协议)复用:应用层所有的应用进程都可以通过传输层再传输到网络层分用:传输层从网络收到数据后交付指明的应用进程对传输层收到的报文进行差错检测两种协议TCP和UDP协议传输层的寻址与端口逻辑端口/软件端口服务端端口号熟知端口号:0~1023:给TCP/IP最重要的

2022-05-07 13:03:55 1505

原创 计算机网络 中 网络层

4 网络层主要任务是把分组从源段传送到目的端,为分组交换网上的不同主机提供通信服务,传输单位是数据报4.1 网络层是什么?它是在数据链路层和传输层之间,是一个“选择和控制器”主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务4.2 为什么要有网络层?因为网络层传输的单元是数据报,要实现在不同主机之间通信,为了提高传输效率和准确率所以需要对数据单元(分组)进行路由选择和控制(流量控制、拥塞控制、差错控制和网际互联),所以才有了网络层这个“选择和控制器”数据报是什么是比

2022-05-06 22:25:09 242

原创 计算机网络 上 物理层和数据链路层

1 计算机网络体系结构学习重点:五层结构&各层之间的协议1.1 计算机网络概述1.1 .1 计算机网络概念计算机网络:分散独立的计算机 通过 通信设备与线路连接、通过软件实现资源共享和信息传递形成的系统1.1.2 计算机网络的功能数据通信 + 资源共享(硬软件及数据)+ 分布式处理 + 提高可靠性(避免单点故障)+ 负载均衡1.1.3 计算机网络的组成组成部分:​ 硬件 + 软件 + 协议(规则和约定)**工作方式:**边缘(端系统:用户直接使用(C/S方式 + P2P方式))

2022-05-04 16:34:31 1958

原创 CSS - 1 CSS 基础知识

1 CSS 基础知识1.1 简介cascading style sheet,层叠样式表,主要用于配合HTML结构,添加页面样式,辅助布局HTML4.0开始,结构和样式进行了分离前端三层:HTML:结构层,从语义的角度去搭建网页结构CSS:样式层,从美观的角度去修饰页面样式JavaScript:行为层,从交互的角度去描述页面的行为1.2 CSS基础概念1.2.1 样式两种样式:文字样式,盒模型样式1.2.2 布局辅助页面布局,协助HTML,如并排显示,精确定位显示1.3 CSS常用属

2022-04-25 17:22:21 176

原创 Truffle - 2 利用Truffle编写、测试智能合约并将其部署到不同的测试网络

2 Truffle 项目2.1创建项目建一个文件夹mkdir truffle-projecttruffle init //初始化qinjianquan@MacBook-Pro-10 truffle-project % ls //查看文件contracts testmigrations truffle-config.js contracts 编写智能合约的文件夹migrations 使用solidity编写智能合约的文件夹,编写文件解释truffle 如何部署智能合约,用的是no

2022-04-24 11:17:45 5696

原创 Web3.js

1 Web3.js基础1.1 Web3.js 简介Web3.js是一个库,使用它可以通过HTTP或IPC与本地或者以太坊远程节点交互各种高级语言编写的程序可以使用web3 interface来与EVM交互,在此过程中使用是的JSON-RPC(一个无状态且轻量级的远程过程调用(RPC)传送协议,其传递内容透过 JSON 为主)1.2 web3.js 安装1.先查看是否安装了node.js,node.js带了npmqinjianquan@MacBook-Pro-10 ~ % node -v v10

2022-04-23 18:40:32 9000

原创 Truffle - 1 安装 Truffle

安装 Truffle简而言之,它是目前比较主流的以太坊开发框架之一Truffle是用node.js写的安装Nodejs此处使用的是Mac操作系统1.下载pkg文件https://nodejs.org/en/2.点击安装3.查看是否安装成功node -v4.安装Trufflenode.js里带了npmnpm install -g truffle //安装truffleMacBook-Pro-10:~ root# truffle versionTruffle v5.5.11

2022-04-23 18:35:03 4305

原创 HTML5

HTML51.HTML简介和发展史HTML(Hyper Text MarKup Language)“超文本标记语言”,主要是通过HTML标语言(标签)对网页中的文本、图片、声音等内容进行语义化的描述它不是变成语言,是一种标记语言,使用带有<>对文本标记,搭建网页结构它能够通过超链接将网站与网页以及各种网页元素链接起来,构成丰富的Web页面HTML发展史1991年,万维网(www)在互联网上首次露面,在整个互联网发展历史过程中,HTML也经过了好几次版本的迭代,现在是HTML5互联网

2022-04-22 19:41:05 157

原创 1 以太坊基本原理

以太坊基本原理包括:以太坊账户、以太坊虚拟机、钥匙文件、交易、Gas、以太坊区块、以太币以太坊开发包括:以太坊客户端,以太坊钱包,搭建以太坊私有链,智能合约,redmix-ide开发智能合约1.以太坊基本原理1.1 以太坊简介以太坊是一个开源的有智能合约功能的公共区块链平台,它提供了一个虚拟机来处理点对点的合约。以太坊概念最早是由Vitalik Buterin在2013年到2014年被提出的,2014年通过ICO众筹开始得以发展以太坊的本质就是一个状态机(读取输入并且输出)相比比特币的10分钟产

2022-04-22 14:00:14 5276

原创 GoWeb基础

GoWeb基础1.1 简易web程序创建好项目的空文件之后,初始化一个模块go mod init github.com/solenovex/web/Users/qinjianquan/goweb/go.mod //在go mod 文件中查看module github.com/solenovex/web //初始化时声明的模块go 1.172.创建一个简单的web应用程序/Users/qinjianquan/goweb/main.gofunc main() { //1.注册一

2022-04-21 23:51:29 968

原创 Docker - 6 Dockerfile 7 Docker网络

6 Dockerfile6.1 构建镜像步骤1.编写dockerfile文件2.构建镜像 docker build 3.docker run 运行镜像4.docker push 发布镜像Dockerfile命令发布项目需要编写dockerfile文件,docker逐渐成项目交付标准Dockerfile :构建文件,定义了一切步骤,源代码Docker容器:提供运行镜像的服务器FROM //指定基础镜像MAINTAINTER //作者,姓名+邮箱RUN //镜像构建时需要运行的命令A

2022-04-20 14:30:52 780

原创 Docker 3 可视化面板 4 镜像 5 数据容器卷

3 Portainter可视化面板安装它是一个Docker图形化界面管理工具,以后我们还会用Rancher安装docker pull portainer/portainer //拉取镜像docker run -d -p 8088:9000 -v "/var/run/docker.sock:/var/run/docker.sock" portainer/portainer //启动镜像curl localhost:8088 //本机测试<公网IP>:8088 //外网测试注册登

2022-04-18 17:43:42 196

原创 编译原理 2 语言及其文法

2 语言及其文法2.1 语言及其文法基本概念**字母表:**是一个有穷符号集合,二进制字母表{0,1}、ASCII字符集和Unicode字符集都是字母表**字母表上的运算:**字母表既然是集合,那么就可以在集合上进行运算乘积/n次幂/正闭包/克林闭包**串:**字母表的克林闭包中每个元素都称为字母表上的一个串串上的运算:连接/幂运算(多个串相连接)2.2 文法的定义文法的形式化定义:G = (Vt,Vn,P, S)Vt:终结符集合 是文法所定义的语言的基本符号,也称为token,比如句子的

2022-04-18 01:08:50 1003

原创 Docker 1 前言 2 Docker安装

1 前言在学习具体的docker技术之前,我们先来大概了解一下在与之相关的一些概念物理机很久之前,服务器部署应用于物理机之上,整个过程极慢,而且成本就高,也较难迁移和扩展,甚至受限于特定硬件厂商虚拟机受限于物理机的诸多缺点,虚拟机应运而生,一台物理机可以通过vmware虚拟化安装多个多个操作系统,每个操作系统都可以运行单独的app,因此一个物理机可以部署多个app虚拟化的局限性在于,每一个虚拟机都是一个完整的操作系统,要分配系资源,当虚拟机增多时,每个虚拟机可用资源就比较少了,此时必须扩容Li

2022-04-17 18:06:13 220

原创 编译原理 1 绪论

1 绪论1.1 什么是编译计算机程序设计语言包括三个层次:机器语言:machine language 可被计算机直接理解,例如机器语言指令:C706 0000 0002 (此处为16进制形式),其中C706表示移入操作,0000和 0002是两个操作数汇编语言:assembly language 引入了助记符,如MOV X, 2 ;其MOV是助记符,X和2时量个操作数,汇编语言依赖于特定的机器,非计算机人员使用受限高级语言:high level language 类似于数学定义或自然语言的简洁形式

2022-04-16 12:01:18 383

原创 区块链项目 - 13 简易的网络服务

13.9 处理客户端接收到的数据/Users/qinjianquan/publicChain/Part78-Net-Conn使用goroutine并行处理请求/Users/qinjianquan/publicChain/Part78-Net-Conn/src/Server.gofunc StartServer(nodeID string, mineAddress string) {-- for { //receive data from client conn, err1 := l

2022-04-14 19:23:13 1600

原创 区块链项目 - 13 网络服务

13. 简易的网络服务13.1 NODE_ID设置按照惯例先把之前的文件复制并重新命名/Users/qinjianquan/publicChain/Part70-Merkle-NODE_ID获取节点ID/Users/qinjianquan/publicChain/Part70-Merkle-NODE_ID/src/CLI.gofunc (cli CLI) Run() { isValidArgs() //get node id nodeID := os.Getenv("NODE_ID"

2022-04-13 18:41:34 430

原创 Rust 全栈开发 - 6 REST API

6. REST API6.1 健康检查构建的内容:POST:/courseEGT: /courses/teacher_idGET: /courses/teacher_id/courses_id我们先来编写一下各文件中的代码/Users/qinjianquan/ws/webservice/src/bin/server1.rsuse actix_web::{web,App,HttpResponse,HttpServer,Responder};use std::io;//configur

2022-04-08 23:45:52 493

原创 UTXO模型

UTXO模型UTXO模型(未花费的交易输出),一笔input对应output,每笔交易都会生成一个哈希值和索引,通过索引记录和哈希值来记录,我们来看详细内容1 UTXO基本模块Transaction每笔交易都有三个属性,TxHash、Inputs和Outputs,交易哈希充当该笔交易的索引,具有唯一性;同时,每笔交易可能包含多个Input和Output。一笔交易的完成事实上是一次对一定数量的Input和Output的封装,并且给它们打上唯一的印记(交易哈希)。再引申而言,每个区块是对一定数量的交易的

2022-04-08 13:18:15 1429

原创 Rust 全栈开发 - 5 Actix

5. ActixActix是一个Web框架我们新建一个文件夹并打开Last login: Thu Apr 7 13:49:07 on ttys002qinjianquan@MacBook-Pro-10 ~ % cargo new ws Created binary (application) `ws` packageqinjianquan@MacBook-Pro-10 ~ % cd ws qinjianquan@MacBook-Pro-10 ws % code .然后在toml文

2022-04-07 23:14:18 622

区块链驱动金融 数字货币与智能合约技术 第1章 密码学及加密货币概述 1.4 公钥即身份.pdf

区块链驱动金融 数字货币与智能合约技术 阅读笔记

2021-11-08

区块链驱动金融 数字货币与智能合约技术 第1章 密码学及加密货币概述 1.3 数字签名.pdf

区块链驱动金融 数字货币与智能合约技术 阅读笔记

2021-11-07

区块链驱动金融 数字货币与智能合约技术 第1章 密码学及加密货币概述 1.1 密码学哈希函数.pdf

区块链驱动金融 数字货币与智能合约技术 学习笔记

2021-11-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除