区块链 matlab,matlab可以实现区块链吗?
用MATLAB實現(xiàn)區(qū)塊鏈:把區(qū)塊對象連成鏈
現(xiàn)在可以把區(qū)塊連成區(qū)塊鏈了,我們用一個新的類叫做BlockChain來模擬它。 首先規(guī)定該鏈中的第一個block可以直接產(chǎn)生,就是genesis
block,這就是上面Block的construtor中,輸入?yún)?shù)個數(shù)等于2是返回的對象.
classdef BlockChain < handle
properties
totalCount % 用來記錄區(qū)塊的個數(shù)
blockArray % 對象數(shù)組 用來盛放區(qū)塊鏈
end
methods
function obj = BlockChain()
obj.blockArray =[ Block(0,'Genesis Block')]; % 構(gòu)造blockchain對象時產(chǎn)生第一個 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) % 計算方法是把所有的內(nèi)容做strcat
gb.selfHash = DataHash( str , Opt); % 然后hash
end
function addBlock(obj,newBlock) % 當(dāng)miner成功的'挖出'一個符合要求的block之后
if obj.validateNewBlock(newBlock) % 調(diào)用該函數(shù)
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中,產(chǎn)生第一個genesis
block并且計算它的hash值
所謂的”鏈”,就是前一個block的selfHash的數(shù)據(jù),保存在下一個block的previousHash屬性中.
這就是說,區(qū)塊2中包含著區(qū)塊0的信息,區(qū)塊3中包含著區(qū)塊2的信息,從而區(qū)塊3也包含著區(qū)塊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..'| | | | |
+----------------------------+ +-------------------------+
+-----------------
總結(jié)
以上是生活随笔為你收集整理的区块链 matlab,matlab可以实现区块链吗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux的exec函数
- 下一篇: 黑龙江对口学计算机上机,2009年黑龙江