基于区块链的物流信息存储系统

一、介绍:

区块链(不是比特币,请大家辩证看待)是一种数据结构

介绍视频 1

介绍视频 2

如果有时间,也可系统性学习北大课程:

二、任务:

1~2 人一组(在本文档顶部注明分工)

完成基于区块链的物流信息存储系统(下图为示意图,仅供参考)

参考链接 1

完成本文档后面的项目说明

课程期间全程参加钉钉会议,不定时随机点名共享屏幕讲解进度 12 日 24:00 前将整个项目代码和本文档提交至钉钉群

思考下列开放式问题,形成自己的观点,并写在文档末尾:

是不是万物皆可区块链,区块链到底能用来做什么?

◆ 参考链接 1

区块链能真正做到去中心化吗?

区块链能真正做到不可篡改吗?

更多问题可自行发挥 …

项目说明

功能/特性 说明 分值 备注(请在此备注是否完成,及其他信息)
基础 必选
文档内容充实、排版美观 5 完成
无编译错误,可顺利运行 5 完成
C++ 必选
多文件结构 10 完成
面向对象(类和继承) 10 完成
设计合理(需在文档中说明) 10 完成
区块链 必选
具备区块链基础功能 10 完成
对区块链的思考 10 完成
区块链++ 可选 30
去中心化 完成(分布式账本)
数据安全 完成(挖矿机制)
不可篡改 完成(GHOST 协议)
可溯源 完成
轻节点 完成
汇报 在线做演示和汇报 10 完成

C++学期

简介

模型说明挖矿机制

GHOST协议主要构成帐户账户状态世界状态物品费区块

轻量级区块

作量证明挖矿挖矿作为安全机制

挖矿作为财富分配机制系统测试思考问题区块链能真正做到去中化吗?区块链是分布式数据库吗?区块链真的不可篡改吗?

三、模型说明

该项本质就是个基于交易的状态机(transaction-based state machine)。在计算机科学中,个状态机是指可以读取系列的输,然后根据这些输,会转换成个新的状态出来的东。该状态机如下:

根据该项的状态机,我们从创世纪状态开始,当交易被执后,这个创世纪状态就会转变成最终状态。在任何时刻,这个最终状态都代表着当前的状态,在项中指针 Bptr永远指向最新的状态。每个状态可能包含数个物流信息。这些信息都被“组团”到个区块中。个区块包含了系列的物流信息,每个区块都与它的前个区块链接起来。

3.1 挖矿机制

为了让个状态转换成下个状态,交易必须是有效的。为了让个交易被认为是有效的,它必须要经过个验证过程,此过程也就是挖矿。挖矿就是组节点它们的计算资源来创建个包含有效交易的区块出来。

任何在络上宣称是矿的节点都可以尝试创建和验证区块。很多矿都在同时间创建和验证区块。每个矿在提交个区块到区块链上的时候都会提供个数学机制的“证明”,这个证明就像个保证:如果这个证明存在,那么这个区块定是有效的。为了让个区块添加到主链上,个矿必须要其他矿更快的提供出这个“证明”。通过矿提供的个数学机制的“证明”来证实每个区块的过程称之为作量证明(proof of work)。

证实了个新区块的矿都会被奖励定价值的奖赏该项使种内在数字代币作为奖赏。每次矿证明了个新区块,那么就会产个新的货币并被奖励给矿。

3.2 GHOST协议

为了保障数据的安全性以及可靠性,本项也采了GHOST协议(Greedy Heaviest Observed Subtree)。简单来说,GHOST协议就是让我们必须选择个在其上完成计算最多的路径。个法确定路径就是使最近个区块的区块号,区块号代表着当前路径上总的区块数。区块号越,路径就会越,就说明越多的挖矿算被消耗在此路径上以达到叶区块。使这种推理就可以允许我们赞同当前状态的权威版本。

3.2.1 主要构成

该项主要有以下的部分组成:

  • 账户(accounts)

  • 状态(state)

  • 费(gas)

  • 交易(transactions)

  • 区块(blocks)

  • 交易执(transaction execution)

  • 挖矿(mining)

  • 作量证明(proof of work)

四、帐户

该项的全局“共享状态”是有很多对象来组成的,这些账户可以通过消息传递架构来与对进交互。其中分为普通帐户和矿,普通帐户只具备交易功能,矿户可以挖矿获得报酬。另外,在普通户中分为全节点户和轻节点户,全节点户是将所有的区块链进存储,轻节点户只将Merkle树的头节点哈希值进存储,为什么只存储哈希值呢?这会在后的部分进详细讲解。

4.1 账户状态

账户状态有三个组成部分,不论账户类型是什么,都存在这三个组成部分:

  • nonce:从此账户地址发送的交易序号。

  • balance: 此地址拥有货币的数量。

  • storageRoot: Merkle树的根节点Hash值。

4.2 世界状态

Merkle Tree(也被叫做Merkle trie)是种由系列节点组成的叉树,这些节点包括:

在树的最底层的包含了源数据的量叶节点系列的中间的节点,这些节点是两个节点的Hash值几个根节点,同样是两个节点的Hash值,代表着整棵树

