资料

一个“区块链智能合约”如何诞生及运行? - 知乎 (zhihu.com)

区块链技术:智能合约入门 - 知乎 (zhihu.com)

史上最全以太坊“新手入门”攻略 - 知乎.

如何购买ETH | ethereum.org.

智能合约

部署和调用本质都是交易。

前提

在部署智能合约之前,需要理解以太坊机制,GAS和以太坊钱包。

部署

将代码编译成字节码后,外部用户发起部署合约的交易,经矿工验证后打包进区块链中,该过程需要向打包的矿工支付费用(gas)。

调用

合约部署在区块链上,任何人只要知道合约ID都可以调用。

以太币

以太币的获取方式有三种:直接购买、赠送、挖矿。

挖矿

1650算力:13MH

3090算力:115MH

4090算力:1TH

主流矿机:350MH

免费

看广告。。。

课程作业:

科目 作业 ddl
电子商务安全 none
人工神经网络 none
网络协议逆向 none
云计算技术 none
网络安全技术 hw3(还有final exam) 4.15
计算机视觉 hw1 4.30
专业综合实践 none

想做的事:

雅思,普通话

区块链

资料

以太坊(ETH)到底是什么? - 知乎 (zhihu.com)

一文读懂以太坊 —— ETH 2.0发展与投研报告 - 知乎 (zhihu.com)

以太坊外部账户和合约账户是如何存在于区块链中,余额又是怎么更新的? - 知乎 (zhihu.com)

「ETH 基本功」什么是内部转账(Internal Transactions)?| 如何销毁通证? - 知乎 (zhihu.com)

以太坊相关

以太坊是一个去中心应用编程平台,相当于一个分布式计算机。

提供了许多API接口,其中封装了网络服务,底层服务(数据库,算法),共识等等。

网络和应用互相成就:应用需要更健壮强大的网络作为承载,网络需要功能完善的应用场景服务用户。

智能合约

一段程序,达到条件后即可执行。

new bing的解释

智能合约是一种计算机协议,是以数字方式促进、验证或执行合同的谈判或履行。智能合约是表示为一段代码的合约,旨在执行一组指令。一旦某个事件触发合约中的条款,代码即自动执行。智能合约可以在不需要中间人的情况下自动执行协议,以便所有参与者都可以立即确定结果,而无需任何中间人参与,也不会浪费时间。

智能合约可以用于各种应用程序,例如数字货币、投票、物流、供应链管理等。智能合约可以存储和检索数据,并根据预定义的规则自动执行操作。智能合约还可以在区块链上实现去中心化应用程序(DApps)。

简单应用

代码
1
2
3
4
5
6
7
8
9
10
11
12
13
pragma solidity ^0.4.0;

contract SimpleStorage {
uint storedData;

function set(uint x) public {
storedData = x;
}

function get() public view returns (uint) {
return storedData;
}
}
部署过程
  1. 用户用solidity编写智能合约,假设源码文件为contract.sol,经过编译器编译后变成字节码的形式

  2. 外部账户发起部署合约的交易,字节码作为input data随交易一起提交到区块链上

  3. 该交易会被节点验证是否合法,若合法则被放入交易池中等待矿工打包进区块,分发到节点

  4. 遍历区块中的交易,该智能合约在EVM虚拟机中执行,计算出智能合约部署的地址等运算结果

  5. 运算结果被打包到区块中,经过共识后新区块将被链接到主链

PS. 外部用户和内部用户:外部账户(Externally Owned Account ,EOA)是由以太坊网络的人类用户创建的帐户。它与公钥、私钥对相关,他是通过对公钥进行二次哈希后结果的最后20个字节导出的。以太坊内部账户是由智能合约的代码控制的账户,与外部账户不同,它们没有私钥,只能由智能合约进行交互。

过程
  1. 编码部署,全网验证
  2. 定期检查是否触发
  3. 若触发,验证节点先签名验证,多数验证节点就此事件达成共识后,合约成功执行
  4. 合约移出区块

逻辑越复杂,消耗的以太币就越多。

先存以太币才执行合约。

以太币

以太坊中的货币,可用于支付交易费用,可用于创建智能合约。

应用生态

DAO,DeFi,NFT,ERC-20

网络扩容

链上:改进链结构(改变共识or分片技术)

链下:链下计算结果,主链只关注结果。

计算机视觉-直线检测

复习一下hw1所需知识。

四、特征检测

1、直线检测

Hough变换

