用MATLAB实现区块链:把区块对象连成链

现在可以把区块连成区块链了,我们用一个新的类叫做BlockChain来模拟它。 首先规定该链中的第一个block可以直接产生,就是genesis

block,这就是上面Block的construtor中,输入参数个数等于2是返回的对象.

classdef BlockChain < handle

properties

totalCount % 用来记录区块的个数

blockArray % 对象数组 用来盛放区块链

end

methods

function obj = BlockChain()

obj.blockArray =[ Block(0,'Genesis Block')]; % 构造blockchain对象时产生第一个 genesis

block

obj.totalCount = 1 ;

obj.calculateGensisBlockHash(); % 计算genesis block的hash

end

function bc = getLatest(obj)

bc = obj.blockArray(end);

end

function calculateGensisBlockHash(obj)

gb = obj.blockArray(1);

Opt.Method = 'SHA-256';

Opt.Input = 'ascii';

str = strcat(num2str(gb.index),gb.data) % 计算方法是把所有的内容做strcat

gb.selfHash = DataHash( str , Opt); % 然后hash

end

function addBlock(obj,newBlock) % 当miner成功的'挖出'一个符合要求的block之后

if obj.validateNewBlock(newBlock) % 调用该函数

obj.blockArray(end+1) = newBlock; % 把这个block加到blockchain上去

end

end

function tf = validateNewBlock(obj,newBlock) % 验证新添加的block是否符合要求

newHash = DataHash( strcat( newBlock.getCombined(), num2str(newBlock.nonce)

));

if(strcmp(newHash(1:2),'00') &&

strcmp(newBlock.selfHash,newHash))

tf= true;

else

tf = false;

end

end

end

end

在live editor中演示实例化这个BlockChain类,在它的constructor中,产生第一个genesis

block并且计算它的hash值

所谓的”链”,就是前一个block的selfHash的数据,保存在下一个block的previousHash属性中.

这就是说,区块2中包含着区块0的信息,区块3中包含着区块2的信息,从而区块3也包含着区块0的信息

+----------------------------+ +-------------------------+

+----------------------+

| genesis block | | block 1 | | block 2 |

+----------------------------+ +-------------------------+

+----------------------+

| index = 0 | | index = 1 | | index = 2 |

| previousHash ='' | +-----+ previousHash='075c277..'| +--+

previousHash='00abcd'| +-- ....

| selfHash = '075c27741a35068+---+ | selfHash ='00abcd...' +---+ | selfHash

= '00efgh..'+--+

| 46368fa6e5b3477f85b31cee..'| | | | |

+----------------------------+ +-------------------------+

+-----------------

区块链 matlab,matlab可以实现区块链吗?相关推荐

  1. 区块链概况:什么是区块链

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链技术自身仍然在飞速发展中,目前还缺乏统一的规范和标准. wikipedia 给出的定义为: A blockchai ...

  2. 【区块链Go语言实现】区块链基本原型

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 0x00 介绍 区块链(Blockchain)是21世纪最具革命性的技术之一,目前它仍处于逐渐成熟阶段,且其发展潜力尚未 ...

  3. 以太坊区块链_以太坊区块链搭建与使用(一)-私有链

    步骤 一.下载go语言,并配置环境变量 //以太坊源代码依赖的编译与运行环境 二.通过git clone以太坊源码(go-ethereum),并编译 一.go安装 step1:下载 官方(一般打不开) ...

  4. 区块链创业者:谈企业级区块链落地,传统行业的崛起(分享实录)

    2019独角兽企业重金招聘Python工程师标准>>> 1 前言:我与区块链结缘 2011,初始比特币 2016,了解以太坊及加密货币,开始投资,并关注企业级区块链落地实现. 分享大 ...

  5. 区块链学习(6)区块链

    写了几篇区块链的学习笔记,今天来写写比特币中的区块链.比特币中区块链是由包含交易信息的区块从后向前有序链接起来的数据结构.每个区块从后向前有序地链接在这个链条里,每个区块都指向前一个区块. 区块结构 ...

  6. 区块链系统之《基于区块链的PKI数字证书系统》

    摘要 本文提出了一种基于区块链技术构建PKI数字证书系统的方法,利用区块链去中心化.不可篡改等特点,解决了传统PKI技术中存在的单点失败问题以及多CA互信难等问题,可降低传统PKI技术中CA中心建设. ...

  7. 如何搭建socks5和ss节点_以太坊区块链搭建与使用(三)-联盟链

    首先对以下概念说明下: 一.以太坊大家都知道比特币使用的技术是区块链技术,比特币也是区块链技术的代表. 即比特币=区块链1.0随着区块链技术的发展以太坊也诞生了,也就是我们说的 区块链2.0.为什么说 ...

  8. 区块链 facebook_最新数据上区块链资讯,以及研究报告

    注意:本文第一部分给分享今日热点 本文第二部分给大家带来最新数据上区块链资讯,以及研究报告的内容 本文第二部分给大家详细讲讲最新数据上区块链资讯,以及研究报告和(的差别 今日热点:BiKi是目前行业中 ...

  9. 区块链浏览器_什么是区块链浏览器?

    本文由IPFS原力区Iris原作 提到区块链浏览器,你会想到什么?是浏览器中用运到区块链技术了么?这样的↓↓↓ 这样的↓↓↓ NoNoNo它是这样的↓↓↓ 区块链浏览器:就像百度,是一种搜索工具,也是 ...

最新文章

  1. python提示line3_python: line=f.readlines() 后如何消除line中的’\n’
  2. python读取只读word只读_Python用于NLP :处理文本和PDF文件
  3. 平滑动画 每秒60帧 -- 16ms内绘完一帧
  4. Linux配置SSH无密码登录
  5. python水平_如何在python中水平透视表
  6. oracle 表 上限,Oracle分区表(Partition Table)的数量限制
  7. 编码是件有逻辑的事情
  8. 智慧灯杆供电系统设计要求
  9. 阿里云 socket 服务器配置
  10. 凡是过往,皆为序章。|2021年终总结
  11. 有效期5年,亳州市推进知识产权高质量发展扶持政策发布
  12. mysql 空洞 性能_mysql 删除数据空洞有关问题,多谢
  13. 纯音乐自制吉他及钢琴简谱合集
  14. word2016背景色如何设置为保护眼睛的苹果绿
  15. windows环境下netcat的安装及使用
  16. Oracle获取年月日时分秒毫秒微秒
  17. openwrt劫持域名,openwrt使用DNS劫持实现访问域名访问web
  18. SpringGateway网关
  19. wisdomsell-day4-模板技术
  20. 从一个Aspectj织入失效问题的解决说起

热门文章

  1. sklearn分类器算法:逻辑回归及案例分析
  2. 什么是小样本学习?这篇综述文章用166篇参考文献告诉你答案
  3. 深入浅出不可思议的中文分词技术
  4. 参会邀请 - ISWC2020 | 第十九届国际语义网会议
  5. 技术动态 | 知识可视化,连接和探究知识之间的联系!
  6. 网络解析(一):LeNet-5详解
  7. 干货 | 机器学习算法在饿了么供需平衡系统中的应用
  8. 【TensorFlow】通过两个简单的例子实现反向传播
  9. Java面试知识点:多态、内部类
  10. Java总结:正则表达式