同样的树结构也来存储交易和物品信息。更具体的说,每个块都保存了三个不同

Merkle树结构的根节点的Hash,包括:

  • 状态树
  • 物品树
  • 交易树

在Merkle树中存储所有信息的效性在轻节点中相当的有。区块链就是群节点来维持的。泛的说,有两种节点类型:全节点和轻节点。

全节点通过下载整条链来进同步,从创世纪块到当前块,执其中包含的所有交易。矿会存储全节点,因为他们在挖矿过程中需要全节点。也有可能下载个全节点不执所有的交易。论如何,个全节点包含了整个链。

不过除个节点需要执所有的交易或轻松访问历史数据,不然没必要保存整条链。这就是轻节点概念的来源。起下载和存储整个链以及执其中所有的交易,轻节点仅仅下载链的头,从创世纪块到当前块的头,不执任何的交易或检索任何相关联的状态。由于轻节点可以访问块的头,头中包含了3个树的Hash,所有轻节点依然可以很容易成和接收关于交易、事件、余额等可验证的答案。

这个可以的通是因为在Merkle树中hash值是向上传播的—如果个恶意户试图个假交易来交换Merkle树底的交易,这个会改变它上节点的hash值,它上节点的值的改变也会导致上上个节点Hash值的改变,以此类推,直到树的根节点。

物品物品的设计结构如下:

户可以创建物品、对物品进加,同时户可以交易该物品到其他户,在该项中每步操作都会被记录到产品信息中,同时会保存在区块链之中,这确保了物品的可溯源性。

五、费用

区块链可以运作的个重要就是每个络执的操作同时也被全节点所影响。然,计算的操是常昂贵的。因此,最好是来执最简单的任务,如运个简单的业务逻辑或者验证签名和其他密码对象,不是于复杂的操作,如件存储,电邮件,或机器学习,这些会给络造成压。施加费防户使络超负荷。

六、区块

所有的交易都被组成个”块”。个区块链包含了系列这样的链在起区块。

在该项中,个区块包含:

区块头

关于包含在此区块中交易集的信息轻量级区块轻节点中只存储了三个Merkle树的哈希值,这样可以缩减存储空间。

七、作量证明挖矿

作量证明(Proof-of-Work)是种对应服务与资源滥、或是拒绝服务攻击的经济对策。

般要求户进些耗时适当的复杂运算,并且答案能被服务快速验算,以此耗的时间、设备与能源做为担保成本,以确保服务与资源是被真正的需求所使。此概念最早由Cynthia Dwork和Moni Naor于1993年的学术论提出,作量证明词则是在1999年由Markus Jakobsson与Ari Juels所发表。现时此技术成为了加密货币的主流共识机制之,如特币所采的技术。

作量证明最常的技术原理是散列函数。由于输散列函数h的任意值n,会对应到一个结果h(n),h(n)只要变动个特,就会引起雪崩效应,所以乎法从h(n)反推回n,因此借由指定查找n的特征,让户进量的穷举运算,就可以达成作量证明。

本项并没有真正的进求解MD5哈希的运算,是使了模拟的法。创建若个数的矿,每个矿都有的算,使随机法,算的矿有更的可能求解出答案。

7.1 挖矿作为安全机制

总的来说,PoW的的就是以加密安全的式证明成的些输出是经过了定量的计算的。因为除了列举所有的可能性,没有更好的其他法来找到个低于要求阈值的nonce。重复应Hash函数的输出均匀分布,所以我们可以确保,在平均值上,找到满要求的nonce所需时间取决于难度阈值。难度系数越,所需时间越。这样的话,PoW算法就给予难度这个概念的意义了:来加强区块链的安全。

我们所说的区块链的安全是什么意思?这常简单:我们想要创造个每个都信任的区块链。如果存在超过1条以上的链,户的信任就会消失,因为他们没有能合理的确认哪条链才是“有效的”。为了让群户接受存储在区块链中的潜在状态,我们需要有群信任的个权威区块链。

这完完全全就是Pow算法所做的事情:它确保特定的区块链直到未来都直保持着权威性,让攻击者创造个新区块来重写某个历史部分(例如清除个交易或者创建个假的交易)或者保持个分叉变得常困难。为了先让他们的区块被验证,攻击者需要总是络上的其他要更快的解决掉nonce问题,这样络就会相信他们的链是最重的链(基于提到的GHOST协议原则)。除攻击者拥有超过半的络挖矿能,要不然这基本上是不可能的。

7.2 挖矿作为财富分配机制

除了提供个安全的区块链,PoW同样也是分配财富给那些为提供这个安全花费

计算的的种法。个矿挖出个区块的时候会获得奖励,包括:

为“获胜”区块提供的静态区块奖励

区块中的交易在区块内所消耗的gas 系统测试创建两个户Jack和Tom:

系统信息:

户Tom创建个物品Book:

户Tom加物品Book,查看产品信息:

户Tom以0.5gas交易产品Jack,交易之后户的信息:

此时的区块信息:

加10个随机矿:

