区块链作业
一.基础知识
(1)图数据库是一种专门用于存储和管理图结构数据的数据库,其核心思想是利用节点和边来表示实体及其关系,从而更加直观地描述现实世界中的复杂网络。
(2)TuGraph是一个支持大数据容量、低延迟查找和快读图分析功能的高效图数据库,包含图存储、图计算、图学习、图研发平台的完善的图技术体系,拥有业界领先规模的图集群,解决了图数据分析面临的大数据量、高吞吐率和低延迟等重大挑战。
(3)本实验采用Elliptic Bitcoin Dataset数据集。该数据集由Elliptic公司发布,是区块链反洗钱(AML)和欺诈检测研究领域广泛使用的公开数据集。数据集记录了大量比特币交易以及交易之间的关联关系,可用于分析非法资金流动和风险传播路径。
二.启动TuGraph
在浏览器搜索阿里云平台,通过支付宝或其他方式登陆,搜索Tugraph,有七天免费试用期,选择免费试用,进入后,选择北京地域,设置服务实例ID,节点,密码后等待部署,部署完成后可通过blot、密码、用户名(admin)进行登录。
三.导入数据
3.Transaction
新建图项目,打开数据文件elliptic_txs_classes.csv作为点,elliptic_txs_edgelist.csv作为边。先建立点模型,添加点的属性,对于elliptic_txs_classes.csv有两个属性:第一个属性是txld,为整数型(int);第二个属性是class,为字符串型(string),其含义为图数据库中的交易节点。将其命名为transaction。
然后建立边模型,elliptic_txs_edgelist.csv表示交易txId1产生的输出被交易txId2所使用。起点终点均为transaction,将其命名为transfer
最后分别导入文件中的数据,点击数据导入,选择对应的数据文件,将属性与文件中每列内容对应,并且从第一行开始,之后完成数据的导入。
四.Cypher语句设计
(1)简单查询
在elliptic_txs_classes.csv文件中,class属性有三类,分别为1,2,unkonwn,分别代表非法,合法,未登记。设计一下代码用以查询所有非法交易,并显示其中10条
MATCH (a:Transation)
WHERE a.class = "1"
RETURN a
LIMIT 10;
(2)复杂查询
由于非法交易通常会设置一个中间交易用以洗钱,而非直接将钱转移至最终目的地。因此设计以下代码用以查询所有非法交易中经过中间交易的那些交易,其中illicit_tx为最初的非法交易,middle_tx为中转交易,target_tx为最终交易目标并显示其中50条。
MATCH (a:Transation)-[:Transfer]->(m:Transation)
-[:Transfer]->(b:Transation)
WHERE a.class = "1"
RETURN a.TXID AS illicit_tx,
m.TXID AS middle_tx,
b.TXID AS target_tx
LIMIT 50;
