Browse Source

Merge branch 'develop' into feature/crypto-spi

tags/1.0.0
huanghaiquan 6 years ago
parent
commit
d7526ff3ee
100 changed files with 495 additions and 1469 deletions
  1. +1
    -1
      LICENSE
  2. +9
    -11
      source/base/src/main/java/com/jd/blockchain/consts/DataCodes.java
  3. +1
    -1
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/BinaryProtocol.java
  4. +0
    -1
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataContractEncoder.java
  5. +3
    -0
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataContractRegistry.java
  6. +4
    -6
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataField.java
  7. +24
    -0
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataType.java
  8. +2
    -4
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/EnumField.java
  9. +1
    -5
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/EnumSpecification.java
  10. +2
    -4
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/FieldSpec.java
  11. +92
    -0
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/PrimitiveType.java
  12. +0
    -1
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/AbstractDynamicValueConverter.java
  13. +25
    -25
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/DataContractContext.java
  14. +0
    -1
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/DataContractSpecification.java
  15. +4
    -4
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/EnumSpecificationInfo.java
  16. +3
    -3
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/EnumValueConverter.java
  17. +4
    -4
      source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/FieldSpecInfo.java
  18. +18
    -18
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/BinaryEncodingTest.java
  19. +3
    -4
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/CompositeDatas.java
  20. +2
    -2
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/EnumLevel.java
  21. +7
    -8
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/FieldOrderConflictedDatas.java
  22. +0
    -2
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/GenericRefContractDatasImpl.java
  23. +12
    -12
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/PrimitiveDatas.java
  24. +0
    -2
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/PrimitiveDatasImpl.java
  25. +0
    -1
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/RefContractDatas.java
  26. +2
    -2
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/SubOperation.java
  27. +0
    -16
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/Address.java
  28. +3
    -3
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/AddressCodeDuplicate.java
  29. +3
    -3
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/AddressOrderDuplicate.java
  30. +5
    -5
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/Array.java
  31. +0
    -158
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/CryptoAlgorithm.java
  32. +0
    -41
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/CryptoSetting.java
  33. +0
    -50
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/HashAlgorithm.java
  34. +0
    -28
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/LedgerBlock.java
  35. +0
    -34
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/LedgerDataSnapshot.java
  36. +0
    -25
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/LedgerMetadata.java
  37. +0
    -21
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/LedgerSetting.java
  38. +2
    -2
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/Level.java
  39. +0
    -18
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/Privilege.java
  40. +2
    -2
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/PrivilegeModelSetting.java
  41. +0
    -20
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/RefContract.java
  42. +0
    -41
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/Student.java
  43. +0
    -44
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/StudentInvert.java
  44. +0
    -31
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/User.java
  45. +0
    -29
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/AddressImpl.java
  46. +0
    -40
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/CryptoSettingImpl.java
  47. +0
    -147
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/LedgerBlockImpl.java
  48. +0
    -56
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/LedgerMetadataImpl.java
  49. +0
    -30
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/LedgerSettingImpl.java
  50. +0
    -32
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/RefContractImpl.java
  51. +0
    -108
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/StudentImpl.java
  52. +0
    -51
      source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/UserImpl.java
  53. +6
    -6
      source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/BftsmartClientIncomingSettings.java
  54. +5
    -5
      source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/BftsmartCommitBlockSettings.java
  55. +4
    -4
      source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/BftsmartConsensusSettings.java
  56. +5
    -5
      source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/BftsmartNodeSettings.java
  57. +5
    -5
      source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/BftsmartSettingsFactory.java
  58. +7
    -7
      source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/ClientIdentification.java
  59. +2
    -2
      source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/ClientIdentifications.java
  60. +5
    -5
      source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/ClientIncomingSettings.java
  61. +2
    -2
      source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/ConsensusSettings.java
  62. +5
    -5
      source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/NodeSettings.java
  63. +8
    -8
      source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/action/ActionRequest.java
  64. +7
    -7
      source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/action/ActionResponse.java
  65. +5
    -5
      source/consensus/consensus-mq/src/main/java/com/jd/blockchain/consensus/mq/config/MsgQueueSettingsFactory.java
  66. +5
    -5
      source/consensus/consensus-mq/src/main/java/com/jd/blockchain/consensus/mq/settings/MsgQueueBlockSettings.java
  67. +4
    -4
      source/consensus/consensus-mq/src/main/java/com/jd/blockchain/consensus/mq/settings/MsgQueueClientIncomingSettings.java
  68. +3
    -3
      source/consensus/consensus-mq/src/main/java/com/jd/blockchain/consensus/mq/settings/MsgQueueConsensusSettings.java
  69. +7
    -7
      source/consensus/consensus-mq/src/main/java/com/jd/blockchain/consensus/mq/settings/MsgQueueNetworkSettings.java
  70. +2
    -2
      source/consensus/consensus-mq/src/main/java/com/jd/blockchain/consensus/mq/settings/MsgQueueNodeSettings.java
  71. +22
    -17
      source/contract/README.MD
  72. +1
    -2
      source/contract/contract-framework/pom.xml
  73. +0
    -13
      source/contract/contract-framework/src/main/java/com/jd/blockchain/contract/ContractCode.java
  74. +14
    -0
      source/contract/contract-framework/src/main/java/com/jd/blockchain/contract/engine/ContractCode.java
  75. +5
    -3
      source/contract/contract-framework/src/main/java/com/jd/blockchain/contract/engine/ContractEngine.java
  76. +1
    -1
      source/contract/contract-framework/src/main/java/com/jd/blockchain/contract/engine/ContractServiceProvider.java
  77. +1
    -1
      source/contract/contract-framework/src/main/java/com/jd/blockchain/contract/engine/ContractServiceProviders.java
  78. +7
    -7
      source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JVMContractEngine.java
  79. +2
    -2
      source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JVMContractServiceProvider.java
  80. +13
    -15
      source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JavaContractCode.java
  81. +38
    -36
      source/contract/contract-maven-plugin/pom.xml
  82. +23
    -20
      source/contract/contract-maven-plugin/src/main/java/com/jd/blockchain/ContractDeployExeUtil.java
  83. +0
    -1
      source/contract/contract-maven-plugin/src/main/java/com/jd/blockchain/ContractDeployMojo.java
  84. +0
    -37
      source/contract/contract-model/pom.xml
  85. +0
    -11
      source/contract/contract-model/src/main/java/com/jd/blockchain/contract/model/LedgerContext.java
  86. +0
    -7
      source/contract/contract-model/src/main/resources/sys-contract.properties
  87. +0
    -1
      source/contract/pom.xml
  88. +4
    -4
      source/crypto/crypto-framework/src/main/java/com/jd/blockchain/crypto/CryptoAlgorithm.java
  89. +2
    -2
      source/gateway/src/main/java/com/jd/blockchain/gateway/PeerService.java
  90. +2
    -2
      source/gateway/src/main/java/com/jd/blockchain/gateway/service/PeerConnectionManager.java
  91. +3
    -3
      source/gateway/src/main/java/com/jd/blockchain/gateway/web/TxProcessingController.java
  92. +4
    -4
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/AccountSet.java
  93. +0
    -4
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ContractAccount.java
  94. +4
    -4
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DataAccount.java
  95. +3
    -3
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminAccount.java
  96. +6
    -6
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitDecision.java
  97. +5
    -5
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitPermission.java
  98. +5
    -5
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerMetadata.java
  99. +5
    -5
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerSetting.java
  100. +4
    -4
      source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ParticipantDataSet.java

+ 1
- 1
LICENSE View File

@@ -192,7 +192,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License. you may not use this file except in compliance with the License.
You may obtain a copy of the License at You may obtain a copy of the License at


http://www.apache.org/licenses/LICENSE-2.0
http://www.apache.org/licenses/LICENSE-2.0


Unless required by applicable law or agreed to in writing, software Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, distributed under the License is distributed on an "AS IS" BASIS,


source/base/src/main/java/com/jd/blockchain/consts/TypeCodes.java → source/base/src/main/java/com/jd/blockchain/consts/DataCodes.java View File

@@ -1,10 +1,12 @@
package com.jd.blockchain.consts; package com.jd.blockchain.consts;


