Browse Source

修正解析SDK返回应答问题

tags/1.1.0
shaozhuguang 5 years ago
parent
commit
66842c3c85
3 changed files with 137 additions and 1 deletions
  1. +2
    -1
      source/sdk/sdk-base/src/main/java/com/jd/blockchain/sdk/converters/ClientResolveUtil.java
  2. +15
    -0
      source/sdk/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDKDemo_Constant.java
  3. +120
    -0
      source/sdk/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDK_InsertData_Demo.java

+ 2
- 1
source/sdk/sdk-base/src/main/java/com/jd/blockchain/sdk/converters/ClientResolveUtil.java View File

@@ -138,7 +138,8 @@ public class ClientResolveUtil {
long expectedVersion = currWriteSetObj.getLong("expectedVersion");
JSONObject valueObj = currWriteSetObj.getJSONObject("value");
String typeStr = valueObj.getString("type");
String realValBase58 = valueObj.getString("value");
// Base58Utils.decode(valueObj.getJSONObject("value").getString("value"))
String realValBase58 = valueObj.getJSONObject("value").getString("value");
String key = currWriteSetObj.getString("key");
DataType dataType = DataType.valueOf(typeStr);
BytesValue bytesValue = BytesData.fromType(dataType, Base58Utils.decode(realValBase58));


+ 15
- 0
source/sdk/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDKDemo_Constant.java View File

@@ -8,8 +8,10 @@ import java.io.File;
public class SDKDemo_Constant {

public static final String GW_IPADDR = "127.0.0.1";
// public static final String GW_IPADDR = "192.168.151.41";

public static final int GW_PORT = 11000;
// public static final int GW_PORT = 18081;

public static final String[] PUB_KEYS = {
"3snPdw7i7PjVKiTH2VnXZu5H8QmNaSXpnk4ei533jFpuifyjS5zzH9",
@@ -23,6 +25,19 @@ public class SDKDemo_Constant {
"177gjtwLgmSx5v1hFb46ijh7L9kdbKUpJYqdKVf9afiEmAuLgo8Rck9yu5UuUcHknWJuWaF",
"177gk1pudweTq5zgJTh8y3ENCTwtSFsKyX7YnpuKPo7rKgCkCBXVXh5z2syaTCPEMbuWRns"};


// public static final String[] PUB_KEYS = {
// "3snPdw7i7PXvEDgq96QyzcKhfWL4mgYspzKwvgXiuAidWb2rkRMgDY",
// "3snPdw7i7PajLB35tEau1kmixc6ZrjLXgxwKbkv5bHhP7nT5dhD9eX",
// "3snPdw7i7PZi6TStiyc6mzjprnNhgs2atSGNS8wPYzhbKaUWGFJt7x",
// "3snPdw7i7PifPuRX7fu3jBjsb3rJRfDe9GtbDfvFJaJ4V4hHXQfhwk"};
//
// public static final String[] PRIV_KEYS = {
// "177gjsxj2ezADGthZ4tGqWeCAqRAwtNvesPjRnyKqCb1huU8LKZmJ3HGZNMPKWQJK3DP1B2",
// "177gju9p5zrNdHJVEQnEEKF4ZjDDYmAXyfG84V5RPGVc5xFfmtwnHA7j51nyNLUFffzz5UT",
// "177gjtwLgmSx5v1hFb46ijh7L9kdbKUpJYqdKVf9afiEmAuLgo8Rck9yu5UuUcHknWJuWaF",
// "177gk1pudweTq5zgJTh8y3ENCTwtSFsKyX7YnpuKPo7rKgCkCBXVXh5z2syaTCPEMbuWRns"};

public static final String PASSWORD = "abc";

public static final byte[] readChainCodes(String contractZip) {


+ 120
- 0
source/sdk/sdk-samples/src/main/java/com/jd/blockchain/sdk/samples/SDK_InsertData_Demo.java View File

@@ -0,0 +1,120 @@
package com.jd.blockchain.sdk.samples;

import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.ledger.*;
import com.jd.blockchain.sdk.converters.ClientResolveUtil;

public class SDK_InsertData_Demo extends SDK_Base_Demo {

public static void main(String[] args) {
SDK_InsertData_Demo sdkDemo_insertData = new SDK_InsertData_Demo();
sdkDemo_insertData.insertData();
}
/**
* 生成一个区块链数据账户,并注册到区块链;
*/
public void insertData() {
// 在本地定义注册账号的 TX;
TransactionTemplate txTemp = blockchainService.newTransaction(ledgerHash);
//采用原始的方式来生成BlockchainKeypair;
// SignatureFunction signatureFunction = Crypto.getSignatureFunction("ED25519");
// AsymmetricKeypair cryptoKeyPair = signatureFunction.generateKeypair();
// BlockchainKeypair dataAccount = new BlockchainKeypair(cryptoKeyPair.getPubKey(), cryptoKeyPair.getPrivKey());
//采用KeyGenerator来生成BlockchainKeypair;
BlockchainKeypair dataAccount = BlockchainKeyGenerator.getInstance().generate();

txTemp.dataAccounts().register(dataAccount.getIdentity());
txTemp.dataAccount(dataAccount.getAddress()).setText("key1","value1",-1);

// TX 准备就绪
PreparedTransaction prepTx = txTemp.prepare();
prepTx.sign(adminKey);

// 提交交易;
prepTx.commit();

getData(dataAccount.getAddress().toBase58());
}

public void getData(String commerceAccount) {
// 查询区块信息;
// 区块高度;
long ledgerNumber = blockchainService.getLedger(ledgerHash).getLatestBlockHeight();
// 最新区块;
LedgerBlock latestBlock = blockchainService.getBlock(ledgerHash, ledgerNumber);
// 区块中的交易的数量;
long txCount = blockchainService.getTransactionCount(ledgerHash, latestBlock.getHash());
// 获取交易列表;
LedgerTransaction[] txList = blockchainService.getTransactions(ledgerHash, ledgerNumber, 0, 100);
// 遍历交易列表
for (LedgerTransaction ledgerTransaction : txList) {
TransactionContent txContent = ledgerTransaction.getTransactionContent();
Operation[] operations = txContent.getOperations();
if (operations != null && operations.length > 0) {
for (Operation operation : operations) {
operation = ClientResolveUtil.read(operation);
// 操作类型:数据账户注册操作
if (operation instanceof DataAccountRegisterOperation) {
DataAccountRegisterOperation daro = (DataAccountRegisterOperation) operation;
BlockchainIdentity blockchainIdentity = daro.getAccountID();
}
// 操作类型:用户注册操作
else if (operation instanceof UserRegisterOperation) {
UserRegisterOperation uro = (UserRegisterOperation) operation;
BlockchainIdentity blockchainIdentity = uro.getUserID();
}
// 操作类型:账本注册操作
else if (operation instanceof LedgerInitOperation) {

LedgerInitOperation ledgerInitOperation = (LedgerInitOperation)operation;
LedgerInitSetting ledgerInitSetting = ledgerInitOperation.getInitSetting();

ParticipantNode[] participantNodes = ledgerInitSetting.getConsensusParticipants();
}
// 操作类型:合约发布操作
else if (operation instanceof ContractCodeDeployOperation) {
ContractCodeDeployOperation ccdo = (ContractCodeDeployOperation) operation;
BlockchainIdentity blockchainIdentity = ccdo.getContractID();
}
// 操作类型:合约执行操作
else if (operation instanceof ContractEventSendOperation) {
ContractEventSendOperation ceso = (ContractEventSendOperation) operation;
}
// 操作类型:KV存储操作
else if (operation instanceof DataAccountKVSetOperation) {
DataAccountKVSetOperation.KVWriteEntry[] kvWriteEntries =
((DataAccountKVSetOperation) operation).getWriteSet();
if (kvWriteEntries != null && kvWriteEntries.length > 0) {
for (DataAccountKVSetOperation.KVWriteEntry kvWriteEntry : kvWriteEntries) {
BytesValue bytesValue = kvWriteEntry.getValue();
DataType dataType = bytesValue.getType();
Object showVal = ClientResolveUtil.readValueByBytesValue(bytesValue);
System.out.println("writeSet.key=" + kvWriteEntry.getKey());
System.out.println("writeSet.value=" + showVal);
System.out.println("writeSet.type=" + dataType);
System.out.println("writeSet.version=" + kvWriteEntry.getExpectedVersion());
}
}
}
}
}
}

//根据交易的 hash 获得交易;注:客户端生成 PrepareTransaction 时得到交易hash;
HashDigest txHash = txList[0].getTransactionContent().getHash();
// Transaction tx = blockchainService.getTransactionByContentHash(ledgerHash, txHash);
// String[] objKeys = new String[] { "x001", "x002" };
// KVDataEntry[] kvData = blockchainService.getDataEntries(ledgerHash, commerceAccount, objKeys);

// 获取数据账户下所有的KV列表
KVDataEntry[] kvData = blockchainService.getDataEntries(ledgerHash, commerceAccount, 0, 100);
if (kvData != null && kvData.length > 0) {
for (KVDataEntry kvDatum : kvData) {
System.out.println("kvData.key=" + kvDatum.getKey());
System.out.println("kvData.version=" + kvDatum.getVersion());
System.out.println("kvData.type=" + kvDatum.getType());
System.out.println("kvData.value=" + kvDatum.getValue());
}
}
}
}

Loading…
Cancel
Save