Browse Source

Completed the definition of role privilege, and dealed some naming conflicts;

tags/1.1.0
huanghaiquan 5 years ago
parent
commit
009f86dab3
32 changed files with 377 additions and 184 deletions
  1. +9
    -4
      source/base/src/main/java/com/jd/blockchain/consts/DataCodes.java
  2. +0
    -0
      source/deployment/deployment-gateway/conf/application-gw.properties
  3. +6
    -4
      source/deployment/deployment-gateway/src/main/java/com/jd/blockchain/gateway/boot/GatewayBooter.java
  4. +63
    -0
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/AbstractPrivilege.java
  5. +0
    -2
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/Authorization.java
  6. +0
    -21
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/Consensus.java
  7. +0
    -5
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminPrivilege.java
  8. +2
    -2
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitProposal.java
  9. +3
    -3
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitProposalData.java
  10. +86
    -1
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerPermission.java
  11. +20
    -0
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerPrivilege.java
  12. +1
    -1
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerSecurityManager.java
  13. +0
    -21
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/P2PRealm.java
  14. +1
    -50
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/Privilege.java
  15. +2
    -2
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/Role.java
  16. +68
    -0
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/RolePrivilege.java
  17. +34
    -0
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TxPermission.java
  18. +14
    -0
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TxPrivilege.java
  19. +3
    -3
      source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/consensus/ConsensusTest.java
  20. +3
    -3
      source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/GlobalPerformanceTest.java
  21. +4
    -4
      source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerInitializeTest.java
  22. +10
    -10
      source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerInitializeWebTest.java
  23. +4
    -4
      source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/Utils.java
  24. +4
    -4
      source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeTest.java
  25. +1
    -1
      source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeWeb4Nodes.java
  26. +10
    -10
      source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeWeb4SingleStepsTest.java
  27. +2
    -2
      source/tools/tools-initializer/src/main/java/com/jd/blockchain/tools/initializer/web/LedgerInitConsensusService.java
  28. +4
    -4
      source/tools/tools-initializer/src/main/java/com/jd/blockchain/tools/initializer/web/LedgerInitMessageConverter.java
  29. +14
    -14
      source/tools/tools-initializer/src/main/java/com/jd/blockchain/tools/initializer/web/LedgerInitializeWebController.java
  30. +1
    -1
      source/tools/tools-initializer/src/main/java/com/jd/blockchain/tools/initializer/web/PermissionResponseConverter.java
  31. +6
    -6
      source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerLedgerInitializer.java
  32. +2
    -2
      source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/node/NodeWebContext.java

+ 9
- 4
source/base/src/main/java/com/jd/blockchain/consts/DataCodes.java View File