/** /**
* A const registeration of codes of all data contracts in ledger model;
*
* @author huanghaiquan * @author huanghaiquan
* *
*/ */
public interface TypeCodes {
public interface DataCodes {


public static final int BYTES_VALUE = 0x80; public static final int BYTES_VALUE = 0x80;


@@ -59,11 +61,11 @@ public interface TypeCodes {


public static final int METADATA_CONSENSUS_PARTICIPANT = 0x621; public static final int METADATA_CONSENSUS_PARTICIPANT = 0x621;


// public static final int METADATA_CONSENSUS_NODE = 0x630;
// public static final int METADATA_CONSENSUS_NODE = 0x630;


public static final int METADATA_CONSENSUS_SETTING = 0x631; public static final int METADATA_CONSENSUS_SETTING = 0x631;


// public static final int METADATA_PARTICIPANT_INFO = 0x640;
// public static final int METADATA_PARTICIPANT_INFO = 0x640;


public static final int METADATA_CRYPTO_SETTING = 0x642; public static final int METADATA_CRYPTO_SETTING = 0x642;


@@ -87,7 +89,7 @@ public interface TypeCodes {


public static final int ENUM_TYPE_TRANSACTION_STATE = 0xB22; public static final int ENUM_TYPE_TRANSACTION_STATE = 0xB22;


public static final int ENUM_TYPE_DATA_TYPE= 0xB23;
public static final int ENUM_TYPE_BYTES_VALUE_TYPE = 0xB23;


public static final int DIGITALSIGNATURE = 0xB30; public static final int DIGITALSIGNATURE = 0xB30;


@@ -103,8 +105,6 @@ public interface TypeCodes {


public static final int REQUEST_ENDPOINT = 0xD20; public static final int REQUEST_ENDPOINT = 0xD20;




// ------------------ 共识相关 ---------------- // ------------------ 共识相关 ----------------


public static final int CONSENSUS = 0x1000; public static final int CONSENSUS = 0x1000;
@@ -112,12 +112,11 @@ public interface TypeCodes {
public static final int CONSENSUS_ACTION_REQUEST = CONSENSUS | 0x01; public static final int CONSENSUS_ACTION_REQUEST = CONSENSUS | 0x01;


public static final int CONSENSUS_ACTION_RESPONSE = CONSENSUS | 0x02; public static final int CONSENSUS_ACTION_RESPONSE = CONSENSUS | 0x02;

public static final int CONSENSUS_SETTINGS = CONSENSUS | 0x03; public static final int CONSENSUS_SETTINGS = CONSENSUS | 0x03;


public static final int CONSENSUS_NODE_SETTINGS = CONSENSUS | 0x04; public static final int CONSENSUS_NODE_SETTINGS = CONSENSUS | 0x04;
public static final int CONSENSUS_CLI_INCOMING_SETTINGS = CONSENSUS | 0x05; public static final int CONSENSUS_CLI_INCOMING_SETTINGS = CONSENSUS | 0x05;


// ------------------ 共识相关(BFTSMART) ---------------- // ------------------ 共识相关(BFTSMART) ----------------
@@ -126,7 +125,7 @@ public interface TypeCodes {
public static final int CONSENSUS_BFTSMART_SETTINGS = CONSENSUS_BFTSMART | 0x01; public static final int CONSENSUS_BFTSMART_SETTINGS = CONSENSUS_BFTSMART | 0x01;


public static final int CONSENSUS_BFTSMART_NODE_SETTINGS = CONSENSUS_BFTSMART | 0x02; public static final int CONSENSUS_BFTSMART_NODE_SETTINGS = CONSENSUS_BFTSMART | 0x02;
public static final int CONSENSUS_BFTSMART_CLI_INCOMING_SETTINGS = CONSENSUS_BFTSMART | 0x03; public static final int CONSENSUS_BFTSMART_CLI_INCOMING_SETTINGS = CONSENSUS_BFTSMART | 0x03;


public static final int CONSENSUS_BFTSMART_BLOCK_SETTINGS = CONSENSUS_BFTSMART | 0x04; public static final int CONSENSUS_BFTSMART_BLOCK_SETTINGS = CONSENSUS_BFTSMART | 0x04;
@@ -144,5 +143,4 @@ public interface TypeCodes {


public static final int CONSENSUS_MSGQUEUE_BLOCK_SETTINGS = CONSENSUS_MSGQUEUE | 0x05; public static final int CONSENSUS_MSGQUEUE_BLOCK_SETTINGS = CONSENSUS_MSGQUEUE | 0x05;


} }

source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/BinaryEncodingUtils.java → source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/BinaryProtocol.java View File

@@ -10,7 +10,7 @@ import com.jd.blockchain.utils.io.BytesOutputBuffer;
import com.jd.blockchain.utils.io.BytesSlice; import com.jd.blockchain.utils.io.BytesSlice;
import com.jd.blockchain.utils.io.BytesUtils; import com.jd.blockchain.utils.io.BytesUtils;


public class BinaryEncodingUtils {
public class BinaryProtocol {


public static void encode(Object data, Class<?> contractType, OutputStream out) { public static void encode(Object data, Class<?> contractType, OutputStream out) {

+ 0
- 1
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataContractEncoder.java View File

@@ -2,7 +2,6 @@ package com.jd.blockchain.binaryproto;


import com.jd.blockchain.utils.io.BytesInputStream; import com.jd.blockchain.utils.io.BytesInputStream;
import com.jd.blockchain.utils.io.BytesOutputBuffer; import com.jd.blockchain.utils.io.BytesOutputBuffer;
import com.jd.blockchain.utils.io.BytesSlice;


/** /**
* 二进制编码器; * 二进制编码器;


+ 3
- 0
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataContractRegistry.java View File

@@ -13,6 +13,9 @@ public class DataContractRegistry {
private DataContractRegistry() { private DataContractRegistry() {
} }


//TODO: Refactor contract type registering in service provider mode;
public static DataContractEncoder register(Class<?> contractType) { public static DataContractEncoder register(Class<?> contractType) {
DataContractEncoder encoder = DataContractContext.resolve(contractType); DataContractEncoder encoder = DataContractContext.resolve(contractType);
return encoder; return encoder;


+ 4
- 6
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataField.java View File

@@ -5,8 +5,6 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;


import com.jd.blockchain.utils.ValueType;

/** /**
* 标记一个接口的字段作为数据契约的字段; * 标记一个接口的字段作为数据契约的字段;
* <p> * <p>
@@ -39,11 +37,11 @@ public @interface DataField {
* 基本数据类型; * 基本数据类型;
* <p> * <p>
* *
* 如果字段的类型属于 {@link ValueType} 枚举中的基本数据类型,则需要显式指定一种具体的类型;
* 如果字段的类型属于 {@link PrimitiveType} 枚举中的基本数据类型,则需要显式指定一种具体的类型;
* *
* @return * @return
*/ */
ValueType primitiveType() default ValueType.NIL;
PrimitiveType primitiveType() default PrimitiveType.NIL;


/** /**
* 是否是枚举类型; * 是否是枚举类型;
@@ -80,8 +78,8 @@ public @interface DataField {
/** /**
* 最大长度,单位为“byte” * 最大长度,单位为“byte”
* <p> * <p>
* 仅对于文本、字节数组、大整数等相关的数据类型有效(即:{@link ValueType} 枚举中编码大于等于 0x20
* {@link ValueType#TEXT}的数据类型);
* 仅对于文本、字节数组、大整数等相关的数据类型有效(即:{@link PrimitiveType} 枚举中编码大于等于 0x20
* {@link PrimitiveType#TEXT}的数据类型);
* *
* @return * @return
*/ */


+ 24
- 0
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/DataType.java View File

@@ -0,0 +1,24 @@
package com.jd.blockchain.binaryproto;

public interface DataType {

/**
* 空值;
*/
public static final byte NIL = (byte) 0x00;

/**
* 布尔;
*/
public static final byte BOOLEAN = (byte) 0x01;

/**
* 数值;
*/
public static final byte NUMERIC = (byte) 0x10;

public static final byte TEXT = (byte) 0x20;

public static final byte BINARY = (byte) 0x40;

}

+ 2
- 4
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/EnumField.java View File

@@ -5,8 +5,6 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;


import com.jd.blockchain.utils.ValueType;

@Target({ ElementType.FIELD, ElementType.METHOD }) @Target({ ElementType.FIELD, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
public @interface EnumField { public @interface EnumField {
@@ -15,11 +13,11 @@ public @interface EnumField {
* 枚举值的类型; * 枚举值的类型;
* *
* <p> * <p>
* 注:只支持 {@link ValueType#INT8} ~ {@link ValueType#INT32} 这几种类型;
* 注:只支持 {@link PrimitiveType#INT8} ~ {@link PrimitiveType#INT32} 这几种类型;
* *
* *
* @return * @return
*/ */
ValueType type();
PrimitiveType type();
} }

+ 1
- 5
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/EnumSpecification.java View File

@@ -1,9 +1,5 @@
package com.jd.blockchain.binaryproto; package com.jd.blockchain.binaryproto;


import java.util.Set;

import com.jd.blockchain.utils.ValueType;

public interface EnumSpecification { public interface EnumSpecification {
int getCode(); int getCode();
@@ -14,7 +10,7 @@ public interface EnumSpecification {
long getVersion(); long getVersion();
ValueType getValueType();
PrimitiveType getValueType();
int[] getItemValues(); int[] getItemValues();


+ 2
- 4
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/FieldSpec.java View File

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


import com.jd.blockchain.utils.ValueType;

/** /**
* 表示数据契约字段的格式标准; * 表示数据契约字段的格式标准;
* *
@@ -35,11 +33,11 @@ public interface FieldSpec {
* 字段的值的类型; * 字段的值的类型;
* <p> * <p>
* 如果不是字段的值不是基本类型,则返回 null(即: {@link DataField#primitiveType()} 设置为 * 如果不是字段的值不是基本类型,则返回 null(即: {@link DataField#primitiveType()} 设置为
* {@link ValueType#NIL});
* {@link PrimitiveType#NIL});
* *
* @return * @return
*/ */
ValueType getPrimitiveType();
PrimitiveType getPrimitiveType();


/** /**
* 字段的值引用的枚举契约; * 字段的值引用的枚举契约;


+ 92
- 0
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/PrimitiveType.java View File

@@ -0,0 +1,92 @@
package com.jd.blockchain.binaryproto;
/**
* 键值操作的数据类型;
*
* @author huanghaiquan
*
*/
public enum PrimitiveType {
/**
* 空;
*/
NIL(DataType.NIL),
/**
* 布尔型;
*/
BOOLEAN(DataType.BOOLEAN),
/**
* 数值型:
*/
INT8((byte) (DataType.NUMERIC | 0x01)),
INT16((byte) (DataType.NUMERIC | 0x02)),
INT32((byte) (DataType.NUMERIC | 0x03)),
INT64((byte) (DataType.NUMERIC | 0x04)),
/**
* 日期时间;
*/
DATETIME((byte) (DataType.NUMERIC | 0x08)),
/**
* 文本数据;
*/
TEXT(DataType.TEXT),
/**
* 文本数据;
*/
JSON((byte) (DataType.TEXT | 0x01)),
/**
* 文本数据;
*/
XML((byte) (DataType.TEXT | 0x02)),
/**
* 二进制数据;
*/
BYTES(DataType.BINARY),
/**
* 大整数;
*/
BIG_INT((byte) (DataType.BINARY | 0x01)),
/**
* 图片;
*/
IMG((byte) (DataType.BINARY | 0x02)),
/**
* 视频;
*/
VIDEO((byte) (DataType.BINARY | 0x03)),
/**
* 位置坐标;
*/
LOCATION((byte) (DataType.BINARY | 0x04));
public final byte CODE;
private PrimitiveType(byte code) {
this.CODE = code;
}
public static PrimitiveType valueOf(byte code) {
for (PrimitiveType dataType : PrimitiveType.values()) {
if (dataType.CODE == code) {
return dataType;
}
}
throw new IllegalArgumentException("Code[" + code + "] not suppported by PrimitiveType!");
}
}

+ 0
- 1
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/AbstractDynamicValueConverter.java View File

@@ -2,7 +2,6 @@ package com.jd.blockchain.binaryproto.impl;


import com.jd.blockchain.utils.io.BytesInputStream; import com.jd.blockchain.utils.io.BytesInputStream;
import com.jd.blockchain.utils.io.BytesOutputBuffer; import com.jd.blockchain.utils.io.BytesOutputBuffer;
import com.jd.blockchain.utils.io.BytesSlice;
import com.jd.blockchain.utils.io.NumberMask; import com.jd.blockchain.utils.io.NumberMask;


public abstract class AbstractDynamicValueConverter implements DynamicValueConverter { public abstract class AbstractDynamicValueConverter implements DynamicValueConverter {


+ 25
- 25
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/DataContractContext.java View File

@@ -5,7 +5,6 @@ import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -18,12 +17,12 @@ import com.jd.blockchain.binaryproto.DataContractEncoder;
import com.jd.blockchain.binaryproto.DataContractException; import com.jd.blockchain.binaryproto.DataContractException;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.binaryproto.DataSpecification; import com.jd.blockchain.binaryproto.DataSpecification;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.binaryproto.EnumContract; import com.jd.blockchain.binaryproto.EnumContract;
import com.jd.blockchain.binaryproto.EnumField; import com.jd.blockchain.binaryproto.EnumField;
import com.jd.blockchain.binaryproto.EnumSpecification; import com.jd.blockchain.binaryproto.EnumSpecification;
import com.jd.blockchain.binaryproto.FieldSpec; import com.jd.blockchain.binaryproto.FieldSpec;
import com.jd.blockchain.binaryproto.impl.EnumSpecificationInfo.EnumConstant; import com.jd.blockchain.binaryproto.impl.EnumSpecificationInfo.EnumConstant;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.utils.io.BytesSerializable; import com.jd.blockchain.utils.io.BytesSerializable;
import com.jd.blockchain.utils.io.BytesUtils; import com.jd.blockchain.utils.io.BytesUtils;
import com.jd.blockchain.utils.security.SHA256Hash; import com.jd.blockchain.utils.security.SHA256Hash;
@@ -66,23 +65,23 @@ public class DataContractContext {


private static Map<Class<?>, EnumSpecification> enumContractSpecMap = new ConcurrentHashMap<>(); private static Map<Class<?>, EnumSpecification> enumContractSpecMap = new ConcurrentHashMap<>();


private static Map<ValueType, Map<Class<?>, ValueConverter>> primitiveTypeConverters = new HashMap<>();
private static Map<PrimitiveType, Map<Class<?>, ValueConverter>> primitiveTypeConverters = new HashMap<>();


static { static {
addConverterMapping(ValueType.BOOLEAN, boolean.class, new BoolConverter());
addConverterMapping(ValueType.BOOLEAN, Boolean.class, new BoolWrapperConverter());
addConverterMapping(ValueType.INT8, byte.class, new Int8ByteConverter());
addConverterMapping(ValueType.INT8, Byte.class, new Int8ByteWrapperConverter());
addConverterMapping(ValueType.INT16, short.class, new Int16ShortConverter());
addConverterMapping(ValueType.INT16, Short.class, new Int16ShortWrapperConverter());
addConverterMapping(ValueType.INT16, char.class, new Int16CharConverter());
addConverterMapping(ValueType.INT16, Character.class, new Int16CharWrapperConverter());
addConverterMapping(ValueType.INT32, int.class, new Int32IntConverter());
addConverterMapping(ValueType.INT32, Integer.class, new Int32IntWrapperConverter());
addConverterMapping(ValueType.INT64, long.class, new Int64LongConverter());
addConverterMapping(ValueType.INT64, Long.class, new Int64LongWrapperConverter());
addConverterMapping(ValueType.TEXT, String.class, new StringValueConverter());
addConverterMapping(ValueType.BYTES, byte[].class, new BytesValueConverter());
addConverterMapping(PrimitiveType.BOOLEAN, boolean.class, new BoolConverter());
addConverterMapping(PrimitiveType.BOOLEAN, Boolean.class, new BoolWrapperConverter());
addConverterMapping(PrimitiveType.INT8, byte.class, new Int8ByteConverter());
addConverterMapping(PrimitiveType.INT8, Byte.class, new Int8ByteWrapperConverter());
addConverterMapping(PrimitiveType.INT16, short.class, new Int16ShortConverter());
addConverterMapping(PrimitiveType.INT16, Short.class, new Int16ShortWrapperConverter());
addConverterMapping(PrimitiveType.INT16, char.class, new Int16CharConverter());
addConverterMapping(PrimitiveType.INT16, Character.class, new Int16CharWrapperConverter());
addConverterMapping(PrimitiveType.INT32, int.class, new Int32IntConverter());
addConverterMapping(PrimitiveType.INT32, Integer.class, new Int32IntWrapperConverter());
addConverterMapping(PrimitiveType.INT64, long.class, new Int64LongConverter());
addConverterMapping(PrimitiveType.INT64, Long.class, new Int64LongWrapperConverter());
addConverterMapping(PrimitiveType.TEXT, String.class, new StringValueConverter());
addConverterMapping(PrimitiveType.BYTES, byte[].class, new BytesValueConverter());


ENCODER_LOOKUP = new DataContractEncoderLookup() { ENCODER_LOOKUP = new DataContractEncoderLookup() {
@Override @Override
@@ -102,7 +101,7 @@ public class DataContractContext {
}; };
} }


private static void addConverterMapping(ValueType protocalType, Class<?> javaType, ValueConverter converter) {
private static void addConverterMapping(PrimitiveType protocalType, Class<?> javaType, ValueConverter converter) {
Map<Class<?>, ValueConverter> converterMap = primitiveTypeConverters.get(protocalType); Map<Class<?>, ValueConverter> converterMap = primitiveTypeConverters.get(protocalType);
if (converterMap == null) { if (converterMap == null) {
converterMap = new HashMap<>(); converterMap = new HashMap<>();
@@ -111,14 +110,14 @@ public class DataContractContext {
converterMap.put(javaType, converter); converterMap.put(javaType, converter);
} }


private static ValueConverter getPrimitiveTypeConverter(ValueType protocalType, Class<?> javaType) {
private static ValueConverter getPrimitiveTypeConverter(PrimitiveType protocalType, Class<?> javaType) {
Map<Class<?>, ValueConverter> converterMap = primitiveTypeConverters.get(protocalType); Map<Class<?>, ValueConverter> converterMap = primitiveTypeConverters.get(protocalType);
if (converterMap != null) { if (converterMap != null) {
ValueConverter converter = converterMap.get(javaType); ValueConverter converter = converterMap.get(javaType);
if (converter != null) { if (converter != null) {
return converter; return converter;
} }
if (ValueType.BYTES == protocalType && BytesSerializable.class.isAssignableFrom(javaType)) {
if (PrimitiveType.BYTES == protocalType && BytesSerializable.class.isAssignableFrom(javaType)) {
converter = new BytesSerializableValueConverter(javaType); converter = new BytesSerializableValueConverter(javaType);
converterMap.put(javaType, converter); converterMap.put(javaType, converter);
return converter; return converter;
@@ -367,7 +366,7 @@ public class DataContractContext {
EnumSpecificationInfo enumSpec = (EnumSpecificationInfo) fieldInfo.fieldSpec.getRefEnum(); EnumSpecificationInfo enumSpec = (EnumSpecificationInfo) fieldInfo.fieldSpec.getRefEnum();
int[] values = enumSpec.getItemValues(); int[] values = enumSpec.getItemValues();
Object[] constants = enumSpec.getConstants(); Object[] constants = enumSpec.getConstants();
ValueType codeType = enumSpec.getValueType();
PrimitiveType codeType = enumSpec.getValueType();


ValueConverter baseConverter = getPrimitiveTypeConverter(codeType, enumSpec.getDataType()); ValueConverter baseConverter = getPrimitiveTypeConverter(codeType, enumSpec.getDataType());


@@ -411,8 +410,8 @@ public class DataContractContext {
private static BinarySliceSpec buildSlice(FieldSpecInfo fieldSpec) { private static BinarySliceSpec buildSlice(FieldSpecInfo fieldSpec) {
boolean fixed = false; boolean fixed = false;
int len = -1; int len = -1;
ValueType fixedValueType = null;
if (fieldSpec.getPrimitiveType() != null && fieldSpec.getPrimitiveType() != ValueType.NIL) {
PrimitiveType fixedValueType = null;
if (fieldSpec.getPrimitiveType() != null && fieldSpec.getPrimitiveType() != PrimitiveType.NIL) {
fixedValueType = fieldSpec.getPrimitiveType(); fixedValueType = fieldSpec.getPrimitiveType();
} else if (fieldSpec.getRefEnum() != null) { } else if (fieldSpec.getRefEnum() != null) {
fixedValueType = fieldSpec.getRefEnum().getValueType(); fixedValueType = fieldSpec.getRefEnum().getValueType();
@@ -547,7 +546,7 @@ public class DataContractContext {
} }


int maxSize = annoField.maxSize(); int maxSize = annoField.maxSize();
ValueType primitiveType = annoField.primitiveType();
PrimitiveType primitiveType = annoField.primitiveType();
if (primitiveType != null) { if (primitiveType != null) {
primitiveType = verifyPrimitiveType(primitiveType, dataType, accessor); primitiveType = verifyPrimitiveType(primitiveType, dataType, accessor);
} }
@@ -651,7 +650,7 @@ public class DataContractContext {
* @param dataType * @param dataType
* @return * @return
*/ */
private static ValueType verifyPrimitiveType(ValueType primitiveType, Class<?> dataType, Method accessor) {
private static PrimitiveType verifyPrimitiveType(PrimitiveType primitiveType, Class<?> dataType, Method accessor) {
switch (primitiveType) { switch (primitiveType) {
case NIL: case NIL:
return null; return null;
@@ -763,6 +762,7 @@ public class DataContractContext {


public Method reader; public Method reader;


@SuppressWarnings("unused")
public DataField annoField; public DataField annoField;


public FieldDeclaredInfo(Method accessor, DataField annoField, FieldSpecInfo fieldSpec) { public FieldDeclaredInfo(Method accessor, DataField annoField, FieldSpecInfo fieldSpec) {


+ 0
- 1
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/DataContractSpecification.java View File

@@ -1,6 +1,5 @@
package com.jd.blockchain.binaryproto.impl; package com.jd.blockchain.binaryproto.impl;


import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;


+ 4
- 4
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/EnumSpecificationInfo.java View File

@@ -3,15 +3,15 @@ package com.jd.blockchain.binaryproto.impl;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Set; import java.util.Set;


import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.binaryproto.EnumSpecification; import com.jd.blockchain.binaryproto.EnumSpecification;
import com.jd.blockchain.utils.ValueType;


/** /**
* Created by zhangshuang3 on 2018/6/21. * Created by zhangshuang3 on 2018/6/21.
*/ */
public class EnumSpecificationInfo implements EnumSpecification { public class EnumSpecificationInfo implements EnumSpecification {


private ValueType valueType;
private PrimitiveType valueType;


private Class<?> dataType; private Class<?> dataType;


@@ -24,7 +24,7 @@ public class EnumSpecificationInfo implements EnumSpecification {
// private Map<Object, Object> itemCodeMapping = new HashMap<>(); // private Map<Object, Object> itemCodeMapping = new HashMap<>();
// private Map<Object, Object> codeItemMapping = new HashMap<>(); // private Map<Object, Object> codeItemMapping = new HashMap<>();


public EnumSpecificationInfo(ValueType valueType, int code, long version, String name, String description, Class<?> dataType) {
public EnumSpecificationInfo(PrimitiveType valueType, int code, long version, String name, String description, Class<?> dataType) {
this.valueType = valueType; this.valueType = valueType;
this.code = code; this.code = code;
this.version = version; this.version = version;
@@ -54,7 +54,7 @@ public class EnumSpecificationInfo implements EnumSpecification {
} }


@Override @Override
public ValueType getValueType() {
public PrimitiveType getValueType() {
return this.valueType; return this.valueType;
} }




+ 3
- 3
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/EnumValueConverter.java View File

@@ -1,14 +1,14 @@
package com.jd.blockchain.binaryproto.impl; package com.jd.blockchain.binaryproto.impl;


import com.jd.blockchain.binaryproto.DataContractException; import com.jd.blockchain.binaryproto.DataContractException;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.utils.io.BytesSlice; import com.jd.blockchain.utils.io.BytesSlice;


public class EnumValueConverter implements FixedValueConverter { public class EnumValueConverter implements FixedValueConverter {


private Class<?> enumType; private Class<?> enumType;


private ValueType codeType;
private PrimitiveType codeType;


private int[] values; private int[] values;


@@ -16,7 +16,7 @@ public class EnumValueConverter implements FixedValueConverter {


private FixedValueConverter valueConverter; private FixedValueConverter valueConverter;


public EnumValueConverter(Class<?> enumType, ValueType codeType, int[] values, Object[] constants, FixedValueConverter valueConverter) {
public EnumValueConverter(Class<?> enumType, PrimitiveType codeType, int[] values, Object[] constants, FixedValueConverter valueConverter) {
this.enumType = enumType; this.enumType = enumType;
this.values = values; this.values = values;
this.constants = constants; this.constants = constants;


+ 4
- 4
source/binary-proto/src/main/java/com/jd/blockchain/binaryproto/impl/FieldSpecInfo.java View File

@@ -1,9 +1,9 @@
package com.jd.blockchain.binaryproto.impl; package com.jd.blockchain.binaryproto.impl;


import com.jd.blockchain.binaryproto.DataSpecification; import com.jd.blockchain.binaryproto.DataSpecification;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.binaryproto.EnumSpecification; import com.jd.blockchain.binaryproto.EnumSpecification;
import com.jd.blockchain.binaryproto.FieldSpec; import com.jd.blockchain.binaryproto.FieldSpec;
import com.jd.blockchain.utils.ValueType;


public class FieldSpecInfo implements FieldSpec { public class FieldSpecInfo implements FieldSpec {


@@ -15,7 +15,7 @@ public class FieldSpecInfo implements FieldSpec {


private boolean repeatable; private boolean repeatable;


private ValueType primitiveType;
private PrimitiveType primitiveType;


private EnumSpecification enumSpec; private EnumSpecification enumSpec;


@@ -27,7 +27,7 @@ public class FieldSpecInfo implements FieldSpec {


private boolean isGenericContract = false; private boolean isGenericContract = false;


public FieldSpecInfo(int order, String name, String decription, ValueType primitiveType, boolean repeatable,
public FieldSpecInfo(int order, String name, String decription, PrimitiveType primitiveType, boolean repeatable,
int maxSize, Class<?> dataType) { int maxSize, Class<?> dataType) {
if (primitiveType == null) { if (primitiveType == null) {
throw new IllegalArgumentException("primitiveType is null!"); throw new IllegalArgumentException("primitiveType is null!");
@@ -71,7 +71,7 @@ public class FieldSpecInfo implements FieldSpec {
} }


@Override @Override
public ValueType getPrimitiveType() {
public PrimitiveType getPrimitiveType() {
return primitiveType; return primitiveType;
} }




+ 18
- 18
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/BinaryEncodingTest.java View File

@@ -7,7 +7,7 @@ import static org.junit.Assert.assertTrue;


import org.junit.Test; import org.junit.Test;


import com.jd.blockchain.binaryproto.BinaryEncodingUtils;
import com.jd.blockchain.binaryproto.BinaryProtocol;
import com.jd.blockchain.binaryproto.DataContractException; import com.jd.blockchain.binaryproto.DataContractException;
import com.jd.blockchain.binaryproto.DataContractRegistry; import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.utils.Bytes; import com.jd.blockchain.utils.Bytes;
@@ -37,7 +37,7 @@ public class BinaryEncodingTest {
pd.setConfig(Bytes.fromString("Configuration of something.")); pd.setConfig(Bytes.fromString("Configuration of something."));
pd.setNetworkAddress(networkAddress); pd.setNetworkAddress(networkAddress);


byte[] bytes = BinaryEncodingUtils.encode(pd, PrimitiveDatas.class);
byte[] bytes = BinaryProtocol.encode(pd, PrimitiveDatas.class);
int offset = 0; int offset = 0;
int code = BytesUtils.toInt(bytes, offset); int code = BytesUtils.toInt(bytes, offset);
offset += 12; offset += 12;
@@ -109,7 +109,7 @@ public class BinaryEncodingTest {
public void testEncoding_Null() { public void testEncoding_Null() {
DataContractRegistry.register(PrimitiveDatas.class); DataContractRegistry.register(PrimitiveDatas.class);


byte[] bytes = BinaryEncodingUtils.encode(null, PrimitiveDatas.class);
byte[] bytes = BinaryProtocol.encode(null, PrimitiveDatas.class);
int offset = 0; int offset = 0;
int code = BytesUtils.toInt(bytes, offset); int code = BytesUtils.toInt(bytes, offset);
offset += 12;// 暂不校验 version; offset += 12;// 暂不校验 version;
@@ -138,8 +138,8 @@ public class BinaryEncodingTest {
pd.setConfig(Bytes.fromString("Configuration of something.")); pd.setConfig(Bytes.fromString("Configuration of something."));
pd.setNetworkAddress(networkAddress); pd.setNetworkAddress(networkAddress);


byte[] bytes = BinaryEncodingUtils.encode(pd, PrimitiveDatas.class);
PrimitiveDatas decodeData = BinaryEncodingUtils.decode(bytes);
byte[] bytes = BinaryProtocol.encode(pd, PrimitiveDatas.class);
PrimitiveDatas decodeData = BinaryProtocol.decode(bytes);
assertEquals(pd.getId(), decodeData.getId()); assertEquals(pd.getId(), decodeData.getId());
assertEquals(pd.isEnable(), decodeData.isEnable()); assertEquals(pd.isEnable(), decodeData.isEnable());
assertEquals(pd.isBoy(), decodeData.isBoy()); assertEquals(pd.isBoy(), decodeData.isBoy());
@@ -163,7 +163,7 @@ public class BinaryEncodingTest {
EnumDatasImpl enumDatas = new EnumDatasImpl(); EnumDatasImpl enumDatas = new EnumDatasImpl();
enumDatas.setLevel(EnumLevel.V1); enumDatas.setLevel(EnumLevel.V1);


byte[] bytes = BinaryEncodingUtils.encode(enumDatas, EnumDatas.class);
byte[] bytes = BinaryProtocol.encode(enumDatas, EnumDatas.class);
int offset = 0; int offset = 0;
int code = BytesUtils.toInt(bytes, offset); int code = BytesUtils.toInt(bytes, offset);
offset += 12; offset += 12;
@@ -186,8 +186,8 @@ public class BinaryEncodingTest {
EnumDatasImpl enumDatas = new EnumDatasImpl(); EnumDatasImpl enumDatas = new EnumDatasImpl();
enumDatas.setLevel(EnumLevel.V1); enumDatas.setLevel(EnumLevel.V1);


byte[] bytes = BinaryEncodingUtils.encode(enumDatas, EnumDatas.class);
EnumDatas decodeData = BinaryEncodingUtils.decode(bytes);
byte[] bytes = BinaryProtocol.encode(enumDatas, EnumDatas.class);
EnumDatas decodeData = BinaryProtocol.decode(bytes);
assertEquals(enumDatas.getLevel(), decodeData.getLevel()); assertEquals(enumDatas.getLevel(), decodeData.getLevel());
} }


@@ -215,7 +215,7 @@ public class BinaryEncodingTest {


refContractDatas.setPrimitiveDatas(primitiveDatas); refContractDatas.setPrimitiveDatas(primitiveDatas);


byte[] bytes = BinaryEncodingUtils.encode(refContractDatas, RefContractDatas.class);
byte[] bytes = BinaryProtocol.encode(refContractDatas, RefContractDatas.class);
int offset = 0; int offset = 0;
int code = BytesUtils.toInt(bytes, offset); int code = BytesUtils.toInt(bytes, offset);
offset += 12; offset += 12;
@@ -248,7 +248,7 @@ public class BinaryEncodingTest {


RefContractDatasImpl refContractDatas = new RefContractDatasImpl(); RefContractDatasImpl refContractDatas = new RefContractDatasImpl();


byte[] bytes = BinaryEncodingUtils.encode(refContractDatas, RefContractDatas.class);
byte[] bytes = BinaryProtocol.encode(refContractDatas, RefContractDatas.class);
int offset = 0; int offset = 0;
int code = BytesUtils.toInt(bytes, offset); int code = BytesUtils.toInt(bytes, offset);
offset += 12; offset += 12;
@@ -295,8 +295,8 @@ public class BinaryEncodingTest {


refContractDatas.setPrimitiveDatas(primitiveDatas); refContractDatas.setPrimitiveDatas(primitiveDatas);


byte[] bytes = BinaryEncodingUtils.encode(refContractDatas, RefContractDatas.class);
RefContractDatas decodeData = BinaryEncodingUtils.decode(bytes);
byte[] bytes = BinaryProtocol.encode(refContractDatas, RefContractDatas.class);
RefContractDatas decodeData = BinaryProtocol.decode(bytes);


assertEquals(refContractDatas.getPrimitive().getId(), decodeData.getPrimitive().getId()); assertEquals(refContractDatas.getPrimitive().getId(), decodeData.getPrimitive().getId());
assertEquals(refContractDatas.getPrimitive().isEnable(), decodeData.getPrimitive().isEnable()); assertEquals(refContractDatas.getPrimitive().isEnable(), decodeData.getPrimitive().isEnable());
@@ -329,7 +329,7 @@ public class BinaryEncodingTest {
operations[0] = subOperation; operations[0] = subOperation;
genericRefContractDatas.setOperations(operations); genericRefContractDatas.setOperations(operations);


byte[] bytes = BinaryEncodingUtils.encode(genericRefContractDatas, GenericRefContractDatas.class);
byte[] bytes = BinaryProtocol.encode(genericRefContractDatas, GenericRefContractDatas.class);
int offset = 0; int offset = 0;
int code = BytesUtils.toInt(bytes, offset); int code = BytesUtils.toInt(bytes, offset);
offset += 12; offset += 12;
@@ -391,9 +391,9 @@ public class BinaryEncodingTest {
operations[0] = subOperation; operations[0] = subOperation;
genericRefContractDatas.setOperations(operations); genericRefContractDatas.setOperations(operations);


byte[] bytes = BinaryEncodingUtils.encode(genericRefContractDatas, GenericRefContractDatas.class);
byte[] bytes = BinaryProtocol.encode(genericRefContractDatas, GenericRefContractDatas.class);


GenericRefContractDatas decodeData = BinaryEncodingUtils.decode(bytes);
GenericRefContractDatas decodeData = BinaryProtocol.decode(bytes);


assertEquals("Jerry", ((SubOperation) (decodeData.getOperations()[0])).getUserName()); assertEquals("Jerry", ((SubOperation) (decodeData.getOperations()[0])).getUserName());
} }
@@ -432,7 +432,7 @@ public class BinaryEncodingTest {
operations[0] = subOperation; operations[0] = subOperation;
compositeDatas.setOperations(operations); compositeDatas.setOperations(operations);


byte[] bytes = BinaryEncodingUtils.encode(compositeDatas, CompositeDatas.class);
byte[] bytes = BinaryProtocol.encode(compositeDatas, CompositeDatas.class);


int offset = 0; int offset = 0;
int code = BytesUtils.toInt(bytes, offset); int code = BytesUtils.toInt(bytes, offset);
@@ -508,8 +508,8 @@ public class BinaryEncodingTest {
operations[0] = subOperation; operations[0] = subOperation;
compositeDatas.setOperations(operations); compositeDatas.setOperations(operations);


byte[] bytes = BinaryEncodingUtils.encode(compositeDatas, CompositeDatas.class);
CompositeDatas decodeData = BinaryEncodingUtils.decode(bytes);
byte[] bytes = BinaryProtocol.encode(compositeDatas, CompositeDatas.class);
CompositeDatas decodeData = BinaryProtocol.decode(bytes);


assertEquals(compositeDatas.isEnable(), decodeData.isEnable()); assertEquals(compositeDatas.isEnable(), decodeData.isEnable());
assertEquals(compositeDatas.getAge(), decodeData.getAge()); assertEquals(compositeDatas.getAge(), decodeData.getAge());


+ 3
- 4
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/CompositeDatas.java View File

@@ -2,8 +2,7 @@ package test.com.jd.blockchain.binaryproto;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;


/** /**
* Created by zhangshuang3 on 2018/11/30. * Created by zhangshuang3 on 2018/11/30.
@@ -11,7 +10,7 @@ import com.jd.blockchain.utils.ValueType;
@DataContract(code = 0xc, name = "CompositeDatas", description = "") @DataContract(code = 0xc, name = "CompositeDatas", description = "")
public interface CompositeDatas { public interface CompositeDatas {


@DataField(order = 1, primitiveType = ValueType.BOOLEAN)
@DataField(order = 1, primitiveType = PrimitiveType.BOOLEAN)
boolean isEnable(); boolean isEnable();


@DataField(order = 2, refEnum = true) @DataField(order = 2, refEnum = true)
@@ -23,7 +22,7 @@ public interface CompositeDatas {
@DataField(order=4, list = true, refContract=true, genericContract = true) @DataField(order=4, list = true, refContract=true, genericContract = true)
Operation[] getOperations(); Operation[] getOperations();


@DataField(order = 5, primitiveType = ValueType.INT16)
@DataField(order = 5, primitiveType = PrimitiveType.INT16)
short getAge(); short getAge();


} }

+ 2
- 2
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/EnumLevel.java View File

@@ -1,8 +1,8 @@
package test.com.jd.blockchain.binaryproto; package test.com.jd.blockchain.binaryproto;


import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.binaryproto.EnumContract; import com.jd.blockchain.binaryproto.EnumContract;
import com.jd.blockchain.binaryproto.EnumField; import com.jd.blockchain.binaryproto.EnumField;
import com.jd.blockchain.utils.ValueType;


/** /**
* Created by zhangshuang3 on 2018/11/29. * Created by zhangshuang3 on 2018/11/29.
@@ -14,7 +14,7 @@ public enum EnumLevel {


V2((byte) 2); V2((byte) 2);


@EnumField(type= ValueType.INT8)
@EnumField(type= PrimitiveType.INT8)
public final byte CODE; public final byte CODE;
public byte getCode() { public byte getCode() {
return CODE; return CODE;


+ 7
- 8
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/FieldOrderConflictedDatas.java View File

@@ -2,8 +2,7 @@ package test.com.jd.blockchain.binaryproto;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;


/** /**
* Created by zhangshuang3 on 2018/7/11. * Created by zhangshuang3 on 2018/7/11.
@@ -11,22 +10,22 @@ import com.jd.blockchain.utils.ValueType;
@DataContract(code = 0x06, name = "Primitive", description = "") @DataContract(code = 0x06, name = "Primitive", description = "")
public interface FieldOrderConflictedDatas { public interface FieldOrderConflictedDatas {


@DataField(order = 2, primitiveType = ValueType.BOOLEAN)
@DataField(order = 2, primitiveType = PrimitiveType.BOOLEAN)
boolean isEnable(); boolean isEnable();


@DataField(order = 3, primitiveType = ValueType.INT8)
@DataField(order = 3, primitiveType = PrimitiveType.INT8)
byte isBoy(); byte isBoy();


@DataField(order = 7, primitiveType = ValueType.INT16)
@DataField(order = 7, primitiveType = PrimitiveType.INT16)
short getAge(); short getAge();


@DataField(order = -1, primitiveType = ValueType.INT32)
@DataField(order = -1, primitiveType = PrimitiveType.INT32)
int getId(); int getId();


@DataField(order = 6, primitiveType = ValueType.TEXT)
@DataField(order = 6, primitiveType = PrimitiveType.TEXT)
String getName(); String getName();
@DataField(order = 7, primitiveType = ValueType.INT64)
@DataField(order = 7, primitiveType = PrimitiveType.INT64)
long getValue(); long getValue();




+ 0
- 2
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/GenericRefContractDatasImpl.java View File

@@ -1,8 +1,6 @@
package test.com.jd.blockchain.binaryproto; package test.com.jd.blockchain.binaryproto;


import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List; import java.util.List;


/** /**


+ 12
- 12
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/PrimitiveDatas.java View File

@@ -2,8 +2,8 @@ package test.com.jd.blockchain.binaryproto;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.utils.Bytes; import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.utils.net.NetworkAddress; import com.jd.blockchain.utils.net.NetworkAddress;


/** /**
@@ -12,37 +12,37 @@ import com.jd.blockchain.utils.net.NetworkAddress;
@DataContract(code = 0x05, name = "Primitive", description = "") @DataContract(code = 0x05, name = "Primitive", description = "")
public interface PrimitiveDatas { public interface PrimitiveDatas {


@DataField(order = 2, primitiveType = ValueType.BOOLEAN)
@DataField(order = 2, primitiveType = PrimitiveType.BOOLEAN)
boolean isEnable(); boolean isEnable();


@DataField(order = 3, primitiveType = ValueType.INT8)
@DataField(order = 3, primitiveType = PrimitiveType.INT8)
byte isBoy(); byte isBoy();


@DataField(order = 4, primitiveType = ValueType.INT16)
@DataField(order = 4, primitiveType = PrimitiveType.INT16)
short getAge(); short getAge();


@DataField(order = -1, primitiveType = ValueType.INT32)
@DataField(order = -1, primitiveType = PrimitiveType.INT32)
int getId(); int getId();


@DataField(order = 6, primitiveType = ValueType.TEXT)
@DataField(order = 6, primitiveType = PrimitiveType.TEXT)
String getName(); String getName();
@DataField(order = 7, primitiveType = ValueType.INT64)
@DataField(order = 7, primitiveType = PrimitiveType.INT64)
long getValue(); long getValue();
@DataField(order = 12, primitiveType = ValueType.BYTES)
@DataField(order = 12, primitiveType = PrimitiveType.BYTES)
byte[] getImage(); byte[] getImage();
@DataField(order = 100, primitiveType = ValueType.INT16)
@DataField(order = 100, primitiveType = PrimitiveType.INT16)
char getFlag(); char getFlag();


@DataField(order = 200, primitiveType = ValueType.BYTES)
@DataField(order = 200, primitiveType = PrimitiveType.BYTES)
Bytes getConfig(); Bytes getConfig();
@DataField(order = 201, primitiveType = ValueType.BYTES)
@DataField(order = 201, primitiveType = PrimitiveType.BYTES)
Bytes getSetting(); Bytes getSetting();


@DataField(order = 202, primitiveType = ValueType.BYTES)
@DataField(order = 202, primitiveType = PrimitiveType.BYTES)
NetworkAddress getNetworkAddr(); NetworkAddress getNetworkAddr();


} }

+ 0
- 2
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/PrimitiveDatasImpl.java View File

@@ -1,7 +1,5 @@
package test.com.jd.blockchain.binaryproto; package test.com.jd.blockchain.binaryproto;


import org.omg.CORBA.PUBLIC_MEMBER;

import com.jd.blockchain.utils.Bytes; import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.net.NetworkAddress; import com.jd.blockchain.utils.net.NetworkAddress;




+ 0
- 1
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/RefContractDatas.java View File

@@ -2,7 +2,6 @@ package test.com.jd.blockchain.binaryproto;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.utils.ValueType;


/** /**
* Created by zhangshuang3 on 2018/11/29. * Created by zhangshuang3 on 2018/11/29.


+ 2
- 2
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/SubOperation.java View File

@@ -2,7 +2,7 @@ package test.com.jd.blockchain.binaryproto;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;


/** /**
* Created by zhangshuang3 on 2018/11/29. * Created by zhangshuang3 on 2018/11/29.
@@ -10,7 +10,7 @@ import com.jd.blockchain.utils.ValueType;
@DataContract(code = 0xa, name = "SubOperation", description = "") @DataContract(code = 0xa, name = "SubOperation", description = "")
public interface SubOperation extends Operation { public interface SubOperation extends Operation {


@DataField(order=1, primitiveType = ValueType.TEXT)
@DataField(order=1, primitiveType = PrimitiveType.TEXT)
String getUserName(); String getUserName();


} }

+ 0
- 16
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/Address.java View File

@@ -1,16 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract;
//
//import com.jd.blockchain.binaryproto.DataContract;
//import com.jd.blockchain.binaryproto.DataField;
//import com.jd.blockchain.binaryproto.ValueType;
//
//@DataContract(code=0x02, name="Address" , description="")
//public interface Address {
//
// @DataField(order=1, primitiveType=ValueType.TEXT)
// String getStreet();
//
// @DataField(order=2, primitiveType=ValueType.INT32)
// int getNumber();
//
//}

+ 3
- 3
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/AddressCodeDuplicate.java View File

@@ -2,7 +2,7 @@ package test.com.jd.blockchain.binaryproto.contract;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;


/** /**
* Created by zhangshuang3 on 2018/7/9. * Created by zhangshuang3 on 2018/7/9.
@@ -10,10 +10,10 @@ import com.jd.blockchain.utils.ValueType;
@DataContract(code=0x02, name="Address" , description="") @DataContract(code=0x02, name="Address" , description="")
public interface AddressCodeDuplicate { public interface AddressCodeDuplicate {


@DataField(order=1, primitiveType= ValueType.TEXT)
@DataField(order=1, primitiveType= PrimitiveType.TEXT)
String getStreet(); String getStreet();


@DataField(order=2, primitiveType=ValueType.INT32)
@DataField(order=2, primitiveType=PrimitiveType.INT32)
int getNumber(); int getNumber();


} }

+ 3
- 3
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/AddressOrderDuplicate.java View File

@@ -2,7 +2,7 @@ package test.com.jd.blockchain.binaryproto.contract;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;


/** /**
* Created by zhangshuang3 on 2018/7/9. * Created by zhangshuang3 on 2018/7/9.
@@ -10,10 +10,10 @@ import com.jd.blockchain.utils.ValueType;
@DataContract(code=0x03, name="Address" , description="") @DataContract(code=0x03, name="Address" , description="")
public interface AddressOrderDuplicate { public interface AddressOrderDuplicate {


@DataField(order=1, primitiveType= ValueType.TEXT)
@DataField(order=1, primitiveType= PrimitiveType.TEXT)
String getStreet(); String getStreet();


@DataField(order=1, primitiveType=ValueType.INT32)
@DataField(order=1, primitiveType=PrimitiveType.INT32)
int getNumber(); int getNumber();


} }

+ 5
- 5
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/Array.java View File

@@ -2,7 +2,7 @@ package test.com.jd.blockchain.binaryproto.contract;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;


/** /**
* Created by zhangshuang3 on 2018/7/11. * Created by zhangshuang3 on 2018/7/11.
@@ -10,16 +10,16 @@ import com.jd.blockchain.utils.ValueType;
@DataContract(code=0x08, name="Array" , description="") @DataContract(code=0x08, name="Array" , description="")
public interface Array { public interface Array {


@DataField(order=1, primitiveType= ValueType.INT32, list=true)
@DataField(order=1, primitiveType= PrimitiveType.INT32, list=true)
int[] getScores(); int[] getScores();


@DataField(order=2, primitiveType=ValueType.TEXT, list=true)
@DataField(order=2, primitiveType=PrimitiveType.TEXT, list=true)
String[] getFeatures(); String[] getFeatures();


@DataField(order=3, primitiveType=ValueType.BYTES)
@DataField(order=3, primitiveType=PrimitiveType.BYTES)
byte[] getFamilyMemberAges(); byte[] getFamilyMemberAges();


@DataField(order=4, primitiveType=ValueType.INT64, list=true)
@DataField(order=4, primitiveType=PrimitiveType.INT64, list=true)
long[] getFamilyMemberIds(); long[] getFamilyMemberIds();


} }

+ 0
- 158
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/CryptoAlgorithm.java View File

@@ -1,158 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract;
//
//import com.jd.blockchain.binaryproto.EnumContract;
//import com.jd.blockchain.binaryproto.EnumField;
//import com.jd.blockchain.binaryproto.ValueType;
//import com.jd.blockchain.crypto.CryptoAlgorithmType;
//import my.utils.io.BytesUtils;
//
///**
// * Created by zhangshuang3 on 2018/7/30.
// */
//@EnumContract(code=0x0102)
//public enum CryptoAlgorithm {
//
// // Hash 类;
// // SHA_128(CryptoAlgorithmMask.HASH, (byte) 0x01, false, false),
//
// SHA_256(CryptoAlgorithmType.HASH, (byte) 0x01, false, false),
//
// RIPLE160(CryptoAlgorithmType.HASH, (byte) 0x02, false, false),
//
// SM3(CryptoAlgorithmType.HASH, (byte) 0x03, false, false),
//
// // 非对称签名/加密算法;
//
// /**
// * RSA 签名算法;可签名,可加密;
// */
// RSA(CryptoAlgorithmType.ASYMMETRIC, (byte) 0x01, true, true),
//
// /**
// * ED25519 签名算法;只用于签名,没有加密特性;
// */
// ED25519(CryptoAlgorithmType.ASYMMETRIC, (byte) 0x02, true, false),
//
// /**
// * ECDSA 签名算法;只用于签名,没有加密特性;???
// */
// ECDSA(CryptoAlgorithmType.ASYMMETRIC, (byte) 0x03, true, false),
//
// /**
// * 国密 SM2 算法;可签名,可加密;
// */
// SM2(CryptoAlgorithmType.ASYMMETRIC, (byte) 0x04, true, true),
//
// // 对称加密;
// /**
// * AES 算法;可加密;
// */
// AES(CryptoAlgorithmType.SYMMETRIC, (byte) 0x01, false, true),
//
// SM4(CryptoAlgorithmType.SYMMETRIC, (byte) 0x02, false, true),
//
// // 随机性;
// /**
// * ?????  一种随机数算法,待定;
// */
// JAVA_SECURE(CryptoAlgorithmType.RANDOM, (byte) 0x01, false, false);
//
// /**
// * 密码算法的代号;<br>
// * 注:只占16位;
// */
// @EnumField(type = ValueType.INT8)
// public final byte CODE;
//
// private final boolean signable;
//
// private final boolean encryptable;
//
// private CryptoAlgorithm(byte algType, byte algId, boolean signable, boolean encryptable) {
// this.CODE = (byte) (algType | algId);
// this.signable = signable;
// this.encryptable = encryptable;
// }
//
// /**
// * 是否属于摘要算法;
// *
// * @return
// */
// public boolean isHash() {
// return (CODE & CryptoAlgorithmType.HASH) == CryptoAlgorithmType.HASH;
// }
//
// /**
// * 是否属于非对称密码算法;
// *
// * @return
// */
// public boolean isAsymmetric() {
// return (CODE & CryptoAlgorithmType.ASYMMETRIC) == CryptoAlgorithmType.ASYMMETRIC;
// }
//
// /**
// * 是否属于对称密码算法;
// *
// * @return
// */
// public boolean isSymmetric() {
// return (CODE & CryptoAlgorithmType.SYMMETRIC) == CryptoAlgorithmType.SYMMETRIC;
// }
//
// /**
// * 是否属于随机数算法;
// *
// * @return
// */
// public boolean isRandom() {
// return (CODE & CryptoAlgorithmType.RANDOM) == CryptoAlgorithmType.RANDOM;
// }
//
// /**
// * 是否支持签名操作;
// *
// * @return
// */
// public boolean isSignable() {
// return signable;
// }
//
// /**
// * 是否支持加密操作;
// *
// * @return
// */
// public boolean isEncryptable() {
// return encryptable;
// }
//
// /**
// * 返回指定编码对应的枚举实例;<br>
// *
// * 如果不存在,则返回 null;
// *
// * @param code
// * @return
// */
// public static CryptoAlgorithm valueOf(byte code) {
// for (CryptoAlgorithm alg : CryptoAlgorithm.values()) {
// if (alg.CODE == code) {
// return alg;
// }
// }
// throw new IllegalArgumentException("CryptoAlgorithm doesn't support enum code[" + code + "]!");
// }
//
// // /**
// // * @return
// // */
// // public byte[] toBytes() {
// // byte[] bytes = BytesUtils.toBytes(CODE);
// // byte[] result = new byte[BYTES_SIZE];
// // System.arraycopy(bytes, 2, result, 0, 2);
// // // TODO: 只返回最后2个字节;
// // return result;
// // }
//}

+ 0
- 41
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/CryptoSetting.java View File

@@ -1,41 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract;
//
//import com.jd.blockchain.binaryproto.DataContract;
//import com.jd.blockchain.binaryproto.DataField;
//import com.jd.blockchain.binaryproto.ValueType;
//
///**
// * Created by zhangshuang3 on 2018/7/30.
// */
//@DataContract(code=0x0d, name="CryptoSetting", description = "Crypto setting")
//public interface CryptoSetting {
//
// /**
// * 系统中使用的 Hash 算法; <br>
// *
// * 对于历史数据,如果它未发生更改,则总是按照该数据产生时采用的算法进行校验,即使当时指定的Hash算法和当前的不同;<br>
// *
// * 如果对数据进行了更新,则采用新的 Hash 算法来计算生成完整性证明;
// *
// * @return
// */
// @DataField(order=1, refEnum=true)
// public HashAlgorithm getHashAlgorithm();
//
// @DataField(order=2, refEnum=true)
// public CryptoAlgorithm getHashAlgorithm1();
//
// /**
// * 当有完整性证明的数据被从持久化介质中加载时,是否对其进行完整性校验(重新计算 hash 比对是否一致); <br>
// *
// * 如果为 true ,则自动进行校验,如果校验失败,会引发异常; <br>
// *
// * 注意:开启此选项将对性能会产生负面影响,因此使用者需要在性能和数据安全性之间做出权衡;
// *
// * @return
// */
// @DataField(order=3, primitiveType= ValueType.BOOLEAN)
// public boolean getAutoVerifyHash();//func name is getxxxxx type
//
//}
//

+ 0
- 50
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/HashAlgorithm.java View File

@@ -1,50 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract;
//
//import com.jd.blockchain.binaryproto.EnumContract;
//import com.jd.blockchain.binaryproto.EnumField;
//import com.jd.blockchain.binaryproto.ValueType;
//
///**
// * Created by zhangshuang3 on 2018/7/30.
// */
//@EnumContract(code=0x0101)
//public enum HashAlgorithm {
//
// RIPE160((byte) 1),
//
// SHA256((byte) 2),
//
// SM3((byte) 4);
//
// @EnumField(type = ValueType.INT8)
// public final byte CODE;
//
// private HashAlgorithm(byte algorithm) {
// CODE = algorithm;
// }
//
// public byte getAlgorithm() {
// return CODE;
// }
//
// public static HashAlgorithm valueOf(byte algorithm) {
// for (HashAlgorithm hashAlgorithm : HashAlgorithm.values()) {
// if (hashAlgorithm.CODE == algorithm) {
// return hashAlgorithm;
// }
// }
// throw new IllegalArgumentException("Unsupported hash algorithm [" + algorithm + "]!");
// }
//
// public static void checkHashAlgorithm(HashAlgorithm algorithm) {
// switch (algorithm) {
// case RIPE160:
// break;
// case SHA256:
// break;
// default:
// throw new IllegalArgumentException("Unsupported hash algorithm [" + algorithm + "]!");
// }
// }
//}
//

+ 0
- 28
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/LedgerBlock.java View File

@@ -1,28 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract;
//
//import com.jd.blockchain.binaryproto.DataContract;
//import com.jd.blockchain.binaryproto.DataField;
//import com.jd.blockchain.binaryproto.ValueType;
//import com.jd.blockchain.crypto.hash.HashDigest;
//
///**
// * Created by zhangshuang3 on 2018/7/30.
// */
//@DataContract(code=0x12, name="LedgerBlock", description ="LedgerBlock")
//public interface LedgerBlock extends LedgerDataSnapshot{
//
// @DataField(order=1, refHashDigest=true)
// HashDigest getHash();
//
// @DataField(order=2, refHashDigest=true)
// HashDigest getPreviousHash();
//
// @DataField(order=3, refHashDigest=true)
// HashDigest getLedgerHash();
//
// @DataField(order=4, primitiveType=ValueType.INT64)
// long getHeight();
//
// @DataField(order=5, refHashDigest=true)
// HashDigest getTransactionSetHash();
//}

+ 0
- 34
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/LedgerDataSnapshot.java View File

@@ -1,34 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract;
//
//import com.jd.blockchain.binaryproto.DataContract;
//import com.jd.blockchain.binaryproto.DataField;
//import com.jd.blockchain.crypto.hash.HashDigest;
//
///**
// * Created by zhangshuang3 on 2018/7/30.
// */
//@DataContract(code=0x11, name="LedgerDataSnapshot", description ="LedgerDataSnapshot")
//public interface LedgerDataSnapshot {
//
// @DataField(order=1, refHashDigest=true)
// HashDigest getAdminAccountHash();
//
// @DataField(order=2, refHashDigest=true)
// HashDigest getUserAccountSetHash();
//
// @DataField(order=3, refHashDigest=true)
// HashDigest getUserPrivilegeHash();
//
// @DataField(order=4, refHashDigest=true)
// HashDigest getDataAccountSetHash();
//
// @DataField(order=5, refHashDigest=true)
// HashDigest getDataPrivilegeHash();
//
// @DataField(order=6, refHashDigest=true)
// HashDigest getContractAccountSetHash();
//
// @DataField(order=7, refHashDigest=true)
// HashDigest getContractPrivilegeHash();
//
//}

+ 0
- 25
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/LedgerMetadata.java View File

@@ -1,25 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract;
//
//import com.jd.blockchain.binaryproto.DataContract;
//import com.jd.blockchain.binaryproto.DataField;
//import com.jd.blockchain.binaryproto.ValueType;
//
///**
// * Created by zhangshuang3 on 2018/7/30.
// */
//@DataContract(code=0x0b, name="LedgerMetadata", description = "Ledger meta data")
//public interface LedgerMetadata {
//
// @DataField(order=1, primitiveType= ValueType.INT8, list=true)
// byte[] getSeed();
//
// @DataField(order = 2, refContract=true)
// LedgerSetting getSetting();
//
// @DataField(order=3, primitiveType=ValueType.INT8, list=true)
// byte[] getPrivilegesHash();
//
// @DataField(order=4, primitiveType=ValueType.INT8, list=true)
// byte[] getParticipantsHash();
//
//}

+ 0
- 21
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/LedgerSetting.java View File

@@ -1,21 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract;
//
//import com.jd.blockchain.binaryproto.DataContract;
//import com.jd.blockchain.binaryproto.DataField;
//
///**
// * Created by zhangshuang3 on 2018/7/30.
// */
//@DataContract(code=0x0c, name="LedgerSetting", description = "Ledger setting")
//public interface LedgerSetting {
//
// //@DataField(order=1, refContract=true)
// //ConsensusSetting getConsensusSetting();
//
// @DataField(order=2, refContract=true)
// CryptoSetting getCryptoSetting();
//
// @DataField(order=3, refContract=true)
// PrivilegeModelSetting getPrivilegesModelSetting();
//
//}

+ 2
- 2
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/Level.java View File

@@ -1,8 +1,8 @@
package test.com.jd.blockchain.binaryproto.contract; package test.com.jd.blockchain.binaryproto.contract;


import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.binaryproto.EnumContract; import com.jd.blockchain.binaryproto.EnumContract;
import com.jd.blockchain.binaryproto.EnumField; import com.jd.blockchain.binaryproto.EnumField;
import com.jd.blockchain.utils.ValueType;


@EnumContract(code=0x0100) @EnumContract(code=0x0100)
public enum Level { public enum Level {
@@ -11,7 +11,7 @@ public enum Level {


V2((byte) 2); V2((byte) 2);


@EnumField(type=ValueType.INT8)
@EnumField(type=PrimitiveType.INT8)
public final byte CODE; public final byte CODE;
public byte getCode() { public byte getCode() {
return CODE; return CODE;


+ 0
- 18
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/Privilege.java View File

@@ -1,18 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract;
//
//import com.jd.blockchain.binaryproto.DataContract;
//import com.jd.blockchain.binaryproto.DataField;
//import com.jd.blockchain.binaryproto.ValueType;
//
///**
// * Created by zhangshuang3 on 2018/7/30.
// */
//@DataContract(code=0x10, name="Privilege", description ="Privilege")
//public interface Privilege {
//
// //SortedSet<Byte> getOpCodes(); implement later
//
// @DataField(order=2, primitiveType= ValueType.INT64)
// long getVersion();
//
//}

+ 2
- 2
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/PrivilegeModelSetting.java View File

@@ -2,7 +2,7 @@ package test.com.jd.blockchain.binaryproto.contract;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;


/** /**
* Created by zhangshuang3 on 2018/7/30. * Created by zhangshuang3 on 2018/7/30.
@@ -10,7 +10,7 @@ import com.jd.blockchain.utils.ValueType;
@DataContract(code=0x0f, name="PrivilegeModelSetting", description ="Privilege Model setting") @DataContract(code=0x0f, name="PrivilegeModelSetting", description ="Privilege Model setting")
public interface PrivilegeModelSetting { public interface PrivilegeModelSetting {


@DataField(order=1, primitiveType= ValueType.INT64)
@DataField(order=1, primitiveType= PrimitiveType.INT64)
long getLatestVersion(); long getLatestVersion();


//@DataField(order=2, refContract=true) //@DataField(order=2, refContract=true)


+ 0
- 20
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/RefContract.java View File

@@ -1,20 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract;

//import com.jd.blockchain.binaryproto.DataContract;
//import com.jd.blockchain.binaryproto.DataField;

/**
* Created by zhangshuang3 on 2018/7/11.
*/
/*
@DataContract(code=0x07, name="RefContract" , description="")
public interface RefContract {

@DataField(order=1, refContract=true)
Address getAddress();

@DataField(order=2, refContract=true)
Address getAddress1();

}
*/

+ 0
- 41
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/Student.java View File

@@ -1,41 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract;

//import com.jd.blockchain.binaryproto.DataContract;
//import com.jd.blockchain.binaryproto.DataField;
//import com.jd.blockchain.binaryproto.ValueType;

/*
@DataContract(code=0x01, name="测试数据契约1", description = "用于测试的数据契约")
public interface Student {
@DataField(order=1, primitiveType=ValueType.INT32)
int getId();

@DataField(order=2, primitiveType=ValueType.INT8)
byte getFamilyMemberNum();
@DataField(order=3, primitiveType=ValueType.TEXT)
String getName();

@DataField(order=4, primitiveType=ValueType.INT16)
short getAge();

@DataField(order=5, refEnum=true)
Level getLevel();

@DataField(order=6, refContract=true)
Address getAddress();
@DataField(order=7, primitiveType=ValueType.INT32, list=true)
int[] getScores();

@DataField(order=8, primitiveType=ValueType.TEXT, list=true)
String[] getFeatures();

@DataField(order=9, primitiveType=ValueType.INT8, list=true)
byte[] getFamilyMemberAges();

@DataField(order=10, primitiveType=ValueType.INT64, list=true)
long[] getFamilyMemberIds();
}
*/

+ 0
- 44
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/StudentInvert.java View File

@@ -1,44 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract;

//import com.jd.blockchain.binaryproto.DataContract;
//import com.jd.blockchain.binaryproto.DataField;
//import com.jd.blockchain.binaryproto.ValueType;

/**
* Created by zhangshuang3 on 2018/7/9.
*/
/*
@DataContract(code=0x04, name="测试数据契约1", description = "用于测试的数据契约")
public interface StudentInvert {

@DataField(order=10, primitiveType=ValueType.INT64, list=true)
long[] getFamilyMemberIds();

@DataField(order=9, primitiveType=ValueType.INT8, list=true)
byte[] getFamilyMemberAges();

@DataField(order=8, primitiveType=ValueType.TEXT, list=true)
String[] getFeatures();

@DataField(order=7, primitiveType=ValueType.INT32, list=true)
int[] getScores();

@DataField(order=6, refContract=true)
Address getAddress();

@DataField(order=5, refEnum=true)
Level getLevel();

@DataField(order=4, primitiveType=ValueType.INT16)
short getAge();

@DataField(order=3, primitiveType=ValueType.TEXT)
String getName();

@DataField(order=2, primitiveType=ValueType.INT8)
byte getFamilyMemberNum();

@DataField(order=1, primitiveType= ValueType.INT32)
int getId();
}
*/

+ 0
- 31
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/User.java View File

@@ -1,31 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract;

//import com.jd.blockchain.binaryproto.DataContract;
//import com.jd.blockchain.binaryproto.DataField;
//import com.jd.blockchain.binaryproto.ValueType;
//import com.jd.blockchain.crypto.asymmetric.PubKey;
//import my.utils.io.ByteArray;

/**
* Created by zhangshuang3 on 2018/7/25.
*/
/*
@DataContract(code=0x09, name="UserAccount", description = "用户账户")
public interface User {

@DataField(order=1, primitiveType= ValueType.TEXT)
String getAddress();

@DataField(order=2, refPubKey = true)
PubKey getPubKey();

@DataField(order=3, refPubKey = true)
PubKey getDataPubKey();

@DataField(order=4, primitiveType = ValueType.BYTES)
ByteArray getDataHash();

@DataField(order=5, primitiveType = ValueType.BYTES)
ByteArray getPrivilegeHash();
}
*/

+ 0
- 29
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/AddressImpl.java View File

@@ -1,29 +0,0 @@
/*
package test.com.jd.blockchain.binaryproto.contract.impl;

import test.com.jd.blockchain.binaryproto.contract.Address;

public class AddressImpl implements Address {
private String street;
private int number;

@Override
public String getStreet() {
// TODO Auto-generated method stub
return this.street;
}
public void setStreet(String street) {
this.street = street;
}

@Override
public int getNumber() {
// TODO Auto-generated method stub
return this.number;
}
public void setNumber(int number) {
this.number = number;
}

}
*/

+ 0
- 40
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/CryptoSettingImpl.java View File

@@ -1,40 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract.impl;

//import test.com.jd.blockchain.binaryproto.contract.CryptoAlgorithm;
//import test.com.jd.blockchain.binaryproto.contract.CryptoSetting;
//import test.com.jd.blockchain.binaryproto.contract.HashAlgorithm;

/**
* Created by zhangshuang3 on 2018/7/30.
*/
/*
public class CryptoSettingImpl implements CryptoSetting {
private HashAlgorithm hashAlgorithm;
private CryptoAlgorithm cryptoAlgorithm;
private boolean isAuto;

@Override
public HashAlgorithm getHashAlgorithm() {
return this.hashAlgorithm;
}
public void setHashAlgorithm(HashAlgorithm hashAlgorithm) {
this.hashAlgorithm = hashAlgorithm;
}

@Override
public CryptoAlgorithm getHashAlgorithm1() {
return this.cryptoAlgorithm;
}
public void setHashAlgorithm1(CryptoAlgorithm cryptoAlgorithm) {
this.cryptoAlgorithm = cryptoAlgorithm;
}
@Override
public boolean getAutoVerifyHash() {
return isAuto;
}
public void setAutoVerifyHash(boolean isAuto) {
this.isAuto = isAuto;
}

}
*/

+ 0
- 147
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/LedgerBlockImpl.java View File

@@ -1,147 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract.impl;

//import com.jd.blockchain.binaryproto.DConstructor;
//import com.jd.blockchain.binaryproto.DataField;
//import com.jd.blockchain.binaryproto.FieldSetter;
//import com.jd.blockchain.crypto.hash.HashDigest;
//import test.com.jd.blockchain.binaryproto.contract.Address;
//import test.com.jd.blockchain.binaryproto.contract.LedgerBlock;

/**
* Created by zhangshuang3 on 2018/7/30.
*/
/*
public class LedgerBlockImpl implements LedgerBlock {

private HashDigest hash;

private long height;

private HashDigest ledgerHash;

private HashDigest previousHash;

private HashDigest adminAccountHash;

private HashDigest userAccountSetHash;

private HashDigest userPrivilegeHash;

private HashDigest dataAccountSetHash;

private HashDigest dataPrivilegeHash;

private HashDigest contractAccountSetHash;

private HashDigest contractPrivilegeHash;

private HashDigest transactionSetHash;

public void setAdminAccountHash(HashDigest adminAccountHash) {
this.adminAccountHash = adminAccountHash;
}

public void setUserAccountSetHash(HashDigest userAccountSetHash) {
this.userAccountSetHash = userAccountSetHash;
}

public void setUserPrivilegeHash(HashDigest userPrivilegeHash) {
this.userPrivilegeHash = userPrivilegeHash;
}

public void setDataAccountSetHash(HashDigest dataAccountSetHash) {
this.dataAccountSetHash = dataAccountSetHash;
}

public void setDataPrivilegeHash(HashDigest dataPrivilegeHash) {
this.dataPrivilegeHash = dataPrivilegeHash;
}

public void setContractAccountSetHash(HashDigest contractAccountSetHash) {
this.contractAccountSetHash = contractAccountSetHash;
}

public void setContractPrivilegeHash(HashDigest contractPrivilegeHash) {
this.contractPrivilegeHash = contractPrivilegeHash;
}

public void setTransactionSetHash(HashDigest transactionSetHash) {
this.transactionSetHash = transactionSetHash;
}

public LedgerBlockImpl() {
}

@DConstructor(name="LedgerBlockImpl")
public LedgerBlockImpl(@FieldSetter(name="getHeight", type="long") long height, @FieldSetter(name="getLedgerHash", type="HashDigest") HashDigest ledgerHash, @FieldSetter(name="getPreviousHash", type="HashDigest") HashDigest previousHash) {
this.height = height;
this.ledgerHash = ledgerHash;
this.previousHash = previousHash;
}

@Override
public HashDigest getHash() {
return hash;
}

@Override
public HashDigest getPreviousHash() {
return previousHash;
}

@Override
public HashDigest getLedgerHash() {
return ledgerHash;
}

@Override
public long getHeight() {
return height;
}

@Override
public HashDigest getAdminAccountHash() {
return adminAccountHash;
}

@Override
public HashDigest getUserAccountSetHash() {
return userAccountSetHash;
}

@Override
public HashDigest getUserPrivilegeHash() {
return userPrivilegeHash;
}

@Override
public HashDigest getDataAccountSetHash() {
return dataAccountSetHash;
}

@Override
public HashDigest getDataPrivilegeHash() {
return dataPrivilegeHash;
}

@Override
public HashDigest getContractAccountSetHash() {
return contractAccountSetHash;
}

@Override
public HashDigest getContractPrivilegeHash() {
return contractPrivilegeHash;
}

@Override
public HashDigest getTransactionSetHash() {
return transactionSetHash;
}

public void setHash(HashDigest blockHash) {
this.hash = blockHash;
}

}
*/

+ 0
- 56
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/LedgerMetadataImpl.java View File

@@ -1,56 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract.impl;

//import test.com.jd.blockchain.binaryproto.contract.*;
//import test.com.jd.blockchain.binaryproto.contract.LedgerMetadata;
//import test.com.jd.blockchain.binaryproto.contract.LedgerSetting;

/**
* Created by zhangshuang3 on 2018/7/30.
*/
/*
public class LedgerMetadataImpl implements LedgerMetadata {
private byte[] seed;

private LedgerSetting setting;

private byte[] privilegesHash;

private byte[] participantsHash;

@Override
public byte[] getSeed() {
return seed;
}

@Override
public LedgerSetting getSetting() {
return setting;
}

@Override
public byte[] getPrivilegesHash() {
return privilegesHash;
}

@Override
public byte[] getParticipantsHash() {
return participantsHash;
}

public void setSeed(byte[] seed) {
this.seed = seed;
}

public void setSetting(LedgerSetting setting) {
this.setting = setting;
}

public void setPrivilegesHash(byte[] privilegesHash) {
this.privilegesHash = privilegesHash;
}

public void setParticipantsHash(byte[] participantsHash) {
this.participantsHash = participantsHash;
}
}
*/

+ 0
- 30
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/LedgerSettingImpl.java View File

@@ -1,30 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract.impl;

//import test.com.jd.blockchain.binaryproto.contract.LedgerSetting;
//import test.com.jd.blockchain.binaryproto.contract.CryptoSetting;
//import test.com.jd.blockchain.binaryproto.contract.PrivilegeModelSetting;

/**
* Created by zhangshuang3 on 2018/7/30.
*/
/*
public class LedgerSettingImpl implements LedgerSetting {
private CryptoSetting cryptoSetting;
private PrivilegeModelSetting privilegeModelSetting;

@Override
public CryptoSetting getCryptoSetting() {
return this.cryptoSetting;
}
public void setCryptoSetting(CryptoSetting cryptoSetting) {
this.cryptoSetting = cryptoSetting;
}
@Override
public PrivilegeModelSetting getPrivilegesModelSetting() {
return this.privilegeModelSetting;
}
public void setPrivilegesModelSetting(PrivilegeModelSetting privilegeModelSetting) {
this.privilegeModelSetting = privilegeModelSetting;
}
}
*/

+ 0
- 32
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/RefContractImpl.java View File

@@ -1,32 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract.impl;

//import test.com.jd.blockchain.binaryproto.contract.Address;
//import test.com.jd.blockchain.binaryproto.contract.RefContract;

/**
* Created by zhangshuang3 on 2018/7/11.
*/
/*
public class RefContractImpl implements RefContract {
private Address address;
private Address address1;

@Override
public Address getAddress() {
// TODO Auto-generated method stub
return this.address;
}
public void setAddress(Address address) {
this.address = address;
}

@Override
public Address getAddress1() {
// TODO Auto-generated method stub
return this.address1;
}
public void setAddress1(Address address) {
this.address1 = address;
}
}
*/

+ 0
- 108
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/StudentImpl.java View File

@@ -1,108 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract.impl;

//import test.com.jd.blockchain.binaryproto.contract.Address;
//import test.com.jd.blockchain.binaryproto.contract.Level;
//import test.com.jd.blockchain.binaryproto.contract.Student;
//import test.com.jd.blockchain.binaryproto.contract.StudentInvert;

/*
public class StudentImpl implements Student,StudentInvert {
private int id;
private short age;
private String name;
private Level level;
private Address address;
private int[] scores;
private String[] features;
private byte familyMemberNum;
private byte[] familyMemberAges;
private long[] familyMemberIds;


@Override
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}

@Override
public String getName() {
// TODO Auto-generated method stub
return this.name;
}
public void setName(String name) {
this.name = name;
}

@Override
public Level getLevel() {
// TODO Auto-generated method stub
return this.level;
}
public void setLevel(Level level) {
this.level = level;
}

@Override
public Address getAddress() {
// TODO Auto-generated method stub
return this.address;
}
public void setAddress(Address address) {
this.address = address;
}

public short getAge() {
return age;
}

public void setAge(short age) {
this.age = age;
}

@Override
public int[] getScores() {
// TODO Auto-generated method stub
return this.scores;
}
public void setScores(int[] scores) {
this.scores = scores;
}

@Override
public String[] getFeatures() {
return this.features;
}
public void setFeatures(String[] features) {
this.features = features;
}

@Override
public byte getFamilyMemberNum() {
return this.familyMemberNum;
}
public void setFamilyMemberNum(byte familyMemberNum) {
this.familyMemberNum = familyMemberNum;
}

@Override
public byte[] getFamilyMemberAges() {
return this.familyMemberAges;
}
public void setFamilyMemberAges(byte[] familyMemberAge) {
this.familyMemberAges = familyMemberAge;
}

@Override
public long[] getFamilyMemberIds() {
return this.familyMemberIds;
}
public void setFamilyMemberIds(long[] familyMemberId) {
this.familyMemberIds = familyMemberId;
}
}
*/

+ 0
- 51
source/binary-proto/src/test/java/test/com/jd/blockchain/binaryproto/contract/impl/UserImpl.java View File

@@ -1,51 +0,0 @@
//package test.com.jd.blockchain.binaryproto.contract.impl;

//import com.jd.blockchain.binaryproto.DConstructor;
//import com.jd.blockchain.binaryproto.FieldSetter;
//import com.jd.blockchain.crypto.asymmetric.PubKey;
//import my.utils.io.ByteArray;
//import test.com.jd.blockchain.binaryproto.contract.User;

/**
* Created by zhangshuang3 on 2018/7/24.
*/
/*
public class UserImpl implements User {
String address;
PubKey pubKey;
PubKey dataPubKey;
ByteArray dataHash;
ByteArray privHash;

@DConstructor(name = "UserImpl")
public UserImpl(@FieldSetter(name = "getAddress", type = "String") String address, @FieldSetter(name = "getPubKey",type = "PubKey") PubKey pubKey, @FieldSetter(name = "getDataPubKey",type = "PubKey") PubKey dataPubKey,
@FieldSetter(name = "getDataHash", type = "byte[]") byte[] dataHash, @FieldSetter(name = "getPrivilegeHash", type = "byte[]") byte[] privHash) {
this.address = address;
this.pubKey = pubKey;
this.dataPubKey = dataPubKey;
this.dataHash = ByteArray.wrap(dataHash);
this.privHash = ByteArray.wrap(privHash);
}

@Override
public String getAddress() {
return address;
}
@Override
public PubKey getPubKey() {
return pubKey;
}
@Override
public PubKey getDataPubKey() {
return dataPubKey;
}
@Override
public ByteArray getDataHash() {
return dataHash;
}
@Override
public ByteArray getPrivilegeHash() {
return privHash;
}
}
*/

+ 6
- 6
source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/BftsmartClientIncomingSettings.java View File

@@ -2,21 +2,21 @@ package com.jd.blockchain.consensus.bftsmart;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consensus.ClientIncomingSettings; import com.jd.blockchain.consensus.ClientIncomingSettings;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.consts.DataCodes;
import com.jd.blockchain.crypto.PubKey; import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.utils.ValueType;


@DataContract(code = TypeCodes.CONSENSUS_BFTSMART_CLI_INCOMING_SETTINGS)
@DataContract(code = DataCodes.CONSENSUS_BFTSMART_CLI_INCOMING_SETTINGS)
public interface BftsmartClientIncomingSettings extends ClientIncomingSettings { public interface BftsmartClientIncomingSettings extends ClientIncomingSettings {


@DataField(order = 1, primitiveType = ValueType.BYTES)
@DataField(order = 1, primitiveType = PrimitiveType.BYTES)
byte[] getTopology(); byte[] getTopology();


@DataField(order = 2, primitiveType = ValueType.BYTES)
@DataField(order = 2, primitiveType = PrimitiveType.BYTES)
byte[] getTomConfig(); byte[] getTomConfig();


@DataField(order = 3, primitiveType=ValueType.BYTES)
@DataField(order = 3, primitiveType=PrimitiveType.BYTES)
PubKey getPubKey(); PubKey getPubKey();


} }

+ 5
- 5
source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/BftsmartCommitBlockSettings.java View File

@@ -2,16 +2,16 @@ package com.jd.blockchain.consensus.bftsmart;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;




@DataContract(code = TypeCodes.CONSENSUS_BFTSMART_BLOCK_SETTINGS)
@DataContract(code = DataCodes.CONSENSUS_BFTSMART_BLOCK_SETTINGS)
public interface BftsmartCommitBlockSettings { public interface BftsmartCommitBlockSettings {


@DataField(order = 0, primitiveType = ValueType.INT32)
@DataField(order = 0, primitiveType = PrimitiveType.INT32)
int getTxSizePerBlock(); int getTxSizePerBlock();


@DataField(order = 1, primitiveType = ValueType.INT64)
@DataField(order = 1, primitiveType = PrimitiveType.INT64)
long getMaxDelayMilliSecondsPerBlock(); long getMaxDelayMilliSecondsPerBlock();
} }

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

@@ -2,16 +2,16 @@ package com.jd.blockchain.consensus.bftsmart;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consensus.ConsensusSettings; import com.jd.blockchain.consensus.ConsensusSettings;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.consts.DataCodes;
import com.jd.blockchain.utils.Property; import com.jd.blockchain.utils.Property;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.utils.serialize.binary.BinarySerializeUtils; import com.jd.blockchain.utils.serialize.binary.BinarySerializeUtils;


@DataContract(code = TypeCodes.CONSENSUS_BFTSMART_SETTINGS)
@DataContract(code = DataCodes.CONSENSUS_BFTSMART_SETTINGS)
public interface BftsmartConsensusSettings extends ConsensusSettings { public interface BftsmartConsensusSettings extends ConsensusSettings {


@DataField(order = 1, primitiveType = ValueType.BYTES, list=true)
@DataField(order = 1, primitiveType = PrimitiveType.BYTES, list=true)
Property[] getSystemConfigs(); Property[] getSystemConfigs();


@DataField(order = 2, refContract = true) @DataField(order = 2, refContract = true)


+ 5
- 5
source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/BftsmartNodeSettings.java View File

@@ -2,13 +2,13 @@ package com.jd.blockchain.consensus.bftsmart;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consensus.NodeSettings; import com.jd.blockchain.consensus.NodeSettings;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.consts.DataCodes;
import com.jd.blockchain.crypto.PubKey; import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.utils.net.NetworkAddress; import com.jd.blockchain.utils.net.NetworkAddress;


@DataContract(code = TypeCodes.CONSENSUS_BFTSMART_NODE_SETTINGS)
@DataContract(code = DataCodes.CONSENSUS_BFTSMART_NODE_SETTINGS)
public interface BftsmartNodeSettings extends NodeSettings { public interface BftsmartNodeSettings extends NodeSettings {


/** /**
@@ -31,7 +31,7 @@ public interface BftsmartNodeSettings extends NodeSettings {
* *
* @return * @return
*/ */
@DataField(order = 2, primitiveType = ValueType.INT32)
@DataField(order = 2, primitiveType = PrimitiveType.INT32)
int getId(); int getId();


/** /**
@@ -39,7 +39,7 @@ public interface BftsmartNodeSettings extends NodeSettings {
* *
* @return * @return
*/ */
@DataField(order = 3, primitiveType = ValueType.BYTES)
@DataField(order = 3, primitiveType = PrimitiveType.BYTES)
NetworkAddress getNetworkAddress(); NetworkAddress getNetworkAddress();


} }

+ 5
- 5
source/consensus/consensus-bftsmart/src/main/java/com/jd/blockchain/consensus/bftsmart/BftsmartSettingsFactory.java View File

@@ -1,6 +1,6 @@
package com.jd.blockchain.consensus.bftsmart; package com.jd.blockchain.consensus.bftsmart;


import com.jd.blockchain.binaryproto.BinaryEncodingUtils;
import com.jd.blockchain.binaryproto.BinaryProtocol;
import com.jd.blockchain.binaryproto.DataContractRegistry; import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.consensus.*; import com.jd.blockchain.consensus.*;
import com.jd.blockchain.utils.io.BytesEncoder; import com.jd.blockchain.utils.io.BytesEncoder;
@@ -40,14 +40,14 @@ public class BftsmartSettingsFactory implements SettingsFactory {
@Override @Override
public byte[] encode(ConsensusSettings data) { public byte[] encode(ConsensusSettings data) {
if (data instanceof BftsmartConsensusSettings) { if (data instanceof BftsmartConsensusSettings) {
return BinaryEncodingUtils.encode(data, BftsmartConsensusSettings.class);
return BinaryProtocol.encode(data, BftsmartConsensusSettings.class);
} }
throw new IllegalArgumentException("Settings data isn't supported! Accept BftsmartConsensusSettings only!"); throw new IllegalArgumentException("Settings data isn't supported! Accept BftsmartConsensusSettings only!");
} }


@Override @Override
public ConsensusSettings decode(byte[] bytes) { public ConsensusSettings decode(byte[] bytes) {
return BinaryEncodingUtils.decodeAs(bytes, BftsmartConsensusSettings.class);
return BinaryProtocol.decodeAs(bytes, BftsmartConsensusSettings.class);
} }
} }
@@ -57,14 +57,14 @@ public class BftsmartSettingsFactory implements SettingsFactory {
@Override @Override
public byte[] encode(ClientIncomingSettings data) { public byte[] encode(ClientIncomingSettings data) {
if (data instanceof BftsmartClientIncomingSettings) { if (data instanceof BftsmartClientIncomingSettings) {
return BinaryEncodingUtils.encode(data, BftsmartClientIncomingSettings.class);
return BinaryProtocol.encode(data, BftsmartClientIncomingSettings.class);
} }
throw new IllegalArgumentException("Settings data isn't supported! Accept BftsmartClientIncomingSettings only!"); throw new IllegalArgumentException("Settings data isn't supported! Accept BftsmartClientIncomingSettings only!");
} }


@Override @Override
public ClientIncomingSettings decode(byte[] bytes) { public ClientIncomingSettings decode(byte[] bytes) {
return BinaryEncodingUtils.decodeAs(bytes, BftsmartClientIncomingSettings.class);
return BinaryProtocol.decodeAs(bytes, BftsmartClientIncomingSettings.class);
} }
} }


+ 7
- 7
source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/ClientIdentification.java View File

@@ -2,10 +2,10 @@ package com.jd.blockchain.consensus;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;
import com.jd.blockchain.crypto.PubKey; import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.crypto.SignatureDigest; import com.jd.blockchain.crypto.SignatureDigest;
import com.jd.blockchain.utils.ValueType;


/** /**
* 客户端的身份证明; * 客户端的身份证明;
@@ -13,7 +13,7 @@ import com.jd.blockchain.utils.ValueType;
* @author huanghaiquan * @author huanghaiquan
* *
*/ */
@DataContract(code = TypeCodes.CLIENT_IDENTIFICATION)
@DataContract(code = DataCodes.CLIENT_IDENTIFICATION)
public interface ClientIdentification { public interface ClientIdentification {


/** /**
@@ -21,7 +21,7 @@ public interface ClientIdentification {
* *
* @return * @return
*/ */
@DataField(order = 0, primitiveType = ValueType.BYTES)
@DataField(order = 0, primitiveType = PrimitiveType.BYTES)
byte[] getIdentityInfo(); byte[] getIdentityInfo();


/** /**
@@ -29,7 +29,7 @@ public interface ClientIdentification {
* *
* @return * @return
*/ */
@DataField(order = 1, primitiveType = ValueType.BYTES)
@DataField(order = 1, primitiveType = PrimitiveType.BYTES)
PubKey getPubKey(); PubKey getPubKey();


/** /**
@@ -37,7 +37,7 @@ public interface ClientIdentification {
* *
* @return * @return
*/ */
@DataField(order = 2, primitiveType = ValueType.BYTES)
@DataField(order = 2, primitiveType = PrimitiveType.BYTES)
SignatureDigest getSignature(); SignatureDigest getSignature();


/** /**
@@ -45,6 +45,6 @@ public interface ClientIdentification {
* *
* @return * @return
*/ */
@DataField(order = 3, primitiveType = ValueType.TEXT)
@DataField(order = 3, primitiveType = PrimitiveType.TEXT)
String getProviderName(); String getProviderName();
} }

+ 2
- 2
source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/ClientIdentifications.java View File

@@ -10,7 +10,7 @@ package com.jd.blockchain.consensus;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.consts.DataCodes;


/** /**
* *
@@ -18,7 +18,7 @@ import com.jd.blockchain.consts.TypeCodes;
* @create 2018/12/19 * @create 2018/12/19
* @since 1.0.0 * @since 1.0.0
*/ */
@DataContract(code = TypeCodes.CLIENT_IDENTIFICATIONS)
@DataContract(code = DataCodes.CLIENT_IDENTIFICATIONS)
public interface ClientIdentifications { public interface ClientIdentifications {


@DataField(order = 0, list = true, refContract = true, genericContract = true) @DataField(order = 0, list = true, refContract = true, genericContract = true)


+ 5
- 5
source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/ClientIncomingSettings.java View File

@@ -2,8 +2,8 @@ package com.jd.blockchain.consensus;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;


/** /**
* 共识网络的客户接入参数; * 共识网络的客户接入参数;
@@ -11,7 +11,7 @@ import com.jd.blockchain.utils.ValueType;
* @author huanghaiquan * @author huanghaiquan
* *
*/ */
@DataContract(code = TypeCodes.CONSENSUS_CLI_INCOMING_SETTINGS)
@DataContract(code = DataCodes.CONSENSUS_CLI_INCOMING_SETTINGS)
public interface ClientIncomingSettings { public interface ClientIncomingSettings {


/** /**
@@ -19,7 +19,7 @@ public interface ClientIncomingSettings {
* *
* @return * @return
*/ */
@DataField(order = 0, primitiveType = ValueType.INT32)
@DataField(order = 0, primitiveType = PrimitiveType.INT32)
int getClientId(); int getClientId();


/** /**
@@ -27,7 +27,7 @@ public interface ClientIncomingSettings {
* *
* @return * @return
*/ */
@DataField(order = 1, primitiveType = ValueType.TEXT)
@DataField(order = 1, primitiveType = PrimitiveType.TEXT)
String getProviderName(); String getProviderName();


/** /**


+ 2
- 2
source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/ConsensusSettings.java View File

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


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.consts.DataCodes;


/** /**
* 共识网络的配置参数; * 共识网络的配置参数;
@@ -10,7 +10,7 @@ import com.jd.blockchain.consts.TypeCodes;
* @author huanghaiquan * @author huanghaiquan
* *
*/ */
@DataContract(code = TypeCodes.CONSENSUS_SETTINGS)
@DataContract(code = DataCodes.CONSENSUS_SETTINGS)
public interface ConsensusSettings { public interface ConsensusSettings {


/** /**


+ 5
- 5
source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/NodeSettings.java View File

@@ -2,9 +2,9 @@ package com.jd.blockchain.consensus;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;
import com.jd.blockchain.crypto.PubKey; import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.utils.ValueType;


/** /**
* 节点的配置参数; * 节点的配置参数;
@@ -12,7 +12,7 @@ import com.jd.blockchain.utils.ValueType;
* @author huanghaiquan * @author huanghaiquan
* *
*/ */
@DataContract(code=TypeCodes.CONSENSUS_NODE_SETTINGS)
@DataContract(code=DataCodes.CONSENSUS_NODE_SETTINGS)
public interface NodeSettings { public interface NodeSettings {


/** /**
@@ -22,7 +22,7 @@ public interface NodeSettings {
* *
* @return * @return
*/ */
@DataField(order=0, primitiveType=ValueType.TEXT)
@DataField(order=0, primitiveType=PrimitiveType.TEXT)
String getAddress(); String getAddress();


/** /**
@@ -30,6 +30,6 @@ public interface NodeSettings {
* *
* @return * @return
*/ */
@DataField(order = 1, primitiveType = ValueType.BYTES)
@DataField(order = 1, primitiveType = PrimitiveType.BYTES)
PubKey getPubKey(); PubKey getPubKey();
} }

+ 8
- 8
source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/action/ActionRequest.java View File

@@ -2,27 +2,27 @@ package com.jd.blockchain.consensus.action;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;


@DataContract(code= TypeCodes.CONSENSUS_ACTION_REQUEST)
@DataContract(code= DataCodes.CONSENSUS_ACTION_REQUEST)
public interface ActionRequest { public interface ActionRequest {


@DataField(order=1, list=true, primitiveType= ValueType.INT8)
@DataField(order=1, list=true, primitiveType= PrimitiveType.INT8)
byte[] getGroupId(); byte[] getGroupId();


@DataField(order=2, primitiveType=ValueType.TEXT)
@DataField(order=2, primitiveType=PrimitiveType.TEXT)
String getHandleType(); String getHandleType();


@DataField(order=3, primitiveType=ValueType.TEXT)
@DataField(order=3, primitiveType=PrimitiveType.TEXT)
String getHandleMethod(); String getHandleMethod();
// String getMessageType(); // String getMessageType();


@DataField(order=4, list=true, primitiveType= ValueType.INT8)
@DataField(order=4, list=true, primitiveType= PrimitiveType.INT8)
byte[] getMessageBody(); byte[] getMessageBody();


@DataField(order=5, primitiveType= ValueType.TEXT)
@DataField(order=5, primitiveType= PrimitiveType.TEXT)
String getTransactionType(); String getTransactionType();
// String getReponseType(); // String getReponseType();


+ 7
- 7
source/consensus/consensus-framework/src/main/java/com/jd/blockchain/consensus/action/ActionResponse.java View File

@@ -2,22 +2,22 @@ package com.jd.blockchain.consensus.action;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;


@DataContract(code= TypeCodes.CONSENSUS_ACTION_RESPONSE)
@DataContract(code= DataCodes.CONSENSUS_ACTION_RESPONSE)
public interface ActionResponse { public interface ActionResponse {


@DataField(order=1, list=true, primitiveType= ValueType.INT8)
@DataField(order=1, list=true, primitiveType= PrimitiveType.INT8)
byte[] getMessage(); byte[] getMessage();


@DataField(order=2, primitiveType=ValueType.BOOLEAN)
@DataField(order=2, primitiveType=PrimitiveType.BOOLEAN)
boolean getError(); boolean getError();


@DataField(order=3, primitiveType=ValueType.TEXT)
@DataField(order=3, primitiveType=PrimitiveType.TEXT)
String getErrorMessage(); String getErrorMessage();


@DataField(order=4, primitiveType=ValueType.TEXT)
@DataField(order=4, primitiveType=PrimitiveType.TEXT)
String getErrorType(); String getErrorType();


} }

+ 5
- 5
source/consensus/consensus-mq/src/main/java/com/jd/blockchain/consensus/mq/config/MsgQueueSettingsFactory.java View File

@@ -8,7 +8,7 @@
*/ */
package com.jd.blockchain.consensus.mq.config; package com.jd.blockchain.consensus.mq.config;


import com.jd.blockchain.binaryproto.BinaryEncodingUtils;
import com.jd.blockchain.binaryproto.BinaryProtocol;
import com.jd.blockchain.binaryproto.DataContractRegistry; import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.consensus.ClientIncomingSettings; import com.jd.blockchain.consensus.ClientIncomingSettings;
import com.jd.blockchain.consensus.ConsensusSettings; import com.jd.blockchain.consensus.ConsensusSettings;
@@ -75,14 +75,14 @@ public class MsgQueueSettingsFactory implements SettingsFactory {
@Override @Override
public byte[] encode(ConsensusSettings data) { public byte[] encode(ConsensusSettings data) {
if (data instanceof MsgQueueConsensusSettings) { if (data instanceof MsgQueueConsensusSettings) {
return BinaryEncodingUtils.encode(data, MsgQueueConsensusSettings.class);
return BinaryProtocol.encode(data, MsgQueueConsensusSettings.class);
} }
throw new IllegalArgumentException("Settings data isn't supported! Accept MsgQueueConsensusSettings only!"); throw new IllegalArgumentException("Settings data isn't supported! Accept MsgQueueConsensusSettings only!");
} }


@Override @Override
public MsgQueueConsensusSettings decode(byte[] bytes) { public MsgQueueConsensusSettings decode(byte[] bytes) {
return BinaryEncodingUtils.decodeAs(bytes, MsgQueueConsensusSettings.class);
return BinaryProtocol.decodeAs(bytes, MsgQueueConsensusSettings.class);
} }
} }


@@ -91,14 +91,14 @@ public class MsgQueueSettingsFactory implements SettingsFactory {
@Override @Override
public byte[] encode(ClientIncomingSettings data) { public byte[] encode(ClientIncomingSettings data) {
if (data instanceof MsgQueueClientIncomingSettings) { if (data instanceof MsgQueueClientIncomingSettings) {
return BinaryEncodingUtils.encode(data, MsgQueueClientIncomingSettings.class);
return BinaryProtocol.encode(data, MsgQueueClientIncomingSettings.class);
} }
throw new IllegalArgumentException("Settings data isn't supported! Accept MsgQueueClientIncomingSettings only!"); throw new IllegalArgumentException("Settings data isn't supported! Accept MsgQueueClientIncomingSettings only!");
} }


@Override @Override
public MsgQueueClientIncomingSettings decode(byte[] bytes) { public MsgQueueClientIncomingSettings decode(byte[] bytes) {
return BinaryEncodingUtils.decodeAs(bytes, MsgQueueClientIncomingSettings.class);
return BinaryProtocol.decodeAs(bytes, MsgQueueClientIncomingSettings.class);
} }


} }

+ 5
- 5
source/consensus/consensus-mq/src/main/java/com/jd/blockchain/consensus/mq/settings/MsgQueueBlockSettings.java View File

@@ -10,8 +10,8 @@ package com.jd.blockchain.consensus.mq.settings;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;


/** /**
* *
@@ -19,12 +19,12 @@ import com.jd.blockchain.utils.ValueType;
* @create 2018/12/13 * @create 2018/12/13
* @since 1.0.0 * @since 1.0.0
*/ */
@DataContract(code = TypeCodes.CONSENSUS_MSGQUEUE_BLOCK_SETTINGS)
@DataContract(code = DataCodes.CONSENSUS_MSGQUEUE_BLOCK_SETTINGS)
public interface MsgQueueBlockSettings { public interface MsgQueueBlockSettings {


@DataField(order = 0, primitiveType = ValueType.INT32)
@DataField(order = 0, primitiveType = PrimitiveType.INT32)
int getTxSizePerBlock(); int getTxSizePerBlock();


@DataField(order = 1, primitiveType = ValueType.INT64)
@DataField(order = 1, primitiveType = PrimitiveType.INT64)
long getMaxDelayMilliSecondsPerBlock(); long getMaxDelayMilliSecondsPerBlock();
} }

+ 4
- 4
source/consensus/consensus-mq/src/main/java/com/jd/blockchain/consensus/mq/settings/MsgQueueClientIncomingSettings.java View File

@@ -10,11 +10,11 @@ package com.jd.blockchain.consensus.mq.settings;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consensus.ClientIncomingSettings; import com.jd.blockchain.consensus.ClientIncomingSettings;
import com.jd.blockchain.consensus.ConsensusSettings; import com.jd.blockchain.consensus.ConsensusSettings;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.consts.DataCodes;
import com.jd.blockchain.crypto.PubKey; import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.utils.ValueType;


/** /**
* *
@@ -22,9 +22,9 @@ import com.jd.blockchain.utils.ValueType;
* @create 2018/12/13 * @create 2018/12/13
* @since 1.0.0 * @since 1.0.0
*/ */
@DataContract(code = TypeCodes.CONSENSUS_MSGQUEUE_CLI_INCOMING_SETTINGS)
@DataContract(code = DataCodes.CONSENSUS_MSGQUEUE_CLI_INCOMING_SETTINGS)
public interface MsgQueueClientIncomingSettings extends ClientIncomingSettings { public interface MsgQueueClientIncomingSettings extends ClientIncomingSettings {


@DataField(order = 1, primitiveType=ValueType.BYTES)
@DataField(order = 1, primitiveType=PrimitiveType.BYTES)
PubKey getPubKey(); PubKey getPubKey();
} }

+ 3
- 3
source/consensus/consensus-mq/src/main/java/com/jd/blockchain/consensus/mq/settings/MsgQueueConsensusSettings.java View File

@@ -10,11 +10,11 @@ package com.jd.blockchain.consensus.mq.settings;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consensus.ConsensusSettings; import com.jd.blockchain.consensus.ConsensusSettings;
import com.jd.blockchain.consensus.mq.config.MsgQueueBlockConfig; import com.jd.blockchain.consensus.mq.config.MsgQueueBlockConfig;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.consts.DataCodes;
import com.jd.blockchain.utils.Property; import com.jd.blockchain.utils.Property;
import com.jd.blockchain.utils.ValueType;


/** /**
* *
@@ -22,7 +22,7 @@ import com.jd.blockchain.utils.ValueType;
* @create 2018/12/13 * @create 2018/12/13
* @since 1.0.0 * @since 1.0.0
*/ */
@DataContract(code = TypeCodes.CONSENSUS_MSGQUEUE_SETTINGS)
@DataContract(code = DataCodes.CONSENSUS_MSGQUEUE_SETTINGS)
public interface MsgQueueConsensusSettings extends ConsensusSettings { public interface MsgQueueConsensusSettings extends ConsensusSettings {


@DataField(order = 0, refContract = true) @DataField(order = 0, refContract = true)


+ 7
- 7
source/consensus/consensus-mq/src/main/java/com/jd/blockchain/consensus/mq/settings/MsgQueueNetworkSettings.java View File

@@ -10,8 +10,8 @@ package com.jd.blockchain.consensus.mq.settings;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;


/** /**
* *
@@ -19,18 +19,18 @@ import com.jd.blockchain.utils.ValueType;
* @create 2018/12/12 * @create 2018/12/12
* @since 1.0.0 * @since 1.0.0
*/ */
@DataContract(code = TypeCodes.CONSENSUS_MSGQUEUE_NETWORK_SETTINGS)
@DataContract(code = DataCodes.CONSENSUS_MSGQUEUE_NETWORK_SETTINGS)
public interface MsgQueueNetworkSettings { public interface MsgQueueNetworkSettings {


@DataField(order = 0, primitiveType = ValueType.TEXT)
@DataField(order = 0, primitiveType = PrimitiveType.TEXT)
String getServer(); String getServer();


@DataField(order = 1, primitiveType = ValueType.TEXT)
@DataField(order = 1, primitiveType = PrimitiveType.TEXT)
String getTxTopic(); String getTxTopic();


@DataField(order = 2, primitiveType = ValueType.TEXT)
@DataField(order = 2, primitiveType = PrimitiveType.TEXT)
String getBlTopic(); String getBlTopic();


@DataField(order = 3, primitiveType = ValueType.TEXT)
@DataField(order = 3, primitiveType = PrimitiveType.TEXT)
String getMsgTopic(); String getMsgTopic();
} }

+ 2
- 2
source/consensus/consensus-mq/src/main/java/com/jd/blockchain/consensus/mq/settings/MsgQueueNodeSettings.java View File

@@ -10,7 +10,7 @@ package com.jd.blockchain.consensus.mq.settings;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.consensus.NodeSettings; import com.jd.blockchain.consensus.NodeSettings;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.consts.DataCodes;


/** /**
* *
@@ -19,7 +19,7 @@ import com.jd.blockchain.consts.TypeCodes;
* @since 1.0.0 * @since 1.0.0
*/ */


@DataContract(code=TypeCodes.CONSENSUS_MSGQUEUE_NODE_SETTINGS)
@DataContract(code=DataCodes.CONSENSUS_MSGQUEUE_NODE_SETTINGS)
public interface MsgQueueNodeSettings extends NodeSettings { public interface MsgQueueNodeSettings extends NodeSettings {


} }

+ 22
- 17
source/contract/README.MD View File

@@ -1,22 +1,27 @@
合约相关说明

1.编译合约入口:ContractCompilerCmdTest.java;
2.账本调用合约测试入口:ContractEventSendOperationHandleTest.java;
### 合约相关说明
1. 编译合约入口:ContractCompilerCmdTest.java;
2. 账本调用合约测试入口:ContractEventSendOperationHandleTest.java;


### 单元测试注意事项
使用ContractEventSendOperationHandleTest.java进行单元测试,注意事项: 使用ContractEventSendOperationHandleTest.java进行单元测试,注意事项:
1.设置合约使用PUB_CLASS_PATH、CORE_CLASS_PATH位置(sys-contract.properties);
1. 设置合约使用PUB_CLASS_PATH、CORE_CLASS_PATH位置(sys-contract.properties);
PUB包在根目录中的contract-libs文件夹;core包需要编译来生成。具体如下: PUB包在根目录中的contract-libs文件夹;core包需要编译来生成。具体如下:
1)进入contract-jar模块,执行maven命令:mvn clean assembly:assembly
2)生成的core包位于模块的target中的contract-jar-xxx所在的coreLib中;
3)将此coreLib目录作为CORE_CLASS_PATH指向的目录。
2.编译生成合约压缩包,即执行:ContractCompilerCmdTest.java对应的mainTestOk();
- 进入contract-jar模块,执行maven命令:
```
mvn clean assembly:assembly
```
- 生成的core包位于模块的target中的contract-jar-xxx所在的coreLib中;
- 将此coreLib目录作为CORE_CLASS_PATH指向的目录。
2. 编译生成合约压缩包,即执行:ContractCompilerCmdTest.java对应的mainTestOk();
在编译之前,修改sys-contract.properties文件的变量CONTRACT_FROM_PATH(合约源文件位置)、CONTRACT_SAVE_TO_PATH(合约保存位置)。 在编译之前,修改sys-contract.properties文件的变量CONTRACT_FROM_PATH(合约源文件位置)、CONTRACT_SAVE_TO_PATH(合约保存位置)。
3.在合约保存位置中可看到生成的压缩包:xxx.contract;然后执行 ContractEventSendOperationHandleTest.java测试用例test1()即可。

20180910版本改造
1.在contract-jar中添加了mvn assembly处理逻辑,将合约用到的lib包全部放置其target/xxx/pubLib文件夹中,执行:mvn clean assembly:assembly
2.修改了sys-contract.properties文件,新增了CONTRACT_CLASS_LIBS参数,将CONTRACT_CLASS_PATH专用于存储路径,CONTRACT_CLASS_LIBS来存放所有的jar包;
3.删减了contract-libs文件夹中需要动态生成的jar;


3. 在合约保存位置中可看到生成的压缩包:xxx.contract;然后执行 ContractEventSendOperationHandleTest.java测试用例test1()即可。


### 20180910版本改造
1. 在contract-jar中添加了mvn assembly处理逻辑,将合约用到的lib包全部放置其target/xxx/pubLib文件夹中,执行:
```
mvn clean assembly:assembly
```
2. 修改了sys-contract.properties文件,新增了CONTRACT_CLASS_LIBS参数;
- 将CONTRACT_CLASS_PATH专用于存储路径
- CONTRACT_CLASS_LIBS来存放所有的jar包
3. 删减了contract-libs文件夹中需要动态生成的jar。

+ 1
- 2
source/contract/contract-framework/pom.xml View File

@@ -12,7 +12,7 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.jd.blockchain</groupId> <groupId>com.jd.blockchain</groupId>
<artifactId>contract-model</artifactId>
<artifactId>ledger-model</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency> <dependency>
@@ -27,7 +27,6 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId> <artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration> <configuration>
<skip>true</skip> <skip>true</skip>
</configuration> </configuration>


+ 0
- 13
source/contract/contract-framework/src/main/java/com/jd/blockchain/contract/ContractCode.java View File

@@ -1,13 +0,0 @@
package com.jd.blockchain.contract;

import com.jd.blockchain.contract.model.ContractEventContext;

public interface ContractCode {

String getAddress();
long getVersion();

void processEvent(ContractEventContext eventContext);

}

+ 14
- 0
source/contract/contract-framework/src/main/java/com/jd/blockchain/contract/engine/ContractCode.java View File

@@ -0,0 +1,14 @@
package com.jd.blockchain.contract.engine;

import com.jd.blockchain.contract.ContractEventContext;
import com.jd.blockchain.utils.Bytes;

public interface ContractCode {

Bytes getAddress();
long getVersion();

void processEvent(ContractEventContext eventContext);

}

source/contract/contract-framework/src/main/java/com/jd/blockchain/contract/ContractEngine.java → source/contract/contract-framework/src/main/java/com/jd/blockchain/contract/engine/ContractEngine.java View File

@@ -1,4 +1,6 @@
package com.jd.blockchain.contract;
package com.jd.blockchain.contract.engine;

import com.jd.blockchain.utils.Bytes;


/** /**
* 合约引擎; * 合约引擎;
@@ -16,7 +18,7 @@ public interface ContractEngine {
* @param address * @param address
* @return * @return
*/ */
ContractCode getContract(String address, long version);
ContractCode getContract(Bytes address, long version);


/** /**
* 装入合约代码;<br> * 装入合约代码;<br>
@@ -27,6 +29,6 @@ public interface ContractEngine {
* @param code * @param code
* @return * @return
*/ */
ContractCode setupContract(String address, long version, byte[] code);
ContractCode setupContract(Bytes address, long version, byte[] code);


} }

source/contract/contract-framework/src/main/java/com/jd/blockchain/contract/ContractServiceProvider.java → source/contract/contract-framework/src/main/java/com/jd/blockchain/contract/engine/ContractServiceProvider.java View File

@@ -1,4 +1,4 @@
package com.jd.blockchain.contract;
package com.jd.blockchain.contract.engine;


public interface ContractServiceProvider { public interface ContractServiceProvider {



source/contract/contract-framework/src/main/java/com/jd/blockchain/contract/ContractServiceProviders.java → source/contract/contract-framework/src/main/java/com/jd/blockchain/contract/engine/ContractServiceProviders.java View File

@@ -1,4 +1,4 @@
package com.jd.blockchain.contract;
package com.jd.blockchain.contract.engine;


import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;

+ 7
- 7
source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JVMContractEngine.java View File

@@ -1,21 +1,21 @@
package com.jd.blockchain.contract.jvm; package com.jd.blockchain.contract.jvm;


import com.jd.blockchain.contract.ContractCode;
import com.jd.blockchain.contract.ContractEngine;
import com.jd.blockchain.contract.engine.ContractCode;
import com.jd.blockchain.contract.engine.ContractEngine;
import com.jd.blockchain.runtime.Module; import com.jd.blockchain.runtime.Module;
import com.jd.blockchain.runtime.RuntimeContext; import com.jd.blockchain.runtime.RuntimeContext;
import com.jd.blockchain.utils.Bytes;


public class JVMContractEngine implements ContractEngine { public class JVMContractEngine implements ContractEngine {


private RuntimeContext runtimeContext = RuntimeContext.get(); private RuntimeContext runtimeContext = RuntimeContext.get();
// private RuntimeContext runtimeContext = ModularRuntimeContext.setup(System.getProperty("user.dir"));
private String getCodeName(String address, long version) {
return address + "_" + version;
private String getCodeName(Bytes address, long version) {
return address.toBase58() + "_" + version;
} }
@Override @Override
public ContractCode getContract(String address, long version) {
public ContractCode getContract(Bytes address, long version) {
String codeName = getCodeName(address, version); String codeName = getCodeName(address, version);
Module module = runtimeContext.getDynamicModule(codeName); Module module = runtimeContext.getDynamicModule(codeName);
if (module == null) { if (module == null) {
@@ -25,7 +25,7 @@ public class JVMContractEngine implements ContractEngine {
} }


@Override @Override
public ContractCode setupContract(String address, long version, byte[] code) {
public ContractCode setupContract(Bytes address, long version, byte[] code) {
//is there the contractCode before setup? if yes ,then return; //is there the contractCode before setup? if yes ,then return;
ContractCode contractCode = getContract(address,version); ContractCode contractCode = getContract(address,version);
if(contractCode != null){ if(contractCode != null){


+ 2
- 2
source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JVMContractServiceProvider.java View File

@@ -1,7 +1,7 @@
package com.jd.blockchain.contract.jvm; package com.jd.blockchain.contract.jvm;


import com.jd.blockchain.contract.ContractEngine;
import com.jd.blockchain.contract.ContractServiceProvider;
import com.jd.blockchain.contract.engine.ContractEngine;
import com.jd.blockchain.contract.engine.ContractServiceProvider;


public class JVMContractServiceProvider implements ContractServiceProvider { public class JVMContractServiceProvider implements ContractServiceProvider {
@Override @Override


+ 13
- 15
source/contract/contract-jvm/src/main/java/com/jd/blockchain/contract/jvm/JavaContractCode.java View File

@@ -1,22 +1,20 @@
package com.jd.blockchain.contract.jvm; package com.jd.blockchain.contract.jvm;


import com.jd.blockchain.contract.ContractCode;
import com.jd.blockchain.contract.model.ContractEvent;
import com.jd.blockchain.contract.model.ContractEventContext;
import com.jd.blockchain.runtime.Module;
import com.jd.blockchain.utils.BaseConstant;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;


import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils;


import static com.jd.blockchain.utils.BaseConstant.CONTRACT_MAIN_CLASS_KEY;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import com.jd.blockchain.contract.ContractEvent;
import com.jd.blockchain.contract.ContractEventContext;
import com.jd.blockchain.contract.engine.ContractCode;
import com.jd.blockchain.runtime.Module;
import com.jd.blockchain.utils.BaseConstant;
import com.jd.blockchain.utils.Bytes;


/** /**
* contract code based jvm * contract code based jvm
@@ -25,18 +23,18 @@ import java.util.Properties;
public class JavaContractCode implements ContractCode { public class JavaContractCode implements ContractCode {
private static final Logger LOGGER = LoggerFactory.getLogger(JavaContractCode.class); private static final Logger LOGGER = LoggerFactory.getLogger(JavaContractCode.class);
private Module codeModule; private Module codeModule;
private String address;
private Bytes address;
private long version; private long version;
private ContractEventContext contractEventContext; private ContractEventContext contractEventContext;
public JavaContractCode(String address, long version, Module codeModule) {
public JavaContractCode(Bytes address, long version, Module codeModule) {
this.address = address; this.address = address;
this.version = version; this.version = version;
this.codeModule = codeModule; this.codeModule = codeModule;
} }


@Override @Override
public String getAddress() {
public Bytes getAddress() {
return address; return address;
} }


+ 38
- 36
source/contract/contract-maven-plugin/pom.xml View File

@@ -9,32 +9,33 @@
</parent> </parent>
<artifactId>contract-maven-plugin</artifactId> <artifactId>contract-maven-plugin</artifactId>
<packaging>maven-plugin</packaging> <packaging>maven-plugin</packaging>
<properties>
<contract.version>${parent.version}</contract.version>
<utils.version>${parent.version}</utils.version>
<junit.version>4.12</junit.version>
</properties>


<version>0.9.0-SNAPSHOT</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
<groupId>com.jd.blockchain</groupId>
<artifactId>ledger-model</artifactId>
<version>${project.version}</version>
</dependency> </dependency>


<dependency> <dependency>
<groupId>com.jd.blockchain</groupId> <groupId>com.jd.blockchain</groupId>
<artifactId>contract-model</artifactId>
<version>${contract.version}</version>
<artifactId>utils-common</artifactId>
<version>${project.version}</version>
</dependency> </dependency>


<dependency> <dependency>
<groupId>com.jd.blockchain</groupId> <groupId>com.jd.blockchain</groupId>
<artifactId>utils-common</artifactId>
<version>${utils.version}</version>
<artifactId>sdk-client</artifactId>
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>com.jd.blockchain</groupId>
<artifactId>tools-keygen</artifactId>
<version>${project.version}</version>
</dependency> </dependency>



<!-- https://mvnrepository.com/artifact/org.apache.maven.plugin-tools/maven-plugin-annotations --> <!-- https://mvnrepository.com/artifact/org.apache.maven.plugin-tools/maven-plugin-annotations -->
<dependency> <dependency>
<groupId>org.apache.maven.plugin-tools</groupId> <groupId>org.apache.maven.plugin-tools</groupId>
@@ -83,29 +84,30 @@
<showWarnings>false</showWarnings> <showWarnings>false</showWarnings>
</configuration> </configuration>
</plugin> </plugin>
<!--<plugin>-->
<!--<artifactId>maven-assembly-plugin</artifactId>-->
<!--<configuration>-->
<!--<archive>-->
<!--<manifest>-->
<!--&lt;!&ndash;这里要替换成jar包main方法所在类 &ndash;&gt;-->
<!--<mainClass>com.jd.blockchain.ContractDeployMojo</mainClass>-->
<!--</manifest>-->
<!--</archive>-->
<!--<descriptorRefs>-->
<!--<descriptojar-rRef>jar-with-dependencies</descriptojar-rRef>-->
<!--</descriptorRefs>-->
<!--</configuration>-->
<!--<executions>-->
<!--<execution>-->
<!--<id>make-assembly</id> &lt;!&ndash; this is used for inheritance merges &ndash;&gt;-->
<!--<phase>package</phase> &lt;!&ndash; 指定在打包节点执行jar包合并操作 &ndash;&gt;-->
<!--<goals>-->
<!--<goal>single</goal>-->
<!--</goals>-->
<!--</execution>-->
<!--</executions>-->
<!--</plugin>-->
<!--<plugin> -->
<!--<artifactId>maven-assembly-plugin</artifactId> -->
<!--<configuration> -->
<!--<archive> -->
<!--<manifest> -->
<!--&lt;!&ndash;这里要替换成jar包main方法所在类 &ndash;&gt; -->
<!--<mainClass>com.jd.blockchain.ContractDeployMojo</mainClass> -->
<!--</manifest> -->
<!--</archive> -->
<!--<descriptorRefs> -->
<!--<descriptojar-rRef>jar-with-dependencies</descriptojar-rRef> -->
<!--</descriptorRefs> -->
<!--</configuration> -->
<!--<executions> -->
<!--<execution> -->
<!--<id>make-assembly</id> &lt;!&ndash; this is used for inheritance merges
&ndash;&gt; -->
<!--<phase>package</phase> &lt;!&ndash; 指定在打包节点执行jar包合并操作 &ndash;&gt; -->
<!--<goals> -->
<!--<goal>single</goal> -->
<!--</goals> -->
<!--</execution> -->
<!--</executions> -->
<!--</plugin> -->


<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>


source/contract/contract-model/src/main/java/com/jd/blockchain/contract/model/ContractDeployExeUtil.java → source/contract/contract-maven-plugin/src/main/java/com/jd/blockchain/ContractDeployExeUtil.java View File

@@ -1,4 +1,4 @@
package com.jd.blockchain.contract.model;
package com.jd.blockchain;


import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@@ -160,25 +160,28 @@ public enum ContractDeployExeUtil {
return deploy(ledgerHash, contractIdentity, ownerKey, chainCode); return deploy(ledgerHash, contractIdentity, ownerKey, chainCode);
} }


public boolean exeContract(String ledger,String ownerPubPath, String ownerPrvPath,
String ownerPassword,String event,String contractArgs){
BlockchainKeypair ownerKey = getKeyPair(ownerPubPath, ownerPrvPath, ownerPassword);
HashDigest ledgerHash = new HashDigest(Base58Utils.decode(ledger));

// 定义交易,传输最简单的数字、字符串、提取合约中的地址;
TransactionTemplate txTpl = bcsrv.newTransaction(ledgerHash);
txTpl.contractEvents().send(getContractAddress(),event,contractArgs.getBytes());

// 签名;
PreparedTransaction ptx = txTpl.prepare();
ptx.sign(ownerKey);

// 提交并等待共识返回;
TransactionResponse txResp = ptx.commit();

// 验证结果;
return txResp.isSuccess();
}
// 暂不支持从插件执行合约;此外,由于合约参数调用的格式发生变化,故此方法被废弃;by: huanghaiquan at 2019-04-30;
// public boolean exeContract(String ledger,String ownerPubPath, String ownerPrvPath,
// String ownerPassword,String event,String contractArgs){
// BlockchainKeypair ownerKey = getKeyPair(ownerPubPath, ownerPrvPath, ownerPassword);
// HashDigest ledgerHash = new HashDigest(Base58Utils.decode(ledger));
//
// // 定义交易,传输最简单的数字、字符串、提取合约中的地址;
// TransactionTemplate txTpl = bcsrv.newTransaction(ledgerHash);
// txTpl.contractEvents().send(getContractAddress(),event,contractArgs.getBytes());
//
// // 签名;
// PreparedTransaction ptx = txTpl.prepare();
// ptx.sign(ownerKey);
//
// // 提交并等待共识返回;
// TransactionResponse txResp = ptx.commit();
//
// // 验证结果;
// return txResp.isSuccess();
// }


public Bytes getContractAddress() { public Bytes getContractAddress() {
return contractAddress; return contractAddress;

+ 0
- 1
source/contract/contract-maven-plugin/src/main/java/com/jd/blockchain/ContractDeployMojo.java View File

@@ -1,6 +1,5 @@
package com.jd.blockchain; package com.jd.blockchain;


import com.jd.blockchain.contract.model.ContractDeployExeUtil;
import com.jd.blockchain.crypto.HashDigest; import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.crypto.PrivKey; import com.jd.blockchain.crypto.PrivKey;
import com.jd.blockchain.crypto.PubKey; import com.jd.blockchain.crypto.PubKey;


+ 0
- 37
source/contract/contract-model/pom.xml View File

@@ -1,37 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jd.blockchain</groupId>
<artifactId>contract</artifactId>
<version>0.9.0-SNAPSHOT</version>
</parent>
<artifactId>contract-model</artifactId>

<dependencies>
<dependency>
<groupId>com.jd.blockchain</groupId>
<artifactId>sdk-client</artifactId>
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>com.jd.blockchain</groupId>
<artifactId>tools-keygen</artifactId>
<version>${project.version}</version>
<exclusions>
<exclusion>
<artifactId>crypto-framework</artifactId>
<groupId>com.jd.blockchain</groupId>
</exclusion>
</exclusions>
</dependency>

<!--<dependency>-->
<!--<groupId>com.jd.blockchain</groupId>-->
<!--<artifactId>tools-initializer</artifactId>-->
<!--<version>${project.version}</version>-->
<!--</dependency>-->
</dependencies>
</project>

+ 0
- 11
source/contract/contract-model/src/main/java/com/jd/blockchain/contract/model/LedgerContext.java View File

@@ -1,11 +0,0 @@
package com.jd.blockchain.contract.model;

import com.jd.blockchain.ledger.data.DataAccountOperator;
import com.jd.blockchain.ledger.data.UserOperator;
import com.jd.blockchain.sdk.BlockchainQueryService;

public interface LedgerContext extends BlockchainQueryService, UserOperator, DataAccountOperator{
}

+ 0
- 7
source/contract/contract-model/src/main/resources/sys-contract.properties View File

@@ -1,7 +0,0 @@
#项目源文件存放的位置;
PROJECT_BASE_DIR=e:\\gitCode\\block\\prototype\\
#合同使用的类库存放的位置,可能不在项目中,故采用全新的地址;
LEDGER_BASE_CLASS_PATH=e:\\gitCode\\block\\prototype\\libs\\
BLACKLIST=java.io;java.net;java.util.Random
#type:public,private
CONTRACT_CLASSLOADER_TYPE=private

+ 0
- 1
source/contract/pom.xml View File

@@ -10,7 +10,6 @@
<packaging>pom</packaging> <packaging>pom</packaging>
<modules> <modules>
<module>contract-model</module>
<module>contract-framework</module> <module>contract-framework</module>
<module>contract-jvm</module> <module>contract-jvm</module>
<module>contract-maven-plugin</module> <module>contract-maven-plugin</module>


+ 4
- 4
source/crypto/crypto-framework/src/main/java/com/jd/blockchain/crypto/CryptoAlgorithm.java View File

@@ -5,11 +5,11 @@ import java.io.OutputStream;


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;
import com.jd.blockchain.utils.io.BytesUtils; import com.jd.blockchain.utils.io.BytesUtils;


@DataContract(code = TypeCodes.CRYPTO_ALGORITHM)
@DataContract(code = DataCodes.CRYPTO_ALGORITHM)
public interface CryptoAlgorithm { public interface CryptoAlgorithm {


/** /**
@@ -63,7 +63,7 @@ public interface CryptoAlgorithm {
* {@link #EXT_ALGORITHM}) 5 种); 接下来4位标识密钥类型(包括:{@link #SYMMETRIC_KEY}, * {@link #EXT_ALGORITHM}) 5 种); 接下来4位标识密钥类型(包括:{@link #SYMMETRIC_KEY},
* {@link #ASYMMETRIC_KEY}); 最后8位是算法唯一ID; * {@link #ASYMMETRIC_KEY}); 最后8位是算法唯一ID;
*/ */
@DataField(primitiveType = ValueType.INT16, order = 0)
@DataField(primitiveType = PrimitiveType.INT16, order = 0)
short code(); short code();


/** /**


+ 2
- 2
source/gateway/src/main/java/com/jd/blockchain/gateway/PeerService.java View File

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


import com.jd.blockchain.ledger.data.TransactionService;
import com.jd.blockchain.sdk.BlockchainQueryService;
import com.jd.blockchain.transaction.BlockchainQueryService;
import com.jd.blockchain.transaction.TransactionService;


public interface PeerService { public interface PeerService {


+ 2
- 2
source/gateway/src/main/java/com/jd/blockchain/gateway/service/PeerConnectionManager.java View File

@@ -7,9 +7,9 @@ import org.springframework.stereotype.Component;
import com.jd.blockchain.crypto.AsymmetricKeypair; import com.jd.blockchain.crypto.AsymmetricKeypair;
import com.jd.blockchain.gateway.PeerConnector; import com.jd.blockchain.gateway.PeerConnector;
import com.jd.blockchain.gateway.PeerService; import com.jd.blockchain.gateway.PeerService;
import com.jd.blockchain.ledger.data.TransactionService;
import com.jd.blockchain.sdk.BlockchainQueryService;
import com.jd.blockchain.sdk.service.PeerBlockchainServiceFactory; import com.jd.blockchain.sdk.service.PeerBlockchainServiceFactory;
import com.jd.blockchain.transaction.BlockchainQueryService;
import com.jd.blockchain.transaction.TransactionService;
import com.jd.blockchain.utils.net.NetworkAddress; import com.jd.blockchain.utils.net.NetworkAddress;


import java.util.List; import java.util.List;


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

@@ -7,7 +7,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;


import com.jd.blockchain.binaryproto.BinaryEncodingUtils;
import com.jd.blockchain.binaryproto.BinaryProtocol;
import com.jd.blockchain.crypto.Crypto; import com.jd.blockchain.crypto.Crypto;
import com.jd.blockchain.crypto.HashDigest; import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.crypto.SignatureFunction; import com.jd.blockchain.crypto.SignatureFunction;
@@ -16,7 +16,7 @@ import com.jd.blockchain.ledger.DigitalSignature;
import com.jd.blockchain.ledger.TransactionContent; import com.jd.blockchain.ledger.TransactionContent;
import com.jd.blockchain.ledger.TransactionRequest; import com.jd.blockchain.ledger.TransactionRequest;
import com.jd.blockchain.ledger.TransactionResponse; import com.jd.blockchain.ledger.TransactionResponse;
import com.jd.blockchain.ledger.data.TransactionService;
import com.jd.blockchain.transaction.TransactionService;
import com.jd.blockchain.utils.BusinessException; import com.jd.blockchain.utils.BusinessException;
import com.jd.blockchain.web.converters.BinaryMessageConverter; import com.jd.blockchain.web.converters.BinaryMessageConverter;


@@ -53,7 +53,7 @@ public class TxProcessingController implements TransactionService {
throw new IllegalStateException("Not implemented!"); throw new IllegalStateException("Not implemented!");
} else { } else {
// 验证签名; // 验证签名;
byte[] content = BinaryEncodingUtils.encode(txRequest.getTransactionContent(), TransactionContent.class);
byte[] content = BinaryProtocol.encode(txRequest.getTransactionContent(), TransactionContent.class);
for (DigitalSignature sign : partiSigns) { for (DigitalSignature sign : partiSigns) {
SignatureFunction signFunc = Crypto SignatureFunction signFunc = Crypto
.getSignatureFunction(sign.getPubKey().getAlgorithm()); .getSignatureFunction(sign.getPubKey().getAlgorithm());


+ 4
- 4
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/AccountSet.java View File

@@ -3,7 +3,7 @@ package com.jd.blockchain.ledger.core;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.jd.blockchain.binaryproto.BinaryEncodingUtils;
import com.jd.blockchain.binaryproto.BinaryProtocol;
import com.jd.blockchain.binaryproto.DataContractRegistry; import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.crypto.AddressEncoding; import com.jd.blockchain.crypto.AddressEncoding;
import com.jd.blockchain.crypto.HashDigest; import com.jd.blockchain.crypto.HashDigest;
@@ -99,7 +99,7 @@ public class AccountSet implements Transactional, MerkleProvable {
// } // }
private AccountHeader deserialize(byte[] txBytes) { private AccountHeader deserialize(byte[] txBytes) {
return BinaryEncodingUtils.decode(txBytes);
return BinaryProtocol.decode(txBytes);
} }
/** /**
@@ -289,13 +289,13 @@ public class AccountSet implements Transactional, MerkleProvable {
private VersioningAccount deserialize(byte[] bytes, CryptoSetting cryptoSetting, String keyPrefix, private VersioningAccount deserialize(byte[] bytes, CryptoSetting cryptoSetting, String keyPrefix,
ExPolicyKVStorage exStorage, VersioningKVStorage verStorage, boolean readonly, long version) { ExPolicyKVStorage exStorage, VersioningKVStorage verStorage, boolean readonly, long version) {
AccountHeader accInfo = BinaryEncodingUtils.decode(bytes);
AccountHeader accInfo = BinaryProtocol.decode(bytes);
return new VersioningAccount(accInfo.getAddress(), accInfo.getPubKey(), accInfo.getRootHash(), cryptoSetting, return new VersioningAccount(accInfo.getAddress(), accInfo.getPubKey(), accInfo.getRootHash(), cryptoSetting,
keyPrefix, exStorage, verStorage, readonly, accessPolicy, version); keyPrefix, exStorage, verStorage, readonly, accessPolicy, version);
} }
private byte[] serialize(AccountHeader account) { private byte[] serialize(AccountHeader account) {
return BinaryEncodingUtils.encode(account, AccountHeader.class);
return BinaryProtocol.encode(account, AccountHeader.class);
} }
@Override @Override


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

@@ -8,11 +8,8 @@ import com.jd.blockchain.utils.io.BytesUtils;
public class ContractAccount implements AccountHeader { public class ContractAccount implements AccountHeader {
// private static final String CONTRACT_INFO_PREFIX = "INFO" +
// LedgerConsts.KEY_SEPERATOR;
private static final Bytes CONTRACT_INFO_PREFIX = Bytes.fromString("INFO" + LedgerConsts.KEY_SEPERATOR); private static final Bytes CONTRACT_INFO_PREFIX = Bytes.fromString("INFO" + LedgerConsts.KEY_SEPERATOR);
// private static final String CHAIN_CODE_KEY = "CHAIN-CODE";
private static final Bytes CHAIN_CODE_KEY = Bytes.fromString("CHAIN-CODE"); private static final Bytes CHAIN_CODE_KEY = Bytes.fromString("CHAIN-CODE");
private BaseAccount accBase; private BaseAccount accBase;
@@ -74,7 +71,6 @@ public class ContractAccount implements AccountHeader {
private Bytes encodePropertyKey(Bytes key) { private Bytes encodePropertyKey(Bytes key) {
return CONTRACT_INFO_PREFIX.concat(key); return CONTRACT_INFO_PREFIX.concat(key);
// return key.concatTo(CONTRACT_INFO_PREFIX);
} }
} }

+ 4
- 4
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DataAccount.java View File

@@ -1,6 +1,7 @@
package com.jd.blockchain.ledger.core; package com.jd.blockchain.ledger.core;
import com.jd.blockchain.binaryproto.BinaryEncodingUtils;
import com.jd.blockchain.binaryproto.BinaryProtocol;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.crypto.HashDigest; import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.crypto.PubKey; import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.ledger.AccountHeader; import com.jd.blockchain.ledger.AccountHeader;
@@ -8,7 +9,6 @@ import com.jd.blockchain.ledger.BytesValue;
import com.jd.blockchain.ledger.KVDataEntry; import com.jd.blockchain.ledger.KVDataEntry;
import com.jd.blockchain.ledger.KVDataObject; import com.jd.blockchain.ledger.KVDataObject;
import com.jd.blockchain.utils.Bytes; import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.ValueType;
import com.jd.blockchain.utils.serialize.binary.BinarySerializeUtils; import com.jd.blockchain.utils.serialize.binary.BinarySerializeUtils;
public class DataAccount implements AccountHeader, MerkleProvable { public class DataAccount implements AccountHeader, MerkleProvable {
@@ -141,8 +141,8 @@ public class DataAccount implements AccountHeader, MerkleProvable {
value = baseAccount.dataset.getValuesAtIndex(fromIndex); value = baseAccount.dataset.getValuesAtIndex(fromIndex);
key = baseAccount.dataset.getKeyAtIndex(fromIndex); key = baseAccount.dataset.getKeyAtIndex(fromIndex);
ver = baseAccount.dataset.getVersion(key); ver = baseAccount.dataset.getVersion(key);
BytesValue decodeData = BinaryEncodingUtils.decode(value);
kvDataEntries[i] = new KVDataObject(key, ver, ValueType.valueOf(decodeData.getType().CODE), decodeData.getValue().toBytes());
BytesValue decodeData = BinaryProtocol.decode(value);
kvDataEntries[i] = new KVDataObject(key, ver, PrimitiveType.valueOf(decodeData.getType().CODE), decodeData.getValue().toBytes());
fromIndex++; fromIndex++;
} }


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

@@ -3,7 +3,7 @@ package com.jd.blockchain.ledger.core;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.jd.blockchain.binaryproto.BinaryEncodingUtils;
import com.jd.blockchain.binaryproto.BinaryProtocol;
import com.jd.blockchain.binaryproto.DataContractRegistry; import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.crypto.Crypto; import com.jd.blockchain.crypto.Crypto;
import com.jd.blockchain.crypto.HashDigest; import com.jd.blockchain.crypto.HashDigest;
@@ -288,11 +288,11 @@ public class LedgerAdminAccount implements Transactional, LedgerAdministration {
} }
private LedgerMetadata deserializeMetadata(byte[] bytes) { private LedgerMetadata deserializeMetadata(byte[] bytes) {
return BinaryEncodingUtils.decode(bytes);
return BinaryProtocol.decode(bytes);
} }
private byte[] serializeMetadata(LedgerMetadataImpl config) { private byte[] serializeMetadata(LedgerMetadataImpl config) {
return BinaryEncodingUtils.encode(config, LedgerMetadata.class);
return BinaryProtocol.encode(config, LedgerMetadata.class);
} }
@Override @Override


+ 6
- 6
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitDecision.java View File

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


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;
import com.jd.blockchain.crypto.HashDigest; import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.crypto.SignatureDigest; import com.jd.blockchain.crypto.SignatureDigest;
import com.jd.blockchain.utils.ValueType;


/** /**
* 账本初始化决定; * 账本初始化决定;
@@ -13,7 +13,7 @@ import com.jd.blockchain.utils.ValueType;
* @author huanghaiquan * @author huanghaiquan
* *
*/ */
@DataContract(code = TypeCodes.METADATA_INIT_DECISION)
@DataContract(code = DataCodes.METADATA_INIT_DECISION)
public interface LedgerInitDecision { public interface LedgerInitDecision {


/** /**
@@ -21,14 +21,14 @@ public interface LedgerInitDecision {
* *
* @return * @return
*/ */
@DataField(order=1, primitiveType=ValueType.INT32)
@DataField(order=1, primitiveType=PrimitiveType.INT32)
int getParticipantId(); int getParticipantId();
/** /**
* 新建账本的哈希; * 新建账本的哈希;
* @return * @return
*/ */
@DataField(order=2, primitiveType = ValueType.BYTES)
@DataField(order=2, primitiveType = PrimitiveType.BYTES)
HashDigest getLedgerHash(); HashDigest getLedgerHash();


/** /**
@@ -40,7 +40,7 @@ public interface LedgerInitDecision {
* *
* @return * @return
*/ */
@DataField(order=3, primitiveType = ValueType.BYTES)
@DataField(order=3, primitiveType = PrimitiveType.BYTES)
SignatureDigest getSignature(); SignatureDigest getSignature();


} }

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

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


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;
import com.jd.blockchain.crypto.SignatureDigest; import com.jd.blockchain.crypto.SignatureDigest;
import com.jd.blockchain.ledger.LedgerInitOperation; import com.jd.blockchain.ledger.LedgerInitOperation;
import com.jd.blockchain.utils.ValueType;


/** /**
* 账本初始化许可; * 账本初始化许可;
@@ -13,7 +13,7 @@ import com.jd.blockchain.utils.ValueType;
* @author huanghaiquan * @author huanghaiquan
* *
*/ */
@DataContract(code = TypeCodes.METADATA_INIT_PERMISSION)
@DataContract(code = DataCodes.METADATA_INIT_PERMISSION)
public interface LedgerInitPermission { public interface LedgerInitPermission {


/** /**
@@ -21,7 +21,7 @@ public interface LedgerInitPermission {
* *
* @return * @return
*/ */
@DataField(order = 1, primitiveType = ValueType.INT32)
@DataField(order = 1, primitiveType = PrimitiveType.INT32)
int getParticipantId(); int getParticipantId();


/** /**
@@ -39,7 +39,7 @@ public interface LedgerInitPermission {
* *
* @return * @return
*/ */
@DataField(order = 2, primitiveType = ValueType.BYTES)
@DataField(order = 2, primitiveType = PrimitiveType.BYTES)
SignatureDigest getTransactionSignature(); SignatureDigest getTransactionSignature();


} }

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

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


import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;
import com.jd.blockchain.crypto.HashDigest; import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.utils.ValueType;


@DataContract(code = TypeCodes.METADATA)
@DataContract(code = DataCodes.METADATA)
public interface LedgerMetadata { public interface LedgerMetadata {


/** /**
@@ -14,7 +14,7 @@ public interface LedgerMetadata {
* *
* @return * @return
*/ */
@DataField(order = 1, primitiveType = ValueType.BYTES)
@DataField(order = 1, primitiveType = PrimitiveType.BYTES)
byte[] getSeed(); byte[] getSeed();


/** /**
@@ -22,7 +22,7 @@ public interface LedgerMetadata {
* *
* @return * @return
*/ */
@DataField(order = 2, primitiveType = ValueType.BYTES)
@DataField(order = 2, primitiveType = PrimitiveType.BYTES)
HashDigest getParticipantsHash(); HashDigest getParticipantsHash();


/** /**


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

@@ -2,18 +2,18 @@ package com.jd.blockchain.ledger.core;
import com.jd.blockchain.binaryproto.DataContract; import com.jd.blockchain.binaryproto.DataContract;
import com.jd.blockchain.binaryproto.DataField; import com.jd.blockchain.binaryproto.DataField;
import com.jd.blockchain.consts.TypeCodes;
import com.jd.blockchain.binaryproto.PrimitiveType;
import com.jd.blockchain.consts.DataCodes;
import com.jd.blockchain.ledger.CryptoSetting; import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.utils.Bytes; import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.ValueType;
@DataContract(code = TypeCodes.METADATA_LEDGER_SETTING)
@DataContract(code = DataCodes.METADATA_LEDGER_SETTING)
public interface LedgerSetting { public interface LedgerSetting {
@DataField(order=0, primitiveType=ValueType.TEXT)
@DataField(order=0, primitiveType=PrimitiveType.TEXT)
String getConsensusProvider(); String getConsensusProvider();
@DataField(order=1, primitiveType=ValueType.BYTES)
@DataField(order=1, primitiveType=PrimitiveType.BYTES)
Bytes getConsensusSetting(); Bytes getConsensusSetting();
@DataField(order=2, refContract=true) @DataField(order=2, refContract=true)


+ 4
- 4
source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ParticipantDataSet.java View File

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


import com.jd.blockchain.binaryproto.BinaryEncodingUtils;
import com.jd.blockchain.binaryproto.BinaryProtocol;
import com.jd.blockchain.binaryproto.DataContractRegistry; import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.crypto.HashDigest; import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.ledger.ParticipantNode; import com.jd.blockchain.ledger.ParticipantNode;
@@ -65,7 +65,7 @@ public class ParticipantDataSet implements Transactional, MerkleProvable {
*/ */
public void addConsensusParticipant(ParticipantNode participant) { public void addConsensusParticipant(ParticipantNode participant) {
Bytes key = encodeKey(participant.getAddress()); Bytes key = encodeKey(participant.getAddress());
byte[] participantBytes = BinaryEncodingUtils.encode(participant, ParticipantNode.class);
byte[] participantBytes = BinaryProtocol.encode(participant, ParticipantNode.class);
long nv = dataset.setValue(key, participantBytes, -1); long nv = dataset.setValue(key, participantBytes, -1);
if (nv < 0) { if (nv < 0) {
throw new LedgerException("Participant already exist! --[id=" + key + "]"); throw new LedgerException("Participant already exist! --[id=" + key + "]");
@@ -92,7 +92,7 @@ public class ParticipantDataSet implements Transactional, MerkleProvable {
if (bytes == null) { if (bytes == null) {
return null; return null;
} }
return BinaryEncodingUtils.decode(bytes);
return BinaryProtocol.decode(bytes);
} }
public ParticipantNode[] getParticipants() { public ParticipantNode[] getParticipants() {
@@ -100,7 +100,7 @@ public class ParticipantDataSet implements Transactional, MerkleProvable {
ParticipantNode[] pns = new ParticipantNode[bytes.length]; ParticipantNode[] pns = new ParticipantNode[bytes.length];
for (int i = 0; i < pns.length; i++) { for (int i = 0; i < pns.length; i++) {
pns[i] = BinaryEncodingUtils.decode(bytes[i]);
pns[i] = BinaryProtocol.decode(bytes[i]);
} }
return pns; return pns;
} }


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save