电子商务安全-去中心化支付技术
去中心化支付技术-知识点
比特币
POW共识
数字钱包
bip0039:助记词
bip0032:分层确定性
比特币交易格式
比特币中验证交易,怎么处理双花问题
7种输出脚本类型含义
公平承诺协议
txid可改性:多个签名
比特币存款协议
支付通道
闪电网络概念
区块链
区块链的定义
区块链的安全性:致性、活性(CG、CQ、CP)
以太坊
以太坊概念
状态是什么、如何存储
以太坊交易格式
以太坊共识:耗内存,计算资源
区块头部字段
POW共识
数字钱包
bip0039:助记词
bip0032:分层确定性
比特币交易格式
比特币中验证交易,怎么处理双花问题
7种输出脚本类型含义
公平承诺协议
txid可改性:多个签名
比特币存款协议
支付通道
闪电网络概念
区块链的定义
区块链的安全性:致性、活性(CG、CQ、CP)
以太坊概念
状态是什么、如何存储
以太坊交易格式
以太坊共识:耗内存,计算资源
区块头部字段
海量数据
测量要求:
测量方式:
数据流定义:高速传输的数据
数据流适用任务场景:
naive bitmap:bitset[n][m]
direct bitmap:对流标识进行hash,映射到bitmap的某个位
virtual bitmap:hash(流标识)若在virtual bitmap中则置位,相当于抽样
multiple bitmap
multiresolution bitmap
标准布隆过滤器:一个元素计算多次hash,若各个hash位置为1则说明元素在集合中
仅支持插入和查找,不支持删除
由于hash碰撞,存在误判的可能性
误判分析
k=7时有最小误判率
计数布隆过滤器:标准布隆计数器+可删除;每个元素一个计数器,当元素被删除时对应计数器减少
计数器4位够用
count-min sketch:mxn的二维矩阵,每行对应一个hash函数,n为mod的大小;计算元素的各个hash值,mod n后每行对应位置加1
用于计数
返回不准确的结果
TSMC上的《Who Are the Phishers? Phishing Scam Detection on Ethereum via Network Embedding》这篇论文提出了一个以太坊上的钓鱼检测技术,下面是这篇论文的概述:
随着区块链的发展,各种诈骗行为愈演愈烈,其中钓鱼诈骗占到了50%以上。但由于传统的钓鱼诈骗和以太坊上的钓鱼诈骗在通用货币,交易透明度,钓鱼方式等方面大相径庭,我们不能直接应用传统的钓鱼检测技术,因此我们提出了一种针对以太坊的钓鱼检测技术。
我们先从以太坊客户端中获得所有交易记录,以此构建一个交易图,节点表示以太坊账户,边表示账户之间的交易。接着我们从权威网站上获得被标记为钓鱼账户的信息。为了同时学习到图结构和交易信息的特征,我们提出了一种新的图嵌入算法trans2vec来进行特征提取。trans2vec算法由在交易金额和交易时间上有偏的随机游走来生成节点序列,再由skip-gram模型获得图嵌入特征。由于钓鱼账户占比过小,我们使用一类SVM来进行无监督异常检测,将前面学习到的特征作为一类SVM的输入进行钓鱼检测。
最后我们从不同采样偏差,不同图嵌入算法,不同的分类器,不同的参数和算法可扩展性等方面进行评估。
从这篇论文中我学习到了不少东西,比如说图嵌入和一类支持向量机。图嵌入将图结构映射到低维向量空间,将节点表示为向量形式,学习节点之间的关系,以便更好地捕捉节点之间的相似性和差异性。文中提到的deepwalk和node2vec就是两种常用的图嵌入算法。deepwalk通过随机游走生成节点序列,用这些节点序列来学习节点的向量形式,即节点嵌入。node2vec和deepwalk类似,在随机游走上略有不同,node2vec通过在dfs和bfs上有偏的随机游走来生成节点序列。一类SVM则是一种单分类器,通过学习正常样本的分布特征,来检测新样本是否属于正常类别。图嵌入算法为我们如何处理图的数据提供了一种思路,它可以将图中提取出具有结构信息和边点信息的特征;一类SVM则为我们如何处理有标签数据占比小的数据集提供了一种思路。
虽然学到了不少东西,但由于临近期末时间紧迫,还是有些东西没学明白的,比如skip-gram模型是怎么从序列中学习出词或者节点的嵌入的,一类SVM具体是怎么分类的等等。
至于论文的改进方案或后续的工作方向,其实文中在conclusion部分已经提到了,这里我再补一点我的想法:
会不会有更好的交易特征:设想现在有一个网站的交易金额和交易时间的数据,我们能判断该网站是否有钓鱼诈骗行为吗?以太坊上的钓鱼诈骗是和传统钓鱼诈骗有不同,但我感觉仅从交易金额和交易时间来进行钓鱼诈骗识别的话,只能识别出ICOs期间的钓鱼诈骗,总金额大,时间集中。要是未来以太坊上出现类似传统钓鱼网站的钓鱼诈骗,金额和时间散布大的,trans2vec是否还能提取出有效的特征?
钓鱼账户所有的交易都是关于钓鱼的吗:这个不是对论文内容的问题,这个是对数据集的问题。我在想这些被标记为钓鱼诈骗的账户有没有可能进行过正当交易,这些交易会不会影响提取出来的特征,比如说这些账户一开始就是普通账户,进行过许多正常交易,后来突然开始钓鱼诈骗,被权威网站标记为钓鱼账户等等。
课程作业:
| 科目 | 作业 | 期限 |
|---|---|---|
| 电子商务安全* | none | |
| 人工神经网络 | none | |
| 网络协议逆向 | 期末项目 | 7.8 |
| 云计算技术* | none | |
| 计算机视觉 | hw3 & 论文 | 6.20 & wait |
| 专业综合实践 | none |
论文
夏令营
实习
课程作业:
| 科目 | 作业 | 期限 |
|---|---|---|
| 电子商务安全 | none | |
| 人工神经网络 | 期末项目 | 6.18 |
| 网络协议逆向 | 期末项目 | 7.8 |
| 云计算技术 | 课程项目 | 7.2 |
| 计算机视觉 | hw3 | 6.20 |
| 专业综合实践 | none |
夏令营
实习准备
课程作业:
| 科目 | 作业 | 期限 |
|---|---|---|
| 电子商务安全 | none | |
| 人工神经网络 | 期末项目 | wait |
| 网络协议逆向 | hw3 & 期末项目 | 5.30 & 7.8 |
| 云计算技术 | lab2 & lab3 | 6.7 & 6.7 |
| 计算机视觉 | hw3 | 6.20 |
| 专业综合实践 | 期末项目 | 6.3 |
夏令营
实习准备
课程作业:
| 科目 | 作业 | ddl |
|---|---|---|
| 电子商务安全 | none | |
| 人工神经网络 | 期末项目 | wait |
| 网络协议逆向 | hw5 | 5.30 |
| 云计算技术 | lab1 | 6.7 |
| 计算机视觉 | hw3 | wait |
| 专业综合实践 | 期末项目 | 6.5 |
夏令营
实习准备
peaq网络基于polkadot,Polkadot是一个可扩展的异构多链区块链。由一个协作的去中心化区块链网络组成,这个网络叫做中继链,它与并行运行的分片链即平行链交互,所有平行链共享中继链的安全性。
一个基于rust的模块化的区块链框架
在WSL中安装,不要在windows下安装!!!由于windows环境和rust的版本会遇到很多坑!
先安装rust,然后clone模板,注意版本,git clone完substrate-node-template和substrate-front-end-template后分别cargo build --release和yarn install
在substrate-node-template中执行./target/release/node-template --dev --tmp,开启一个临时节点
在substrate-front-end-template中执行yarn start,打开可视化界面。
报错:build error: Rust WASM toolchain not installed, please install it!
解决办法:build前执行rustup target add wasm32-unknown-unknown --toolchain nightly
WebAssembly(缩写为Wasm)是一种基于栈式虚拟机的二进制指令集,可以作为编程语言的编译目标,使得程序可以在Web上进行客户端和服务器应用的部署
镜像和容器
使用步骤:
docker pull imageName:version
可设置镜像加速器
新建容器并启动:docker run imageName:version,-i保持io流对容器开放,-t分配终端,--name设置容器名
启动已有容器:docker start containerName
查看容器信息:docker ps -a
停止正在运行的容器:docker stop containerName,-t指定等待时间
Docker容器以sh为主进程,执行完启动命令,主进程将停止,容器也将自动终止。
容器启动后不立即停止:
docker run中-d可以使容器在后台运行
进入一个docker容器的几种方法:
ssh登陆进容器;nsenter、nsinit等第三方工具;docker本身提供的工具:exec和attach先docker run创建容器并让它在后台执行,在用docker attach进入容器内部,其实就是进入容器启动命令的终端
docker exec则可以在容器内部执行一条命令
删除终止状态的容器:docker rm containerName
删除运行状态的容器:
docker stop,再docker rmdocker rm -f查看所有容器ID:docker ps –a –q
docker run -p 80:80将主机的80端口映射到容器的80端口
docker commit containerName imageName将容器保存成镜像
保存镜像:docker save imageName1:version imageName2:version > tarName.tar
加载镜像:docker load < tarName.tar
把容器的文件系统保存为tar包:docker export containerName -o tarName.tar
从tar包导入镜像:docker import tarName.tar imageName:version
docker rmi image,-f表示强制删除
创建私人仓库:docker run -d -p 5000:5000 --restart=always --name registry registry:2,-v可以指定仓库位置
镜像加标签:docker tag imageName:version tagName
推送镜像到仓库:docker push tagName,如果tagName正好是主机名:端口号则推送到私人仓库
从私人仓库拉取镜像:docker pull tagName
删除私人仓库:docker rm repoName,-f表示强制,-v表示删除仓库的同时删除其中镜像
用于构建镜像
FROM imgaeName:version指定构建镜像的基础镜像
RUN 命令创建容器并执行命令,命令结束后提交容器为新镜像
构建镜像:docker build -t foo .,-t指定名字,-f指定Dockerfile
COPY 源路径 目标路径将源路径复制到目标路径,源路径必须为绝对路径
ADD 源路径 目标路径COPY的加强版,可自动解压tar包,自动下载文件等等操作
CMD [命令,参数1,参数2]设置容器启动时的默认命令,可被覆盖,可作为ENTRYPOINT的参数
ENTRYPOINT [命令,参数1,参数2]设置容器启动时的默认命令,不可被覆盖
WORKDIR 路径设置工作目录
ENV key value设置环境变量
ARG argName设置参数,可被之后指令及docker build使用
EXPOSE port1暴露端口,只是一个声明,仍需要在docker run中用-p指定端口
ONBUILD 其他指令其他指令为RUN,COPY等等指令,当前镜像中不会使用,仅用于下一级镜像构建,不会被继承
VOLUME 路径定义数据卷
none
docker volume create --name volName创建数据卷
docker run -v /data创建一个随机名字的数据卷,并挂载到容器的/data
docker run -v volName:/data创建volName数据卷,并挂载到容器的/data
docker run --name containerName -v /host/dir:/container/dir将主机的/host/dir挂载到/container/dir
docker run --name volName2 --volumes-from volName1创建volName2并与volName1共享数据卷
docker inspect可查看镜像,容器,数据卷等的具体信息
docker volume rm volName若数据卷仍被使用则无法删除
docekr rm -v containerName删除容器时同时删除数据卷,若数据卷仍被使用则无法删除
删除正在使用的数据卷:
docker rm -v containerName解除数据卷和容器的关系docker volume rm volName删除数据卷$(pwd)表示当前目录
docker run --volumes-from CONTAINER_NAME -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /path/to/data将CONTAINER_NAME的/path/to/data备份到主机的当前目录
docker run --volumes-from dbcontainer2 -v $(pwd):/backup busybox tar -xvf /backup/backup.tar -C /dbdata
新容器,旧容器和主机一起实现的数据卷备份和恢复,新容器和旧容器共享,主机数据卷挂载到新主机。