户Jack加产品Book,最终产品溯源信息:

C++实现基于区块链的物流信息存储系统相关推荐

  1. 基于区块链的健康链系统设计与实现(5)区块链性能优化

    4.4区块链性能优化 通过更改相关参数和优化,交易性能在单节点的情况下能达到100个TPS以上.比如将生成块的时间由每10分钟改成10秒,将调整难度时间由2周改成80秒,将交易内存池扩大,并扩大交易最 ...

  2. 基于区块链的数据市场

    点击上方蓝字关注我们 基于区块链的数据市场 汪靖伟, 郑臻哲, 吴帆, 陈贵海 上海交通大学计算机系,上海 200240 论文引用格式: 汪靖伟, 郑臻哲, 吴帆, 陈贵海. 基于区块链的数据市场.  ...

  3. 团队项目介绍--基于区块链的教育信息管理系统

    1. 队名 EduChain小组 2. 队员风采 ①  姓名:马宁 职务:组长 学号:2017011742 风格:积极向上,乐观开朗,热情大方 擅长的技术:擅长html,css,js,bootstra ...

  4. 基于区块链的去中心化存储(区块链存储)的工作流程

    引入 个人电脑上存储有限,而且如果硬盘损坏数据丢失的话,也不容易恢复.因此很多人愿意把数据上传到云盘里,也就是云存储.但是云存储是服务提供商控制的,比如阿里云,百度云等,我们称为中心化的存储 ,人们对 ...

  5. 基于区块链的医疗记录存储系统研究与开发

    参考转自 https://www.qklbishe.com/ 基于区块链的医疗记录存储系统研究与开发   摘    要 随着互联网的飞速发展,医疗行业呈现出信息化的发展趋势.EMR(电子病历)记录了患 ...

  6. 基于区块链的供应链金融服务平台

    基于区块链的供应链金融服务平台 马小峰1,杜明晓1,余文兵2,王意1 1. 同济大学控制科学与工程系,上海 201804 2. 上海欧冶金融信息服务股份有限公司,上海 201804 摘要:区块链具有去 ...

  7. 虚拟现实平台爆火,如何基于区块链开发游戏平台?

    几十年来,虚拟世界一直是科幻类型中令人难以置信的概念. 随着虚拟现实和增强现实的概念开始迅速扩展,每个技术领域都开始注意到并决定创造一些独特的东西,使数字世界在创建时惊叹不已.由此,Decentral ...

  8. 基于区块链的车联网汽车管理系统

    第一章 作品概述 (建议包括:背景分析.相关工作.特色描述及应用前景分析等) 1.1研究背景及意义 近年来,交通违章记录被篡改.汽车维修厂商虚假报价.虚假维修等问题层出不穷.据广州日报报道,一家代办交 ...

  9. 全文解析:面向基于区块链的「机器人经济学」概念中,如何验证自主智能体的行为?...

    原文来源:arXiv 作者:Konstantin Danilov.Ruslan Rezin.Alexander Kolotov. Ilya Afanasyev 「雷克世界」编译:嗯~是阿童木呀.KAB ...

最新文章

  1. 2020个人Flag已立,欢迎监督!
  2. Android 中的GC资料网站
  3. 新技术让SAP HANA向“通用”平台迈进
  4. Java隐含对象实验报告,JSP隐含对象response实现文件下载
  5. 客座编辑:季统凯(1972-),男,博士,中国科学院云计算产业技术创新与育成中心研究员、主任。...
  6. 数据仓库 和挖掘的步骤 - oracle
  7. 在ASP.NET使用javascript的一点小技巧(转www.chinacs.net 中文C#技术站 )
  8. 复杂的权限按钮控制优化
  9. mysqld --initialize --console 没有 打印信息_JavaScript设计模式--装饰者模式
  10. 简单的学习一下node吧——还在学习中~~~
  11. [导入]jbuilder 2006开发struts+sqlserver2K准备工作
  12. 论文赏析[EMNLP18]用控制任务来设计并解释探测任务
  13. 两种消息模型: 点对点(queue)发布/订阅(topic)
  14. 北师计算机应用基础开放作业,北师大计算机应用基础开放作业答案
  15. [转载] 我的Android进阶之旅:经典的大牛博客推荐
  16. my live work / interview / renshebu / gongxinbu
  17. 安卓微信无root降级教程
  18. php中的oop思想,php oop的特性是什么?php oop思想的三大特点介绍
  19. 基于XPDL2.0的过程定义
  20. html书写表单laber,day02_HTML表格列表表单

热门文章

  1. mysql查找附近算法_Java+MySQL实现附近功能
  2. 多线程编程之Linux环境下的多线程(三)——好文
  3. 超级文件分割《合并》机(分割大文件)
  4. postgis基本用法
  5. SDNU__1082.观妹种菊
  6. 通达信f10接口是什么?
  7. 该网站未根据工信部相关法律规则进行备案
  8. C语言主函数返回值含义
  9. Arduino用遥控器控制LED灯开关和亮度
  10. android实时预览,实现预览  |  Android 开发者  |  Android Developers