不仅限于直线和圆,许多形状都能检测。

原理

变换到参数空间。

例如图像中的直线y=ax+b,y和x是变量,参数空间中a和b是变量。直线上的各个点对应的a和b是相同的,在参数空间中表现为多条直线的交点。

RANSAC

步骤
  1. 选取一组点(直线2个点)
  2. 计算模型
  3. 计算局内点
  4. 根据局内点重新计算
图像拼接中的作用

https://zhuanlan.zhihu.com/p/338654260

https://blog.csdn.net/ak47fourier/article/details/80343372

假设img1和img2上都找到了n个关键点,并且一一对应。那么在sift描述子上选取一组点,计算出一个变换矩阵(模型)。如果img1中的关键点n1能够变换为img2中的n2关键点,则将该描述子纳入局内点。

不变性

动机

图像匹配

资料

https://zhuanlan.zhihu.com/p/208239730

https://zhuanlan.zhihu.com/p/143003200

https://zhuanlan.zhihu.com/p/96027288

区块链术语解释

仅针对比特币而言

节点不停地收到交易,验证其合法性后,将其纳入区块的计算中

挖矿:计算符合条件的sha256哈希值

区块:算出来的符合条件的哈希值,其中包含了上一区块以及许多交易

记账权——奖励

挖矿成功——铸币

区块结构:上一区块,版本,默克尔树,难度,随机数

铸币交易字段:略

哈希指针和普通指针的区别在于,哈希指针的值是通过数据计算出来的且指向数据所在位置,所以哈希指针可以告诉我们数据存储位置及数据的哈希值。而普通指针只能告诉你数据存储的位置。

计算机视觉-特征描述子

复习一下hw1所需知识。

五、特征描述子

SIFT描述子

特征提取算法(3)——SIFT特征提取算子 - keepgoing18 - 博客园 (cnblogs.com)

步骤

  1. 找到关键点
  2. 将关键点图像划分为4x4的小块,再将小块划分为4x4的小小块
  3. 对于每个小小块,计算其内部的梯度幅值和梯度方向,然后将梯度方向分成8个方向,每个方向覆盖45度,并将该方向上的梯度幅值累加起来,每个小块拥有8个方向的方向向量。
  4. 把每个小块的方向向量组成一个8维向量
  5. 所有8维向量拼接起来得到一个128维向量,这就是sift描述子

HOG描述子

HOG特征提取原理及实现 - 无趣的鱼 - 博客园 (cnblogs.com)

步骤

  1. 预处理:灰度化,gamma矫正
  2. 将图像划分为窗口(window),窗口划分为块(block),块划分为细胞(cell)
  3. 归一化
  4. 计算梯度:像素点计算梯度,判断所属方向区间(9个方向)
  5. 细胞内构建梯度直方图:像素点梯度加权统计
  6. 块内梯度直方图归一化:假设一个块有4个细胞,每个细胞9维向量,共4个9维向量
  7. 拼接生成HOG特征向量

窗口特征向量维度:窗口64x128,块8x8,细胞4x4,那么一个窗口有7x15个块,一个块有4个细胞,那么一个块就有4个9维向量,一个窗口就有7x15x4x9=3780维度的向量。

梯度只算180度,即将180度划分为9个方向,而不是360度,因为完全相反的梯度被认为是同一个梯度方向。

计算机视觉-harris算法

复习一下hw1所需知识。

四、特征检测

2、角点检测

Moravec

Harris角点检测器

原理

窗口在角点上按任意角度移动时,窗口的灰度图都会有明显的变化。

窗口滑动分别按x和y方向移动[u, v]后,灰度的变化为

\[ E(u,v) = \sum_{x,y}w(x,y) { [I(x+u,y+v)-I(x,y)]^2} \] \({w(x,y)}\)是窗口函数,二维的滤波器。

\({I(x+u,y+v)}\)\({I(x,y)}\)分别是平移前和平移后的窗口灰度图。

再用泰勒公式\({f(x+u,y+v) = f(x,y)+uf_x(x,y)+vf_y(x,y)}\) 简化为

\[ E(x,y)=[u,v]M{ \left[ \begin{matrix} u\\v \end{matrix} \right]} \] \[ M=\sum_{x,y}w(x,y){ \left[ \begin{matrix} I_x^2&I_xI_y\\ I_xI_y&I_y^2 \end{matrix} \right]} \]

\({I_x}\)\({I_y}\)为x和y方向的梯度值,可以用Sobel进行计算。

