Browse Source

Merge branch 'master' into develop

# Conflicts:
#	source/base/pom.xml
#	source/binary-proto/pom.xml
#	source/consensus/consensus-bftsmart/pom.xml
#	source/consensus/consensus-framework/pom.xml
#	source/consensus/consensus-mq/pom.xml
#	source/consensus/pom.xml
#	source/contract/contract-framework/pom.xml
#	source/contract/contract-jvm/pom.xml
#	source/contract/contract-maven-plugin/pom.xml
#	source/contract/contract-samples/pom.xml
#	source/contract/pom.xml
#	source/crypto/crypto-adv/pom.xml
#	source/crypto/crypto-classic/pom.xml
#	source/crypto/crypto-framework/pom.xml
#	source/crypto/crypto-pki/pom.xml
#	source/crypto/crypto-sm/pom.xml
#	source/crypto/pom.xml
#	source/deployment/deployment-gateway/pom.xml
#	source/deployment/deployment-peer/pom.xml
#	source/deployment/pom.xml
#	source/gateway/pom.xml
#	source/ledger/ledger-core/pom.xml
#	source/ledger/ledger-model/pom.xml
#	source/ledger/ledger-rpc/pom.xml
#	source/ledger/pom.xml
#	source/peer/pom.xml
#	source/pom.xml
#	source/runtime/pom.xml
#	source/runtime/runtime-context/pom.xml
#	source/runtime/runtime-modular-booter/pom.xml
#	source/runtime/runtime-modular/pom.xml
#	source/sdk/pom.xml
#	source/sdk/sdk-base/pom.xml
#	source/sdk/sdk-client/pom.xml
#	source/sdk/sdk-samples/pom.xml
#	source/storage/pom.xml
#	source/storage/storage-composite/pom.xml
#	source/storage/storage-redis/pom.xml
#	source/storage/storage-rocksdb/pom.xml
#	source/storage/storage-service/pom.xml
#	source/test/pom.xml
#	source/test/test-consensus-client/pom.xml
#	source/test/test-consensus-node/pom.xml
#	source/test/test-integration/pom.xml
#	source/test/test-ledger-core/pom.xml
#	source/tools/pom.xml
#	source/tools/tools-capability/pom.xml
#	source/tools/tools-initializer-booter/pom.xml
#	source/tools/tools-initializer/pom.xml
#	source/tools/tools-keygen-booter/pom.xml
#	source/tools/tools-keygen/pom.xml
#	source/tools/tools-mocker/pom.xml
#	source/utils/pom.xml
#	source/utils/utils-common/pom.xml
#	source/utils/utils-http/pom.xml
#	source/utils/utils-serialize/pom.xml
#	source/utils/utils-test/pom.xml
#	source/utils/utils-web-server/pom.xml
#	source/utils/utils-web/pom.xml
tags/1.1.0
huanghaiquan 6 years ago
parent
commit
d5bb40541a
12 changed files with 101 additions and 74 deletions
  1. +4
    -0
      source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/service/BftsmartNodeServer.java
  2. +3
    -7
      source/gateway/src/main/java/com/jd/blockchain/gateway/web/TxProcessingController.java
  3. +3
    -2
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/impl/LedgerTransactionalEditor.java
  4. +1
    -5
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/PreparedTx.java
  5. +28
    -0
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/SignatureUtils.java
  6. +22
    -22
      source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/TxRequestBuilder.java
  7. +4
    -4
      source/peer/src/main/java/com/jd/blockchain/peer/consensus/ConsensusMessageDispatcher.java
  8. +11
    -6
      source/sdk/sdk-base/src/main/java/com/jd/blockchain/sdk/service/NodeSigningAppender.java
  9. +15
    -13
      source/sdk/sdk-client/src/main/java/com/jd/blockchain/sdk/client/GatewayServiceFactory.java
  10. +5
    -4
      source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeWeb4SingleStepsTest.java
  11. +3
    -6
      source/tools/tools-initializer/src/main/java/com/jd/blockchain/tools/initializer/web/LedgerInitializeWebController.java
  12. +2
    -5
      source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerLedgerInitializer.java

+ 4
- 0
source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/service/BftsmartNodeServer.java View File

@@ -33,6 +33,8 @@ public class BftsmartNodeServer extends DefaultRecoverable implements NodeServer