@@ -8,11 +8,11 @@ package com.jd.blockchain.consts;
*/
public interface DataCodes {

public static final int BYTES_VALUE = 0x80;
public static final int BYTES_VALUE = 0x080;
public static final int BYTES_VALUE_LIST = 0x81;
public static final int BYTES_VALUE_LIST = 0x081;

public static final int BLOCK_CHAIN_IDENTITY = 0x90;
public static final int BLOCK_CHAIN_IDENTITY = 0x090;

public static final int BLOCK = 0x100;

@@ -52,12 +52,17 @@ public interface DataCodes {
public static final int TX_RESPONSE = 0x350;

public static final int TX_OP_RESULT = 0x360;
// enum types of permissions;
public static final int ENUM_TX_PERMISSIONS = 0x401;
public static final int ENUM_LEDGER_PERMISSIONS = 0x402;

// contract types of metadata;
public static final int METADATA = 0x600;

public static final int METADATA_INIT_SETTING = 0x610;

public static final int METADATA_INIT_PERMISSION = 0x611;
public static final int METADATA_INIT_PROPOSAL = 0x611;

public static final int METADATA_INIT_DECISION = 0x612;



+ 0
- 0
source/deployment/deployment-gateway/conf/application-gw.properties View File


+ 6
- 4
source/deployment/deployment-gateway/src/main/java/com/jd/blockchain/gateway/boot/GatewayBooter.java View File

@@ -18,15 +18,13 @@ public class GatewayBooter {
writePID();
GatewayServerBooter.main(args);
} catch (Exception e) {
e.printStackTrace();
System.err.println("Error!!! --[" + e.getClass().getName() + "] " + e.getMessage());
}
}

private static final void writePID() throws Exception {
URL url = GatewayBooter.class
.getProtectionDomain()
.getCodeSource()
.getLocation();
URL url = GatewayBooter.class.getProtectionDomain().getCodeSource().getLocation();
String currPath = java.net.URLDecoder.decode(url.getPath(), "UTF-8");
if (currPath.contains("!/")) {
currPath = currPath.substring(5, currPath.indexOf("!/"));
@@ -40,6 +38,10 @@ public class GatewayBooter {
String pidFilePath = homeDir + File.separator + "bin" + File.separator + "PID.log";
File pidFile = new File(pidFilePath);
if (!pidFile.exists()) {
File dir = pidFile.getParentFile();
if (!dir.exists()) {
dir.mkdirs();
}
pidFile.createNewFile();
}
String name = ManagementFactory.getRuntimeMXBean().getName();


+ 63
- 0
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/AbstractPrivilege.java View File

@@ -0,0 +1,63 @@
package com.jd.blockchain.ledger.core;

import java.util.BitSet;

import com.jd.blockchain.utils.io.BytesSerializable;

/**
* LedgerPrivilege 账本特权是授权给特定角色的权限代码序列;
*
* @author huanghaiquan
*
*/
public abstract class AbstractPrivilege<E extends Enum<?>> implements Privilege<E>, BytesSerializable {

private BitSet permissions;

public AbstractPrivilege(byte[] codeBytes) {
permissions = BitSet.valueOf(codeBytes);
}

public boolean isEnable(E permission) {
return permissions.get(getCodeIndex(permission));
}

public void enable(E permission) {
permissions.set(getCodeIndex(permission));
}

public void disable(E permission) {
permissions.clear(getCodeIndex(permission));
}

// private int getCodeIndex(E permission) {
// return permission.CODE & 0xFF;
// }

protected abstract int getCodeIndex(E permission);

@Override
public byte[] toBytes() {
return permissions.toByteArray();
}

// public boolean[] getPermissionStates() {
// LedgerPermission[] PMs = LedgerPermission.values();
//
// LedgerPermission maxPermission = Arrays.stream(PMs).max(new Comparator<LedgerPermission>() {
// @Override
// public int compare(LedgerPermission o1, LedgerPermission o2) {
// return getCodeIndex(o1) - getCodeIndex(o2);
// }
// }).get();
//
// boolean[] states = new boolean[getCodeIndex(maxPermission) + 1];
// int idx = -1;
// for (LedgerPermission pm : PMs) {
// idx = getCodeIndex(pm);
// states[idx] = permissions.get(idx);
// }
//
// return states;
// }
}

+ 0
- 2
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/Authorization.java View File

@@ -1,7 +1,5 @@
package com.jd.blockchain.ledger.core;

import com.jd.blockchain.ledger.DigitalSignature;

/**
* {@link Authorization} 抽象了对特定用户/角色的授权信息;
*


+ 0
- 21
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/Consensus.java View File

@@ -1,21 +0,0 @@
package com.jd.blockchain.ledger.core;
/**
* @author hhq
* @version 1.0
* @created 14-6��-2018 12:13:32
*/
public class Consensus {
public P2PRealm m_P2PRealm;
public Consensus(){
}
public void finalize() throws Throwable {
}
}

+ 0
- 5
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminPrivilege.java View File

@@ -1,5 +0,0 @@
package com.jd.blockchain.ledger.core;

public enum LedgerAdminPrivilege {

}

source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitPermission.java → source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitProposal.java View File

@@ -13,8 +13,8 @@ import com.jd.blockchain.ledger.LedgerInitOperation;
* @author huanghaiquan
*
*/
@DataContract(code = DataCodes.METADATA_INIT_PERMISSION)
public interface LedgerInitPermission {
@DataContract(code = DataCodes.METADATA_INIT_PROPOSAL)
public interface LedgerInitProposal {

/**
* 做出许可的参与方 ID;

source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitPermissionData.java → source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitProposalData.java View File

@@ -2,7 +2,7 @@ package com.jd.blockchain.ledger.core;

import com.jd.blockchain.crypto.SignatureDigest;

public class LedgerInitPermissionData implements LedgerInitPermission {
public class LedgerInitProposalData implements LedgerInitProposal {

private int participantId;

@@ -11,10 +11,10 @@ public class LedgerInitPermissionData implements LedgerInitPermission {
/**
* a private contructor for deserialize;
*/
private LedgerInitPermissionData() {
private LedgerInitProposalData() {
}

public LedgerInitPermissionData(int participantId, SignatureDigest initTxSignature) {
public LedgerInitProposalData(int participantId, SignatureDigest initTxSignature) {
this.participantId = participantId;
this.transactionSignature = initTxSignature;
}

+ 86
- 1
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerPermission.java View File

@@ -1,9 +1,94 @@
package com.jd.blockchain.ledger.core;

import com.jd.blockchain.binaryproto.EnumContract;
import com.jd.blockchain.binaryproto.EnumField;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;

/**
* 账本相关的权限,这些权限属于全局性的;
*
* @author huanghaiquan
*
*/
@EnumContract(code = DataCodes.ENUM_LEDGER_PERMISSIONS)
public enum LedgerPermission {

SET_ROLE((byte) 0);
/**
* 设置角色权限;<br>
* 包括:创建角色、设置角色的权限代码、分配用户角色;
*/
SET_ROLE_PERMISSION((byte) 0x01),

/**
* 设置共识协议;<br>
*/
SET_CONSENSUS((byte) 0x02),

/**
* 设置密码体系;<br>
*/
SET_CRYPTO((byte) 0x03),

/**
* 注册参与方;<br>
*/
REGISTER_PARTICIPANT((byte) 0x04),

/**
* 设置参与方的权限;<br>
*
* 如果不具备此项权限,则无法设置参与方的“提交交易”、“参与共识”的权限;
*/
SET_PARTICIPANT_PERMISSION((byte) 0x05),

/**
* 参与方核准交易;<br>
*
* 如果不具备此项权限,则无法作为网关节点接入并签署由终端提交的交易;
*/
APPROVE_TX((byte) 0x06),

/**
* 参与方共识交易;<br>
*
* 如果不具备此项权限,则无法作为共识节点接入并对交易进行共识;
*/
CONSENSUS_TX((byte) 0x07),

/**
* 注册用户;<br>
*
* 如果不具备此项权限,则无法注册用户;
*/
REGISTER_USER((byte) 0x08),

/**
* 设置用户属性;<br>
*/
SET_USER_ATTRIBUTES((byte) 0x09),

/**
* 注册数据账户;<br>
*/
REGISTER_DATA_ACCOUNT((byte) 0x0A),

/**
* 写入数据账户;<br>
*/
WRITE_DATA_ACCOUNT((byte) 0x0B),

/**
* 注册合约;<br>
*/
REGISTER_CONTRACT((byte) 0x0C),

/**
* 升级合约
*/
UPGRADE_CONTRACT((byte) 0x0D);

@EnumField(type = PrimitiveType.INT8)
public final byte CODE;

private LedgerPermission(byte code) {


+ 20
- 0
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerPrivilege.java View File

@@ -0,0 +1,20 @@
package com.jd.blockchain.ledger.core;

/**
* LedgerPrivilege 账本特权是授权给特定角色的权限代码序列;
*
* @author huanghaiquan
*
*/
public class LedgerPrivilege extends AbstractPrivilege<LedgerPermission> {

public LedgerPrivilege(byte[] codeBytes) {
super(codeBytes);
}

@Override
protected int getCodeIndex(LedgerPermission permission) {
return permission.CODE & 0xFF;
}

}

+ 1
- 1
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerSecurityManager.java View File

@@ -22,7 +22,7 @@ public class LedgerSecurityManager {
throw new IllegalStateException("Not implemented!");
}
public Role setRole(String role, Privilege privilege) {
public Role setRole(String role, LedgerPrivilege privilege) {
throw new IllegalStateException("Not implemented!");
}



+ 0
- 21
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/P2PRealm.java View File

@@ -1,21 +0,0 @@
package com.jd.blockchain.ledger.core;
/**
* @author hhq
* @version 1.0
* @created 14-6��-2018 12:13:33
*/
public class P2PRealm {
public Peer m_Peer;
public P2PRealm(){
}
public void finalize() throws Throwable {
}
}

+ 1
- 50
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/Privilege.java View File

@@ -1,54 +1,5 @@
package com.jd.blockchain.ledger.core;

import java.util.Arrays;
import java.util.BitSet;
import java.util.Comparator;
public interface Privilege<E extends Enum<?>> {

public class Privilege {

private BitSet permissions;

public Privilege(byte[] codeBytes) {
permissions = BitSet.valueOf(codeBytes);
}

public boolean isEnable(LedgerPermission permission) {
return permissions.get(getCodeIndex(permission));
}

public void enable(LedgerPermission permission) {
permissions.set(getCodeIndex(permission));
}

public void disable(LedgerPermission permission) {
permissions.clear(getCodeIndex(permission));
}

public static int getCodeIndex(LedgerPermission permission) {
return permission.CODE & 0xFF;
}

public byte[] toCodeBytes() {
return permissions.toByteArray();
}

public boolean[] getPermissionStates() {
LedgerPermission[] PMs = LedgerPermission.values();

LedgerPermission maxPermission = Arrays.stream(PMs).max(new Comparator<LedgerPermission>() {
@Override
public int compare(LedgerPermission o1, LedgerPermission o2) {
return getCodeIndex(o1) - getCodeIndex(o2);
}
}).get();

boolean[] states = new boolean[getCodeIndex(maxPermission) + 1];
int idx = -1;
for (LedgerPermission pm : PMs) {
idx = getCodeIndex(pm);
states[idx] = permissions.get(idx);
}

return states;
}
}

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

@@ -6,7 +6,7 @@ public class Role {
private long version;
private Privilege privilege;
private LedgerPrivilege privilege;

@@ -18,7 +18,7 @@ public class Role {
return version;
}

public Privilege getPrivilege() {
public LedgerPrivilege getPrivilege() {
return privilege;
}


+ 68
- 0
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/RolePrivilege.java View File

@@ -0,0 +1,68 @@
package com.jd.blockchain.ledger.core;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

import com.jd.blockchain.utils.io.BytesEncoding;
import com.jd.blockchain.utils.io.BytesSerializable;

/**
* 表示赋予角色的特权码;
*
* @author huanghaiquan
*
*/
public class RolePrivilege implements BytesSerializable {

// 权限码的数量;目前有2种:账本权限 + 交易权限;
private static final int SEGMENT_COUNT = 2;

private LedgerPrivilege ledgerPrivilege;

private TxPrivilege txPrivilege;

public Privilege<TxPermission> getTxPrivilege() {
return txPrivilege;
}

public Privilege<LedgerPermission> getLedgerPrivilege() {
return ledgerPrivilege;
}

public RolePrivilege(byte[] priviledgeCodes) {
byte[][] bytesSegments = decodeBytes(priviledgeCodes);
ledgerPrivilege = new LedgerPrivilege(bytesSegments[0]);
txPrivilege = new TxPrivilege(bytesSegments[1]);
}

private byte[] encodeBytes(byte[]... bytes) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
// write one byte;
out.write(bytes.length);
for (int i = 0; i < bytes.length; i++) {
BytesEncoding.writeInTiny(bytes[i], out);
}
return out.toByteArray();
}

private byte[][] decodeBytes(byte[] bytes) {
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
// read one byte;
int len = in.read();
if (len < 1 || len > SEGMENT_COUNT) {
throw new IllegalStateException("Decoded illegal privilege bytes!");
}
byte[][] bytesSegments = new byte[len][];
for (int i = 0; i < bytesSegments.length; i++) {
bytesSegments[i] = BytesEncoding.readInTiny(in);
}
return bytesSegments;
}

@Override
public byte[] toBytes() {
// 保持和解码时一致的顺序;
return encodeBytes(ledgerPrivilege.toBytes(), txPrivilege.toBytes());
}

}

+ 34
- 0
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TxPermission.java View File

@@ -0,0 +1,34 @@
package com.jd.blockchain.ledger.core;

import com.jd.blockchain.binaryproto.EnumContract;
import com.jd.blockchain.binaryproto.EnumField;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;

/**
* TxPermission 交易权限表示一个用户可以发起的交易类型;
*
* @author huanghaiquan
*
*/
@EnumContract(code = DataCodes.ENUM_TX_PERMISSIONS)
public enum TxPermission {

/**
* 交易中包含指令操作;
*/
COMMAND((byte) 0x01),

/**
* 交易中包含合约操作;
*/
CONTRACT((byte) 0x02);

@EnumField(type = PrimitiveType.INT8)
public final byte CODE;

private TxPermission(byte code) {
this.CODE = code;
}

}

+ 14
- 0
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TxPrivilege.java View File

@@ -0,0 +1,14 @@
package com.jd.blockchain.ledger.core;

public class TxPrivilege extends AbstractPrivilege<TxPermission> {

public TxPrivilege(byte[] codeBytes) {
super(codeBytes);
}

@Override
protected int getCodeIndex(TxPermission permission) {
return permission.CODE & 0xFF;
}

}

+ 3
- 3
source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/consensus/ConsensusTest.java View File

@@ -26,7 +26,7 @@ import com.jd.blockchain.ledger.PreparedTransaction;
import com.jd.blockchain.ledger.TransactionContent;
import com.jd.blockchain.ledger.TransactionTemplate;
import com.jd.blockchain.ledger.core.LedgerInitDecision;
import com.jd.blockchain.ledger.core.LedgerInitPermission;
import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.impl.LedgerManager;
import com.jd.blockchain.sdk.BlockchainService;
@@ -326,7 +326,7 @@ public class ConsensusTest {
return controller.getInitTxContent();
}

public LedgerInitPermission getLocalPermission() {
public LedgerInitProposal getLocalPermission() {
return controller.getLocalPermission();
}

@@ -398,7 +398,7 @@ public class ConsensusTest {
return invoker.start();
}

public LedgerInitPermission preparePermision(PrivKey privKey, LedgerInitProperties setting,
public LedgerInitProposal preparePermision(PrivKey privKey, LedgerInitProperties setting,
ConsensusSettings csProps) {
return controller.prepareLocalPermission(id, privKey, setting, csProps);
}


+ 3
- 3
source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/GlobalPerformanceTest.java View File

@@ -28,7 +28,7 @@ import com.jd.blockchain.ledger.PreparedTransaction;
import com.jd.blockchain.ledger.TransactionContent;
import com.jd.blockchain.ledger.TransactionTemplate;
import com.jd.blockchain.ledger.core.LedgerInitDecision;
import com.jd.blockchain.ledger.core.LedgerInitPermission;
import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.impl.LedgerManager;
import com.jd.blockchain.sdk.BlockchainService;
@@ -326,7 +326,7 @@ public class GlobalPerformanceTest {
return controller.getInitTxContent();
}

public LedgerInitPermission getLocalPermission() {
public LedgerInitProposal getLocalPermission() {
return controller.getLocalPermission();
}

@@ -400,7 +400,7 @@ public class GlobalPerformanceTest {
return invoker.start();
}

public LedgerInitPermission preparePermision(PrivKey privKey, LedgerInitProperties setting,
public LedgerInitProposal preparePermision(PrivKey privKey, LedgerInitProperties setting,
ConsensusSettings csProps) {
return controller.prepareLocalPermission(id, privKey, setting, csProps);
}


+ 4
- 4
source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerInitializeTest.java View File

@@ -21,7 +21,7 @@ import com.jd.blockchain.crypto.SignatureDigest;
import com.jd.blockchain.ledger.LedgerBlock;
import com.jd.blockchain.ledger.core.CryptoConfig;
import com.jd.blockchain.ledger.core.LedgerInitDecision;
import com.jd.blockchain.ledger.core.LedgerInitPermission;
import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.UserAccount;
import com.jd.blockchain.ledger.core.UserAccountSet;
@@ -251,10 +251,10 @@ public class LedgerInitializeTest {
}

@Override
public LedgerInitPermission requestPermission(int requesterId, SignatureDigest signature) {
ThreadInvoker<LedgerInitPermission> invoker = new ThreadInvoker<LedgerInitPermission>() {
public LedgerInitProposal requestPermission(int requesterId, SignatureDigest signature) {
ThreadInvoker<LedgerInitProposal> invoker = new ThreadInvoker<LedgerInitProposal>() {
@Override
protected LedgerInitPermission invoke() {
protected LedgerInitProposal invoke() {
return initCsService.requestPermission(requesterId, signature);
}
};


+ 10
- 10
source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerInitializeWebTest.java View File

@@ -26,7 +26,7 @@ import com.jd.blockchain.ledger.Operation;
import com.jd.blockchain.ledger.TransactionContent;
import com.jd.blockchain.ledger.UserRegisterOperation;
import com.jd.blockchain.ledger.core.LedgerInitDecision;
import com.jd.blockchain.ledger.core.LedgerInitPermission;
import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.UserAccount;
import com.jd.blockchain.ledger.core.UserAccountSet;
@@ -112,10 +112,10 @@ public class LedgerInitializeWebTest {
PubKey pubKey3 = KeyGenCommand.decodePubKey(PUB_KEYS[3]);

// 测试生成“账本初始化许可”;
LedgerInitPermission permission0 = testPreparePermisssion(node0, privkey0, initSetting, csProps);
LedgerInitPermission permission1 = testPreparePermisssion(node1, privkey1, initSetting, csProps);
LedgerInitPermission permission2 = testPreparePermisssion(node2, privkey2, initSetting, csProps);
LedgerInitPermission permission3 = testPreparePermisssion(node3, privkey3, initSetting, csProps);
LedgerInitProposal permission0 = testPreparePermisssion(node0, privkey0, initSetting, csProps);
LedgerInitProposal permission1 = testPreparePermisssion(node1, privkey1, initSetting, csProps);
LedgerInitProposal permission2 = testPreparePermisssion(node2, privkey2, initSetting, csProps);
LedgerInitProposal permission3 = testPreparePermisssion(node3, privkey3, initSetting, csProps);

TransactionContent initTxContent0 = node0.getInitTxContent();
TransactionContent initTxContent1 = node1.getInitTxContent();
@@ -205,9 +205,9 @@ public class LedgerInitializeWebTest {
testRequestDecision(node3, node2, initCsService2);
}

private LedgerInitPermission testPreparePermisssion(NodeWebContext node, PrivKey privKey,
private LedgerInitProposal testPreparePermisssion(NodeWebContext node, PrivKey privKey,
LedgerInitProperties setting, ConsensusSettings csProps) {
LedgerInitPermission permission = node.preparePermision(privKey, setting, csProps);
LedgerInitProposal permission = node.preparePermision(privKey, setting, csProps);

return permission;
}
@@ -215,7 +215,7 @@ public class LedgerInitializeWebTest {
private void testRequestPermission(NodeWebContext fromNode, PrivKey fromPrivkey, NodeWebContext targetNode,
LedgerInitConsensusService targetNodeService) {
SignatureDigest reqSignature = fromNode.createPermissionRequestSignature(fromNode.getId(), fromPrivkey);
LedgerInitPermission targetPermission = targetNodeService.requestPermission(fromNode.getId(), reqSignature);
LedgerInitProposal targetPermission = targetNodeService.requestPermission(fromNode.getId(), reqSignature);
}

private void testRequestDecision(NodeWebContext fromNode, NodeWebContext targetNode,
@@ -374,7 +374,7 @@ public class LedgerInitializeWebTest {
return controller.getInitTxContent();
}

public LedgerInitPermission getLocalPermission() {
public LedgerInitProposal getLocalPermission() {
return controller.getLocalPermission();
}

@@ -457,7 +457,7 @@ public class LedgerInitializeWebTest {
return invoker.start();
}

public LedgerInitPermission preparePermision(PrivKey privKey, LedgerInitProperties setting,
public LedgerInitProposal preparePermision(PrivKey privKey, LedgerInitProperties setting,
ConsensusSettings csProps) {
return controller.prepareLocalPermission(id, privKey, setting, csProps);
}


+ 4
- 4
source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/Utils.java View File

@@ -18,7 +18,7 @@ import com.jd.blockchain.consensus.ConsensusSettings;
import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.ledger.core.CryptoConfig;
import com.jd.blockchain.ledger.core.LedgerInitDecision;
import com.jd.blockchain.ledger.core.LedgerInitPermission;
import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.impl.LedgerManager;
import com.jd.blockchain.storage.service.DbConnectionFactory;
@@ -202,10 +202,10 @@ public class Utils {
}

@Override
public LedgerInitPermission requestPermission(int requesterId, SignatureDigest signature) {
ThreadInvoker<LedgerInitPermission> invoker = new ThreadInvoker<LedgerInitPermission>() {
public LedgerInitProposal requestPermission(int requesterId, SignatureDigest signature) {
ThreadInvoker<LedgerInitProposal> invoker = new ThreadInvoker<LedgerInitProposal>() {
@Override
protected LedgerInitPermission invoke() {
protected LedgerInitProposal invoke() {
return initCsService.requestPermission(requesterId, signature);
}
};


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

@@ -30,7 +30,7 @@ import com.jd.blockchain.ledger.LedgerInitOperation;
import com.jd.blockchain.ledger.UserRegisterOperation;
import com.jd.blockchain.ledger.core.CryptoConfig;
import com.jd.blockchain.ledger.core.LedgerInitDecision;
import com.jd.blockchain.ledger.core.LedgerInitPermission;
import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.UserAccount;
import com.jd.blockchain.ledger.core.UserAccountSet;
@@ -301,10 +301,10 @@ public class LedgerInitializeTest {
}

@Override
public LedgerInitPermission requestPermission(int requesterId, SignatureDigest signature) {
ThreadInvoker<LedgerInitPermission> invoker = new ThreadInvoker<LedgerInitPermission>() {
public LedgerInitProposal requestPermission(int requesterId, SignatureDigest signature) {
ThreadInvoker<LedgerInitProposal> invoker = new ThreadInvoker<LedgerInitProposal>() {
@Override
protected LedgerInitPermission invoke() {
protected LedgerInitProposal invoke() {
return initCsService.requestPermission(requesterId, signature);
}
};


+ 1
- 1
source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeWeb4Nodes.java View File

@@ -213,7 +213,7 @@ public class LedgerInitializeWeb4Nodes {
return controller.getInitTxContent();
}

public LedgerInitPermission getLocalPermission() {
public LedgerInitProposal getLocalPermission() {
return controller.getLocalPermission();
}



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

@@ -27,7 +27,7 @@ import com.jd.blockchain.ledger.Operation;
import com.jd.blockchain.ledger.TransactionContent;
import com.jd.blockchain.ledger.UserRegisterOperation;
import com.jd.blockchain.ledger.core.LedgerInitDecision;
import com.jd.blockchain.ledger.core.LedgerInitPermission;
import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.impl.LedgerManager;
import com.jd.blockchain.storage.service.DbConnection;
@@ -116,10 +116,10 @@ public class LedgerInitializeWeb4SingleStepsTest {
PubKey pubKey3 = KeyGenCommand.decodePubKey(PUB_KEYS[3]);

// 测试生成“账本初始化许可”;
LedgerInitPermission permission0 = testPreparePermisssion(node0, privkey0, initSetting, csProps);
LedgerInitPermission permission1 = testPreparePermisssion(node1, privkey1, initSetting, csProps);
LedgerInitPermission permission2 = testPreparePermisssion(node2, privkey2, initSetting, csProps);
LedgerInitPermission permission3 = testPreparePermisssion(node3, privkey3, initSetting, csProps);
LedgerInitProposal permission0 = testPreparePermisssion(node0, privkey0, initSetting, csProps);
LedgerInitProposal permission1 = testPreparePermisssion(node1, privkey1, initSetting, csProps);
LedgerInitProposal permission2 = testPreparePermisssion(node2, privkey2, initSetting, csProps);
LedgerInitProposal permission3 = testPreparePermisssion(node3, privkey3, initSetting, csProps);

TransactionContent initTxContent0 = node0.getInitTxContent();
TransactionContent initTxContent1 = node1.getInitTxContent();
@@ -240,9 +240,9 @@ public class LedgerInitializeWeb4SingleStepsTest {
testRequestDecision(node3, node2, initCsService2);
}

private LedgerInitPermission testPreparePermisssion(NodeWebContext node, PrivKey privKey,
private LedgerInitProposal testPreparePermisssion(NodeWebContext node, PrivKey privKey,
LedgerInitProperties setting, ConsensusSettings csProps) {
LedgerInitPermission permission = node.preparePermision(privKey, setting, csProps);
LedgerInitProposal permission = node.preparePermision(privKey, setting, csProps);

assertEquals(node.getId(), permission.getParticipantId());
assertNotNull(permission.getTransactionSignature());
@@ -253,7 +253,7 @@ public class LedgerInitializeWeb4SingleStepsTest {
private void testRequestPermission(NodeWebContext fromNode, PrivKey fromPrivkey, NodeWebContext targetNode,
LedgerInitConsensusService targetNodeService) {
SignatureDigest reqSignature = fromNode.createPermissionRequestSignature(fromNode.getId(), fromPrivkey);
LedgerInitPermission targetPermission = targetNodeService.requestPermission(fromNode.getId(), reqSignature);
LedgerInitProposal targetPermission = targetNodeService.requestPermission(fromNode.getId(), reqSignature);
assertEquals(targetNode.getId(), targetPermission.getParticipantId());
assertEquals(targetNode.getLocalPermission().getTransactionSignature(),
targetPermission.getTransactionSignature());
@@ -312,7 +312,7 @@ public class LedgerInitializeWeb4SingleStepsTest {
return controller.getInitTxContent();
}

public LedgerInitPermission getLocalPermission() {
public LedgerInitProposal getLocalPermission() {
return controller.getLocalPermission();
}

@@ -385,7 +385,7 @@ public class LedgerInitializeWeb4SingleStepsTest {
return invoker.start();
}

public LedgerInitPermission preparePermision(PrivKey privKey, LedgerInitProperties setting,
public LedgerInitProposal preparePermision(PrivKey privKey, LedgerInitProperties setting,
ConsensusSettings csProps) {
return controller.prepareLocalPermission(id, privKey, setting, csProps);
}


+ 2
- 2
source/tools/tools-initializer/src/main/java/com/jd/blockchain/tools/initializer/web/LedgerInitConsensusService.java View File

@@ -2,7 +2,7 @@ package com.jd.blockchain.tools.initializer.web;

import com.jd.blockchain.crypto.SignatureDigest;
import com.jd.blockchain.ledger.core.LedgerInitDecision;
import com.jd.blockchain.ledger.core.LedgerInitPermission;
import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.utils.http.HttpAction;
import com.jd.blockchain.utils.http.HttpMethod;
import com.jd.blockchain.utils.http.HttpService;
@@ -21,7 +21,7 @@ public interface LedgerInitConsensusService {
* 请求者的私钥对 “id” + “账本种子” 做出的签名;只有签名合法且参与者是初始化配置中的参与方才能获得有效返回,否则将被拒绝;
*/
@HttpAction(path = "/legerinit/permission/{requesterId}", method = HttpMethod.POST, contentType = LedgerInitMessageConverter.CONTENT_TYPE_VALUE, responseConverter = PermissionResponseConverter.class)
LedgerInitPermission requestPermission(@PathParam(name = "requesterId") int requesterId,
LedgerInitProposal requestPermission(@PathParam(name = "requesterId") int requesterId,
@RequestBody(converter = SignatureDigestRequestBodyConverter.class) SignatureDigest signature);

/**


+ 4
- 4
source/tools/tools-initializer/src/main/java/com/jd/blockchain/tools/initializer/web/LedgerInitMessageConverter.java View File

@@ -17,8 +17,8 @@ import com.jd.blockchain.binaryproto.BinaryProtocol;
import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.crypto.SignatureDigest;
import com.jd.blockchain.ledger.core.LedgerInitDecision;
import com.jd.blockchain.ledger.core.LedgerInitPermission;
import com.jd.blockchain.ledger.core.LedgerInitPermissionData;
import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.ledger.core.LedgerInitProposalData;
import com.jd.blockchain.utils.io.BytesUtils;
/**
@@ -38,10 +38,10 @@ public class LedgerInitMessageConverter implements HttpMessageConverter<Object>
private static final Map<Class<?>, Class<?>> SUPPORTED_CONTRACT_TYPES = new HashMap<>();
static {
DataContractRegistry.register(LedgerInitPermission.class);
DataContractRegistry.register(LedgerInitProposal.class);
DataContractRegistry.register(LedgerInitDecision.class);
SUPPORTED_CONTRACT_TYPES.put(LedgerInitPermission.class, LedgerInitPermissionData.class);
SUPPORTED_CONTRACT_TYPES.put(LedgerInitProposal.class, LedgerInitProposalData.class);
SUPPORTED_CONTRACT_TYPES.put(LedgerInitDecision.class, LedgerInitDecisionData.class);
// SUPPORTED_CONTRACT_TYPES.add(LedgerInitResponse.class);


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

@@ -46,8 +46,8 @@ import com.jd.blockchain.ledger.UserRegisterOperation;
import com.jd.blockchain.ledger.core.CryptoConfig;
import com.jd.blockchain.ledger.core.LedgerEditor;
import com.jd.blockchain.ledger.core.LedgerInitDecision;
import com.jd.blockchain.ledger.core.LedgerInitPermission;
import com.jd.blockchain.ledger.core.LedgerInitPermissionData;
import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.ledger.core.LedgerInitProposalData;
import com.jd.blockchain.ledger.core.LedgerManage;
import com.jd.blockchain.ledger.core.LedgerTransactionContext;
import com.jd.blockchain.storage.service.DbConnection;
@@ -84,7 +84,7 @@ public class LedgerInitializeWebController implements LedgerInitProcess, LedgerI

private final SignatureFunction SIGN_FUNC;

private volatile LedgerInitPermission localPermission;
private volatile LedgerInitProposal localPermission;

private TransactionContent initTxContent;

@@ -92,7 +92,7 @@ public class LedgerInitializeWebController implements LedgerInitProcess, LedgerI

private volatile LedgerInitSetting ledgerInitSetting;

private volatile LedgerInitPermission[] permissions;
private volatile LedgerInitProposal[] permissions;

private volatile NetworkAddress[] initializerAddresses;

@@ -140,7 +140,7 @@ public class LedgerInitializeWebController implements LedgerInitProcess, LedgerI
return initTxContent;
}

public LedgerInitPermission getLocalPermission() {
public LedgerInitProposal getLocalPermission() {
return localPermission;
}

@@ -319,13 +319,13 @@ public class LedgerInitializeWebController implements LedgerInitProcess, LedgerI
return defCryptoSetting;
}

public LedgerInitPermission prepareLocalPermission(int currentId, PrivKey privKey, LedgerInitProperties ledgerProps,
public LedgerInitProposal prepareLocalPermission(int currentId, PrivKey privKey, LedgerInitProperties ledgerProps,
ConsensusSettings consensusProps) {
CryptoSetting defCryptoSetting = createDefaultCryptoSetting();
return prepareLocalPermission(currentId, privKey, ledgerProps, consensusProps, defCryptoSetting);
}

public LedgerInitPermission prepareLocalPermission(int currentId, PrivKey privKey, LedgerInitProperties ledgerProps,
public LedgerInitProposal prepareLocalPermission(int currentId, PrivKey privKey, LedgerInitProperties ledgerProps,
ConsensusSettings csSettings, CryptoSetting cryptoSetting) {
// 创建初始化配置;
LedgerInitSettingData initSetting = new LedgerInitSettingData();
@@ -383,10 +383,10 @@ public class LedgerInitializeWebController implements LedgerInitProcess, LedgerI

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

this.currentId = currentId;
this.permissions = new LedgerInitPermission[initSetting.getConsensusParticipants().length];
this.permissions = new LedgerInitProposal[initSetting.getConsensusParticipants().length];
this.permissions[currentId] = permission;
this.localPermission = permission;

@@ -493,7 +493,7 @@ public class LedgerInitializeWebController implements LedgerInitProcess, LedgerI
continue;
}
PubKey pubKey = participants[i].getPubKey();
LedgerInitPermission permission = (LedgerInitPermission) results[i].getValue();
LedgerInitProposal permission = (LedgerInitProposal) results[i].getValue();
if (permission.getParticipantId() != participants[i].getId()) {
prompter.error("\r\nThe id of received permission isn't equal to it's participant ! --[Id=%s][name=%s]",
participants[i].getAddress(), participants[i].getName());
@@ -534,16 +534,16 @@ public class LedgerInitializeWebController implements LedgerInitProcess, LedgerI
* @param latch
* @return
*/
private InvocationResult<LedgerInitPermission> doRequestPermission(int targetId, SignatureDigest reqAuthSign,
private InvocationResult<LedgerInitProposal> doRequestPermission(int targetId, SignatureDigest reqAuthSign,
CountDownLatch latch) {
InvocationResult<LedgerInitPermission> result = new InvocationResult<>();
InvocationResult<LedgerInitProposal> result = new InvocationResult<>();
try {
LedgerInitConsensusService initConsensus = connectToParticipant(targetId);
Thread thrd = new Thread(new Runnable() {
@Override
public void run() {
try {
LedgerInitPermission permission = initConsensus.requestPermission(currentId, reqAuthSign);
LedgerInitProposal permission = initConsensus.requestPermission(currentId, reqAuthSign);
result.setValue(permission);
} catch (Exception e) {
result.setError(e);
@@ -561,7 +561,7 @@ public class LedgerInitializeWebController implements LedgerInitProcess, LedgerI

@RequestMapping(path = "/legerinit/permission/{requesterId}", method = RequestMethod.POST, produces = LedgerInitMessageConverter.CONTENT_TYPE_VALUE, consumes = LedgerInitMessageConverter.CONTENT_TYPE_VALUE)
@Override
public LedgerInitPermission requestPermission(@PathVariable(name = "requesterId") int requesterId,
public LedgerInitProposal requestPermission(@PathVariable(name = "requesterId") int requesterId,
@RequestBody SignatureDigest signature) {
if (requesterId == currentId) {
throw new LedgerInitException("There is a id conflict!");


+ 1
- 1
source/tools/tools-initializer/src/main/java/com/jd/blockchain/tools/initializer/web/PermissionResponseConverter.java View File

@@ -3,7 +3,7 @@ package com.jd.blockchain.tools.initializer.web;
import java.io.InputStream;
import com.jd.blockchain.binaryproto.BinaryProtocol;
import com.jd.blockchain.ledger.core.LedgerInitPermissionData;
import com.jd.blockchain.ledger.core.LedgerInitProposalData;
import com.jd.blockchain.tools.initializer.LedgerInitException;
import com.jd.blockchain.utils.http.HttpServiceContext;
import com.jd.blockchain.utils.http.ResponseConverter;


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

@@ -45,7 +45,7 @@ public class MockerLedgerInitializer implements LedgerInitProcess, LedgerInitCon

private final SignatureFunction SIGN_FUNC;

private volatile LedgerInitPermission localPermission;
private volatile LedgerInitProposal localPermission;

private TransactionContent initTxContent;

@@ -92,7 +92,7 @@ public class MockerLedgerInitializer implements LedgerInitProcess, LedgerInitCon
return initTxContent;
}

public LedgerInitPermission getLocalPermission() {
public LedgerInitProposal getLocalPermission() {
return localPermission;
}

@@ -129,7 +129,7 @@ public class MockerLedgerInitializer implements LedgerInitProcess, LedgerInitCon

prompter.info("Init settings and sign permision...");

prepareLocalPermission(currentId, privKey, ledgerInitProps, null, cryptoSetting);
prepareLocalProposal(currentId, privKey, ledgerInitProps, null, cryptoSetting);

try {
// 连接数据库;
@@ -201,7 +201,7 @@ public class MockerLedgerInitializer implements LedgerInitProcess, LedgerInitCon
return defCryptoSetting;
}

public LedgerInitPermission prepareLocalPermission(int currentId, PrivKey privKey, LedgerInitProperties ledgerProps,
public LedgerInitProposal prepareLocalProposal(int currentId, PrivKey privKey, LedgerInitProperties ledgerProps,
ConsensusSettings csSettings, CryptoSetting cryptoSetting) {
// 创建初始化配置;
LedgerInitSettingData initSetting = new LedgerInitSettingData();
@@ -249,7 +249,7 @@ public class MockerLedgerInitializer implements LedgerInitProcess, LedgerInitCon

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

this.currentId = currentId;
return localPermission;
@@ -300,7 +300,7 @@ public class MockerLedgerInitializer implements LedgerInitProcess, LedgerInitCon
}

@Override
public LedgerInitPermission requestPermission(int requesterId, SignatureDigest signature) {
public LedgerInitProposal requestPermission(int requesterId, SignatureDigest signature) {
return localPermission;
}



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

@@ -4,7 +4,7 @@ import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.crypto.PrivKey;
import com.jd.blockchain.ledger.TransactionContent;
import com.jd.blockchain.ledger.core.LedgerInitDecision;
import com.jd.blockchain.ledger.core.LedgerInitPermission;
import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.impl.LedgerManager;
import com.jd.blockchain.mocker.config.LedgerInitWebConfiguration;
@@ -48,7 +48,7 @@ public class NodeWebContext {
return controller.getInitTxContent();
}

public LedgerInitPermission getLocalPermission() {
public LedgerInitProposal getLocalPermission() {
return controller.getLocalPermission();
}



Loading…
Cancel
Save