diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DefaultOperationHandleRegisteration.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DefaultOperationHandleRegisteration.java
index 6dd34e0a..5e156ec3 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DefaultOperationHandleRegisteration.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DefaultOperationHandleRegisteration.java
@@ -6,18 +6,11 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import com.jd.blockchain.ledger.core.handles.*;
import org.springframework.stereotype.Component;
import com.jd.blockchain.ledger.LedgerException;
import com.jd.blockchain.ledger.Operation;
-import com.jd.blockchain.ledger.core.handles.ContractCodeDeployOperationHandle;
-import com.jd.blockchain.ledger.core.handles.DataAccountKVSetOperationHandle;
-import com.jd.blockchain.ledger.core.handles.DataAccountRegisterOperationHandle;
-import com.jd.blockchain.ledger.core.handles.JVMContractEventSendOperationHandle;
-import com.jd.blockchain.ledger.core.handles.LedgerInitOperationHandle;
-import com.jd.blockchain.ledger.core.handles.RolesConfigureOperationHandle;
-import com.jd.blockchain.ledger.core.handles.UserAuthorizeOperationHandle;
-import com.jd.blockchain.ledger.core.handles.UserRegisterOperationHandle;
import com.jd.blockchain.transaction.ContractCodeDeployOpTemplate;
import com.jd.blockchain.transaction.ContractEventSendOpTemplate;
import com.jd.blockchain.transaction.DataAccountKVSetOpTemplate;
@@ -50,6 +43,10 @@ public class DefaultOperationHandleRegisteration implements OperationHandleRegis
registerDefaultHandle(new ContractCodeDeployOperationHandle());
registerDefaultHandle(new JVMContractEventSendOperationHandle());
+
+ registerDefaultHandle(new ParticipantRegisterOperationHandle());
+
+ registerDefaultHandle(new ParticipantStateUpdateOperationHandle());
}
private static void registerDefaultHandle(OperationHandle handle) {
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminAccount.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminAccount.java
deleted file mode 100644
index 87219e84..00000000
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminAccount.java
+++ /dev/null
@@ -1,365 +0,0 @@
-package com.jd.blockchain.ledger.core;
-
-import com.jd.blockchain.ledger.LedgerMetadata;
-import com.jd.blockchain.ledger.LedgerSetting;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.jd.blockchain.binaryproto.BinaryProtocol;
-import com.jd.blockchain.binaryproto.DataContractRegistry;
-import com.jd.blockchain.crypto.Crypto;
-import com.jd.blockchain.crypto.HashDigest;
-import com.jd.blockchain.crypto.HashFunction;
-import com.jd.blockchain.ledger.LedgerException;
-import com.jd.blockchain.ledger.LedgerInitSetting;
-import com.jd.blockchain.ledger.ParticipantNode;
-import com.jd.blockchain.storage.service.ExPolicyKVStorage;
-import com.jd.blockchain.storage.service.ExPolicyKVStorage.ExPolicy;
-import com.jd.blockchain.storage.service.VersioningKVStorage;
-import com.jd.blockchain.utils.Bytes;
-import com.jd.blockchain.utils.Transactional;
-
-public class LedgerAdminAccount implements Transactional, LedgerAdministration {
-
- static {
- DataContractRegistry.register(LedgerMetadata.class);
- }
-
- private static Logger LOGGER = LoggerFactory.getLogger(LedgerAdminAccount.class);
-
- public static final String LEDGER_META_PREFIX = "MTA" + LedgerConsts.KEY_SEPERATOR;
- public static final String LEDGER_PARTICIPANT_PREFIX = "PAR" + LedgerConsts.KEY_SEPERATOR;
- public static final String LEDGER_PRIVILEGE_PREFIX = "PVL" + LedgerConsts.KEY_SEPERATOR;
-
- private final Bytes metaPrefix;
- private final Bytes privilegePrefix;
-
- private LedgerMetadata origMetadata;
-
- private LedgerMetadataImpl metadata;
-
- /**
- * 原来的账本设置;
- *
- *
- * 对 LedgerMetadata 修改的新配置不能立即生效,需要达成共识后,在下一次区块计算中才生效;
- */
- private LedgerSetting previousSetting;
-
- /**
- * 账本的参与节点;
- */
- private ParticipantDataSet participants;
-
- // /**
- // * 账本的全局权限设置;
- // */
- // private PrivilegeDataSet privileges;
-
- private ExPolicyKVStorage settingsStorage;
-
- private HashDigest adminAccountHash;
-
- private boolean readonly;
-
- private boolean updated;
-
- public HashDigest getHash() {
- return adminAccountHash;
- }
-
- public boolean isReadonly() {
- return readonly;
- }
-
- /**
- * 初始化账本的管理账户;
- *
- *
- *
- * 只在新建账本时调用此方法;
- *
- * @param ledgerSeed
- * @param setting
- * @param partiList
- * @param exPolicyStorage
- * @param versioningStorage
- */
- public LedgerAdminAccount(LedgerInitSetting initSetting, String keyPrefix, ExPolicyKVStorage exPolicyStorage,
- VersioningKVStorage versioningStorage) {
- this.metaPrefix = Bytes.fromString(keyPrefix + LEDGER_META_PREFIX);
- this.privilegePrefix = Bytes.fromString(keyPrefix + LEDGER_PRIVILEGE_PREFIX);
-
- ParticipantNode[] parties = initSetting.getConsensusParticipants();
- if (parties.length == 0) {
- throw new LedgerException("No participant!");
- }
-
- // 检查参与者列表是否已经按照 id 升序排列,并且 id 不冲突;
- // 注:参与者的 id 要求从 0 开始编号,顺序依次递增,不允许跳空;
- for (int i = 0; i < parties.length; i++) {
- // if (parties[i].getAddress() != i) {
- // throw new LedgerException("The id of participant isn't match the order of the
- // participant list!");
- // }
- }
-
- // 初始化元数据;
- this.metadata = new LedgerMetadataImpl();
- this.metadata.setSeed(initSetting.getLedgerSeed());
- // 新配置;
- this.metadata.setting = new LedgerConfiguration(initSetting.getConsensusProvider(),
- initSetting.getConsensusSettings(), initSetting.getCryptoSetting());
- this.previousSetting = new LedgerConfiguration(initSetting.getConsensusProvider(),
- initSetting.getConsensusSettings(), initSetting.getCryptoSetting());
- this.adminAccountHash = null;
-
- // 基于原配置初始化参与者列表;
- String partiPrefix = keyPrefix + LEDGER_PARTICIPANT_PREFIX;
- this.participants = new ParticipantDataSet(previousSetting.getCryptoSetting(), partiPrefix, exPolicyStorage,
- versioningStorage);
-
- for (ParticipantNode p : parties) {
- this.participants.addConsensusParticipant(p);
- }
-
- // 初始化其它属性;
- this.settingsStorage = exPolicyStorage;
- this.readonly = false;
- }
-
- public LedgerAdminAccount(HashDigest adminAccountHash, String keyPrefix, ExPolicyKVStorage kvStorage,
- VersioningKVStorage versioningKVStorage, boolean readonly) {
- this.metaPrefix = Bytes.fromString(keyPrefix + LEDGER_META_PREFIX);
- this.privilegePrefix = Bytes.fromString(keyPrefix + LEDGER_PRIVILEGE_PREFIX);
- this.settingsStorage = kvStorage;
- this.readonly = readonly;
- this.origMetadata = loadAndVerifySettings(adminAccountHash);
- this.metadata = new LedgerMetadataImpl(origMetadata);
- // 复制记录一份配置作为上一个区块的原始配置,该实例仅供读取,不做修改,也不会回写到存储;
- this.previousSetting = new LedgerConfiguration(metadata.getSetting());
- this.adminAccountHash = adminAccountHash;
- // this.privileges = new PrivilegeDataSet(metadata.getPrivilegesHash(),
- // metadata.getSetting().getCryptoSetting(),
- // PrefixAppender.prefix(LEDGER_PRIVILEGE_PREFIX, kvStorage),
- // PrefixAppender.prefix(LEDGER_PRIVILEGE_PREFIX, versioningKVStorage),
- // readonly);
-
- // this.participants = new ParticipantDataSet(metadata.getParticipantsHash(),
- // previousSetting.getCryptoSetting(),
- // PrefixAppender.prefix(LEDGER_PARTICIPANT_PREFIX, kvStorage),
- // PrefixAppender.prefix(LEDGER_PARTICIPANT_PREFIX, versioningKVStorage),
- // readonly);
- String partiPrefix = keyPrefix + LEDGER_PARTICIPANT_PREFIX;
- this.participants = new ParticipantDataSet(metadata.getParticipantsHash(), previousSetting.getCryptoSetting(),
- partiPrefix, kvStorage, versioningKVStorage, readonly);
- }
-
- private LedgerMetadata loadAndVerifySettings(HashDigest adminAccountHash) {
- // String base58Hash = adminAccountHash.toBase58();
- // String key = encodeMetadataKey(base58Hash);
- Bytes key = encodeMetadataKey(adminAccountHash);
- byte[] bytes = settingsStorage.get(key);
- HashFunction hashFunc = Crypto.getHashFunction(adminAccountHash.getAlgorithm());
- if (!hashFunc.verify(adminAccountHash, bytes)) {
- LOGGER.error("The hash verification of ledger settings fail! --[HASH=" + key + "]");
- throw new LedgerException("The hash verification of ledger settings fail!");
- }
- return deserializeMetadata(bytes);
- }
-
- private Bytes encodeMetadataKey(HashDigest metadataHash) {
- // return LEDGER_META_PREFIX + metadataHash;
- // return metaPrefix + metadataHash;
- return metaPrefix.concat(metadataHash);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see com.jd.blockchain.ledger.core.LedgerAdministration#getMetadata()
- */
- @Override
- public LedgerMetadata getMetadata() {
- return metadata;
- }
-
- /**
- * 返回原来的账本配置;
- *
- *
- * 此方法总是返回从上一个区块加载的账本配置,即时调用 {@link #setLedgerSetting(LedgerSetting)} 做出了新的更改;
- *
- * @return
- */
- public LedgerSetting getPreviousSetting() {
- return previousSetting;
- }
-
- /**
- * 返回当前设置的账本配置;
- *
- * @return
- */
- public LedgerSetting getSetting() {
- return metadata.getSetting();
- }
-
- /**
- * 更新账本配置;
- *
- * @param ledgerSetting
- */
- public void setLedgerSetting(LedgerSetting ledgerSetting) {
- if (readonly) {
- throw new IllegalArgumentException("This merkle dataset is readonly!");
- }
- metadata.setSetting(ledgerSetting);
- }
-
- @Override
- public long getParticipantCount() {
- return participants.getParticipantCount();
- }
-
- // /*
- // * (non-Javadoc)
- // *
- // * @see
- // *
- // com.jd.blockchain.ledger.core.LedgerAdministration#getParticipant(java.lang.
- // * String)
- // */
- // @Override
- // public ParticipantNode getParticipant(int id) {
- // return participants.getParticipant(id);
- // }
-
- @Override
- public ParticipantNode[] getParticipants() {
- return participants.getParticipants();
- }
-
- /**
- * 加入新的参与方; 如果指定的参与方已经存在,则引发 LedgerException 异常;
- *
- * @param participant
- */
- public void addParticipant(ParticipantNode participant) {
- participants.addConsensusParticipant(participant);
- }
-
- /**
- * 更新参与方的状态参数;
- *
- * @param participant
- */
- public void updateParticipant(ParticipantNode participant) {
- participants.updateConsensusParticipant(participant);
- }
-
- @Override
- public boolean isUpdated() {
- return updated || participants.isUpdated();
- }
-
- @Override
- public void commit() {
- if (!isUpdated()) {
- return;
- }
- participants.commit();
-
- metadata.setParticipantsHash(participants.getRootHash());
-
- // 基于之前的密码配置来计算元数据的哈希;
- byte[] metadataBytes = serializeMetadata(metadata);
- HashFunction hashFunc = Crypto
- .getHashFunction(previousSetting.getCryptoSetting().getHashAlgorithm());
- HashDigest metadataHash = hashFunc.hash(metadataBytes);
- if (adminAccountHash == null || !adminAccountHash.equals(metadataHash)) {
- // update modify;
- // String base58MetadataHash = metadataHash.toBase58();
- // String metadataKey = encodeMetadataKey(base58MetadataHash);
- Bytes metadataKey = encodeMetadataKey(metadataHash);
-
- boolean nx = settingsStorage.set(metadataKey, metadataBytes, ExPolicy.NOT_EXISTING);
- if (!nx) {
- // 有可能发生了并发写入冲突,不同的节点都向同一个存储服务器上写入数据;
- // throw new LedgerException(
- // "Ledger metadata already exist! --[LedgerMetadataHash=" + base58MetadataHash
- // + "]");
- // LOGGER.warn("Ledger metadata already exist! --[MetadataHash=" +
- // base58MetadataHash + "]");
- }
-
- adminAccountHash = metadataHash;
- }
-
- updated = false;
- }
-
- private LedgerMetadata deserializeMetadata(byte[] bytes) {
- return BinaryProtocol.decode(bytes);
- }
-
- private byte[] serializeMetadata(LedgerMetadataImpl config) {
- return BinaryProtocol.encode(config, LedgerMetadata.class);
- }
-
- @Override
- public void cancel() {
- if (!isUpdated()) {
- return;
- }
- participants.cancel();
- metadata = new LedgerMetadataImpl(origMetadata);
- }
-
- public static class LedgerMetadataImpl implements LedgerMetadata {
-
- private byte[] seed;
-
- private LedgerSetting setting;
-
- private HashDigest participantsHash;
-
- public LedgerMetadataImpl() {
- }
-
- public LedgerMetadataImpl(LedgerMetadata metadata) {
- this.seed = metadata.getSeed();
- this.setting = metadata.getSetting();
- this.participantsHash = metadata.getParticipantsHash();
- }
-
- @Override
- public byte[] getSeed() {
- return seed;
- }
-
- @Override
- public LedgerSetting getSetting() {
- return setting;
- }
-
- @Override
- public HashDigest getParticipantsHash() {
- return participantsHash;
- }
-
- public void setSeed(byte[] seed) {
- this.seed = seed;
- }
-
- public void setSetting(LedgerSetting setting) {
- // copy a new instance;
- this.setting = new LedgerConfiguration(setting);
- }
-
- public void setParticipantsHash(HashDigest participantsHash) {
- this.participantsHash = participantsHash;
- }
- }
-
-}
\ No newline at end of file
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminDataset.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminDataset.java
index c4961b12..9c794f82 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminDataset.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminDataset.java
@@ -268,6 +268,8 @@ public class LedgerAdminDataset implements Transactional, LedgerAdminDataQuery,
*
* @return
*/
+
+ @Override
public LedgerSettings getSettings() {
return settings;
}
@@ -309,6 +311,16 @@ public class LedgerAdminDataset implements Transactional, LedgerAdminDataQuery,
participants.addConsensusParticipant(participant);
}
+
+ /**
+ * 更新参与方的状态参数;
+ *
+ * @param participant
+ */
+ public void updateParticipant(ParticipantNode participant) {
+ participants.updateConsensusParticipant(participant);
+ }
+
@Override
public boolean isUpdated() {
return updated || participants.isUpdated() || rolePrivileges.isUpdated() || userRoles.isUpdated();
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/ParticipantRegisterOperationHandle.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/ParticipantRegisterOperationHandle.java
index ece04036..434e8c4a 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/ParticipantRegisterOperationHandle.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/ParticipantRegisterOperationHandle.java
@@ -1,4 +1,4 @@
-package com.jd.blockchain.ledger.core.impl.handles;
+package com.jd.blockchain.ledger.core.handles;
import com.jd.blockchain.consensus.ConsensusProvider;
import com.jd.blockchain.consensus.ConsensusProviders;
@@ -6,66 +6,51 @@ import com.jd.blockchain.crypto.AddressEncoding;
import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.ledger.*;
import com.jd.blockchain.ledger.core.*;
-import com.jd.blockchain.ledger.core.impl.OperationHandleContext;
import com.jd.blockchain.utils.Bytes;
-public class ParticipantRegisterOperationHandle implements OperationHandle {
- @Override
- public BytesValue process(Operation op, LedgerDataSet dataset, TransactionRequestContext requestContext,
- LedgerDataSet previousBlockDataset, OperationHandleContext handleContext, LedgerService ledgerService) {
- ParticipantRegisterOperation participantRegOp = (ParticipantRegisterOperation) op;
+public class ParticipantRegisterOperationHandle extends AbstractLedgerOperationHandle {
+ public ParticipantRegisterOperationHandle() {
+ super(ParticipantRegisterOperation.class);
+ }
- LedgerAdminAccount adminAccount = dataset.getAdminAccount();
+ @Override
+ protected void doProcess(ParticipantRegisterOperation op, LedgerDataset newBlockDataset,
+ TransactionRequestExtension requestContext, LedgerDataQuery previousBlockDataset,
+ OperationHandleContext handleContext, LedgerService ledgerService) {
- ParticipantInfo participantInfo = participantRegOp.getParticipantInfo();
+ // 权限校验;
+ SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy();
+ securityPolicy.checkEndpointPermission(LedgerPermission.REGISTER_PARTICIPANT, MultiIDsPolicy.AT_LEAST_ONE);
-// ConsensusProvider provider = ConsensusProviders.getProvider(adminAccount.getSetting().getConsensusProvider());
+ ParticipantRegisterOperation participantRegOp = (ParticipantRegisterOperation) op;
- ParticipantNode participantNode = new PartNode((int)(adminAccount.getParticipantCount()), participantInfo.getName(), participantInfo.getPubKey(), ParticipantNodeState.REGISTED);
+ LedgerAdminDataset adminAccountDataSet = newBlockDataset.getAdminDataset();
-// LedgerAdminAccount.LedgerMetadataImpl metadata = (LedgerAdminAccount.LedgerMetadataImpl) adminAccount.getMetadata();
+ ParticipantInfo participantInfo = participantRegOp.getParticipantInfo();
+ ParticipantNode participantNode = new PartNode((int)(adminAccountDataSet.getParticipantCount()), participantInfo.getName(), participantInfo.getPubKey(), ParticipantNodeState.REGISTED);
PubKey pubKey = participantNode.getPubKey();
BlockchainIdentityData identityData = new BlockchainIdentityData(pubKey);
- //update consensus setting
-// Bytes newConsensusSettings = provider.getSettingsFactory().getConsensusSettingsBuilder().updateSettings(metadata.getSetting().getConsensusSetting(), participantInfo);
-
-// LedgerSetting ledgerSetting = new LedgerConfiguration(adminAccount.getSetting().getConsensusProvider(),
-// newConsensusSettings, metadata.getSetting().getCryptoSetting());
-
-// metadata.setSetting(ledgerSetting);
-// metadata.setViewId(metadata.getViewId() + 1);
-
-
-
// //reg participant as user
// dataset.getUserAccountSet().register(identityData.getAddress(), pubKey);
//add new participant as consensus node
- adminAccount.addParticipant(participantNode);
-
- // Build UserRegisterOperation;
+ adminAccountDataSet.addParticipant(participantNode);
+
+ // Build UserRegisterOperation;
UserRegisterOperation userRegOp = null;//
handleContext.handle(userRegOp);
-
-
- return null;
- }
-
- @Override
- public boolean support(Class> operationType) {
- return ParticipantRegisterOperation.class.isAssignableFrom(operationType);
}
private static class PartNode implements ParticipantNode {
private int id;
- private String address;
+ private Bytes address;
private String name;
@@ -77,7 +62,7 @@ public class ParticipantRegisterOperationHandle implements OperationHandle {
this.id = id;
this.name = name;
this.pubKey = pubKey;
- this.address = AddressEncoding.generateAddress(pubKey).toBase58();
+ this.address = AddressEncoding.generateAddress(pubKey);
this.participantNodeState = participantNodeState;
}
@@ -87,7 +72,7 @@ public class ParticipantRegisterOperationHandle implements OperationHandle {
}
@Override
- public String getAddress() {
+ public Bytes getAddress() {
return address;
}
@@ -107,4 +92,5 @@ public class ParticipantRegisterOperationHandle implements OperationHandle {
}
}
+
}
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/ParticipantStateUpdateOperationHandle.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/ParticipantStateUpdateOperationHandle.java
index 0976651f..0c4fe9af 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/ParticipantStateUpdateOperationHandle.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/ParticipantStateUpdateOperationHandle.java
@@ -1,4 +1,4 @@
-package com.jd.blockchain.ledger.core.impl.handles;
+package com.jd.blockchain.ledger.core.handles;
import com.jd.blockchain.consensus.ConsensusProvider;
import com.jd.blockchain.consensus.ConsensusProviders;
@@ -6,28 +6,30 @@ import com.jd.blockchain.crypto.AddressEncoding;
import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.ledger.*;
import com.jd.blockchain.ledger.core.*;
-import com.jd.blockchain.ledger.core.impl.OperationHandleContext;
import com.jd.blockchain.utils.Bytes;
-public class ParticipantStateUpdateOperationHandle implements OperationHandle {
- @Override
- public boolean support(Class> operationType) {
- return ParticipantStateUpdateOperation.class.isAssignableFrom(operationType);
+public class ParticipantStateUpdateOperationHandle extends AbstractLedgerOperationHandle {
+ public ParticipantStateUpdateOperationHandle() {
+ super(ParticipantStateUpdateOperation.class);
}
@Override
- public BytesValue process(Operation op, LedgerDataSet newBlockDataset, TransactionRequestContext requestContext, LedgerDataSet previousBlockDataset, OperationHandleContext handleContext, LedgerService ledgerService) {
+ protected void doProcess(ParticipantStateUpdateOperation op, LedgerDataset newBlockDataset,
+ TransactionRequestExtension requestContext, LedgerDataQuery previousBlockDataset,
+ OperationHandleContext handleContext, LedgerService ledgerService) {
- ParticipantStateUpdateOperation stateUpdateOperation = (ParticipantStateUpdateOperation) op;
+ // 权限校验;
+ SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy();
+ securityPolicy.checkEndpointPermission(LedgerPermission.REGISTER_PARTICIPANT, MultiIDsPolicy.AT_LEAST_ONE);
- LedgerAdminAccount adminAccount = newBlockDataset.getAdminAccount();
+ ParticipantStateUpdateOperation stateUpdateOperation = (ParticipantStateUpdateOperation) op;
- ConsensusProvider provider = ConsensusProviders.getProvider(adminAccount.getSetting().getConsensusProvider());
+ LedgerAdminDataset adminAccountDataSet = newBlockDataset.getAdminDataset();
- LedgerAdminAccount.LedgerMetadataImpl metadata = (LedgerAdminAccount.LedgerMetadataImpl) adminAccount.getMetadata();
+ ConsensusProvider provider = ConsensusProviders.getProvider(adminAccountDataSet.getSettings().getConsensusProvider());
- ParticipantNode[] participants = adminAccount.getParticipants();
+ ParticipantNode[] participants = adminAccountDataSet.getParticipants();
ParticipantNode participantNode = null;
@@ -39,25 +41,24 @@ public class ParticipantStateUpdateOperationHandle implements OperationHandle {
}
//update consensus setting
- ParticipantInfo participantInfo = new ParticipantInfoData("", participantNode.getName(), participantNode.getPubKey(), stateUpdateOperation.getStateUpdateInfo().getNetworkAddress());
+ ParticipantInfo participantInfo = new ParticipantInfoData(participantNode.getName(), participantNode.getPubKey(), stateUpdateOperation.getStateUpdateInfo().getNetworkAddress());
- Bytes newConsensusSettings = provider.getSettingsFactory().getConsensusSettingsBuilder().updateSettings(metadata.getSetting().getConsensusSetting(), participantInfo);
+ Bytes newConsensusSettings = provider.getSettingsFactory().getConsensusSettingsBuilder().updateSettings(adminAccountDataSet.getSettings().getConsensusSetting(), participantInfo);
- LedgerSetting ledgerSetting = new LedgerConfiguration(adminAccount.getSetting().getConsensusProvider(),
- newConsensusSettings, metadata.getSetting().getCryptoSetting());
+ LedgerSettings ledgerSetting = new LedgerConfiguration(adminAccountDataSet.getSettings().getConsensusProvider(),
+ newConsensusSettings, adminAccountDataSet.getPreviousSetting().getCryptoSetting());
- metadata.setSetting(ledgerSetting);
+ adminAccountDataSet.setLedgerSetting(ledgerSetting);
- adminAccount.updateParticipant(participantNode);
+ adminAccountDataSet.updateParticipant(participantNode);
- return null;
}
private static class PartNode implements ParticipantNode {
private int id;
- private String address;
+ private Bytes address;
private String name;
@@ -69,7 +70,7 @@ public class ParticipantStateUpdateOperationHandle implements OperationHandle {
this.id = id;
this.name = name;
this.pubKey = pubKey;
- this.address = AddressEncoding.generateAddress(pubKey).toBase58();
+ this.address = AddressEncoding.generateAddress(pubKey);
this.participantNodeState = participantNodeState;
}
@@ -79,7 +80,7 @@ public class ParticipantStateUpdateOperationHandle implements OperationHandle {
}
@Override
- public String getAddress() {
+ public Bytes getAddress() {
return address;
}
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/impl/DefaultOperationHandleRegisteration.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/impl/DefaultOperationHandleRegisteration.java
deleted file mode 100644
index fc888b29..00000000
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/impl/DefaultOperationHandleRegisteration.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.jd.blockchain.ledger.core.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import com.jd.blockchain.ledger.core.impl.handles.*;
-import org.springframework.stereotype.Component;
-
-import com.jd.blockchain.ledger.LedgerException;
-import com.jd.blockchain.ledger.core.OperationHandle;
-
-@Component
-public class DefaultOperationHandleRegisteration implements OperationHandleRegisteration {
-
- private List opHandles = new ArrayList<>();
-
- public DefaultOperationHandleRegisteration() {
- initDefaultHandles();
- }
-
- /**
- * 针对不采用bean依赖注入的方式来处理;
- */
- private void initDefaultHandles() {
- opHandles.add(new DataAccountKVSetOperationHandle());
- opHandles.add(new DataAccountRegisterOperationHandle());
- opHandles.add(new UserRegisterOperationHandle());
- opHandles.add(new ParticipantRegisterOperationHandle());
- opHandles.add(new ContractCodeDeployOperationHandle());
- opHandles.add(new JVMContractEventSendOperationHandle());
- opHandles.add(new ParticipantStateUpdateOperationHandle());
- }
-
- /**
- * 以最高优先级插入一个操作处理器;
- *
- * @param handle
- */
- public void insertAsTopPriority(OperationHandle handle) {
- opHandles.remove(handle);
- opHandles.add(0, handle);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * com.jd.blockchain.ledger.core.impl.OperationHandleRegisteration#getHandle(
- * java.lang.Class)
- */
- @Override
- public OperationHandle getHandle(Class> operationType) {
- for (OperationHandle handle : opHandles) {
- if (handle.support(operationType)) {
- return handle;
- }
- }
- throw new LedgerException("Unsupported operation type[" + operationType.getName() + "]!");
- }
-
-}
diff --git a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/ParticipantInfo.java b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/ParticipantInfo.java
index 07f6e1d0..c366fdd3 100644
--- a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/ParticipantInfo.java
+++ b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/ParticipantInfo.java
@@ -18,12 +18,12 @@ import com.jd.blockchain.utils.net.NetworkAddress;
public interface ParticipantInfo {
/**
- * regist or unregist;
+ * regist or unregist, temporarily not available to users
*
* @return
*/
- @DataField(order = 0, primitiveType = PrimitiveType.TEXT)
- String getFlag();
+// @DataField(order = 0, primitiveType = PrimitiveType.TEXT)
+// String getFlag();
/**
* 参与者名称;
diff --git a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/ParticipantInfoData.java b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/ParticipantInfoData.java
index b41bb079..a5a6bc0a 100644
--- a/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/ParticipantInfoData.java
+++ b/source/ledger/ledger-model/src/main/java/com/jd/blockchain/ledger/ParticipantInfoData.java
@@ -18,25 +18,15 @@ public class ParticipantInfoData implements ParticipantInfo {
private NetworkAddress networkAddress;
- private String flag;//代表注册参与方或者删除参与方
+// private String flag;//代表注册参与方或者删除参与方
- public ParticipantInfoData(String flag, String name, PubKey pubKey, NetworkAddress networkAddress) {
- this.flag = flag;
+ public ParticipantInfoData(String name, PubKey pubKey, NetworkAddress networkAddress) {
this.name = name;
this.pubKey = pubKey;
this.networkAddress = networkAddress;
}
@Override
- public String getFlag() {
- return flag;
- }
-
- public void setFlag(String flag) {
- this.flag = flag;
- }
-
- @Override
public String getName() {
return name;
}
diff --git a/source/sdk/sdk-base/src/main/java/com/jd/blockchain/sdk/converters/ClientResolveUtil.java b/source/sdk/sdk-base/src/main/java/com/jd/blockchain/sdk/converters/ClientResolveUtil.java
index 460bdc9b..e4aea5a0 100644
--- a/source/sdk/sdk-base/src/main/java/com/jd/blockchain/sdk/converters/ClientResolveUtil.java
+++ b/source/sdk/sdk-base/src/main/java/com/jd/blockchain/sdk/converters/ClientResolveUtil.java
@@ -10,27 +10,13 @@ package com.jd.blockchain.sdk.converters;
import java.lang.reflect.Field;
+import com.jd.blockchain.ledger.*;
import org.apache.commons.codec.binary.Base64;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.jd.blockchain.crypto.CryptoProvider;
import com.jd.blockchain.crypto.PubKey;
-import com.jd.blockchain.ledger.BlockchainIdentityData;
-import com.jd.blockchain.ledger.BytesData;
-import com.jd.blockchain.ledger.BytesValue;
-import com.jd.blockchain.ledger.BytesValueEncoding;
-import com.jd.blockchain.ledger.ContractCodeDeployOperation;
-import com.jd.blockchain.ledger.ContractEventSendOperation;
-import com.jd.blockchain.ledger.CryptoSetting;
-import com.jd.blockchain.ledger.DataAccountKVSetOperation;
-import com.jd.blockchain.ledger.DataAccountRegisterOperation;
-import com.jd.blockchain.ledger.DataType;
-import com.jd.blockchain.ledger.KVDataEntry;
-import com.jd.blockchain.ledger.LedgerInitOperation;
-import com.jd.blockchain.ledger.Operation;
-import com.jd.blockchain.ledger.ParticipantNode;
-import com.jd.blockchain.ledger.UserRegisterOperation;
import com.jd.blockchain.transaction.ContractCodeDeployOpTemplate;
import com.jd.blockchain.transaction.ContractEventSendOpTemplate;
import com.jd.blockchain.transaction.DataAccountKVSetOpTemplate;
@@ -214,8 +200,7 @@ public class ClientResolveUtil {
JSONObject pubKeyObj = currConsensusParticipant.getJSONObject("pubKey");
String pubKeyBase58 = pubKeyObj.getString("value");
// 生成ParticipantNode对象
- ParticipantCertData participantCertData = new ParticipantCertData(id, addressBase58, name, new PubKey(Bytes.fromBase58(pubKeyBase58).toBytes()));
- new PubKey(Bytes.fromBase58(pubKeyBase58).toBytes()));
+ ParticipantCertData participantCertData = new ParticipantCertData(id, address, name, new PubKey(Bytes.fromBase58(pubKeyBase58).toBytes()));
participantNodes[i] = participantCertData;
}
ledgerInitSettingData.setConsensusParticipants(participantNodes);
@@ -309,7 +294,7 @@ public class ClientResolveUtil {
this.pubKey = participantNode.getPubKey();
}
- public ParticipantCertData(int id, String address, String name, PubKey pubKey) {
+ public ParticipantCertData(int id, Bytes address, String name, PubKey pubKey) {
this.id = id;
this.address = address;
this.name = name;
@@ -332,14 +317,11 @@ public class ClientResolveUtil {
return pubKey;
}
+ @Override
public int getId() {
return id;
}
- public void setId(int id) {
- this.id = id;
- }
-
@Override
public ParticipantNodeState getParticipantNodeState() {
return participantNodeState;
diff --git a/source/sdk/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_GateWay_Participant_Regist_Test_.java b/source/sdk/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_GateWay_Participant_Regist_Test_.java
index ec523269..f0bd032e 100644
--- a/source/sdk/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_GateWay_Participant_Regist_Test_.java
+++ b/source/sdk/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_GateWay_Participant_Regist_Test_.java
@@ -72,9 +72,9 @@ public class SDK_GateWay_Participant_Regist_Test_ {
//existed signer
AsymmetricKeypair keyPair = new BlockchainKeypair(pubKey, privKey);
- PrivKey privKey = KeyGenCommand.decodePrivKeyWithRawPassword(PRIV, SDKDemo_Constant.PASSWORD);
+ PrivKey privKey = KeyGenUtils.decodePrivKeyWithRawPassword(PRIV, SDKDemo_Constant.PASSWORD);
- PubKey pubKey = KeyGenCommand.decodePubKey(PUB);
+ PubKey pubKey = KeyGenUtils.decodePubKey(PUB);
System.out.println("Address = "+AddressEncoding.generateAddress(pubKey));
@@ -82,7 +82,7 @@ public class SDK_GateWay_Participant_Regist_Test_ {
NetworkAddress networkAddress = new NetworkAddress("127.0.0.1", 20000);
- ParticipantInfo participantInfo = new ParticipantInfoData("add","Peer4", user.getPubKey(), networkAddress);
+ ParticipantInfo participantInfo = new ParticipantInfoData("Peer4", user.getPubKey(), networkAddress);
// 注册参与方
txTemp.participants().register(participantInfo);
diff --git a/source/sdk/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_GateWay_Participant_State_Update_Test_.java b/source/sdk/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_GateWay_Participant_State_Update_Test_.java
index ea04ef69..ab2468be 100644
--- a/source/sdk/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_GateWay_Participant_State_Update_Test_.java
+++ b/source/sdk/sdk-samples/src/test/java/test/com/jd/blockchain/sdk/test/SDK_GateWay_Participant_State_Update_Test_.java
@@ -71,9 +71,9 @@ public class SDK_GateWay_Participant_State_Update_Test_ {
//existed signer
AsymmetricKeypair keyPair = new BlockchainKeypair(pubKey, privKey);
- PrivKey privKey = KeyGenCommand.decodePrivKeyWithRawPassword(PRIV, SDKDemo_Constant.PASSWORD);
+ PrivKey privKey = KeyGenUtils.decodePrivKeyWithRawPassword(PRIV, SDKDemo_Constant.PASSWORD);
- PubKey pubKey = KeyGenCommand.decodePubKey(PUB);
+ PubKey pubKey = KeyGenUtils.decodePubKey(PUB);
System.out.println("Address = "+AddressEncoding.generateAddress(pubKey));
diff --git a/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/Utils.java b/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/Utils.java
index 663cef6d..1f666572 100644
--- a/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/Utils.java
+++ b/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/Utils.java
@@ -88,7 +88,7 @@ public class Utils {
public static ParticipantNode[] loadParticipantNodes() {
ParticipantNode[] participantNodes = new ParticipantNode[PUB_KEYS.length];
for (int i = 0; i < PUB_KEYS.length; i++) {
- participantNodes[i] = new PartNode(i, KeyGenCommand.decodePubKey(PUB_KEYS[i]));
+ participantNodes[i] = new PartNode(i, KeyGenUtils.decodePubKey(PUB_KEYS[i]), ParticipantNodeState.CONSENSUSED);
}
return participantNodes;
}
diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java
index b4550ee5..f8a7cfed 100644
--- a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java
+++ b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationBase.java
@@ -175,7 +175,7 @@ public class IntegrationBase {
// 定义交易;
TransactionTemplate txTpl = blockchainService.newTransaction(ledgerHash);
- ParticipantInfoData participantInfoData = new ParticipantInfoData("add", "peer4", participant.getPubKey(), new NetworkAddress("127.0.0.1", 20000));
+ ParticipantInfoData participantInfoData = new ParticipantInfoData("peer4", participant.getPubKey(), new NetworkAddress("127.0.0.1", 20000));
txTpl.participants().register(participantInfoData);
@@ -201,7 +201,7 @@ public class IntegrationBase {
// 定义交易;
TransactionTemplate txTpl = blockchainService.newTransaction(ledgerHash);
- ParticipantInfoData participantInfoData = new ParticipantInfoData("add", "peer4", participantKeyPair.getPubKey(), new NetworkAddress("127.0.0.1", 20000));
+ ParticipantInfoData participantInfoData = new ParticipantInfoData("peer4", participantKeyPair.getPubKey(), new NetworkAddress("127.0.0.1", 20000));
ParticipantStateUpdateInfo stateUpdateInfo = new ParticipantStateUpdateInfoData(participantKeyPair.getPubKey(), ParticipantNodeState.CONSENSUSED, participantInfoData.getNetworkAddress());
diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTest4Bftsmart.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTest4Bftsmart.java
index ec352082..20a841a4 100644
--- a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTest4Bftsmart.java
+++ b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTest4Bftsmart.java
@@ -151,7 +151,7 @@ public class IntegrationTest4Bftsmart {
}
}
- long participantCount = ledgerRepository.getAdminAccount(ledgerRepository.retrieveLatestBlock()).getParticipantCount();
+ long participantCount = ledgerRepository.getAdminInfo(ledgerRepository.retrieveLatestBlock()).getParticipantCount();
long userCount = ledgerRepository.getUserAccountSet(ledgerRepository.retrieveLatestBlock()).getTotalCount();
@@ -162,28 +162,28 @@ public class IntegrationTest4Bftsmart {
participantResponse = IntegrationBase.testSDK_RegisterParticipant(adminKey, ledgerHash, blockchainService);
}
- participantCount = ledgerRepository.getAdminAccount(ledgerRepository.retrieveLatestBlock()).getParticipantCount();
+ participantCount = ledgerRepository.getAdminInfo(ledgerRepository.retrieveLatestBlock()).getParticipantCount();
userCount = ledgerRepository.getUserAccountSet(ledgerRepository.retrieveLatestBlock()).getTotalCount();
System.out.printf("after add participant: participantCount = %d, userCount = %d\r\n", (int)participantCount, (int)userCount);
- BftsmartConsensusSettings consensusSettings = (BftsmartConsensusSettings) ConsensusProviders.getProvider(BFTSMART_PROVIDER).getSettingsFactory().getConsensusSettingsEncoder().decode(ledgerRepository.getAdminAccount().getSetting().getConsensusSetting().toBytes());
+ BftsmartConsensusSettings consensusSettings = (BftsmartConsensusSettings) ConsensusProviders.getProvider(BFTSMART_PROVIDER).getSettingsFactory().getConsensusSettingsEncoder().decode(ledgerRepository.getAdminInfo().getSettings().getConsensusSetting().toBytes());
System.out.printf("update participant state before ,old consensus env node num = %d\r\n", consensusSettings.getNodes().length);
for (int i = 0; i < participantCount; i++) {
- System.out.printf("part%d state = %d\r\n",i, ledgerRepository.getAdminAccount(ledgerRepository.retrieveLatestBlock()).getParticipants()[i].getParticipantNodeState().CODE);
+ System.out.printf("part%d state = %d\r\n",i, ledgerRepository.getAdminInfo(ledgerRepository.retrieveLatestBlock()).getParticipants()[i].getParticipantNodeState().CODE);
}
if (isParticipantStateUpdate) {
IntegrationBase.testSDK_UpdateParticipantState(adminKey, new BlockchainKeypair(participantResponse.getKeyPair().getPubKey(), participantResponse.getKeyPair().getPrivKey()), ledgerHash, blockchainService);
}
- BftsmartConsensusSettings consensusSettingsNew = (BftsmartConsensusSettings) ConsensusProviders.getProvider(BFTSMART_PROVIDER).getSettingsFactory().getConsensusSettingsEncoder().decode(ledgerRepository.getAdminAccount(ledgerRepository.retrieveLatestBlock()).getSetting().getConsensusSetting().toBytes());
+ BftsmartConsensusSettings consensusSettingsNew = (BftsmartConsensusSettings) ConsensusProviders.getProvider(BFTSMART_PROVIDER).getSettingsFactory().getConsensusSettingsEncoder().decode(ledgerRepository.getAdminInfo(ledgerRepository.retrieveLatestBlock()).getSettings().getConsensusSetting().toBytes());
System.out.printf("update participant state after ,new consensus env node num = %d\r\n", consensusSettingsNew.getNodes().length);
for (int i = 0; i < participantCount; i++) {
- System.out.printf("part%d state = %d\r\n",i, ledgerRepository.getAdminAccount(ledgerRepository.retrieveLatestBlock()).getParticipants()[i].getParticipantNodeState().CODE);
+ System.out.printf("part%d state = %d\r\n",i, ledgerRepository.getAdminInfo(ledgerRepository.retrieveLatestBlock()).getParticipants()[i].getParticipantNodeState().CODE);
}
try {
diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTest4MQ.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTest4MQ.java
index dedb4738..c018a855 100644
--- a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTest4MQ.java
+++ b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTest4MQ.java
@@ -147,7 +147,7 @@ public class IntegrationTest4MQ {
integrationBase.testSDK_Contract(adminKey, ledgerHash, blockchainService,ledgerRepository);
}
- long participantCount = ledgerRepository.getAdminAccount(ledgerRepository.retrieveLatestBlock()).getParticipantCount();
+ long participantCount = ledgerRepository.getAdminInfo(ledgerRepository.retrieveLatestBlock()).getParticipantCount();
long userCount = ledgerRepository.getUserAccountSet(ledgerRepository.retrieveLatestBlock()).getTotalCount();
@@ -158,30 +158,30 @@ public class IntegrationTest4MQ {
participantResponse = IntegrationBase.testSDK_RegisterParticipant(adminKey, ledgerHash, blockchainService);
}
- participantCount = ledgerRepository.getAdminAccount(ledgerRepository.retrieveLatestBlock()).getParticipantCount();
+ participantCount = ledgerRepository.getAdminInfo(ledgerRepository.retrieveLatestBlock()).getParticipantCount();
userCount = ledgerRepository.getUserAccountSet(ledgerRepository.retrieveLatestBlock()).getTotalCount();
System.out.printf("after add participant: participantCount = %d, userCount = %d\r\n", (int)participantCount, (int)userCount);
- MsgQueueConsensusSettings consensusSettings = (MsgQueueConsensusSettings) ConsensusProviders.getProvider(MQ_PROVIDER).getSettingsFactory().getConsensusSettingsEncoder().decode(ledgerRepository.getAdminAccount().getSetting().getConsensusSetting().toBytes());
+ MsgQueueConsensusSettings consensusSettings = (MsgQueueConsensusSettings) ConsensusProviders.getProvider(MQ_PROVIDER).getSettingsFactory().getConsensusSettingsEncoder().decode(ledgerRepository.getAdminInfo().getSettings().getConsensusSetting().toBytes());
System.out.printf("update participant state before ,old consensus env node num = %d\r\n", consensusSettings.getNodes().length);
for (int i = 0; i < participantCount; i++) {
- System.out.printf("part%d state = %d\r\n",i, ledgerRepository.getAdminAccount(ledgerRepository.retrieveLatestBlock()).getParticipants()[i].getParticipantNodeState().CODE);
+ System.out.printf("part%d state = %d\r\n",i, ledgerRepository.getAdminInfo(ledgerRepository.retrieveLatestBlock()).getParticipants()[i].getParticipantNodeState().CODE);
}
if (isParticipantStateUpdate) {
IntegrationBase.testSDK_UpdateParticipantState(adminKey, new BlockchainKeypair(participantResponse.getKeyPair().getPubKey(), participantResponse.getKeyPair().getPrivKey()), ledgerHash, blockchainService);
}
- BftsmartConsensusSettings consensusSettingsNew = (BftsmartConsensusSettings) ConsensusProviders.getProvider(MQ_PROVIDER).getSettingsFactory().getConsensusSettingsEncoder().decode(ledgerRepository.getAdminAccount(ledgerRepository.retrieveLatestBlock()).getSetting().getConsensusSetting().toBytes());
+ BftsmartConsensusSettings consensusSettingsNew = (BftsmartConsensusSettings) ConsensusProviders.getProvider(MQ_PROVIDER).getSettingsFactory().getConsensusSettingsEncoder().decode(ledgerRepository.getAdminInfo(ledgerRepository.retrieveLatestBlock()).getSettings().getConsensusSetting().toBytes());
System.out.printf("update participant state after ,new consensus env node num = %d\r\n", consensusSettingsNew.getNodes().length);
for (int i = 0; i < participantCount; i++) {
- System.out.printf("part%d state = %d\r\n",i, ledgerRepository.getAdminAccount(ledgerRepository.retrieveLatestBlock()).getParticipants()[i].getParticipantNodeState().CODE);
+ System.out.printf("part%d state = %d\r\n",i, ledgerRepository.getAdminInfo(ledgerRepository.retrieveLatestBlock()).getParticipants()[i].getParticipantNodeState().CODE);
}
IntegrationBase.testConsistencyAmongNodes(ledgers);