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();