本文是一篇计算机论文范文,本文通过查阅资料深入了解网络社交平台的特性及发展历程,并基于区块链技术开发了一个安全高效的网络社交平台。由于智能合约的出现,在丰富区块链应用的同时,智能合约的漏洞问题也是区块链领域需要解决的一大难题,所以本文中对于智能合约的安全性验证也进行了相关研究;为了优化区块链的性能,本文提出了一种混合存储方案,该方案既保留了区块链的安全性又保证了数据的读写性能。
1 绪论
1.1 选题背景与研究意义
互联网的快速发展方便且丰富了人们的生活,人们通过手机或者电脑就可以进行在线聊天、网络社区交流等,在线社交成为互联网时代下一种非常重要的交流方式,在社交网络领域,开发者最关心的问题永远围绕用户和内容[3]。目前国内外以微博、知乎、Facebook、Twitter 等为代表的社交平台大多不是分布式的, 不同用户之间及用户与平台之间都是通过中心化服务器进行交互,用户的个人信息及交易记录均由社交平台所拥有,平台会记录用户的消费、搜索以及点赞评论的行为,然后就可以对不同的用户投放不同的广告或者推荐,造成用户信息的泄露。目前已经有很多公司在对用户数据的管理上出现了问题,据风险基础安全(Risk Based Security)提供的数据显示,2020 年全球数据泄露数量达到了 360亿条,对于如此庞大的数字,人们也开始愈发的担心自己的数据是否被泄露[4]。除此之外,对于网络社交平台也逐渐暴露出一些别的问题:信息易被篡改、信息溯源的困难、对散播虚假信息的监管无力、用户发布的内容质量低下、奖励制度不完善等。
区块链的出现为网络社交领域提供了弯道超车的机会,基于区块链的网络社交平台具有以下特点:
(1)数据由用户控制,无需第三方集中存储。因为区块链上存储的数据是分布式存储的,所以基于区块链技术的社交平台本身就是一个公正平等的网络平台,无中心节点对平台进行管控。
(2)用户发布的内容不可篡改。基于区块链不可篡改的特点,网络社交平台中用户发布的每一条内容,都成为区块链上不可磨灭的一笔,用户只能对其进行查询操作,而无法进行修改或者删除操作,这一特性充分保证了数据的可信度。
基于以上特点,越来越多的研究者为如何将区块链技术与社交平台融合提供宝贵的思路,“区块链+社交平台”已经成为互联网领域的一个研究热点[5]。
1.2 国内外研究现状
1.2.1 区块链社交平台
由于区块链是最近几年新兴起的一种技术,所以关于区块链与社交网络结合的项目并不多,目前为止国内外较为成熟的基于区块链技术的社交网络主要有Syenero[9]、Steemit[10]、RRcoin[11]、ONO[12]等。
2015 年 3 月,Dor Konforty 和 Yuval Adam 等人设计了一种去中心化的社交网络平台——Synereo。Synereo 的设计初衷是开发一个分布式的、公平的社交网络,用户可以在自己的设备上运行节点接入网络,网络中的所有节点之间可以实时通信,在 Synereo 中用户的信息是以密文的形式存储在区块链上的,只有拥有秘钥的用户才能对信息进行查看。在 Synereo 网络中,用户可以对自己喜欢的内容进行推广,转发量和阅读量越高,用户获得的奖励也就越多[9]。2016 年 1 月,内德.斯科特创立了 Steemit,与比特币及以太坊中的以太币类似,在 Steemit 中设计了一种新的虚拟货币 Steem,用户通过发布优质的帖子赚取高点赞率来获取奖励[10]。2018 年 1 月,人人网推出了区块链项目 RRcoin,利用区块链技术分布式的特点记录用户在社交平台上的交易,并通过设计智能合约对用户的行为给予约束[11]。同年 7 月,ONO 在北京举行了生态发布会,ONO 也是一个基于区块链技术的社交网络,当注册成功后 ONO 会为用户分配唯一的身份地址,在 ONO网络中,区块链上并不直接存储用户的信息,而是先使用加密算法进行加密,然后再进行存储[12]。
Syenero、Steemit、ONO、RRcoin 这几个项目在构思方面求同存异,都是希望能够借助于区块链技术,搭建一个能够保证优质内容的社交网络平台。除了国内外比较知名的项目外,许多高校的师生也致力于对区块链社交网络的研究。北京邮电大学李日扬在其硕士学位论文中对区块链环境下的社交平台上用户隐私行为进行了研究,通过分析用户的隐私行为,分别构建了传统社交网络与基于区块链的社交网络两种不同的演化博弈模型,通过对仿真结果进行分析,得出不同初始参数对策略的影响,为区块链在社交平台上的应用提供了宝贵的理论支持[13]。湖北大学刘琦深入研究了 Synereo 社交平台的底层网络结构,通过对其区块的生成、存储及共识的研究,提出了一种新的基于区块链的社交网络架构,并将其命名为 Ryu[12]。华南理工大学江乐也提出了一种基于区块链技术的社交平台网络架构[14],为了提高效率,设计了一种针对移动网络的缓存机制,在保护用户隐私及交易安全的同时又优化了系统性能。
2 相关技术介绍
2.1 区块链
区块链是一种链式数据结构,它通过共识机制、加密算法等技术,按照时间的先后顺序将每个区块连接起来。区块链具有以下的特点:
(1) 分布式存储。与传统的中心化数据库不同的是,区块链上的每个参与节点都持有一份完整的账本,所有的节点独立且对等。
(2) 信息公开透明。所有的交易在上链之前都会在整个区块链网络上进行广播,每一个参与者都可以查询到区块链上的每一笔交易,信息透明且及时。
(3) 高度自治。在区块链网络中不存在中心化的服务器,区块链通过制定共识算法,使网络中的每一个参与者都可以在区块链平台上自由平等的进行交易。
(4) 数据不可篡改。区块链网络中的每一个区块都是以链式的结构链接到前一个区块,并且后一个区块的区块头内存储着其前一区块的哈希值,所以区块链上的每一笔交易都可追溯至创世区块。对区块链上存储的数据只能进行查询和增加的操作,如果想要修改链上的交易需要持有系统 51%以上的算力,这对于拥有上万个甚至更多节点的区块链来说,篡改成本非常高,是几乎不可能实现的。
2.1.1 区块链分类
根据网络范围不同可将区块链分为三种,分别是:公有链、联盟链、私有链[21],其中公有链的去中心化程度最高,但同时交易效率也是最低的,例如比特币平均每十分钟产生一个新的区块,以太坊通过更改共识算法提高了出块速度,达到了平均每 15s 产生一个新区块;联盟链属于弱中心化,仅联盟内的成员可以对区块链账本进行维护,但是联盟链的出块速度可以达到(1000-10000)block/s,私有链是中心化程度最弱的,数据不对外开放,私有链主要的用途是提供一个安全的、能够溯源的、数据不可篡改的的交易平台。表 2-1 对三种区块链作了对比。
2.2 以太坊平台
在区块链技术发展的初期,该技术只是作为虚拟货币进行交易,随着区块链技术的不断进步,应用领域也越来越宽泛。继比特币之后,Buterin 提出了一种新的区块链平台——以太坊[26],以太坊不仅可以像比特币一样用于数字货币进行交易,而且为开发者提供了图灵完备的编程语言来开发智能合约[27],智能合约的出现标志着区块链由 1.0 时代进入区块链 2.0 时代。在以太坊的底层并没有封装太多复杂的逻辑,用户通过在平台上开发满足要求的智能合约来丰富以太坊平台的应用。
账户是以太坊中非常重要的概念,根据功能和权限的不同将以太坊中的账户分为两类,分别是合约账户和外部账户,外部账户由用户的公钥-私钥对控制,其地址是通过公钥加密之后得到的;合约账户是由存储在账户中的智能合约代码控制的,合约账户的地址是在部署智能合约的时候自动生成的,创建外部账户不需要花费以太币,而创建合约账户需要支付一定的 Gas 才能完成合约的部署。外部账户可以使用私钥发起交易,如转移 Token 或者执行一些计算等,然后将交易信息发送到其他外部账户中,在以太坊网络中只有外部账户才能发起交易。但是,不论是哪种类型的账户,账户的状态都由以下几部分组成。
● nonce:nonce 在外部账户中表示的是该账户所发起的交易的序列值,在合约账户中表示的是合约的序列值。
● balance:表示该账户所持有的 Wei 的数量,其中1𝐸𝑡ℎ = 1018 𝑊𝑒𝑖 。
● storageRoot:storageRoot 存储的是 Merkle 树根节点的哈希值。
● codeHash:表示的是该账户的以太坊虚拟机代码的哈希值。
3 系统设计............................. 14
3.1 总体设计........................................... 14
3.1.1 系统技术架构................................ 14
3.1.2 区块链平台选择.......................... 15
4 智能合约安全性验证................................... 30
4.1 基于 Petri 网技术的智能合约业务流程验证 .......................... 30
4.1.1 Petri 网定义 ............................ 30
4.1.2 验证策略................................... 31
5 基于区块链的社交平台的实现与测试....................... 40
5.1 系统环境................