区块链 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..'| | | | |

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值