diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/AccountSet.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/AccountSet.java
index f0ec9748..341e22cc 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/AccountSet.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/AccountSet.java
@@ -12,6 +12,7 @@ import com.jd.blockchain.ledger.AccountHeader;
import com.jd.blockchain.ledger.BytesValue;
import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.ledger.LedgerException;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.storage.service.ExPolicyKVStorage;
import com.jd.blockchain.storage.service.VersioningKVStorage;
import com.jd.blockchain.utils.Bytes;
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/BaseAccount.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/BaseAccount.java
index 7f499363..1c9b778f 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/BaseAccount.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/BaseAccount.java
@@ -8,6 +8,7 @@ import com.jd.blockchain.ledger.BlockchainIdentity;
import com.jd.blockchain.ledger.BlockchainIdentityData;
import com.jd.blockchain.ledger.BytesValue;
import com.jd.blockchain.ledger.CryptoSetting;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.storage.service.ExPolicyKVStorage;
import com.jd.blockchain.storage.service.VersioningKVStorage;
import com.jd.blockchain.utils.Bytes;
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ContractAccount.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ContractAccount.java
index 23354356..9f4a8622 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ContractAccount.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ContractAccount.java
@@ -5,6 +5,7 @@ import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.ledger.BytesData;
import com.jd.blockchain.ledger.BytesValue;
import com.jd.blockchain.ledger.ContractInfo;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.utils.Bytes;
public class ContractAccount implements ContractInfo {
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ContractAccountQuery.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ContractAccountQuery.java
new file mode 100644
index 00000000..4013a239
--- /dev/null
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ContractAccountQuery.java
@@ -0,0 +1,29 @@
+package com.jd.blockchain.ledger.core;
+
+import com.jd.blockchain.crypto.HashDigest;
+import com.jd.blockchain.ledger.AccountHeader;
+import com.jd.blockchain.ledger.MerkleProof;
+import com.jd.blockchain.utils.Bytes;
+
+public interface ContractAccountQuery {
+
+ AccountHeader[] getAccounts(int fromIndex, int count);
+
+ HashDigest getRootHash();
+
+ /**
+ * 返回合约总数;
+ *
+ * @return
+ */
+ long getTotalCount();
+
+ MerkleProof getProof(Bytes address);
+
+ boolean contains(Bytes address);
+
+ ContractAccount getContract(Bytes address);
+
+ ContractAccount getContract(Bytes address, long version);
+
+}
\ No newline at end of file
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ContractAccountSet.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ContractAccountSet.java
index ad51fd63..89d3ab3d 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ContractAccountSet.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ContractAccountSet.java
@@ -5,12 +5,13 @@ import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.ledger.AccountHeader;
import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.ledger.DigitalSignature;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.storage.service.ExPolicyKVStorage;
import com.jd.blockchain.storage.service.VersioningKVStorage;
import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.Transactional;
-public class ContractAccountSet implements MerkleProvable, Transactional {
+public class ContractAccountSet implements MerkleProvable, Transactional, ContractAccountQuery {
private AccountSet accountSet;
@@ -25,6 +26,7 @@ public class ContractAccountSet implements MerkleProvable, Transactional {
accountSet = new AccountSet(dataRootHash, cryptoSetting, prefix, exStorage, verStorage, readonly, accessPolicy);
}
+ @Override
public AccountHeader[] getAccounts(int fromIndex, int count) {
return accountSet.getAccounts(fromIndex,count);
}
@@ -47,6 +49,7 @@ public class ContractAccountSet implements MerkleProvable, Transactional {
*
* @return
*/
+ @Override
public long getTotalCount() {
return accountSet.getTotalCount();
}
@@ -56,15 +59,18 @@ public class ContractAccountSet implements MerkleProvable, Transactional {
return accountSet.getProof(address);
}
+ @Override
public boolean contains(Bytes address) {
return accountSet.contains(address);
}
+ @Override
public ContractAccount getContract(Bytes address) {
BaseAccount accBase = accountSet.getAccount(address);
return new ContractAccount(accBase);
}
+ @Override
public ContractAccount getContract(Bytes address, long version) {
BaseAccount accBase = accountSet.getAccount(address, version);
return new ContractAccount(accBase);
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DataAccount.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DataAccount.java
index 93286676..cee3c29e 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DataAccount.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DataAccount.java
@@ -8,6 +8,7 @@ import com.jd.blockchain.ledger.BytesData;
import com.jd.blockchain.ledger.BytesValue;
import com.jd.blockchain.ledger.KVDataEntry;
import com.jd.blockchain.ledger.KVDataObject;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.utils.Bytes;
public class DataAccount implements AccountHeader, MerkleProvable {
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DataAccountQuery.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DataAccountQuery.java
new file mode 100644
index 00000000..b7cc8d43
--- /dev/null
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DataAccountQuery.java
@@ -0,0 +1,32 @@
+package com.jd.blockchain.ledger.core;
+
+import com.jd.blockchain.crypto.HashDigest;
+import com.jd.blockchain.ledger.AccountHeader;
+import com.jd.blockchain.ledger.MerkleProof;
+import com.jd.blockchain.utils.Bytes;
+
+public interface DataAccountQuery {
+
+ AccountHeader[] getAccounts(int fromIndex, int count);
+
+ HashDigest getRootHash();
+
+ long getTotalCount();
+
+ /**
+ * 返回账户的存在性证明;
+ */
+ MerkleProof getProof(Bytes address);
+
+ /**
+ * 返回数据账户;
+ * 如果不存在,则返回 null;
+ *
+ * @param address
+ * @return
+ */
+ DataAccount getDataAccount(Bytes address);
+
+ DataAccount getDataAccount(Bytes address, long version);
+
+}
\ No newline at end of file
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DataAccountSet.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DataAccountSet.java
index 97bdb107..dbc77437 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DataAccountSet.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/DataAccountSet.java
@@ -5,12 +5,13 @@ import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.ledger.AccountHeader;
import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.ledger.DigitalSignature;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.storage.service.ExPolicyKVStorage;
import com.jd.blockchain.storage.service.VersioningKVStorage;
import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.Transactional;
-public class DataAccountSet implements MerkleProvable, Transactional {
+public class DataAccountSet implements MerkleProvable, Transactional, DataAccountQuery {
private AccountSet accountSet;
@@ -25,6 +26,7 @@ public class DataAccountSet implements MerkleProvable, Transactional {
accountSet = new AccountSet(dataRootHash, cryptoSetting, prefix, exStorage, verStorage, readonly, accessPolicy);
}
+ @Override
public AccountHeader[] getAccounts(int fromIndex, int count) {
return accountSet.getAccounts(fromIndex, count);
}
@@ -42,6 +44,7 @@ public class DataAccountSet implements MerkleProvable, Transactional {
return accountSet.getRootHash();
}
+ @Override
public long getTotalCount() {
return accountSet.getTotalCount();
}
@@ -67,6 +70,7 @@ public class DataAccountSet implements MerkleProvable, Transactional {
* @param address
* @return
*/
+ @Override
public DataAccount getDataAccount(Bytes address) {
BaseAccount accBase = accountSet.getAccount(address);
if (accBase == null) {
@@ -75,6 +79,7 @@ public class DataAccountSet implements MerkleProvable, Transactional {
return new DataAccount(accBase);
}
+ @Override
public DataAccount getDataAccount(Bytes address, long version) {
BaseAccount accBase = accountSet.getAccount(address, version);
return new DataAccount(accBase);
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminDataQuery.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminDataQuery.java
new file mode 100644
index 00000000..05c62138
--- /dev/null
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerAdminDataQuery.java
@@ -0,0 +1,12 @@
+package com.jd.blockchain.ledger.core;
+
+import com.jd.blockchain.ledger.LedgerAdminInfo;
+import com.jd.blockchain.ledger.ParticipantDataQuery;
+
+public interface LedgerAdminDataQuery {
+
+ LedgerAdminInfo getAdminInfo();
+
+ ParticipantDataQuery getParticipantDataset();
+
+}
\ 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 501e8d7d..1d2c1023 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
@@ -23,7 +23,7 @@ import com.jd.blockchain.storage.service.VersioningKVStorage;
import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.Transactional;
-public class LedgerAdminDataset implements Transactional, LedgerAdminInfo {
+public class LedgerAdminDataset implements Transactional, LedgerAdminDataQuery, LedgerAdminInfo {
static {
DataContractRegistry.register(LedgerMetadata.class);
@@ -108,6 +108,11 @@ public class LedgerAdminDataset implements Transactional, LedgerAdminInfo {
public UserRolesSettings getUserRoles() {
return userRoles;
}
+
+ @Override
+ public LedgerAdminInfo getAdminInfo() {
+ return this;
+ }
/**
* 初始化账本的管理账户;
@@ -290,7 +295,8 @@ public class LedgerAdminDataset implements Transactional, LedgerAdminInfo {
return participants.getParticipants();
}
- ParticipantDataset getParticipantDataset() {
+ @Override
+ public ParticipantDataset getParticipantDataset() {
return participants;
}
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerDataQuery.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerDataQuery.java
new file mode 100644
index 00000000..df70d0c0
--- /dev/null
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerDataQuery.java
@@ -0,0 +1,19 @@
+package com.jd.blockchain.ledger.core;
+
+/**
+ * {@link LedgerDataset} 表示账本在某一个区块上的数据集合;
+ *
+ * @author huanghaiquan
+ *
+ */
+public interface LedgerDataQuery{
+
+ LedgerAdminDataQuery getAdminDataset();
+
+ UserAccountQuery getUserAccountSet();
+
+ DataAccountQuery getDataAccountSet();
+
+ ContractAccountQuery getContractAccountset();
+
+}
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerDataSetImpl.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerDataSetImpl.java
deleted file mode 100644
index 613990aa..00000000
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerDataSetImpl.java
+++ /dev/null
@@ -1,98 +0,0 @@
-package com.jd.blockchain.ledger.core;
-
-import com.jd.blockchain.utils.Transactional;
-
-public class LedgerDataSetImpl implements LedgerDataset, Transactional {
-
- private LedgerAdminDataset adminDataset;
-
- private UserAccountSet userAccountSet;
-
- private DataAccountSet dataAccountSet;
-
- private ContractAccountSet contractAccountSet;
-
- private boolean readonly;
-
- /**
- * Create new block;
- *
- * @param adminAccount
- * @param userAccountSet
- * @param dataAccountSet
- * @param contractAccountSet
- * @param readonly
- */
- public LedgerDataSetImpl(LedgerAdminDataset adminAccount, UserAccountSet userAccountSet,
- DataAccountSet dataAccountSet, ContractAccountSet contractAccountSet, boolean readonly) {
- this.adminDataset = adminAccount;
- this.userAccountSet = userAccountSet;
- this.dataAccountSet = dataAccountSet;
- this.contractAccountSet = contractAccountSet;
-
- this.readonly = readonly;
- }
-
- @Override
- public LedgerAdminDataset getAdminDataset() {
- return adminDataset;
- }
-
- @Override
- public UserAccountSet getUserAccountSet() {
- return userAccountSet;
- }
-
- @Override
- public DataAccountSet getDataAccountSet() {
- return dataAccountSet;
- }
-
- @Override
- public ContractAccountSet getContractAccountset() {
- return contractAccountSet;
- }
-
- @Override
- public boolean isUpdated() {
- return adminDataset.isUpdated() || userAccountSet.isUpdated() || dataAccountSet.isUpdated()
- || contractAccountSet.isUpdated();
- }
-
- @Override
- public void commit() {
- if (readonly) {
- throw new IllegalStateException("Readonly ledger dataset which cann't been committed!");
- }
- if (!isUpdated()) {
- return;
- }
-
- adminDataset.commit();
- userAccountSet.commit();
- dataAccountSet.commit();
- contractAccountSet.commit();
- }
-
- @Override
- public void cancel() {
- adminDataset.cancel();
- userAccountSet.cancel();
- dataAccountSet.cancel();
- contractAccountSet.cancel();
- }
-
- @Override
- public boolean isReadonly() {
- return readonly;
- }
-
- void setReadonly() {
- this.readonly = true;
- this.adminDataset.setReadonly();
- this.userAccountSet.setReadonly();
- this.dataAccountSet.setReadonly();
- this.contractAccountSet.setReadonly();
- }
-
-}
\ No newline at end of file
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerDataset.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerDataset.java
index 46e91855..9f840d35 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerDataset.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerDataset.java
@@ -1,21 +1,97 @@
package com.jd.blockchain.ledger.core;
-/**
- * {@link LedgerDataset} 表示账本在某一个区块上的数据集合;
- *
- * @author huanghaiquan
- *
- */
-public interface LedgerDataset{
-
- boolean isReadonly();
+import com.jd.blockchain.utils.Transactional;
- LedgerAdminDataset getAdminDataset();
+public class LedgerDataset implements LedgerDataQuery, Transactional {
- UserAccountSet getUserAccountSet();
+ private LedgerAdminDataset adminDataset;
- DataAccountSet getDataAccountSet();
+ private UserAccountSet userAccountSet;
- ContractAccountSet getContractAccountset();
+ private DataAccountSet dataAccountSet;
-}
+ private ContractAccountSet contractAccountSet;
+
+ private boolean readonly;
+
+ /**
+ * Create new block;
+ *
+ * @param adminAccount
+ * @param userAccountSet
+ * @param dataAccountSet
+ * @param contractAccountSet
+ * @param readonly
+ */
+ public LedgerDataset(LedgerAdminDataset adminAccount, UserAccountSet userAccountSet,
+ DataAccountSet dataAccountSet, ContractAccountSet contractAccountSet, boolean readonly) {
+ this.adminDataset = adminAccount;
+ this.userAccountSet = userAccountSet;
+ this.dataAccountSet = dataAccountSet;
+ this.contractAccountSet = contractAccountSet;
+
+ this.readonly = readonly;
+ }
+
+ @Override
+ public LedgerAdminDataset getAdminDataset() {
+ return adminDataset;
+ }
+
+ @Override
+ public UserAccountSet getUserAccountSet() {
+ return userAccountSet;
+ }
+
+ @Override
+ public DataAccountSet getDataAccountSet() {
+ return dataAccountSet;
+ }
+
+ @Override
+ public ContractAccountSet getContractAccountset() {
+ return contractAccountSet;
+ }
+
+ @Override
+ public boolean isUpdated() {
+ return adminDataset.isUpdated() || userAccountSet.isUpdated() || dataAccountSet.isUpdated()
+ || contractAccountSet.isUpdated();
+ }
+
+ @Override
+ public void commit() {
+ if (readonly) {
+ throw new IllegalStateException("Readonly ledger dataset which cann't been committed!");
+ }
+ if (!isUpdated()) {
+ return;
+ }
+
+ adminDataset.commit();
+ userAccountSet.commit();
+ dataAccountSet.commit();
+ contractAccountSet.commit();
+ }
+
+ @Override
+ public void cancel() {
+ adminDataset.cancel();
+ userAccountSet.cancel();
+ dataAccountSet.cancel();
+ contractAccountSet.cancel();
+ }
+
+ public boolean isReadonly() {
+ return readonly;
+ }
+
+ void setReadonly() {
+ this.readonly = true;
+ this.adminDataset.setReadonly();
+ this.userAccountSet.setReadonly();
+ this.dataAccountSet.setReadonly();
+ this.contractAccountSet.setReadonly();
+ }
+
+}
\ No newline at end of file
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitializer.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitializer.java
index 5c7116e2..8c503494 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitializer.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerInitializer.java
@@ -62,7 +62,8 @@ public class LedgerInitializer {
}
private static SecurityInitSettings createDefaultSecurityInitSettings() {
- throw new IllegalStateException("Not implemented!");
+ // TODO throw new IllegalStateException("Not implemented!");
+ return null;
}
public static LedgerInitializer create(LedgerInitSetting initSetting) {
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerQueryService.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerQueryService.java
index c57baa97..0b85c8c6 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerQueryService.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerQueryService.java
@@ -107,7 +107,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public long getDataAccountCount(HashDigest ledgerHash, long height) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getBlock(height);
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
return dataAccountSet.getTotalCount();
}
@@ -115,7 +115,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public long getDataAccountCount(HashDigest ledgerHash, HashDigest blockHash) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getBlock(blockHash);
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
return dataAccountSet.getTotalCount();
}
@@ -123,7 +123,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public long getDataAccountTotalCount(HashDigest ledgerHash) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
return dataAccountSet.getTotalCount();
}
@@ -131,7 +131,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public long getUserCount(HashDigest ledgerHash, long height) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getBlock(height);
- UserAccountSet userAccountSet = ledger.getUserAccountSet(block);
+ UserAccountQuery userAccountSet = ledger.getUserAccountSet(block);
return userAccountSet.getTotalCount();
}
@@ -139,7 +139,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public long getUserCount(HashDigest ledgerHash, HashDigest blockHash) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getBlock(blockHash);
- UserAccountSet userAccountSet = ledger.getUserAccountSet(block);
+ UserAccountQuery userAccountSet = ledger.getUserAccountSet(block);
return userAccountSet.getTotalCount();
}
@@ -147,7 +147,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public long getUserTotalCount(HashDigest ledgerHash) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- UserAccountSet userAccountSet = ledger.getUserAccountSet(block);
+ UserAccountQuery userAccountSet = ledger.getUserAccountSet(block);
return userAccountSet.getTotalCount();
}
@@ -155,7 +155,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public long getContractCount(HashDigest ledgerHash, long height) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getBlock(height);
- ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block);
+ ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block);
return contractAccountSet.getTotalCount();
}
@@ -163,7 +163,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public long getContractCount(HashDigest ledgerHash, HashDigest blockHash) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getBlock(blockHash);
- ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block);
+ ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block);
return contractAccountSet.getTotalCount();
}
@@ -171,7 +171,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public long getContractTotalCount(HashDigest ledgerHash) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block);
+ ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block);
return contractAccountSet.getTotalCount();
}
@@ -254,7 +254,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public UserInfo getUser(HashDigest ledgerHash, String address) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- UserAccountSet userAccountSet = ledger.getUserAccountSet(block);
+ UserAccountQuery userAccountSet = ledger.getUserAccountSet(block);
return userAccountSet.getUser(address);
}
@@ -263,7 +263,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public AccountHeader getDataAccount(HashDigest ledgerHash, String address) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
return dataAccountSet.getDataAccount(Bytes.fromBase58(address));
}
@@ -274,7 +274,7 @@ public class LedgerQueryService implements BlockchainQueryService {
}
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address));
KVDataEntry[] entries = new KVDataEntry[keys.length];
@@ -322,7 +322,7 @@ public class LedgerQueryService implements BlockchainQueryService {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address));
KVDataEntry[] entries = new KVDataEntry[keys.length];
@@ -353,7 +353,7 @@ public class LedgerQueryService implements BlockchainQueryService {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address));
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) dataAccount.getDataEntriesTotalCount());
@@ -365,7 +365,7 @@ public class LedgerQueryService implements BlockchainQueryService {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address));
return dataAccount.getDataEntriesTotalCount();
@@ -375,7 +375,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public ContractInfo getContract(HashDigest ledgerHash, String address) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block);
+ ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block);
return contractAccountSet.getContract(Bytes.fromBase58(address));
}
@@ -383,7 +383,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public AccountHeader[] getUsers(HashDigest ledgerHash, int fromIndex, int count) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- UserAccountSet userAccountSet = ledger.getUserAccountSet(block);
+ UserAccountQuery userAccountSet = ledger.getUserAccountSet(block);
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) userAccountSet.getTotalCount());
return userAccountSet.getAccounts(pages[0], pages[1]);
}
@@ -392,7 +392,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public AccountHeader[] getDataAccounts(HashDigest ledgerHash, int fromIndex, int count) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) dataAccountSet.getTotalCount());
return dataAccountSet.getAccounts(pages[0], pages[1]);
}
@@ -401,7 +401,7 @@ public class LedgerQueryService implements BlockchainQueryService {
public AccountHeader[] getContractAccounts(HashDigest ledgerHash, int fromIndex, int count) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block);
+ ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block);
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) contractAccountSet.getTotalCount());
return contractAccountSet.getAccounts(pages[0], pages[1]);
}
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerRepository.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerRepository.java
index 73400223..a8790ab0 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerRepository.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerRepository.java
@@ -58,17 +58,17 @@ public interface LedgerRepository extends Closeable {
LedgerBlock getBlock(HashDigest hash);
- LedgerDataset getDataSet(LedgerBlock block);
+ LedgerDataQuery getDataSet(LedgerBlock block);
TransactionSet getTransactionSet(LedgerBlock block);
- UserAccountSet getUserAccountSet(LedgerBlock block);
+ UserAccountQuery getUserAccountSet(LedgerBlock block);
- DataAccountSet getDataAccountSet(LedgerBlock block);
+ DataAccountQuery getDataAccountSet(LedgerBlock block);
- ContractAccountSet getContractAccountSet(LedgerBlock block);
+ ContractAccountQuery getContractAccountSet(LedgerBlock block);
- default LedgerDataset getDataSet() {
+ default LedgerDataQuery getDataSet() {
return getDataSet(getLatestBlock());
}
@@ -76,15 +76,15 @@ public interface LedgerRepository extends Closeable {
return getTransactionSet(getLatestBlock());
}
- default UserAccountSet getUserAccountSet() {
+ default UserAccountQuery getUserAccountSet() {
return getUserAccountSet(getLatestBlock());
}
- default DataAccountSet getDataAccountSet() {
+ default DataAccountQuery getDataAccountSet() {
return getDataAccountSet(getLatestBlock());
}
- default ContractAccountSet getContractAccountSet() {
+ default ContractAccountQuery getContractAccountSet() {
return getContractAccountSet(getLatestBlock());
}
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerRepositoryImpl.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerRepositoryImpl.java
index 45da206c..32053225 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerRepositoryImpl.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerRepositoryImpl.java
@@ -313,7 +313,7 @@ class LedgerRepositoryImpl implements LedgerRepository {
}
@Override
- public UserAccountSet getUserAccountSet(LedgerBlock block) {
+ public UserAccountQuery getUserAccountSet(LedgerBlock block) {
long height = getLatestBlockHeight();
// UserAccountSet userAccountSet = null;
if (height == block.getHeight()) {
@@ -341,7 +341,7 @@ class LedgerRepositoryImpl implements LedgerRepository {
}
@Override
- public DataAccountSet getDataAccountSet(LedgerBlock block) {
+ public DataAccountQuery getDataAccountSet(LedgerBlock block) {
long height = getLatestBlockHeight();
// DataAccountSet dataAccountSet = null;
if (height == block.getHeight()) {
@@ -370,7 +370,7 @@ class LedgerRepositoryImpl implements LedgerRepository {
}
@Override
- public ContractAccountSet getContractAccountSet(LedgerBlock block) {
+ public ContractAccountQuery getContractAccountSet(LedgerBlock block) {
long height = getLatestBlockHeight();
// ContractAccountSet contractAccountSet = null;
if (height == block.getHeight()) {
@@ -426,7 +426,7 @@ class LedgerRepositoryImpl implements LedgerRepository {
UserAccountSet userAccountSet = createUserAccountSet(block, cryptoSetting);
DataAccountSet dataAccountSet = createDataAccountSet(block, cryptoSetting);
ContractAccountSet contractAccountSet = createContractAccountSet(block, cryptoSetting);
- return new LedgerDataSetImpl(adminDataset, userAccountSet, dataAccountSet, contractAccountSet, true);
+ return new LedgerDataset(adminDataset, userAccountSet, dataAccountSet, contractAccountSet, true);
}
@Override
@@ -475,7 +475,7 @@ class LedgerRepositoryImpl implements LedgerRepository {
return BLOCK_PREFIX.concat(blockHash);
}
- static LedgerDataSetImpl newDataSet(LedgerInitSetting initSetting, String keyPrefix,
+ static LedgerDataset newDataSet(LedgerInitSetting initSetting, String keyPrefix,
ExPolicyKVStorage ledgerExStorage, VersioningKVStorage ledgerVerStorage) {
LedgerAdminDataset adminAccount = new LedgerAdminDataset(initSetting, keyPrefix, ledgerExStorage,
ledgerVerStorage);
@@ -509,7 +509,7 @@ class LedgerRepositoryImpl implements LedgerRepository {
ContractAccountSet contractAccountSet = new ContractAccountSet(adminAccount.getSettings().getCryptoSetting(),
contractsetKeyPrefix, ledgerExStorage, ledgerVerStorage, DEFAULT_ACCESS_POLICY);
- LedgerDataSetImpl newDataSet = new LedgerDataSetImpl(adminAccount, userAccountSet, dataAccountSet,
+ LedgerDataset newDataSet = new LedgerDataset(adminAccount, userAccountSet, dataAccountSet,
contractAccountSet, false);
return newDataSet;
@@ -529,7 +529,7 @@ class LedgerRepositoryImpl implements LedgerRepository {
return transactionSet;
}
- static LedgerDataSetImpl loadDataSet(LedgerDataSnapshot dataSnapshot, CryptoSetting cryptoSetting, String keyPrefix,
+ static LedgerDataset loadDataSet(LedgerDataSnapshot dataSnapshot, CryptoSetting cryptoSetting, String keyPrefix,
ExPolicyKVStorage ledgerExStorage, VersioningKVStorage ledgerVerStorage, boolean readonly) {
LedgerAdminDataset adminAccount = new LedgerAdminDataset(dataSnapshot.getAdminAccountHash(), keyPrefix,
ledgerExStorage, ledgerVerStorage, readonly);
@@ -545,7 +545,7 @@ class LedgerRepositoryImpl implements LedgerRepository {
ContractAccountSet contractAccountSet = loadContractAccountSet(dataSnapshot.getContractAccountSetHash(),
cryptoSetting, keyPrefix, ledgerExStorage, ledgerVerStorage, readonly);
- LedgerDataSetImpl dataset = new LedgerDataSetImpl(adminAccount, userAccountSet, dataAccountSet,
+ LedgerDataset dataset = new LedgerDataset(adminAccount, userAccountSet, dataAccountSet,
contractAccountSet, readonly);
return dataset;
@@ -695,15 +695,15 @@ class LedgerRepositoryImpl implements LedgerRepository {
return ledgerDataset;
}
- public ContractAccountSet getContractAccountSet() {
+ public ContractAccountQuery getContractAccountSet() {
return ledgerDataset.getContractAccountset();
}
- public DataAccountSet getDataAccountSet() {
+ public DataAccountQuery getDataAccountSet() {
return ledgerDataset.getDataAccountSet();
}
- public UserAccountSet getUserAccountSet() {
+ public UserAccountQuery getUserAccountSet() {
return ledgerDataset.getUserAccountSet();
}
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerTransactionalEditor.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerTransactionalEditor.java
index 70658ae2..ea7bb7ed 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerTransactionalEditor.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/LedgerTransactionalEditor.java
@@ -72,7 +72,7 @@ public class LedgerTransactionalEditor implements LedgerEditor {
/**
* 最后提交的账本数据集;
*/
- private volatile LedgerDataSetImpl latestLedgerDataset;
+ private volatile LedgerDataset latestLedgerDataset;
/**
* 最后提交的交易集合;
@@ -235,7 +235,7 @@ public class LedgerTransactionalEditor implements LedgerEditor {
// init storage of new transaction;
BufferedKVStorage txBufferedStorage = new BufferedKVStorage(baseStorage, baseStorage, false);
- LedgerDataSetImpl txDataset = null;
+ LedgerDataset txDataset = null;
TransactionSet txset = null;
if (previousTxSnapshot == null) {
// load the starting point of the new transaction;
@@ -470,7 +470,7 @@ public class LedgerTransactionalEditor implements LedgerEditor {
private TransactionRequest txRequest;
- private LedgerDataSetImpl dataset;
+ private LedgerDataset dataset;
private TransactionSet txset;
@@ -484,7 +484,7 @@ public class LedgerTransactionalEditor implements LedgerEditor {
private HashDigest txRootHash;
- private LedgerTransactionContextImpl(TransactionRequest txRequest, LedgerDataSetImpl dataset,
+ private LedgerTransactionContextImpl(TransactionRequest txRequest, LedgerDataset dataset,
TransactionSet txset, BufferedKVStorage storage, LedgerTransactionalEditor editor) {
this.txRequest = txRequest;
this.dataset = dataset;
@@ -494,7 +494,7 @@ public class LedgerTransactionalEditor implements LedgerEditor {
}
@Override
- public LedgerDataSetImpl getDataset() {
+ public LedgerDataset getDataset() {
return dataset;
}
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleDataEntry.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleDataEntry.java
index 527e7115..3dd99df0 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleDataEntry.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleDataEntry.java
@@ -1,5 +1,6 @@
package com.jd.blockchain.ledger.core;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.storage.service.VersioningKVEntry;
public interface MerkleDataEntry {
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleDataSet.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleDataSet.java
index ae37b25c..16927b97 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleDataSet.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleDataSet.java
@@ -3,6 +3,8 @@ package com.jd.blockchain.ledger.core;
import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.ledger.LedgerException;
+import com.jd.blockchain.ledger.MerkleDataNode;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.storage.service.ExPolicyKVStorage;
import com.jd.blockchain.storage.service.ExPolicyKVStorage.ExPolicy;
import com.jd.blockchain.storage.service.VersioningKVEntry;
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleProvable.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleProvable.java
index 2f93bad7..f778279f 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleProvable.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleProvable.java
@@ -1,6 +1,7 @@
package com.jd.blockchain.ledger.core;
import com.jd.blockchain.crypto.HashDigest;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.utils.Bytes;
public interface MerkleProvable {
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleTree.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleTree.java
index 7c3c077c..d86facba 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleTree.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/MerkleTree.java
@@ -20,6 +20,9 @@ import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.crypto.HashFunction;
import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.ledger.LedgerException;
+import com.jd.blockchain.ledger.MerkleDataNode;
+import com.jd.blockchain.ledger.MerkleNode;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.storage.service.ExPolicyKVStorage;
import com.jd.blockchain.storage.service.ExPolicyKVStorage.ExPolicy;
import com.jd.blockchain.utils.Bytes;
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/OperationHandle.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/OperationHandle.java
index d7bf15e8..763ea51a 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/OperationHandle.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/OperationHandle.java
@@ -27,6 +27,6 @@ public interface OperationHandle {
* @return
*/
BytesValue process(Operation op, LedgerDataset newBlockDataset, TransactionRequestExtension requestContext,
- LedgerDataset previousBlockDataset, OperationHandleContext handleContext, LedgerService ledgerService);
+ LedgerDataQuery previousBlockDataset, OperationHandleContext handleContext, LedgerService ledgerService);
}
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ParticipantDataset.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ParticipantDataset.java
index 3185ae91..71e71199 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ParticipantDataset.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/ParticipantDataset.java
@@ -4,14 +4,16 @@ import com.jd.blockchain.binaryproto.BinaryProtocol;
import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.ledger.ParticipantNode;
+import com.jd.blockchain.ledger.ParticipantDataQuery;
import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.ledger.LedgerException;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.storage.service.ExPolicyKVStorage;
import com.jd.blockchain.storage.service.VersioningKVStorage;
import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.Transactional;
-public class ParticipantDataset implements Transactional, MerkleProvable {
+public class ParticipantDataset implements Transactional, MerkleProvable, ParticipantDataQuery {
static {
DataContractRegistry.register(ParticipantNode.class);
@@ -54,6 +56,7 @@ public class ParticipantDataset implements Transactional, MerkleProvable {
dataset.cancel();
}
+ @Override
public long getParticipantCount() {
return dataset.getDataCount();
}
@@ -77,6 +80,7 @@ public class ParticipantDataset implements Transactional, MerkleProvable {
return address;
}
+ @Override
public boolean contains(Bytes address) {
Bytes key = encodeKey(address);
long latestVersion = dataset.getVersion(key);
@@ -92,6 +96,7 @@ public class ParticipantDataset implements Transactional, MerkleProvable {
* @param address
* @return
*/
+ @Override
public ParticipantNode getParticipant(Bytes address) {
Bytes key = encodeKey(address);
byte[] bytes = dataset.getValue(key);
@@ -101,6 +106,7 @@ public class ParticipantDataset implements Transactional, MerkleProvable {
return BinaryProtocol.decode(bytes);
}
+ @Override
public ParticipantNode[] getParticipants() {
byte[][] bytes = dataset.getLatestValues(0, (int) dataset.getDataCount());
ParticipantNode[] pns = new ParticipantNode[bytes.length];
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/RolePrivilegeDataset.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/RolePrivilegeDataset.java
index 7e7bd238..14673435 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/RolePrivilegeDataset.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/RolePrivilegeDataset.java
@@ -6,6 +6,7 @@ import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.ledger.LedgerException;
import com.jd.blockchain.ledger.LedgerPermission;
import com.jd.blockchain.ledger.LedgerPrivilege;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.ledger.PrivilegeSet;
import com.jd.blockchain.ledger.Privileges;
import com.jd.blockchain.ledger.RolePrivilegeSettings;
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TransactionBatchProcessor.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TransactionBatchProcessor.java
index 37c47906..9a2ddcef 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TransactionBatchProcessor.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TransactionBatchProcessor.java
@@ -46,7 +46,7 @@ public class TransactionBatchProcessor implements TransactionBatchProcess {
private LedgerEditor newBlockEditor;
- private LedgerDataset previousBlockDataset;
+ private LedgerDataQuery previousBlockDataset;
private OperationHandleRegisteration opHandles;
@@ -65,7 +65,7 @@ public class TransactionBatchProcessor implements TransactionBatchProcess {
* @param opHandles 操作处理对象注册表;
*/
public TransactionBatchProcessor(LedgerSecurityManager securityManager, LedgerEditor newBlockEditor,
- LedgerDataset previousBlockDataset, OperationHandleRegisteration opHandles, LedgerService ledgerService) {
+ LedgerDataQuery previousBlockDataset, OperationHandleRegisteration opHandles, LedgerService ledgerService) {
this.securityManager = securityManager;
this.newBlockEditor = newBlockEditor;
this.previousBlockDataset = previousBlockDataset;
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TransactionEngineImpl.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TransactionEngineImpl.java
index d9d47840..900b6f28 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TransactionEngineImpl.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TransactionEngineImpl.java
@@ -3,10 +3,10 @@ package com.jd.blockchain.ledger.core;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import com.jd.blockchain.crypto.HashDigest;
-import com.jd.blockchain.ledger.LedgerBlock;
import org.springframework.beans.factory.annotation.Autowired;
+import com.jd.blockchain.crypto.HashDigest;
+import com.jd.blockchain.ledger.LedgerBlock;
import com.jd.blockchain.service.TransactionBatchProcess;
import com.jd.blockchain.service.TransactionEngine;
@@ -40,11 +40,11 @@ public class TransactionEngineImpl implements TransactionEngine {
LedgerBlock ledgerBlock = ledgerRepo.getLatestBlock();
LedgerEditor newBlockEditor = ledgerRepo.createNextBlock();
- LedgerDataset previousBlockDataset = ledgerRepo.getDataSet(ledgerBlock);
+ LedgerDataQuery previousBlockDataset = ledgerRepo.getDataSet(ledgerBlock);
- LedgerAdminDataset previousAdminDataset = previousBlockDataset.getAdminDataset();
- LedgerSecurityManager securityManager = new LedgerSecurityManagerImpl(previousAdminDataset.getRolePrivileges(),
- previousAdminDataset.getUserRoles());
+ LedgerAdminDataQuery previousAdminDataset = previousBlockDataset.getAdminDataset();
+ LedgerSecurityManager securityManager = new LedgerSecurityManagerImpl(previousAdminDataset.getAdminInfo().getRolePrivileges(),
+ previousAdminDataset.getAdminInfo().getUserRoles());
batch = new InnerTransactionBatchProcessor(ledgerHash, securityManager, newBlockEditor, previousBlockDataset,
opHdlRegs, ledgerService, ledgerBlock.getHeight());
batchs.put(ledgerHash, batch);
@@ -75,7 +75,7 @@ public class TransactionEngineImpl implements TransactionEngine {
* @param opHandles 操作处理对象注册表;
*/
public InnerTransactionBatchProcessor(HashDigest ledgerHash, LedgerSecurityManager securityManager,
- LedgerEditor newBlockEditor, LedgerDataset previousBlockDataset, OperationHandleRegisteration opHandles,
+ LedgerEditor newBlockEditor, LedgerDataQuery previousBlockDataset, OperationHandleRegisteration opHandles,
LedgerService ledgerService, long blockHeight) {
super(securityManager, newBlockEditor, previousBlockDataset, opHandles, ledgerService);
this.ledgerHash = ledgerHash;
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TransactionSet.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TransactionSet.java
index c96ce3a2..24cb6416 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TransactionSet.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/TransactionSet.java
@@ -6,6 +6,7 @@ import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.ledger.LedgerException;
import com.jd.blockchain.ledger.LedgerTransaction;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.ledger.TransactionState;
import com.jd.blockchain.storage.service.ExPolicyKVStorage;
import com.jd.blockchain.storage.service.VersioningKVStorage;
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/UserAccountQuery.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/UserAccountQuery.java
new file mode 100644
index 00000000..3d920b5c
--- /dev/null
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/UserAccountQuery.java
@@ -0,0 +1,31 @@
+package com.jd.blockchain.ledger.core;
+
+import com.jd.blockchain.crypto.HashDigest;
+import com.jd.blockchain.ledger.AccountHeader;
+import com.jd.blockchain.ledger.MerkleProof;
+import com.jd.blockchain.utils.Bytes;
+
+public interface UserAccountQuery {
+
+ AccountHeader[] getAccounts(int fromIndex, int count);
+
+ /**
+ * 返回用户总数;
+ *
+ * @return
+ */
+ long getTotalCount();
+
+ HashDigest getRootHash();
+
+ MerkleProof getProof(Bytes key);
+
+ UserAccount getUser(String address);
+
+ UserAccount getUser(Bytes address);
+
+ boolean contains(Bytes address);
+
+ UserAccount getUser(Bytes address, long version);
+
+}
\ No newline at end of file
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/UserAccountSet.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/UserAccountSet.java
index d6100ea6..f1e8bbc3 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/UserAccountSet.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/UserAccountSet.java
@@ -5,6 +5,7 @@ import com.jd.blockchain.crypto.PubKey;
import com.jd.blockchain.ledger.AccountHeader;
import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.ledger.LedgerException;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.storage.service.ExPolicyKVStorage;
import com.jd.blockchain.storage.service.VersioningKVStorage;
import com.jd.blockchain.utils.Bytes;
@@ -14,7 +15,7 @@ import com.jd.blockchain.utils.Transactional;
* @author huanghaiquan
*
*/
-public class UserAccountSet implements Transactional, MerkleProvable {
+public class UserAccountSet implements Transactional, MerkleProvable, UserAccountQuery {
private AccountSet accountSet;
@@ -30,6 +31,7 @@ public class UserAccountSet implements Transactional, MerkleProvable {
accessPolicy);
}
+ @Override
public AccountHeader[] getAccounts(int fromIndex, int count) {
return accountSet.getAccounts(fromIndex,count);
}
@@ -39,6 +41,7 @@ public class UserAccountSet implements Transactional, MerkleProvable {
*
* @return
*/
+ @Override
public long getTotalCount() {
return accountSet.getTotalCount();
}
@@ -61,19 +64,23 @@ public class UserAccountSet implements Transactional, MerkleProvable {
return accountSet.getProof(key);
}
+ @Override
public UserAccount getUser(String address) {
return getUser(Bytes.fromBase58(address));
}
+ @Override
public UserAccount getUser(Bytes address) {
BaseAccount baseAccount = accountSet.getAccount(address);
return new UserAccount(baseAccount);
}
+ @Override
public boolean contains(Bytes address) {
return accountSet.contains(address);
}
+ @Override
public UserAccount getUser(Bytes address, long version) {
BaseAccount baseAccount = accountSet.getAccount(address, version);
return new UserAccount(baseAccount);
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/UserRoleDataset.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/UserRoleDataset.java
index 9a88e39b..2f4eb514 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/UserRoleDataset.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/UserRoleDataset.java
@@ -7,6 +7,7 @@ import com.jd.blockchain.crypto.HashDigest;
import com.jd.blockchain.ledger.AuthorizationException;
import com.jd.blockchain.ledger.CryptoSetting;
import com.jd.blockchain.ledger.LedgerException;
+import com.jd.blockchain.ledger.MerkleProof;
import com.jd.blockchain.ledger.RoleSet;
import com.jd.blockchain.ledger.RolesPolicy;
import com.jd.blockchain.ledger.UserRoles;
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/AbstractLedgerOperationHandle.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/AbstractLedgerOperationHandle.java
index 89bc5cf6..58444d3b 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/AbstractLedgerOperationHandle.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/AbstractLedgerOperationHandle.java
@@ -4,6 +4,7 @@ import com.jd.blockchain.binaryproto.DataContractRegistry;
import com.jd.blockchain.ledger.BytesValue;
import com.jd.blockchain.ledger.Operation;
import com.jd.blockchain.ledger.TransactionPermission;
+import com.jd.blockchain.ledger.core.LedgerDataQuery;
import com.jd.blockchain.ledger.core.LedgerDataset;
import com.jd.blockchain.ledger.core.LedgerService;
import com.jd.blockchain.ledger.core.MultiIdsPolicy;
@@ -44,7 +45,7 @@ public abstract class AbstractLedgerOperationHandle impleme
@Override
public final BytesValue process(Operation op, LedgerDataset newBlockDataset,
- TransactionRequestExtension requestContext, LedgerDataset previousBlockDataset,
+ TransactionRequestExtension requestContext, LedgerDataQuery previousBlockDataset,
OperationHandleContext handleContext, LedgerService ledgerService) {
// 权限校验;
SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy();
@@ -68,5 +69,5 @@ public abstract class AbstractLedgerOperationHandle impleme
* @param ledgerService
*/
protected abstract void doProcess(T op, LedgerDataset newBlockDataset, TransactionRequestExtension requestContext,
- LedgerDataset previousBlockDataset, OperationHandleContext handleContext, LedgerService ledgerService);
+ LedgerDataQuery previousBlockDataset, OperationHandleContext handleContext, LedgerService ledgerService);
}
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/AbtractContractEventSendOperationHandle.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/AbtractContractEventSendOperationHandle.java
index edcb5db3..ccbce284 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/AbtractContractEventSendOperationHandle.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/AbtractContractEventSendOperationHandle.java
@@ -10,7 +10,8 @@ import com.jd.blockchain.ledger.LedgerException;
import com.jd.blockchain.ledger.Operation;
import com.jd.blockchain.ledger.TransactionPermission;
import com.jd.blockchain.ledger.core.ContractAccount;
-import com.jd.blockchain.ledger.core.ContractAccountSet;
+import com.jd.blockchain.ledger.core.ContractAccountQuery;
+import com.jd.blockchain.ledger.core.LedgerDataQuery;
import com.jd.blockchain.ledger.core.LedgerDataset;
import com.jd.blockchain.ledger.core.LedgerQueryService;
import com.jd.blockchain.ledger.core.LedgerService;
@@ -31,7 +32,7 @@ public abstract class AbtractContractEventSendOperationHandle implements Operati
@Override
public BytesValue process(Operation op, LedgerDataset newBlockDataset, TransactionRequestExtension requestContext,
- LedgerDataset previousBlockDataset, OperationHandleContext opHandleContext, LedgerService ledgerService) {
+ LedgerDataQuery previousBlockDataset, OperationHandleContext opHandleContext, LedgerService ledgerService) {
// 权限校验;
SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy();
securityPolicy.checkEndpoints(TransactionPermission.CONTRACT_OPERATION, MultiIdsPolicy.AT_LEAST_ONE);
@@ -44,11 +45,11 @@ public abstract class AbtractContractEventSendOperationHandle implements Operati
}
private BytesValue doProcess(TransactionRequestExtension request, ContractEventSendOperation contractOP,
- LedgerDataset newBlockDataset, LedgerDataset previousBlockDataset, OperationHandleContext opHandleContext,
+ LedgerDataset newBlockDataset, LedgerDataQuery previousBlockDataset, OperationHandleContext opHandleContext,
LedgerService ledgerService) {
// 先从账本校验合约的有效性;
// 注意:必须在前一个区块的数据集中进行校验,因为那是经过共识的数据;从当前新区块链数据集校验则会带来攻击风险:未经共识的合约得到执行;
- ContractAccountSet contractSet = previousBlockDataset.getContractAccountset();
+ ContractAccountQuery contractSet = previousBlockDataset.getContractAccountset();
if (!contractSet.contains(contractOP.getContractAddress())) {
throw new LedgerException(String.format("Contract was not registered! --[ContractAddress=%s]",
contractOP.getContractAddress()));
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/ContractCodeDeployOperationHandle.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/ContractCodeDeployOperationHandle.java
index 6e0d68b8..9d975227 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/ContractCodeDeployOperationHandle.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/ContractCodeDeployOperationHandle.java
@@ -2,6 +2,7 @@ package com.jd.blockchain.ledger.core.handles;
import com.jd.blockchain.ledger.ContractCodeDeployOperation;
import com.jd.blockchain.ledger.LedgerPermission;
+import com.jd.blockchain.ledger.core.LedgerDataQuery;
import com.jd.blockchain.ledger.core.LedgerDataset;
import com.jd.blockchain.ledger.core.LedgerService;
import com.jd.blockchain.ledger.core.MultiIdsPolicy;
@@ -17,7 +18,7 @@ public class ContractCodeDeployOperationHandle extends AbstractLedgerOperationHa
@Override
protected void doProcess(ContractCodeDeployOperation op, LedgerDataset newBlockDataset,
- TransactionRequestExtension requestContext, LedgerDataset previousBlockDataset,
+ TransactionRequestExtension requestContext, LedgerDataQuery previousBlockDataset,
OperationHandleContext handleContext, LedgerService ledgerService) {
// TODO: 校验合约代码的正确性;
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/DataAccountKVSetOperationHandle.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/DataAccountKVSetOperationHandle.java
index 76f55220..6fd498e2 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/DataAccountKVSetOperationHandle.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/DataAccountKVSetOperationHandle.java
@@ -2,10 +2,11 @@ package com.jd.blockchain.ledger.core.handles;
import com.jd.blockchain.ledger.DataAccountDoesNotExistException;
import com.jd.blockchain.ledger.DataAccountKVSetOperation;
-import com.jd.blockchain.ledger.DataVersionConflictException;
import com.jd.blockchain.ledger.DataAccountKVSetOperation.KVWriteEntry;
+import com.jd.blockchain.ledger.DataVersionConflictException;
import com.jd.blockchain.ledger.LedgerPermission;
import com.jd.blockchain.ledger.core.DataAccount;
+import com.jd.blockchain.ledger.core.LedgerDataQuery;
import com.jd.blockchain.ledger.core.LedgerDataset;
import com.jd.blockchain.ledger.core.LedgerService;
import com.jd.blockchain.ledger.core.MultiIdsPolicy;
@@ -22,7 +23,7 @@ public class DataAccountKVSetOperationHandle extends AbstractLedgerOperationHand
@Override
protected void doProcess(DataAccountKVSetOperation kvWriteOp, LedgerDataset newBlockDataset,
- TransactionRequestExtension requestContext, LedgerDataset previousBlockDataset,
+ TransactionRequestExtension requestContext, LedgerDataQuery previousBlockDataset,
OperationHandleContext handleContext, LedgerService ledgerService) {
// 权限校验;
SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy();
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/DataAccountRegisterOperationHandle.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/DataAccountRegisterOperationHandle.java
index 06fe0746..2e0f872e 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/DataAccountRegisterOperationHandle.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/DataAccountRegisterOperationHandle.java
@@ -3,6 +3,7 @@ package com.jd.blockchain.ledger.core.handles;
import com.jd.blockchain.ledger.BlockchainIdentity;
import com.jd.blockchain.ledger.DataAccountRegisterOperation;
import com.jd.blockchain.ledger.LedgerPermission;
+import com.jd.blockchain.ledger.core.LedgerDataQuery;
import com.jd.blockchain.ledger.core.LedgerDataset;
import com.jd.blockchain.ledger.core.LedgerService;
import com.jd.blockchain.ledger.core.MultiIdsPolicy;
@@ -18,7 +19,7 @@ public class DataAccountRegisterOperationHandle extends AbstractLedgerOperationH
@Override
protected void doProcess(DataAccountRegisterOperation op, LedgerDataset newBlockDataset,
- TransactionRequestExtension requestContext, LedgerDataset previousBlockDataset,
+ TransactionRequestExtension requestContext, LedgerDataQuery previousBlockDataset,
OperationHandleContext handleContext, LedgerService ledgerService) {
// TODO: 请求者应该提供数据账户的公钥签名,以更好地确保注册人对该地址和公钥具有合法使用权;
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/RolesConfigureOperationHandle.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/RolesConfigureOperationHandle.java
index d0f95989..7f3c51bb 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/RolesConfigureOperationHandle.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/RolesConfigureOperationHandle.java
@@ -5,6 +5,7 @@ import com.jd.blockchain.ledger.RolePrivilegeSettings;
import com.jd.blockchain.ledger.RolePrivileges;
import com.jd.blockchain.ledger.RolesConfigureOperation;
import com.jd.blockchain.ledger.RolesConfigureOperation.RolePrivilegeEntry;
+import com.jd.blockchain.ledger.core.LedgerDataQuery;
import com.jd.blockchain.ledger.core.LedgerDataset;
import com.jd.blockchain.ledger.core.LedgerService;
import com.jd.blockchain.ledger.core.MultiIdsPolicy;
@@ -20,7 +21,7 @@ public class RolesConfigureOperationHandle extends AbstractLedgerOperationHandle
@Override
protected void doProcess(RolesConfigureOperation operation, LedgerDataset newBlockDataset,
- TransactionRequestExtension request, LedgerDataset previousBlockDataset,
+ TransactionRequestExtension request, LedgerDataQuery previousBlockDataset,
OperationHandleContext handleContext, LedgerService ledgerService) {
// 权限校验;
SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy();
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/UserAuthorizeOperationHandle.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/UserAuthorizeOperationHandle.java
index 26ce7c4a..b5fee9bb 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/UserAuthorizeOperationHandle.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/UserAuthorizeOperationHandle.java
@@ -10,6 +10,7 @@ import com.jd.blockchain.ledger.UserAuthorizeOperation;
import com.jd.blockchain.ledger.UserAuthorizeOperation.UserRolesEntry;
import com.jd.blockchain.ledger.UserRoles;
import com.jd.blockchain.ledger.UserRolesSettings;
+import com.jd.blockchain.ledger.core.LedgerDataQuery;
import com.jd.blockchain.ledger.core.LedgerDataset;
import com.jd.blockchain.ledger.core.LedgerService;
import com.jd.blockchain.ledger.core.MultiIdsPolicy;
@@ -25,7 +26,7 @@ public class UserAuthorizeOperationHandle extends AbstractLedgerOperationHandle<
@Override
protected void doProcess(UserAuthorizeOperation operation, LedgerDataset newBlockDataset,
- TransactionRequestExtension request, LedgerDataset previousBlockDataset,
+ TransactionRequestExtension request, LedgerDataQuery previousBlockDataset,
OperationHandleContext handleContext, LedgerService ledgerService) {
// 权限校验;
SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy();
diff --git a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/UserRegisterOperationHandle.java b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/UserRegisterOperationHandle.java
index 6a399e71..6307968d 100644
--- a/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/UserRegisterOperationHandle.java
+++ b/source/ledger/ledger-core/src/main/java/com/jd/blockchain/ledger/core/handles/UserRegisterOperationHandle.java
@@ -3,6 +3,7 @@ package com.jd.blockchain.ledger.core.handles;
import com.jd.blockchain.ledger.BlockchainIdentity;
import com.jd.blockchain.ledger.LedgerPermission;
import com.jd.blockchain.ledger.UserRegisterOperation;
+import com.jd.blockchain.ledger.core.LedgerDataQuery;
import com.jd.blockchain.ledger.core.LedgerDataset;
import com.jd.blockchain.ledger.core.LedgerService;
import com.jd.blockchain.ledger.core.MultiIdsPolicy;
@@ -19,7 +20,7 @@ public class UserRegisterOperationHandle extends AbstractLedgerOperationHandle
+ * 如果不存在,则返回 null;
+ *
+ * @param address
+ * @return
+ */
+ ParticipantNode getParticipant(Bytes address);
+
+ ParticipantNode[] getParticipants();
+
+}
\ No newline at end of file
diff --git a/source/peer/src/main/java/com/jd/blockchain/peer/web/LedgerQueryController.java b/source/peer/src/main/java/com/jd/blockchain/peer/web/LedgerQueryController.java
index 87eaf11a..992cf1a0 100644
--- a/source/peer/src/main/java/com/jd/blockchain/peer/web/LedgerQueryController.java
+++ b/source/peer/src/main/java/com/jd/blockchain/peer/web/LedgerQueryController.java
@@ -14,14 +14,14 @@ import org.springframework.web.bind.annotation.RestController;
import com.jd.blockchain.contract.ContractException;
import com.jd.blockchain.crypto.HashDigest;
-import com.jd.blockchain.ledger.core.ContractAccountSet;
+import com.jd.blockchain.ledger.core.ContractAccountQuery;
import com.jd.blockchain.ledger.core.DataAccount;
-import com.jd.blockchain.ledger.core.DataAccountSet;
+import com.jd.blockchain.ledger.core.DataAccountQuery;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.LedgerService;
import com.jd.blockchain.ledger.core.ParticipantCertData;
import com.jd.blockchain.ledger.core.TransactionSet;
-import com.jd.blockchain.ledger.core.UserAccountSet;
+import com.jd.blockchain.ledger.core.UserAccountQuery;
import com.jd.blockchain.transaction.BlockchainQueryService;
import com.jd.blockchain.utils.Bytes;
import com.jd.blockchain.utils.QueryUtil;
@@ -145,7 +145,7 @@ public class LedgerQueryController implements BlockchainQueryService {
@PathVariable(name = "blockHeight") long height) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getBlock(height);
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
return dataAccountSet.getTotalCount();
}
@@ -155,7 +155,7 @@ public class LedgerQueryController implements BlockchainQueryService {
@PathVariable(name = "blockHash") HashDigest blockHash) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getBlock(blockHash);
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
return dataAccountSet.getTotalCount();
}
@@ -164,7 +164,7 @@ public class LedgerQueryController implements BlockchainQueryService {
public long getDataAccountTotalCount(@PathVariable(name = "ledgerHash") HashDigest ledgerHash) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
return dataAccountSet.getTotalCount();
}
@@ -174,7 +174,7 @@ public class LedgerQueryController implements BlockchainQueryService {
@PathVariable(name = "blockHeight") long height) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getBlock(height);
- UserAccountSet userAccountSet = ledger.getUserAccountSet(block);
+ UserAccountQuery userAccountSet = ledger.getUserAccountSet(block);
return userAccountSet.getTotalCount();
}
@@ -184,7 +184,7 @@ public class LedgerQueryController implements BlockchainQueryService {
@PathVariable(name = "blockHash") HashDigest blockHash) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getBlock(blockHash);
- UserAccountSet userAccountSet = ledger.getUserAccountSet(block);
+ UserAccountQuery userAccountSet = ledger.getUserAccountSet(block);
return userAccountSet.getTotalCount();
}
@@ -193,7 +193,7 @@ public class LedgerQueryController implements BlockchainQueryService {
public long getUserTotalCount(@PathVariable(name = "ledgerHash") HashDigest ledgerHash) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- UserAccountSet userAccountSet = ledger.getUserAccountSet(block);
+ UserAccountQuery userAccountSet = ledger.getUserAccountSet(block);
return userAccountSet.getTotalCount();
}
@@ -203,7 +203,7 @@ public class LedgerQueryController implements BlockchainQueryService {
@PathVariable(name = "blockHeight") long height) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getBlock(height);
- ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block);
+ ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block);
return contractAccountSet.getTotalCount();
}
@@ -213,7 +213,7 @@ public class LedgerQueryController implements BlockchainQueryService {
@PathVariable(name = "blockHash") HashDigest blockHash) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getBlock(blockHash);
- ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block);
+ ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block);
return contractAccountSet.getTotalCount();
}
@@ -222,7 +222,7 @@ public class LedgerQueryController implements BlockchainQueryService {
public long getContractTotalCount(@PathVariable(name = "ledgerHash") HashDigest ledgerHash) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block);
+ ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block);
return contractAccountSet.getTotalCount();
}
@@ -320,7 +320,7 @@ public class LedgerQueryController implements BlockchainQueryService {
@PathVariable(name = "address") String address) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- UserAccountSet userAccountSet = ledger.getUserAccountSet(block);
+ UserAccountQuery userAccountSet = ledger.getUserAccountSet(block);
return userAccountSet.getUser(address);
}
@@ -330,7 +330,7 @@ public class LedgerQueryController implements BlockchainQueryService {
@PathVariable(name = "address") String address) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
return dataAccountSet.getDataAccount(Bytes.fromBase58(address));
}
@@ -344,7 +344,7 @@ public class LedgerQueryController implements BlockchainQueryService {
}
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address));
KVDataEntry[] entries = new KVDataEntry[keys.length];
@@ -393,7 +393,7 @@ public class LedgerQueryController implements BlockchainQueryService {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address));
KVDataEntry[] entries = new KVDataEntry[keys.length];
@@ -428,7 +428,7 @@ public class LedgerQueryController implements BlockchainQueryService {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address));
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) dataAccount.getDataEntriesTotalCount());
@@ -442,7 +442,7 @@ public class LedgerQueryController implements BlockchainQueryService {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address));
return dataAccount.getDataEntriesTotalCount();
@@ -454,7 +454,7 @@ public class LedgerQueryController implements BlockchainQueryService {
@PathVariable(name = "address") String address) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block);
+ ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block);
return contractAccountSet.getContract(Bytes.fromBase58(address));
}
@@ -473,7 +473,7 @@ public class LedgerQueryController implements BlockchainQueryService {
@RequestParam(name = "count", required = false, defaultValue = "-1") int count) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- UserAccountSet userAccountSet = ledger.getUserAccountSet(block);
+ UserAccountQuery userAccountSet = ledger.getUserAccountSet(block);
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) userAccountSet.getTotalCount());
return userAccountSet.getAccounts(pages[0], pages[1]);
}
@@ -493,7 +493,7 @@ public class LedgerQueryController implements BlockchainQueryService {
@RequestParam(name = "count", required = false, defaultValue = "-1") int count) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- DataAccountSet dataAccountSet = ledger.getDataAccountSet(block);
+ DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block);
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) dataAccountSet.getTotalCount());
return dataAccountSet.getAccounts(pages[0], pages[1]);
}
@@ -505,7 +505,7 @@ public class LedgerQueryController implements BlockchainQueryService {
@RequestParam(name = "count", required = false, defaultValue = "-1") int count) {
LedgerRepository ledger = ledgerService.getLedger(ledgerHash);
LedgerBlock block = ledger.getLatestBlock();
- ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block);
+ ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block);
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) contractAccountSet.getTotalCount());
return contractAccountSet.getAccounts(pages[0], pages[1]);
}
diff --git a/source/peer/src/main/java/com/jd/blockchain/peer/web/ManagementController.java b/source/peer/src/main/java/com/jd/blockchain/peer/web/ManagementController.java
index 7449e248..9ad0a94b 100644
--- a/source/peer/src/main/java/com/jd/blockchain/peer/web/ManagementController.java
+++ b/source/peer/src/main/java/com/jd/blockchain/peer/web/ManagementController.java
@@ -47,6 +47,7 @@ import com.jd.blockchain.ledger.TransactionContentBody;
import com.jd.blockchain.ledger.TransactionRequest;
import com.jd.blockchain.ledger.TransactionResponse;
import com.jd.blockchain.ledger.UserRegisterOperation;
+import com.jd.blockchain.ledger.core.LedgerAdminDataQuery;
import com.jd.blockchain.ledger.core.LedgerManage;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.peer.ConsensusRealm;
@@ -122,7 +123,7 @@ public class ManagementController implements LedgerBindingConfigAware, PeerManag
DataContractRegistry.register(BftsmartConsensusSettings.class);
DataContractRegistry.register(BftsmartNodeSettings.class);
- DataContractRegistry.register(LedgerAdminInfo.class);
+ DataContractRegistry.register(LedgerAdminDataQuery.class);
}
diff --git a/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/IntegrationTest.java b/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/IntegrationTest.java
index e6c999e8..f00b50dd 100644
--- a/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/IntegrationTest.java
+++ b/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/IntegrationTest.java
@@ -35,7 +35,7 @@ import com.jd.blockchain.ledger.PreparedTransaction;
import com.jd.blockchain.ledger.TransactionResponse;
import com.jd.blockchain.ledger.TransactionTemplate;
import com.jd.blockchain.ledger.UserInfo;
-import com.jd.blockchain.ledger.core.DataAccountSet;
+import com.jd.blockchain.ledger.core.DataAccountQuery;
import com.jd.blockchain.ledger.core.LedgerManage;
import com.jd.blockchain.ledger.core.LedgerManager;
import com.jd.blockchain.ledger.core.LedgerRepository;
@@ -619,7 +619,7 @@ public class IntegrationTest {
LedgerBlock backgroundLedgerBlock = ledgerOfNode0.retrieveLatestBlock();
// 验证合约中的赋值,外部可以获得;
- DataAccountSet dataAccountSet = ledgerOfNode0.getDataAccountSet(backgroundLedgerBlock);
+ DataAccountQuery dataAccountSet = ledgerOfNode0.getDataAccountSet(backgroundLedgerBlock);
AsymmetricKeypair key = Crypto.getSignatureFunction("ED25519").generateKeypair();
PubKey pubKey = key.getPubKey();
Bytes dataAddress = AddressEncoding.generateAddress(pubKey);
diff --git a/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerInitializeTest.java b/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerInitializeTest.java
index 39618d9d..431c6596 100644
--- a/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerInitializeTest.java
+++ b/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerInitializeTest.java
@@ -27,7 +27,7 @@ import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.ledger.core.LedgerManager;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.UserAccount;
-import com.jd.blockchain.ledger.core.UserAccountSet;
+import com.jd.blockchain.ledger.core.UserAccountQuery;
import com.jd.blockchain.storage.service.utils.MemoryDBConnFactory;
//import com.jd.blockchain.storage.service.utils.MemoryBasedDb;
import com.jd.blockchain.tools.initializer.DBConnectionConfig;
@@ -113,7 +113,7 @@ public class LedgerInitializeTest {
LedgerBlock genesisBlock = ledger0.getLatestBlock();
- UserAccountSet userset0 = ledger0.getUserAccountSet(genesisBlock);
+ UserAccountQuery userset0 = ledger0.getUserAccountSet(genesisBlock);
PubKey pubKey0 = KeyGenUtils.decodePubKey(PUB_KEYS[0]);
Bytes address0 = AddressEncoding.generateAddress(pubKey0);
diff --git a/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerInitializeWebTest.java b/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerInitializeWebTest.java
index 7b49bfb7..f174b18f 100644
--- a/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerInitializeWebTest.java
+++ b/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerInitializeWebTest.java
@@ -32,7 +32,7 @@ import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.ledger.core.LedgerManager;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.UserAccount;
-import com.jd.blockchain.ledger.core.UserAccountSet;
+import com.jd.blockchain.ledger.core.UserAccountQuery;
import com.jd.blockchain.storage.service.DbConnection;
import com.jd.blockchain.storage.service.impl.composite.CompositeConnectionFactory;
//import com.jd.blockchain.storage.service.utils.MemoryBasedDb;
@@ -298,7 +298,7 @@ public class LedgerInitializeWebTest {
LedgerBlock genesisBlock = ledger0.getLatestBlock();
- UserAccountSet userset0 = ledger0.getUserAccountSet(genesisBlock);
+ UserAccountQuery userset0 = ledger0.getUserAccountSet(genesisBlock);
PubKey pubKey0 = KeyGenUtils.decodePubKey(PUB_KEYS[0]);
Bytes address0 = AddressEncoding.generateAddress(pubKey0);
diff --git a/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerPerformanceTest.java b/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerPerformanceTest.java
index 03243aa4..c1ac727f 100644
--- a/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerPerformanceTest.java
+++ b/source/test/test-integration/src/main/java/test/com/jd/blockchain/intgr/perf/LedgerPerformanceTest.java
@@ -40,7 +40,7 @@ import com.jd.blockchain.ledger.TransactionRequestBuilder;
import com.jd.blockchain.ledger.TransactionResponse;
import com.jd.blockchain.ledger.UserRegisterOperation;
import com.jd.blockchain.ledger.core.DefaultOperationHandleRegisteration;
-import com.jd.blockchain.ledger.core.LedgerDataset;
+import com.jd.blockchain.ledger.core.LedgerDataQuery;
import com.jd.blockchain.ledger.core.LedgerEditor;
import com.jd.blockchain.ledger.core.LedgerManager;
import com.jd.blockchain.ledger.core.LedgerRepository;
@@ -291,7 +291,7 @@ public class LedgerPerformanceTest {
ConsoleUtils.info("\r\n\r\n================= 准备测试交易 [执行合约] =================");
LedgerBlock latestBlock = ledger.getLatestBlock();
- LedgerDataset previousDataSet = ledger.getDataSet(latestBlock);
+ LedgerDataQuery previousDataSet = ledger.getDataSet(latestBlock);
LedgerEditor newEditor = ledger.createNextBlock();
TransactionBatchProcessor txProc = new TransactionBatchProcessor(DEFAULT_SECURITY_MANAGER, newEditor,
previousDataSet, opHandler, ledgerManager);
@@ -324,7 +324,7 @@ public class LedgerPerformanceTest {
long batchStartTs = System.currentTimeMillis();
for (int i = 0; i < batchCount; i++) {
LedgerBlock latestBlock = ledger.getLatestBlock();
- LedgerDataset previousDataSet = ledger.getDataSet(latestBlock);
+ LedgerDataQuery previousDataSet = ledger.getDataSet(latestBlock);
if (statistic) {
ConsoleUtils.info("------ 开始执行交易, 即将生成区块[高度:%s] ------", (latestBlock.getHeight() + 1));
}
diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTestAll4Redis.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTestAll4Redis.java
index 4ee5c5e8..43df7bde 100644
--- a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTestAll4Redis.java
+++ b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTestAll4Redis.java
@@ -4,7 +4,7 @@ import com.jd.blockchain.crypto.*;
import com.jd.blockchain.gateway.GatewayConfigProperties.KeyPairConfig;
import com.jd.blockchain.ledger.*;
import com.jd.blockchain.ledger.core.DataAccount;
-import com.jd.blockchain.ledger.core.DataAccountSet;
+import com.jd.blockchain.ledger.core.DataAccountQuery;
import com.jd.blockchain.ledger.core.LedgerManage;
import com.jd.blockchain.ledger.core.LedgerManager;
import com.jd.blockchain.ledger.core.LedgerRepository;
@@ -445,7 +445,7 @@ public class IntegrationTestAll4Redis {
assertEquals(txResp.getBlockHeight(), backgroundLedgerBlock.getHeight());
// 验证合约中的赋值,外部可以获得;
- DataAccountSet dataAccountSet = ledgerRepository.getDataAccountSet(backgroundLedgerBlock);
+ DataAccountQuery dataAccountSet = ledgerRepository.getDataAccountSet(backgroundLedgerBlock);
AsymmetricKeypair key = Crypto.getSignatureFunction("ED25519").generateKeypair();
PubKey pubKey = key.getPubKey();
Bytes dataAddress = AddressEncoding.generateAddress(pubKey);
diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTestDataAccount.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTestDataAccount.java
index 4efd7ae5..e11891a9 100644
--- a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTestDataAccount.java
+++ b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/IntegrationTestDataAccount.java
@@ -29,7 +29,7 @@ import com.jd.blockchain.ledger.LedgerInitProperties;
import com.jd.blockchain.ledger.PreparedTransaction;
import com.jd.blockchain.ledger.TransactionResponse;
import com.jd.blockchain.ledger.TransactionTemplate;
-import com.jd.blockchain.ledger.core.DataAccountSet;
+import com.jd.blockchain.ledger.core.DataAccountQuery;
import com.jd.blockchain.ledger.core.LedgerManager;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.sdk.BlockchainService;
@@ -187,7 +187,7 @@ public class IntegrationTestDataAccount {
LedgerRepository ledgerRepository = ledgerManager.register(ledgerHashs[0], memoryBasedDb.getStorageService());
- DataAccountSet dataAccountSet = ledgerRepository.getDataAccountSet(ledgerRepository.retrieveLatestBlock());
+ DataAccountQuery dataAccountSet = ledgerRepository.getDataAccountSet(ledgerRepository.retrieveLatestBlock());
TransactionTemplate txTpl = blockchainService.newTransaction(ledgerHashs[0]);
diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeTest.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeTest.java
index 813c964c..6d18f24f 100644
--- a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeTest.java
+++ b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeTest.java
@@ -34,7 +34,7 @@ import com.jd.blockchain.ledger.core.LedgerInitProposal;
import com.jd.blockchain.ledger.core.LedgerManager;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.UserAccount;
-import com.jd.blockchain.ledger.core.UserAccountSet;
+import com.jd.blockchain.ledger.core.UserAccountQuery;
import com.jd.blockchain.storage.service.utils.MemoryDBConnFactory;
import com.jd.blockchain.tools.initializer.DBConnectionConfig;
import com.jd.blockchain.tools.initializer.LedgerInitProcess;
@@ -143,7 +143,7 @@ public class LedgerInitializeTest {
assertEquals(0, genesisBlock.getHeight());
assertEquals(ledgerHash0, genesisBlock.getHash());
- UserAccountSet userset0 = ledger0.getUserAccountSet(genesisBlock);
+ UserAccountQuery userset0 = ledger0.getUserAccountSet(genesisBlock);
PubKey pubKey0 = KeyGenUtils.decodePubKey(PUB_KEYS[0]);
Bytes address0 = AddressEncoding.generateAddress(pubKey0);
diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeWeb4Nodes.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeWeb4Nodes.java
index 939811a1..6909c155 100644
--- a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeWeb4Nodes.java
+++ b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/initializer/LedgerInitializeWeb4Nodes.java
@@ -138,7 +138,7 @@ public class LedgerInitializeWeb4Nodes {
assertEquals(0, genesisBlock.getHeight());
assertEquals(ledgerHash0, genesisBlock.getHash());
- UserAccountSet userset0 = ledger0.getUserAccountSet(genesisBlock);
+ UserAccountQuery userset0 = ledger0.getUserAccountSet(genesisBlock);
PubKey pubKey0 = KeyGenUtils.decodePubKey(PUB_KEYS[0]);
Bytes address0 = AddressEncoding.generateAddress(pubKey0);
diff --git a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/ledger/LedgerBlockGeneratingTest.java b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/ledger/LedgerBlockGeneratingTest.java
index 27f53934..0e1b2755 100644
--- a/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/ledger/LedgerBlockGeneratingTest.java
+++ b/source/test/test-integration/src/test/java/test/com/jd/blockchain/intgr/ledger/LedgerBlockGeneratingTest.java
@@ -27,7 +27,7 @@ import com.jd.blockchain.ledger.LedgerInitProperties;
import com.jd.blockchain.ledger.TransactionRequest;
import com.jd.blockchain.ledger.TransactionRequestBuilder;
import com.jd.blockchain.ledger.core.DefaultOperationHandleRegisteration;
-import com.jd.blockchain.ledger.core.LedgerDataset;
+import com.jd.blockchain.ledger.core.LedgerDataQuery;
import com.jd.blockchain.ledger.core.LedgerEditor;
import com.jd.blockchain.ledger.core.LedgerManager;
import com.jd.blockchain.ledger.core.LedgerRepository;
@@ -77,7 +77,7 @@ public class LedgerBlockGeneratingTest {
LedgerBlock latestBlock = ledger.getLatestBlock();
assertEquals(height + i, latestBlock.getHeight());
- LedgerDataset previousDataSet = ledger.getDataSet(latestBlock);
+ LedgerDataQuery previousDataSet = ledger.getDataSet(latestBlock);
ConsoleUtils.info("------ 开始执行交易, 即将生成区块[%s] ------", (latestBlock.getHeight() + 1));
long startTs = System.currentTimeMillis();
diff --git a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java
index ab2167a2..26f54dc5 100644
--- a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java
+++ b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/MockerNodeContext.java
@@ -60,13 +60,12 @@ import com.jd.blockchain.ledger.UserInfo;
import com.jd.blockchain.ledger.UserRegisterOperation;
import com.jd.blockchain.ledger.core.CryptoConfig;
import com.jd.blockchain.ledger.core.DefaultOperationHandleRegisteration;
-import com.jd.blockchain.ledger.core.LedgerDataset;
+import com.jd.blockchain.ledger.core.LedgerDataQuery;
import com.jd.blockchain.ledger.core.LedgerEditor;
import com.jd.blockchain.ledger.core.LedgerManager;
import com.jd.blockchain.ledger.core.LedgerQueryService;
import com.jd.blockchain.ledger.core.LedgerRepository;
import com.jd.blockchain.ledger.core.LedgerSecurityManager;
-import com.jd.blockchain.ledger.core.OperationHandleRegisteration;
import com.jd.blockchain.ledger.core.SecurityPolicy;
import com.jd.blockchain.ledger.core.TransactionBatchProcessor;
import com.jd.blockchain.mocker.config.MockerConstant;
@@ -465,7 +464,7 @@ public class MockerNodeContext implements BlockchainQueryService {
public OperationResult[] txProcess(TransactionRequest txRequest) {
LedgerEditor newEditor = ledgerRepository.createNextBlock();
LedgerBlock latestBlock = ledgerRepository.getLatestBlock();
- LedgerDataset previousDataSet = ledgerRepository.getDataSet(latestBlock);
+ LedgerDataQuery previousDataSet = ledgerRepository.getDataSet(latestBlock);
TransactionBatchProcessor txProc = new TransactionBatchProcessor(getSecurityManager(), newEditor,
previousDataSet, opHandler, ledgerManager);
TransactionResponse txResp = txProc.schedule(txRequest);
diff --git a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java
index 174e1f86..d278de13 100644
--- a/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java
+++ b/source/tools/tools-mocker/src/main/java/com/jd/blockchain/mocker/handler/MockerContractExeHandle.java
@@ -9,7 +9,14 @@ import com.jd.blockchain.contract.ContractException;
import com.jd.blockchain.contract.EventProcessingAware;
import com.jd.blockchain.contract.LedgerContext;
import com.jd.blockchain.crypto.HashDigest;
-import com.jd.blockchain.ledger.*;
+import com.jd.blockchain.ledger.BlockchainIdentity;
+import com.jd.blockchain.ledger.BytesValue;
+import com.jd.blockchain.ledger.BytesValueEncoding;
+import com.jd.blockchain.ledger.BytesValueList;
+import com.jd.blockchain.ledger.ContractEventSendOperation;
+import com.jd.blockchain.ledger.Operation;
+import com.jd.blockchain.ledger.TransactionRequest;
+import com.jd.blockchain.ledger.core.LedgerDataQuery;
import com.jd.blockchain.ledger.core.LedgerDataset;
import com.jd.blockchain.ledger.core.LedgerManager;
import com.jd.blockchain.ledger.core.LedgerQueryService;
@@ -30,7 +37,7 @@ public class MockerContractExeHandle implements OperationHandle {
@Override
public BytesValue process(Operation op, LedgerDataset dataset, TransactionRequestExtension request,
- LedgerDataset previousBlockDataset, OperationHandleContext opHandleContext, LedgerService ledgerService) {
+ LedgerDataQuery previousBlockDataset, OperationHandleContext opHandleContext, LedgerService ledgerService) {
ContractEventSendOperation contractOP = (ContractEventSendOperation) op;
HashDigest txHash = request.getTransactionContent().getHash();