详情

c++0675 基于区块链的自动交易智能合约的设计与实现

项目介绍

本课题设计(研究)的目的

“智能合约”是指“一套以数字形式定义的承诺,包括参与方可以在上面执行这些承诺的协议”,即“一个在计算机系统上,当一定条件被满足的情况下可以被自动执行的合约”。

智能合约应用广泛,其中一个应用为信用卡的自动还款服务,在具体的时间(还款日),当还款条件被满足时(储蓄卡余额大于信用卡还款金额),计算机系统自动完成交易(用设定的储蓄卡进行还款)。

然而传统的信用卡还款自动交易合约存在一定的安全问题,即数字化合同有被篡改之类的道德风险,或者是被黑客攻击的技术风险。区块链技术给我们带来了一个去中心化的,不可篡改的,高可靠性的系统。如果将区块链技术运用到智能合约的设计中,可有效防止内容篡改,保证合约顺利执行,并提供可靠的事后审计,大大增加了智能合约的被信任度。

本课题旨在完成一个基于区块链技术的用户和银行间关于信用卡还款交易的智能合约,实现对传统智能合约在信息安全方面的优化。

三、设计(研究)的重点与难点,拟采用的途径(研究手段)

研究的重点在于制定智能合同,并实现利用区块链技术保存和执行智能合同。

主要任务和要求包括以下方面:

1.研究现有的智能合约制定方法,并用Java实现

读文献学习和实现现有的智能合同制定方法,由于还款业务的相似性,可以制定合约模板以减少合约代码编写的冗余工作,模板可包括项目发起者以及合约代码等内容,并用Java定义合约代码与区块链的接口,以便查询区块链信息和返回执行结果。

2.使用Java实现区块链的模拟。

为了保证合约代码的可信性,把代码直接存放在区块链上,当有交易触发时区块链的计算节点会读取链中的代码并执行。考虑到Java程序在运行之前会将所有的对象加载,这样在运行状态中能够知道和调用这个类的所有属性和方法,Java语言的反射机制使得程序可以动态获取对象信息以及动态调用对象的方法。利用Java对象的本质,用Java语言编写智能合约,在运行过程中,利用Java反射机制实现合约代码的触发执行机制。

1)考虑到区块及区块链的结构,使用树和链两种数据结构来模拟区块链;由于区块链基于p2p网络[11],使用图的数据结构来模拟客户及银行节点。

2)区块链中的“难度目标”对标识区块唯一性的区块哈希值进行了严格规定,即一定的“难度目标”代表了区块哈希值从第1位开始值为0的位数,这就需要产生新区块的节点使用不同“随机数”来计算新区块的哈希值,直到找到一个“随机数”所计算得到的区块哈希值满足对应的“难度目标”,由于任何交易造成的区块内数据的改变,所以可以使用merkle tree算法来生成哈希值。

3)新区块的形成需要经过各个结点的验证,验证的内容主要是合约参与者的私钥签名是否与账户匹配。因此需要借助RSA非对称加密算法形成用户的公钥和私钥,并进行数字签名以对新的合约集进行验证。

4)定期检查自动机状态,逐条遍历每个合约内包含的状态机、事务以及触发条件;将条件满足的事务推送到待验证的队列中,等待共识;未满足触发条件的事务将继续存放在区块链上。

3.使用Python完成客户和银行界面的构建。

   界面包括登录界面和合约制定界面。


站长说明

       成品毕业设计 可以根据自己的要求, 自行浏览选购, 可以参考是否符合自己要求,找到满意的成品毕业设计 , 直接发送成品编号联系发你网址的工作人员进行交易,  我们会从QQ或者邮箱等方式发送毕业设计程序。

        我们团队 , 可以根据用户的功能要求量 身定制毕业设计程序 (同样联系发你网址的 工作人员) ,  需要用户提供详细的   , 功能要 求.开发技术要求(开发语言、开发工具、框 架等  ) . 我们会根据用户毕业设计的难易程 度 , 工作量大小等, 具体的给出一个报价,价格 协商一致过后,付下40%定金.我们开始开 发毕业设计, 做好过后先发送设计桌面演示录像 , 用户看后 满意付尾款, 我们再发程序源码压缩包!