区块链 matlab,matlab可以实现区块链吗?
用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可以实现区块链吗?相关推荐
- 区块链概况:什么是区块链
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链技术自身仍然在飞速发展中,目前还缺乏统一的规范和标准. wikipedia 给出的定义为: A blockchai ...
- 【区块链Go语言实现】区块链基本原型
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 0x00 介绍 区块链(Blockchain)是21世纪最具革命性的技术之一,目前它仍处于逐渐成熟阶段,且其发展潜力尚未 ...
- 以太坊区块链_以太坊区块链搭建与使用(一)-私有链
步骤 一.下载go语言,并配置环境变量 //以太坊源代码依赖的编译与运行环境 二.通过git clone以太坊源码(go-ethereum),并编译 一.go安装 step1:下载 官方(一般打不开) ...
- 区块链创业者:谈企业级区块链落地,传统行业的崛起(分享实录)
2019独角兽企业重金招聘Python工程师标准>>> 1 前言:我与区块链结缘 2011,初始比特币 2016,了解以太坊及加密货币,开始投资,并关注企业级区块链落地实现. 分享大 ...
- 区块链学习(6)区块链
写了几篇区块链的学习笔记,今天来写写比特币中的区块链.比特币中区块链是由包含交易信息的区块从后向前有序链接起来的数据结构.每个区块从后向前有序地链接在这个链条里,每个区块都指向前一个区块. 区块结构 ...
- 区块链系统之《基于区块链的PKI数字证书系统》
摘要 本文提出了一种基于区块链技术构建PKI数字证书系统的方法,利用区块链去中心化.不可篡改等特点,解决了传统PKI技术中存在的单点失败问题以及多CA互信难等问题,可降低传统PKI技术中CA中心建设. ...
- 如何搭建socks5和ss节点_以太坊区块链搭建与使用(三)-联盟链
首先对以下概念说明下: 一.以太坊大家都知道比特币使用的技术是区块链技术,比特币也是区块链技术的代表. 即比特币=区块链1.0随着区块链技术的发展以太坊也诞生了,也就是我们说的 区块链2.0.为什么说 ...
- 区块链 facebook_最新数据上区块链资讯,以及研究报告
注意:本文第一部分给分享今日热点 本文第二部分给大家带来最新数据上区块链资讯,以及研究报告的内容 本文第二部分给大家详细讲讲最新数据上区块链资讯,以及研究报告和(的差别 今日热点:BiKi是目前行业中 ...
- 区块链浏览器_什么是区块链浏览器?
本文由IPFS原力区Iris原作 提到区块链浏览器,你会想到什么?是浏览器中用运到区块链技术了么?这样的↓↓↓ 这样的↓↓↓ NoNoNo它是这样的↓↓↓ 区块链浏览器:就像百度,是一种搜索工具,也是 ...
最新文章
- python提示line3_python: line=f.readlines() 后如何消除line中的’\n’
- python读取只读word只读_Python用于NLP :处理文本和PDF文件
- 平滑动画 每秒60帧 -- 16ms内绘完一帧
- Linux配置SSH无密码登录
- python水平_如何在python中水平透视表
- oracle 表 上限,Oracle分区表(Partition Table)的数量限制
- 编码是件有逻辑的事情
- 智慧灯杆供电系统设计要求
- 阿里云 socket 服务器配置
- 凡是过往,皆为序章。|2021年终总结
- 有效期5年,亳州市推进知识产权高质量发展扶持政策发布
- mysql 空洞 性能_mysql 删除数据空洞有关问题,多谢
- 纯音乐自制吉他及钢琴简谱合集
- word2016背景色如何设置为保护眼睛的苹果绿
- windows环境下netcat的安装及使用
- Oracle获取年月日时分秒毫秒微秒
- openwrt劫持域名,openwrt使用DNS劫持实现访问域名访问web
- SpringGateway网关
- wisdomsell-day4-模板技术
- 从一个Aspectj织入失效问题的解决说起