接着\({M}\)可以用实对称矩阵对角化进一步化简:

\[ M=R^{-1} {\left[ \begin{matrix} \lambda_1&0\\ 0&\lambda_2 \end{matrix} \right] } R \] 最后根据\({\lambda_1}\)\({\lambda_2}\)计算角点响应函数R:

\[ R={\lambda_1\lambda_2}-k(\lambda_1+\lambda_2)^2 \] k为经验常数,一般取0.04-0.06。

当R很小且小于threshold时,认为是平坦区域;

当R<0且R<threshold时,认为是边缘;

当R>0且R>threshold时,认为是角点。

步骤
  1. 计算\({I_x}\)\({I_y}\)
  2. 计算\({I_xI_y}\)
  3. \({w(x,y)}\),一般是高斯滤波器,应用到\({I_x}\)\({I_y}\)\({I_xI_y}\)上,计算\(M\)矩阵
  4. 计算响应值R
特性

平移不变性

旋转不变性

不满足尺度不变性

高斯差分滤波器(DoG)

尺度不变性

导师推荐了个智能合约的实习,这里补充点区块链的知识。

1
2
3
4
5
6
7
8
9
10
11
岗位要求:
1. 本科及以上学历,计算机,通讯,软件工程等相关专业;
2. 熟悉基本的数据结构和常用算法;
3. 熟练掌握一门计算机编程语言,熟悉Go/Java/Rust等语言之一者最佳;
4. 熟悉常用的Java web开发框架或Go web开发框架;
5. 熟练使用Linux操作系统的基本命令;
6. 有较好的逻辑分析,明确问题,独立解决问题的能力;
7. 了解信息安全和密码学基础知识者优先;
8. 有Fabric、Ethereum等区块链平台的使用或开发经验者优先;
9. 有智能合约虚拟机、区块链共识算法开发经验者优先;
10. 较强的团队协作能力,具有良好的执行力和责任心。

什么是区块链

new bing的解释:区块链是一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。它本质上是一个去中心化的数据库。

通俗点的解释:记账的时候我这里记录,你那里也记录,接着我们互相检查一下,没问题,这笔账就记下了。

比特币

用积分奖励提供电脑记账的人。

公链和联盟链

new bing的解释:公链和联盟链都是区块链的一种类型。公链是指公有/公共的区块链,访问与编写的权限对所有人开放。而联盟链则是机构联盟的区块链,访问与编写的权限仅对加入组织联盟的节点开放。总体来说,公链性能低,去中心化好,有激励,无准入门槛;而联盟链正好相反,性能高,去中心化差,有准入门槛。

加密技术

哈希函数(为什么这也算加密?),私钥加密,公钥加密

共识算法

new bing的解释: 区块链的共识算法有很多种,包括POW、POS、BFT等等。 其中,POW是比较常见的一种共识算法,它是通过计算机的算力来解决问题,从而获得奖励。而POS则是通过持有货币来获得权益,从而参与共识。 【深度知识】25种区块链共识算法全面详解 - 腾讯云开发者社区-腾讯云 (tencent.com)

POW

工作量证明

POS

股息证明

DPOS

委托权益证明

常用语言

GO,Solidity

流行平台

BTC,ETH,Fabric

网络流定义

流的定义

最简单的定义

通过TCP的SYN和FIN判断一条流的开始和结束

基于超时值的流定义

同一源地址与目的地址的数据包在时间上的间隔小于指定的超时值,则判断该流处于活动状态。

流的参数定义

方向性:单向or双向

单端点or双端点

端点粒度:app,终端,局域网,服务器

协议层:TCP,UDP,HTTP等等

单流的测度

根据流超时值划分为多个小流

组流:流聚合,可根据端点粒度划分

不同流的特性存在差异

聚合流的定义

流超时值的设置

过低

优点:频繁地创建和清除流的方式,需要的内存资源更少

缺点:需要更大的CPU功率和更多内存管理资源。即使观测的网络流尚未结束,流也可能判定为超时,从而产生重新建立该流导致的潜在处理延迟和处理成本。

过高

优点:较低的CPU功率和较少内存管理资源,不易发生流分裂。

缺点:容易对内存造成负担,导致流记录溢出从而丢失应有的流条目。

对特定流的优化

满足一定条件时可优化传输该流的路由资源

按协议类型划分流量

组流的一般方式

对头部进行解析,判断所属流

流记录输出判定

0%