java区块链helloworld_使用Java语言编写你的第一个区块链程序

();

int index = 0;

while (index < temptxlist.size())="">

// left

String left = tempTxList.get(index);

index++;

// right

String right = '';

if (index != tempTxList.size()) {

right = tempTxList.get(index);

}

// sha2 hex value

String sha2HexValue = getSHA2HexValue(left + right);

newTxList.add(sha2HexValue);

index++;

}

return newTxList;

}

/**

* Return hex string

* @param str

* @return

*/

public String getSHA2HexValue(String str) {

byte[] cipher_byte;

try{

MessageDigest md = MessageDigest.getInstance('SHA-256');

md.update(str.getBytes());

cipher_byte = md.digest();

StringBuilder sb = new StringBuilder(2 * cipher_byte.length);

for(byte b: cipher_byte) {

sb.append(String.format('%02x', b&0xff) );

}

return sb.toString();

} catch (Exception e) {

e.printStackTrace();

}

return '';

}

/**

* Get Root

* @return

*/

public String getRoot() {

return this.root;

}

}

我们将交易的数据,放入到List中:

ListtempTxList = new ArrayList();

tempTxList.add('a');

tempTxList.add('b');

tempTxList.add('c');

tempTxList.add('d');

tempTxList.add('e');准备交易数据

计算出每个数据的hash值,从左到右逐步组成树的左右节点

执行循环知道最后只剩下一个数据

private ListgetNewTxList(ListtempTxList) {

ListnewTxList = new ArrayList();

int index = 0;

while (index < temptxlist.size())="">

// left

String left = tempTxList.get(index);

index++;

// right

String right = '';

if (index != tempTxList.size()) {

right = tempTxList.get(index);

}

// sha2 hex value

String sha2HexValue = getSHA2HexValue(left + right);

newTxList.add(sha2HexValue);

index++;

}

下面我们进行一个简单的测试

package test;

import java.util.ArrayList;

import java.util.List;

public class App {

public static void main(String [] args) {

ListtempTxList = new ArrayList();

tempTxList.add('a');

tempTxList.add('b');

tempTxList.add('c');

tempTxList.add('d');

tempTxList.add('e');

MerkleTrees merkleTrees = new MerkleTrees(tempTxList);

merkleTrees.merkle_tree();

System.out.println('root : ' + merkleTrees.getRoot());

}

}

125328583_1_20180223013419207

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值