private static Logger LOGGER = LoggerFactory.getLogger(BftsmartNodeServer.class);

private static final String DEFAULT_BINDING_HOST = "0.0.0.0";

private List<StateHandle> stateHandles = new CopyOnWriteArrayList<>();

// TODO 暂不处理队列溢出问题
@@ -127,6 +129,8 @@ public class BftsmartNodeServer extends DefaultRecoverable implements NodeServer
protected void initConfig(int id, Properties systemsConfig, HostsConfig hostConfig) {
byte[] serialHostConf = BinarySerializeUtils.serialize(hostConfig);
Properties sysConfClone = (Properties)systemsConfig.clone();
int port = hostConfig.getPort(id);
hostConfig.add(id, DEFAULT_BINDING_HOST, port);
this.tomConfig = new TOMConfiguration(id, systemsConfig, hostConfig);
this.outerTomConfig = new TOMConfiguration(id, sysConfClone, BinarySerializeUtils.deserialize(serialHostConf));
}


+ 3
- 7
source/gateway/src/main/java/com/jd/blockchain/gateway/web/TxProcessingController.java View File

@@ -1,5 +1,7 @@
package com.jd.blockchain.gateway.web;

import com.jd.blockchain.crypto.*;
import com.jd.blockchain.transaction.SignatureUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -8,9 +10,6 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.jd.blockchain.binaryproto.BinaryProtocol;
import com.jd.blockchain.crypto.Crypto;
import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.crypto.SignatureFunction;
import com.jd.blockchain.gateway.PeerService;
import com.jd.blockchain.ledger.DigitalSignature;
import com.jd.blockchain.ledger.TransactionContent;
@@ -53,11 +52,8 @@ public class TxProcessingController implements TransactionService {
throw new IllegalStateException("Not implemented!");
} else {
// 验证签名;
byte[] content = BinaryProtocol.encode(txRequest.getTransactionContent(), TransactionContent.class);
for (DigitalSignature sign : partiSigns) {
SignatureFunction signFunc = Crypto
.getSignatureFunction(sign.getPubKey().getAlgorithm());
if (!signFunc.verify(sign.getDigest(), sign.getPubKey(), content)) {
if (!SignatureUtils.verifySignature(txRequest.getTransactionContent(), sign.getDigest(), sign.getPubKey())) {
throw new BusinessException("The validation of participant signatures fail!");
}
}


+ 3
- 2
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/impl/LedgerTransactionalEditor.java View File

@@ -28,6 +28,7 @@ import com.jd.blockchain.ledger.core.TransactionSet;
import com.jd.blockchain.storage.service.ExPolicyKVStorage;
import com.jd.blockchain.storage.service.VersioningKVStorage;
import com.jd.blockchain.storage.service.utils.BufferedKVStorage;
import com.jd.blockchain.transaction.SignatureUtils;
import com.jd.blockchain.transaction.TxBuilder;
import com.jd.blockchain.transaction.TxRequestBuilder;
import com.jd.blockchain.utils.Bytes;
@@ -205,7 +206,7 @@ public class LedgerTransactionalEditor implements LedgerEditor {
DigitalSignature[] endpointSignatures = request.getEndpointSignatures();
if (endpointSignatures != null) {
for (DigitalSignature signature : endpointSignatures) {
if (!TxRequestBuilder.verifyHashSignature(txContent.getHash(), signature.getDigest(),
if (!SignatureUtils.verifyHashSignature(txContent.getHash(), signature.getDigest(),
signature.getPubKey())) {
return false;
}
@@ -214,7 +215,7 @@ public class LedgerTransactionalEditor implements LedgerEditor {
DigitalSignature[] nodeSignatures = request.getNodeSignatures();
if (nodeSignatures != null) {
for (DigitalSignature signature : nodeSignatures) {
if (!TxRequestBuilder.verifyHashSignature(txContent.getHash(), signature.getDigest(),
if (!SignatureUtils.verifyHashSignature(txContent.getHash(), signature.getDigest(),
signature.getPubKey())) {
return false;
}


+ 1
- 5
source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/PreparedTx.java View File

@@ -68,11 +68,7 @@ public class PreparedTx implements PreparedTransaction {

@Override
public DigitalSignature sign(AsymmetricKeypair keyPair) {
SignatureFunction signatureFunction = Crypto.getSignatureFunction(keyPair.getAlgorithm());
PrivKey privKey = keyPair.getPrivKey();
byte[] content = BinaryProtocol.encode(getTransactionContent(), TransactionContent.class);
SignatureDigest signatureDigest = signatureFunction.sign(privKey, content);
DigitalSignature signature = new DigitalSignatureBlob(keyPair.getPubKey(), signatureDigest);
DigitalSignature signature = SignatureUtils.sign(getTransactionContent(), keyPair);
addSignature(signature);
return signature;
}


+ 28
- 0
source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/SignatureUtils.java View File

@@ -0,0 +1,28 @@
package com.jd.blockchain.transaction;

import com.jd.blockchain.crypto.*;
import com.jd.blockchain.ledger.DigitalSignature;
import com.jd.blockchain.ledger.TransactionContent;

public class SignatureUtils {

public static DigitalSignature sign(TransactionContent txContent, AsymmetricKeypair keyPair) {
SignatureDigest signatureDigest = sign(txContent, keyPair.getPrivKey());
return new DigitalSignatureBlob(keyPair.getPubKey(), signatureDigest);
}

public static SignatureDigest sign(TransactionContent txContent, PrivKey privKey) {
return Crypto.getSignatureFunction(privKey.getAlgorithm()).sign(privKey, txContent.getHash().toBytes());
}

public static boolean verifySignature(TransactionContent txContent, SignatureDigest signDigest, PubKey pubKey) {
if (!TxBuilder.verifyTxContentHash(txContent, txContent.getHash())) {
return false;
}
return verifyHashSignature(txContent.getHash(), signDigest, pubKey);
}

public static boolean verifyHashSignature(HashDigest hash, SignatureDigest signDigest, PubKey pubKey) {
return Crypto.getSignatureFunction(pubKey.getAlgorithm()).verify(signDigest, pubKey, hash.toBytes());
}
}

+ 22
- 22
source/ledger/ledger-model/src/main/java/com/jd/blockchain/transaction/TxRequestBuilder.java View File

@@ -42,14 +42,14 @@ public class TxRequestBuilder implements TransactionRequestBuilder {
@Override
public DigitalSignature signAsEndpoint(AsymmetricKeypair keyPair) {
DigitalSignature signature = sign(txContent, keyPair);
DigitalSignature signature = SignatureUtils.sign(txContent, keyPair);
addEndpointSignature(signature);
return signature;
}
@Override
public DigitalSignature signAsNode(AsymmetricKeypair keyPair) {
DigitalSignature signature = sign(txContent, keyPair);
DigitalSignature signature = SignatureUtils.sign(txContent, keyPair);
addNodeSignature(signature);
return signature;
}
@@ -64,26 +64,26 @@ public class TxRequestBuilder implements TransactionRequestBuilder {
endpointSignatures.add(signature);
}
public static DigitalSignature sign(TransactionContent txContent, AsymmetricKeypair keyPair) {
SignatureDigest signatureDigest = sign(txContent, keyPair.getPrivKey());
DigitalSignature signature = new DigitalSignatureBlob(keyPair.getPubKey(), signatureDigest);
return signature;
}
public static SignatureDigest sign(TransactionContent txContent, PrivKey privKey) {
return Crypto.getSignatureFunction(privKey.getAlgorithm()).sign(privKey, txContent.getHash().toBytes());
}
public static boolean verifySignature(TransactionContent txContent, SignatureDigest signDigest, PubKey pubKey) {
if (!TxBuilder.verifyTxContentHash(txContent, txContent.getHash())) {
return false;
}
return verifyHashSignature(txContent.getHash(), signDigest, pubKey);
}
public static boolean verifyHashSignature(HashDigest hash, SignatureDigest signDigest, PubKey pubKey) {
return Crypto.getSignatureFunction(pubKey.getAlgorithm()).verify(signDigest, pubKey, hash.toBytes());
}
// public static DigitalSignature sign(TransactionContent txContent, AsymmetricKeypair keyPair) {
// SignatureDigest signatureDigest = sign(txContent, keyPair.getPrivKey());
// DigitalSignature signature = new DigitalSignatureBlob(keyPair.getPubKey(), signatureDigest);
// return signature;
// }
//
// public static SignatureDigest sign(TransactionContent txContent, PrivKey privKey) {
// return Crypto.getSignatureFunction(privKey.getAlgorithm()).sign(privKey, txContent.getHash().toBytes());
// }
// public static boolean verifySignature(TransactionContent txContent, SignatureDigest signDigest, PubKey pubKey) {
// if (!TxBuilder.verifyTxContentHash(txContent, txContent.getHash())) {
// return false;
// }
// return verifyHashSignature(txContent.getHash(), signDigest, pubKey);
// }
//
// public static boolean verifyHashSignature(HashDigest hash, SignatureDigest signDigest, PubKey pubKey) {
// return Crypto.getSignatureFunction(pubKey.getAlgorithm()).verify(signDigest, pubKey, hash.toBytes());
// }
@Override
public TransactionRequest buildRequest() {


+ 4
- 4
source/peer/src/main/java/com/jd/blockchain/peer/consensus/ConsensusMessageDispatcher.java View File

@@ -47,8 +47,8 @@ public class ConsensusMessageDispatcher implements MessageHandle {
public String beginBatch(String realmName) {
RealmProcessor realmProcessor = realmProcessorMap.get(realmName);
if (realmProcessor == null) {
beginLock.lock();
try {
beginLock.lock();
realmProcessor = realmProcessorMap.get(realmName);
if (realmProcessor == null) {
realmProcessor = initRealmProcessor(realmName);
@@ -174,8 +174,8 @@ public class ConsensusMessageDispatcher implements MessageHandle {
}

public String newBatchId() {
realmLock.lock();
try {
realmLock.lock();
if (currBatchId == null) {
currBatchId = getRealmName() + "-" + getBatchIdIndex().getAndIncrement();
}
@@ -227,8 +227,8 @@ public class ConsensusMessageDispatcher implements MessageHandle {
}

public void commit() {
realmLock.lock();
try {
realmLock.lock();
if (batchResultHandle == null) {
throw new IllegalArgumentException("BatchResultHandle is null, complete() is not execute !");
}
@@ -242,8 +242,8 @@ public class ConsensusMessageDispatcher implements MessageHandle {
}

public void rollback(int reasonCode) {
realmLock.lock();
try {
realmLock.lock();
batchResultHandle.cancel(TransactionState.valueOf((byte)reasonCode));
} finally {
realmLock.unlock();


+ 11
- 6
source/sdk/sdk-base/src/main/java/com/jd/blockchain/sdk/service/NodeSigningAppender.java View File

@@ -10,10 +10,12 @@ import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.crypto.HashFunction;
import com.jd.blockchain.crypto.SignatureDigest;
import com.jd.blockchain.crypto.SignatureFunction;
import com.jd.blockchain.ledger.DigitalSignature;
import com.jd.blockchain.ledger.NodeRequest;
import com.jd.blockchain.ledger.TransactionRequest;
import com.jd.blockchain.ledger.TransactionResponse;
import com.jd.blockchain.transaction.DigitalSignatureBlob;
import com.jd.blockchain.transaction.SignatureUtils;
import com.jd.blockchain.transaction.TransactionService;
import com.jd.blockchain.transaction.TxRequestMessage;
import com.jd.blockchain.utils.concurrent.AsyncFuture;
@@ -62,13 +64,16 @@ public class NodeSigningAppender implements TransactionService {
public TransactionResponse process(TransactionRequest txRequest) {
TxRequestMessage txMessage = new TxRequestMessage(txRequest);

// 生成网关签名;
byte[] endpointRequestBytes = BinaryProtocol.encode(txMessage, TransactionRequest.class);
// // 生成网关签名;
// byte[] endpointRequestBytes = BinaryProtocol.encode(txMessage, TransactionRequest.class);
//
// short signAlgorithm = nodeKeyPair.getAlgorithm();
// SignatureFunction signFunc = Crypto.getSignatureFunction(signAlgorithm);
// SignatureDigest signDigest = signFunc.sign(nodeKeyPair.getPrivKey(), endpointRequestBytes);

short signAlgorithm = nodeKeyPair.getAlgorithm();
SignatureFunction signFunc = Crypto.getSignatureFunction(signAlgorithm);
SignatureDigest signDigest = signFunc.sign(nodeKeyPair.getPrivKey(), endpointRequestBytes);
txMessage.addNodeSignatures(new DigitalSignatureBlob(nodeKeyPair.getPubKey(), signDigest));
DigitalSignature nodeSign = SignatureUtils.sign(txRequest.getTransactionContent(), nodeKeyPair);

txMessage.addNodeSignatures(nodeSign);

// 计算交易哈希;
byte[] nodeRequestBytes = BinaryProtocol.encode(txMessage, TransactionRequest.class);


+ 15
- 13
source/sdk/sdk-client/src/main/java/com/jd/blockchain/sdk/client/GatewayServiceFactory.java View File

@@ -16,10 +16,7 @@ import com.jd.blockchain.ledger.*;
import com.jd.blockchain.sdk.BlockchainService;
import com.jd.blockchain.sdk.BlockchainServiceFactory;
import com.jd.blockchain.sdk.proxy.HttpBlockchainQueryService;
import com.jd.blockchain.transaction.BlockchainQueryService;
import com.jd.blockchain.transaction.DigitalSignatureBlob;
import com.jd.blockchain.transaction.TransactionService;
import com.jd.blockchain.transaction.TxRequestMessage;
import com.jd.blockchain.transaction.*;
import com.jd.blockchain.utils.http.agent.HttpServiceAgent;
import com.jd.blockchain.utils.http.agent.ServiceConnection;
import com.jd.blockchain.utils.http.agent.ServiceConnectionManager;
@@ -163,15 +160,20 @@ public class GatewayServiceFactory implements BlockchainServiceFactory, Closeabl
//TODO: 未实现按不同的账本的密码参数配置,采用不同的哈希算法和签名算法;
if (!reqMsg.containsEndpointSignature(userKey.getAddress())) {
// TODO: 优化上下文对此 TransactionContent 的多次序列化带来的额外性能开销;
byte[] txContentBytes = BinaryProtocol.encode(txRequest.getTransactionContent(),
TransactionContent.class);
PrivKey userPrivKey = userKey.getPrivKey();
SignatureFunction signatureFunction = Crypto.getSignatureFunction(userKey.getAlgorithm());
if (signatureFunction != null) {
SignatureDigest signatureDigest = signatureFunction.sign(userPrivKey, txContentBytes);
DigitalSignature signature = new DigitalSignatureBlob(userKey.getPubKey(), signatureDigest);
reqMsg.addEndpointSignatures(signature);
}
DigitalSignature signature = SignatureUtils.sign(txRequest.getTransactionContent(), userKey);
reqMsg.addEndpointSignatures(signature);
//
//
//
// byte[] txContentBytes = BinaryProtocol.encode(txRequest.getTransactionContent(),
// TransactionContent.class);
// PrivKey userPrivKey = userKey.getPrivKey();
// SignatureFunction signatureFunction = Crypto.getSignatureFunction(userKey.getAlgorithm());
// if (signatureFunction != null) {
// SignatureDigest signatureDigest = signatureFunction.sign(userPrivKey, txContentBytes);
// DigitalSignature signature = new DigitalSignatureBlob(userKey.getPubKey(), signatureDigest);
// reqMsg.addEndpointSignatures(signature);
// }
}
return innerService.process(txRequest);
}


+ 5
- 4
source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeWeb4SingleStepsTest.java View File

@@ -10,6 +10,7 @@ import java.io.InputStream;
import java.util.Properties;
import java.util.concurrent.CountDownLatch;

import com.jd.blockchain.transaction.SignatureUtils;
import org.springframework.boot.SpringApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.io.ClassPathResource;
@@ -125,10 +126,10 @@ public class LedgerInitializeWeb4SingleStepsTest {
TransactionContent initTxContent2 = node2.getInitTxContent();
TransactionContent initTxContent3 = node3.getInitTxContent();

assertTrue(TxRequestBuilder.verifySignature(initTxContent0, permission0.getTransactionSignature(), pubKey0));
assertTrue(TxRequestBuilder.verifySignature(initTxContent1, permission1.getTransactionSignature(), pubKey1));
assertTrue(TxRequestBuilder.verifySignature(initTxContent2, permission2.getTransactionSignature(), pubKey2));
assertTrue(TxRequestBuilder.verifySignature(initTxContent3, permission3.getTransactionSignature(), pubKey3));
assertTrue(SignatureUtils.verifySignature(initTxContent0, permission0.getTransactionSignature(), pubKey0));
assertTrue(SignatureUtils.verifySignature(initTxContent1, permission1.getTransactionSignature(), pubKey1));
assertTrue(SignatureUtils.verifySignature(initTxContent2, permission2.getTransactionSignature(), pubKey2));
assertTrue(SignatureUtils.verifySignature(initTxContent3, permission3.getTransactionSignature(), pubKey3));

assertNotNull(initTxContent0.getHash());
if (!initTxContent0.getHash().equals(initTxContent1.getHash())) {


+ 3
- 6
source/tools/tools-initializer/src/main/java/com/jd/blockchain/tools/initializer/web/LedgerInitializeWebController.java View File

@@ -10,6 +10,7 @@ import java.util.Random;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;

import com.jd.blockchain.transaction.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
@@ -58,10 +59,6 @@ import com.jd.blockchain.tools.initializer.LedgerInitProcess;
import com.jd.blockchain.tools.initializer.LedgerInitProperties;
import com.jd.blockchain.tools.initializer.LedgerInitProperties.ConsensusParticipantConfig;
import com.jd.blockchain.tools.initializer.Prompter;
import com.jd.blockchain.transaction.DigitalSignatureBlob;
import com.jd.blockchain.transaction.LedgerInitSettingData;
import com.jd.blockchain.transaction.TxBuilder;
import com.jd.blockchain.transaction.TxRequestBuilder;
import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.concurrent.InvocationResult;
import com.jd.blockchain.utils.io.BytesUtils;
@@ -385,7 +382,7 @@ public class LedgerInitializeWebController implements LedgerInitProcess, LedgerI
this.initTxContent = initTxBuilder.prepareContent(initSetting.getCreatedTime());

// 对初始交易签名,生成当前参与者的账本初始化许可;
SignatureDigest permissionSign = TxRequestBuilder.sign(initTxContent, privKey);
SignatureDigest permissionSign = SignatureUtils.sign(initTxContent, privKey);
LedgerInitPermissionData permission = new LedgerInitPermissionData(currentId, permissionSign);

this.currentId = currentId;
@@ -504,7 +501,7 @@ public class LedgerInitializeWebController implements LedgerInitProcess, LedgerI
continue;
}

if (!TxRequestBuilder.verifySignature(this.initTxContent, permission.getTransactionSignature(), pubKey)) {
if (!SignatureUtils.verifySignature(this.initTxContent, permission.getTransactionSignature(), pubKey)) {
prompter.error("Invalid permission from participant! --[Id=%s][name=%s]", participants[i].getAddress(),
participants[i].getName());
allPermitted = false;


+ 2
- 5
source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerLedgerInitializer.java View File

@@ -16,10 +16,7 @@ import com.jd.blockchain.tools.initializer.*;
import com.jd.blockchain.tools.initializer.LedgerInitProperties.ConsensusParticipantConfig;
import com.jd.blockchain.tools.initializer.web.LedgerInitConsensusService;
import com.jd.blockchain.tools.initializer.web.LedgerInitDecisionData;
import com.jd.blockchain.transaction.DigitalSignatureBlob;
import com.jd.blockchain.transaction.LedgerInitSettingData;
import com.jd.blockchain.transaction.TxBuilder;
import com.jd.blockchain.transaction.TxRequestBuilder;
import com.jd.blockchain.transaction.*;
import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.concurrent.InvocationResult;
import com.jd.blockchain.utils.io.BytesUtils;
@@ -251,7 +248,7 @@ public class MockerLedgerInitializer implements LedgerInitProcess, LedgerInitCon
this.initTxContent = initTxBuilder.prepareContent();

// 对初始交易签名,生成当前参与者的账本初始化许可;
SignatureDigest permissionSign = TxRequestBuilder.sign(initTxContent, privKey);
SignatureDigest permissionSign = SignatureUtils.sign(initTxContent, privKey);
localPermission = new LedgerInitPermissionData(currentId, permissionSign);

this.currentId = currentId;


Loading…
Cancel
Save