@@ -12,6 +12,7 @@ import com.jd.blockchain.ledger.AccountHeader; | |||||
import com.jd.blockchain.ledger.BytesValue; | import com.jd.blockchain.ledger.BytesValue; | ||||
import com.jd.blockchain.ledger.CryptoSetting; | import com.jd.blockchain.ledger.CryptoSetting; | ||||
import com.jd.blockchain.ledger.LedgerException; | 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.ExPolicyKVStorage; | ||||
import com.jd.blockchain.storage.service.VersioningKVStorage; | import com.jd.blockchain.storage.service.VersioningKVStorage; | ||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
@@ -8,6 +8,7 @@ import com.jd.blockchain.ledger.BlockchainIdentity; | |||||
import com.jd.blockchain.ledger.BlockchainIdentityData; | import com.jd.blockchain.ledger.BlockchainIdentityData; | ||||
import com.jd.blockchain.ledger.BytesValue; | import com.jd.blockchain.ledger.BytesValue; | ||||
import com.jd.blockchain.ledger.CryptoSetting; | 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.ExPolicyKVStorage; | ||||
import com.jd.blockchain.storage.service.VersioningKVStorage; | import com.jd.blockchain.storage.service.VersioningKVStorage; | ||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
@@ -5,6 +5,7 @@ import com.jd.blockchain.crypto.PubKey; | |||||
import com.jd.blockchain.ledger.BytesData; | import com.jd.blockchain.ledger.BytesData; | ||||
import com.jd.blockchain.ledger.BytesValue; | import com.jd.blockchain.ledger.BytesValue; | ||||
import com.jd.blockchain.ledger.ContractInfo; | import com.jd.blockchain.ledger.ContractInfo; | ||||
import com.jd.blockchain.ledger.MerkleProof; | |||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
public class ContractAccount implements ContractInfo { | public class ContractAccount implements ContractInfo { | ||||
@@ -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); | |||||
} |
@@ -5,12 +5,13 @@ import com.jd.blockchain.crypto.PubKey; | |||||
import com.jd.blockchain.ledger.AccountHeader; | import com.jd.blockchain.ledger.AccountHeader; | ||||
import com.jd.blockchain.ledger.CryptoSetting; | import com.jd.blockchain.ledger.CryptoSetting; | ||||
import com.jd.blockchain.ledger.DigitalSignature; | 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.ExPolicyKVStorage; | ||||
import com.jd.blockchain.storage.service.VersioningKVStorage; | import com.jd.blockchain.storage.service.VersioningKVStorage; | ||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
import com.jd.blockchain.utils.Transactional; | import com.jd.blockchain.utils.Transactional; | ||||
public class ContractAccountSet implements MerkleProvable, Transactional { | |||||
public class ContractAccountSet implements MerkleProvable, Transactional, ContractAccountQuery { | |||||
private AccountSet accountSet; | private AccountSet accountSet; | ||||
@@ -25,6 +26,7 @@ public class ContractAccountSet implements MerkleProvable, Transactional { | |||||
accountSet = new AccountSet(dataRootHash, cryptoSetting, prefix, exStorage, verStorage, readonly, accessPolicy); | accountSet = new AccountSet(dataRootHash, cryptoSetting, prefix, exStorage, verStorage, readonly, accessPolicy); | ||||
} | } | ||||
@Override | |||||
public AccountHeader[] getAccounts(int fromIndex, int count) { | public AccountHeader[] getAccounts(int fromIndex, int count) { | ||||
return accountSet.getAccounts(fromIndex,count); | return accountSet.getAccounts(fromIndex,count); | ||||
} | } | ||||
@@ -47,6 +49,7 @@ public class ContractAccountSet implements MerkleProvable, Transactional { | |||||
* | * | ||||
* @return | * @return | ||||
*/ | */ | ||||
@Override | |||||
public long getTotalCount() { | public long getTotalCount() { | ||||
return accountSet.getTotalCount(); | return accountSet.getTotalCount(); | ||||
} | } | ||||
@@ -56,15 +59,18 @@ public class ContractAccountSet implements MerkleProvable, Transactional { | |||||
return accountSet.getProof(address); | return accountSet.getProof(address); | ||||
} | } | ||||
@Override | |||||
public boolean contains(Bytes address) { | public boolean contains(Bytes address) { | ||||
return accountSet.contains(address); | return accountSet.contains(address); | ||||
} | } | ||||
@Override | |||||
public ContractAccount getContract(Bytes address) { | public ContractAccount getContract(Bytes address) { | ||||
BaseAccount accBase = accountSet.getAccount(address); | BaseAccount accBase = accountSet.getAccount(address); | ||||
return new ContractAccount(accBase); | return new ContractAccount(accBase); | ||||
} | } | ||||
@Override | |||||
public ContractAccount getContract(Bytes address, long version) { | public ContractAccount getContract(Bytes address, long version) { | ||||
BaseAccount accBase = accountSet.getAccount(address, version); | BaseAccount accBase = accountSet.getAccount(address, version); | ||||
return new ContractAccount(accBase); | return new ContractAccount(accBase); | ||||
@@ -8,6 +8,7 @@ import com.jd.blockchain.ledger.BytesData; | |||||
import com.jd.blockchain.ledger.BytesValue; | import com.jd.blockchain.ledger.BytesValue; | ||||
import com.jd.blockchain.ledger.KVDataEntry; | import com.jd.blockchain.ledger.KVDataEntry; | ||||
import com.jd.blockchain.ledger.KVDataObject; | import com.jd.blockchain.ledger.KVDataObject; | ||||
import com.jd.blockchain.ledger.MerkleProof; | |||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
public class DataAccount implements AccountHeader, MerkleProvable { | public class DataAccount implements AccountHeader, MerkleProvable { | ||||
@@ -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); | |||||
/** | |||||
* 返回数据账户; <br> | |||||
* 如果不存在,则返回 null; | |||||
* | |||||
* @param address | |||||
* @return | |||||
*/ | |||||
DataAccount getDataAccount(Bytes address); | |||||
DataAccount getDataAccount(Bytes address, long version); | |||||
} |
@@ -5,12 +5,13 @@ import com.jd.blockchain.crypto.PubKey; | |||||
import com.jd.blockchain.ledger.AccountHeader; | import com.jd.blockchain.ledger.AccountHeader; | ||||
import com.jd.blockchain.ledger.CryptoSetting; | import com.jd.blockchain.ledger.CryptoSetting; | ||||
import com.jd.blockchain.ledger.DigitalSignature; | 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.ExPolicyKVStorage; | ||||
import com.jd.blockchain.storage.service.VersioningKVStorage; | import com.jd.blockchain.storage.service.VersioningKVStorage; | ||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
import com.jd.blockchain.utils.Transactional; | import com.jd.blockchain.utils.Transactional; | ||||
public class DataAccountSet implements MerkleProvable, Transactional { | |||||
public class DataAccountSet implements MerkleProvable, Transactional, DataAccountQuery { | |||||
private AccountSet accountSet; | private AccountSet accountSet; | ||||
@@ -25,6 +26,7 @@ public class DataAccountSet implements MerkleProvable, Transactional { | |||||
accountSet = new AccountSet(dataRootHash, cryptoSetting, prefix, exStorage, verStorage, readonly, accessPolicy); | accountSet = new AccountSet(dataRootHash, cryptoSetting, prefix, exStorage, verStorage, readonly, accessPolicy); | ||||
} | } | ||||
@Override | |||||
public AccountHeader[] getAccounts(int fromIndex, int count) { | public AccountHeader[] getAccounts(int fromIndex, int count) { | ||||
return accountSet.getAccounts(fromIndex, count); | return accountSet.getAccounts(fromIndex, count); | ||||
} | } | ||||
@@ -42,6 +44,7 @@ public class DataAccountSet implements MerkleProvable, Transactional { | |||||
return accountSet.getRootHash(); | return accountSet.getRootHash(); | ||||
} | } | ||||
@Override | |||||
public long getTotalCount() { | public long getTotalCount() { | ||||
return accountSet.getTotalCount(); | return accountSet.getTotalCount(); | ||||
} | } | ||||
@@ -67,6 +70,7 @@ public class DataAccountSet implements MerkleProvable, Transactional { | |||||
* @param address | * @param address | ||||
* @return | * @return | ||||
*/ | */ | ||||
@Override | |||||
public DataAccount getDataAccount(Bytes address) { | public DataAccount getDataAccount(Bytes address) { | ||||
BaseAccount accBase = accountSet.getAccount(address); | BaseAccount accBase = accountSet.getAccount(address); | ||||
if (accBase == null) { | if (accBase == null) { | ||||
@@ -75,6 +79,7 @@ public class DataAccountSet implements MerkleProvable, Transactional { | |||||
return new DataAccount(accBase); | return new DataAccount(accBase); | ||||
} | } | ||||
@Override | |||||
public DataAccount getDataAccount(Bytes address, long version) { | public DataAccount getDataAccount(Bytes address, long version) { | ||||
BaseAccount accBase = accountSet.getAccount(address, version); | BaseAccount accBase = accountSet.getAccount(address, version); | ||||
return new DataAccount(accBase); | return new DataAccount(accBase); | ||||
@@ -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(); | |||||
} |
@@ -23,7 +23,7 @@ import com.jd.blockchain.storage.service.VersioningKVStorage; | |||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
import com.jd.blockchain.utils.Transactional; | import com.jd.blockchain.utils.Transactional; | ||||
public class LedgerAdminDataset implements Transactional, LedgerAdminInfo { | |||||
public class LedgerAdminDataset implements Transactional, LedgerAdminDataQuery, LedgerAdminInfo { | |||||
static { | static { | ||||
DataContractRegistry.register(LedgerMetadata.class); | DataContractRegistry.register(LedgerMetadata.class); | ||||
@@ -108,6 +108,11 @@ public class LedgerAdminDataset implements Transactional, LedgerAdminInfo { | |||||
public UserRolesSettings getUserRoles() { | public UserRolesSettings getUserRoles() { | ||||
return userRoles; | return userRoles; | ||||
} | } | ||||
@Override | |||||
public LedgerAdminInfo getAdminInfo() { | |||||
return this; | |||||
} | |||||
/** | /** | ||||
* 初始化账本的管理账户; | * 初始化账本的管理账户; | ||||
@@ -290,7 +295,8 @@ public class LedgerAdminDataset implements Transactional, LedgerAdminInfo { | |||||
return participants.getParticipants(); | return participants.getParticipants(); | ||||
} | } | ||||
ParticipantDataset getParticipantDataset() { | |||||
@Override | |||||
public ParticipantDataset getParticipantDataset() { | |||||
return participants; | return participants; | ||||
} | } | ||||
@@ -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(); | |||||
} |
@@ -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(); | |||||
} | |||||
} |
@@ -1,21 +1,97 @@ | |||||
package com.jd.blockchain.ledger.core; | 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(); | |||||
} | |||||
} |
@@ -62,7 +62,8 @@ public class LedgerInitializer { | |||||
} | } | ||||
private static SecurityInitSettings createDefaultSecurityInitSettings() { | private static SecurityInitSettings createDefaultSecurityInitSettings() { | ||||
throw new IllegalStateException("Not implemented!"); | |||||
// TODO throw new IllegalStateException("Not implemented!"); | |||||
return null; | |||||
} | } | ||||
public static LedgerInitializer create(LedgerInitSetting initSetting) { | public static LedgerInitializer create(LedgerInitSetting initSetting) { | ||||
@@ -107,7 +107,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
public long getDataAccountCount(HashDigest ledgerHash, long height) { | public long getDataAccountCount(HashDigest ledgerHash, long height) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getBlock(height); | LedgerBlock block = ledger.getBlock(height); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
return dataAccountSet.getTotalCount(); | return dataAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -115,7 +115,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
public long getDataAccountCount(HashDigest ledgerHash, HashDigest blockHash) { | public long getDataAccountCount(HashDigest ledgerHash, HashDigest blockHash) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getBlock(blockHash); | LedgerBlock block = ledger.getBlock(blockHash); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
return dataAccountSet.getTotalCount(); | return dataAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -123,7 +123,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
public long getDataAccountTotalCount(HashDigest ledgerHash) { | public long getDataAccountTotalCount(HashDigest ledgerHash) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
return dataAccountSet.getTotalCount(); | return dataAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -131,7 +131,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
public long getUserCount(HashDigest ledgerHash, long height) { | public long getUserCount(HashDigest ledgerHash, long height) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getBlock(height); | LedgerBlock block = ledger.getBlock(height); | ||||
UserAccountSet userAccountSet = ledger.getUserAccountSet(block); | |||||
UserAccountQuery userAccountSet = ledger.getUserAccountSet(block); | |||||
return userAccountSet.getTotalCount(); | return userAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -139,7 +139,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
public long getUserCount(HashDigest ledgerHash, HashDigest blockHash) { | public long getUserCount(HashDigest ledgerHash, HashDigest blockHash) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getBlock(blockHash); | LedgerBlock block = ledger.getBlock(blockHash); | ||||
UserAccountSet userAccountSet = ledger.getUserAccountSet(block); | |||||
UserAccountQuery userAccountSet = ledger.getUserAccountSet(block); | |||||
return userAccountSet.getTotalCount(); | return userAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -147,7 +147,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
public long getUserTotalCount(HashDigest ledgerHash) { | public long getUserTotalCount(HashDigest ledgerHash) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
UserAccountSet userAccountSet = ledger.getUserAccountSet(block); | |||||
UserAccountQuery userAccountSet = ledger.getUserAccountSet(block); | |||||
return userAccountSet.getTotalCount(); | return userAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -155,7 +155,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
public long getContractCount(HashDigest ledgerHash, long height) { | public long getContractCount(HashDigest ledgerHash, long height) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getBlock(height); | LedgerBlock block = ledger.getBlock(height); | ||||
ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block); | |||||
ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block); | |||||
return contractAccountSet.getTotalCount(); | return contractAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -163,7 +163,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
public long getContractCount(HashDigest ledgerHash, HashDigest blockHash) { | public long getContractCount(HashDigest ledgerHash, HashDigest blockHash) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getBlock(blockHash); | LedgerBlock block = ledger.getBlock(blockHash); | ||||
ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block); | |||||
ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block); | |||||
return contractAccountSet.getTotalCount(); | return contractAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -171,7 +171,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
public long getContractTotalCount(HashDigest ledgerHash) { | public long getContractTotalCount(HashDigest ledgerHash) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block); | |||||
ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block); | |||||
return contractAccountSet.getTotalCount(); | return contractAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -254,7 +254,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
public UserInfo getUser(HashDigest ledgerHash, String address) { | public UserInfo getUser(HashDigest ledgerHash, String address) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
UserAccountSet userAccountSet = ledger.getUserAccountSet(block); | |||||
UserAccountQuery userAccountSet = ledger.getUserAccountSet(block); | |||||
return userAccountSet.getUser(address); | return userAccountSet.getUser(address); | ||||
} | } | ||||
@@ -263,7 +263,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
public AccountHeader getDataAccount(HashDigest ledgerHash, String address) { | public AccountHeader getDataAccount(HashDigest ledgerHash, String address) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
return dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | return dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | ||||
} | } | ||||
@@ -274,7 +274,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
} | } | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | ||||
KVDataEntry[] entries = new KVDataEntry[keys.length]; | KVDataEntry[] entries = new KVDataEntry[keys.length]; | ||||
@@ -322,7 +322,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | ||||
KVDataEntry[] entries = new KVDataEntry[keys.length]; | KVDataEntry[] entries = new KVDataEntry[keys.length]; | ||||
@@ -353,7 +353,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | ||||
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) dataAccount.getDataEntriesTotalCount()); | int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) dataAccount.getDataEntriesTotalCount()); | ||||
@@ -365,7 +365,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | ||||
return dataAccount.getDataEntriesTotalCount(); | return dataAccount.getDataEntriesTotalCount(); | ||||
@@ -375,7 +375,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
public ContractInfo getContract(HashDigest ledgerHash, String address) { | public ContractInfo getContract(HashDigest ledgerHash, String address) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block); | |||||
ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block); | |||||
return contractAccountSet.getContract(Bytes.fromBase58(address)); | return contractAccountSet.getContract(Bytes.fromBase58(address)); | ||||
} | } | ||||
@@ -383,7 +383,7 @@ public class LedgerQueryService implements BlockchainQueryService { | |||||
public AccountHeader[] getUsers(HashDigest ledgerHash, int fromIndex, int count) { | public AccountHeader[] getUsers(HashDigest ledgerHash, int fromIndex, int count) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
UserAccountSet userAccountSet = ledger.getUserAccountSet(block); | |||||
UserAccountQuery userAccountSet = ledger.getUserAccountSet(block); | |||||
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) userAccountSet.getTotalCount()); | int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) userAccountSet.getTotalCount()); | ||||
return userAccountSet.getAccounts(pages[0], pages[1]); | 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) { | public AccountHeader[] getDataAccounts(HashDigest ledgerHash, int fromIndex, int count) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) dataAccountSet.getTotalCount()); | int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) dataAccountSet.getTotalCount()); | ||||
return dataAccountSet.getAccounts(pages[0], pages[1]); | 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) { | public AccountHeader[] getContractAccounts(HashDigest ledgerHash, int fromIndex, int count) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block); | |||||
ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block); | |||||
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) contractAccountSet.getTotalCount()); | int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) contractAccountSet.getTotalCount()); | ||||
return contractAccountSet.getAccounts(pages[0], pages[1]); | return contractAccountSet.getAccounts(pages[0], pages[1]); | ||||
} | } | ||||
@@ -58,17 +58,17 @@ public interface LedgerRepository extends Closeable { | |||||
LedgerBlock getBlock(HashDigest hash); | LedgerBlock getBlock(HashDigest hash); | ||||
LedgerDataset getDataSet(LedgerBlock block); | |||||
LedgerDataQuery getDataSet(LedgerBlock block); | |||||
TransactionSet getTransactionSet(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()); | return getDataSet(getLatestBlock()); | ||||
} | } | ||||
@@ -76,15 +76,15 @@ public interface LedgerRepository extends Closeable { | |||||
return getTransactionSet(getLatestBlock()); | return getTransactionSet(getLatestBlock()); | ||||
} | } | ||||
default UserAccountSet getUserAccountSet() { | |||||
default UserAccountQuery getUserAccountSet() { | |||||
return getUserAccountSet(getLatestBlock()); | return getUserAccountSet(getLatestBlock()); | ||||
} | } | ||||
default DataAccountSet getDataAccountSet() { | |||||
default DataAccountQuery getDataAccountSet() { | |||||
return getDataAccountSet(getLatestBlock()); | return getDataAccountSet(getLatestBlock()); | ||||
} | } | ||||
default ContractAccountSet getContractAccountSet() { | |||||
default ContractAccountQuery getContractAccountSet() { | |||||
return getContractAccountSet(getLatestBlock()); | return getContractAccountSet(getLatestBlock()); | ||||
} | } | ||||
@@ -313,7 +313,7 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
} | } | ||||
@Override | @Override | ||||
public UserAccountSet getUserAccountSet(LedgerBlock block) { | |||||
public UserAccountQuery getUserAccountSet(LedgerBlock block) { | |||||
long height = getLatestBlockHeight(); | long height = getLatestBlockHeight(); | ||||
// UserAccountSet userAccountSet = null; | // UserAccountSet userAccountSet = null; | ||||
if (height == block.getHeight()) { | if (height == block.getHeight()) { | ||||
@@ -341,7 +341,7 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
} | } | ||||
@Override | @Override | ||||
public DataAccountSet getDataAccountSet(LedgerBlock block) { | |||||
public DataAccountQuery getDataAccountSet(LedgerBlock block) { | |||||
long height = getLatestBlockHeight(); | long height = getLatestBlockHeight(); | ||||
// DataAccountSet dataAccountSet = null; | // DataAccountSet dataAccountSet = null; | ||||
if (height == block.getHeight()) { | if (height == block.getHeight()) { | ||||
@@ -370,7 +370,7 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
} | } | ||||
@Override | @Override | ||||
public ContractAccountSet getContractAccountSet(LedgerBlock block) { | |||||
public ContractAccountQuery getContractAccountSet(LedgerBlock block) { | |||||
long height = getLatestBlockHeight(); | long height = getLatestBlockHeight(); | ||||
// ContractAccountSet contractAccountSet = null; | // ContractAccountSet contractAccountSet = null; | ||||
if (height == block.getHeight()) { | if (height == block.getHeight()) { | ||||
@@ -426,7 +426,7 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
UserAccountSet userAccountSet = createUserAccountSet(block, cryptoSetting); | UserAccountSet userAccountSet = createUserAccountSet(block, cryptoSetting); | ||||
DataAccountSet dataAccountSet = createDataAccountSet(block, cryptoSetting); | DataAccountSet dataAccountSet = createDataAccountSet(block, cryptoSetting); | ||||
ContractAccountSet contractAccountSet = createContractAccountSet(block, cryptoSetting); | ContractAccountSet contractAccountSet = createContractAccountSet(block, cryptoSetting); | ||||
return new LedgerDataSetImpl(adminDataset, userAccountSet, dataAccountSet, contractAccountSet, true); | |||||
return new LedgerDataset(adminDataset, userAccountSet, dataAccountSet, contractAccountSet, true); | |||||
} | } | ||||
@Override | @Override | ||||
@@ -475,7 +475,7 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
return BLOCK_PREFIX.concat(blockHash); | return BLOCK_PREFIX.concat(blockHash); | ||||
} | } | ||||
static LedgerDataSetImpl newDataSet(LedgerInitSetting initSetting, String keyPrefix, | |||||
static LedgerDataset newDataSet(LedgerInitSetting initSetting, String keyPrefix, | |||||
ExPolicyKVStorage ledgerExStorage, VersioningKVStorage ledgerVerStorage) { | ExPolicyKVStorage ledgerExStorage, VersioningKVStorage ledgerVerStorage) { | ||||
LedgerAdminDataset adminAccount = new LedgerAdminDataset(initSetting, keyPrefix, ledgerExStorage, | LedgerAdminDataset adminAccount = new LedgerAdminDataset(initSetting, keyPrefix, ledgerExStorage, | ||||
ledgerVerStorage); | ledgerVerStorage); | ||||
@@ -509,7 +509,7 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
ContractAccountSet contractAccountSet = new ContractAccountSet(adminAccount.getSettings().getCryptoSetting(), | ContractAccountSet contractAccountSet = new ContractAccountSet(adminAccount.getSettings().getCryptoSetting(), | ||||
contractsetKeyPrefix, ledgerExStorage, ledgerVerStorage, DEFAULT_ACCESS_POLICY); | contractsetKeyPrefix, ledgerExStorage, ledgerVerStorage, DEFAULT_ACCESS_POLICY); | ||||
LedgerDataSetImpl newDataSet = new LedgerDataSetImpl(adminAccount, userAccountSet, dataAccountSet, | |||||
LedgerDataset newDataSet = new LedgerDataset(adminAccount, userAccountSet, dataAccountSet, | |||||
contractAccountSet, false); | contractAccountSet, false); | ||||
return newDataSet; | return newDataSet; | ||||
@@ -529,7 +529,7 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
return transactionSet; | 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) { | ExPolicyKVStorage ledgerExStorage, VersioningKVStorage ledgerVerStorage, boolean readonly) { | ||||
LedgerAdminDataset adminAccount = new LedgerAdminDataset(dataSnapshot.getAdminAccountHash(), keyPrefix, | LedgerAdminDataset adminAccount = new LedgerAdminDataset(dataSnapshot.getAdminAccountHash(), keyPrefix, | ||||
ledgerExStorage, ledgerVerStorage, readonly); | ledgerExStorage, ledgerVerStorage, readonly); | ||||
@@ -545,7 +545,7 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
ContractAccountSet contractAccountSet = loadContractAccountSet(dataSnapshot.getContractAccountSetHash(), | ContractAccountSet contractAccountSet = loadContractAccountSet(dataSnapshot.getContractAccountSetHash(), | ||||
cryptoSetting, keyPrefix, ledgerExStorage, ledgerVerStorage, readonly); | cryptoSetting, keyPrefix, ledgerExStorage, ledgerVerStorage, readonly); | ||||
LedgerDataSetImpl dataset = new LedgerDataSetImpl(adminAccount, userAccountSet, dataAccountSet, | |||||
LedgerDataset dataset = new LedgerDataset(adminAccount, userAccountSet, dataAccountSet, | |||||
contractAccountSet, readonly); | contractAccountSet, readonly); | ||||
return dataset; | return dataset; | ||||
@@ -695,15 +695,15 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
return ledgerDataset; | return ledgerDataset; | ||||
} | } | ||||
public ContractAccountSet getContractAccountSet() { | |||||
public ContractAccountQuery getContractAccountSet() { | |||||
return ledgerDataset.getContractAccountset(); | return ledgerDataset.getContractAccountset(); | ||||
} | } | ||||
public DataAccountSet getDataAccountSet() { | |||||
public DataAccountQuery getDataAccountSet() { | |||||
return ledgerDataset.getDataAccountSet(); | return ledgerDataset.getDataAccountSet(); | ||||
} | } | ||||
public UserAccountSet getUserAccountSet() { | |||||
public UserAccountQuery getUserAccountSet() { | |||||
return ledgerDataset.getUserAccountSet(); | return ledgerDataset.getUserAccountSet(); | ||||
} | } | ||||
@@ -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; | // init storage of new transaction; | ||||
BufferedKVStorage txBufferedStorage = new BufferedKVStorage(baseStorage, baseStorage, false); | BufferedKVStorage txBufferedStorage = new BufferedKVStorage(baseStorage, baseStorage, false); | ||||
LedgerDataSetImpl txDataset = null; | |||||
LedgerDataset txDataset = null; | |||||
TransactionSet txset = null; | TransactionSet txset = null; | ||||
if (previousTxSnapshot == null) { | if (previousTxSnapshot == null) { | ||||
// load the starting point of the new transaction; | // load the starting point of the new transaction; | ||||
@@ -470,7 +470,7 @@ public class LedgerTransactionalEditor implements LedgerEditor { | |||||
private TransactionRequest txRequest; | private TransactionRequest txRequest; | ||||
private LedgerDataSetImpl dataset; | |||||
private LedgerDataset dataset; | |||||
private TransactionSet txset; | private TransactionSet txset; | ||||
@@ -484,7 +484,7 @@ public class LedgerTransactionalEditor implements LedgerEditor { | |||||
private HashDigest txRootHash; | private HashDigest txRootHash; | ||||
private LedgerTransactionContextImpl(TransactionRequest txRequest, LedgerDataSetImpl dataset, | |||||
private LedgerTransactionContextImpl(TransactionRequest txRequest, LedgerDataset dataset, | |||||
TransactionSet txset, BufferedKVStorage storage, LedgerTransactionalEditor editor) { | TransactionSet txset, BufferedKVStorage storage, LedgerTransactionalEditor editor) { | ||||
this.txRequest = txRequest; | this.txRequest = txRequest; | ||||
this.dataset = dataset; | this.dataset = dataset; | ||||
@@ -494,7 +494,7 @@ public class LedgerTransactionalEditor implements LedgerEditor { | |||||
} | } | ||||
@Override | @Override | ||||
public LedgerDataSetImpl getDataset() { | |||||
public LedgerDataset getDataset() { | |||||
return dataset; | return dataset; | ||||
} | } | ||||
@@ -1,5 +1,6 @@ | |||||
package com.jd.blockchain.ledger.core; | package com.jd.blockchain.ledger.core; | ||||
import com.jd.blockchain.ledger.MerkleProof; | |||||
import com.jd.blockchain.storage.service.VersioningKVEntry; | import com.jd.blockchain.storage.service.VersioningKVEntry; | ||||
public interface MerkleDataEntry { | public interface MerkleDataEntry { | ||||
@@ -3,6 +3,8 @@ package com.jd.blockchain.ledger.core; | |||||
import com.jd.blockchain.crypto.HashDigest; | import com.jd.blockchain.crypto.HashDigest; | ||||
import com.jd.blockchain.ledger.CryptoSetting; | import com.jd.blockchain.ledger.CryptoSetting; | ||||
import com.jd.blockchain.ledger.LedgerException; | 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; | ||||
import com.jd.blockchain.storage.service.ExPolicyKVStorage.ExPolicy; | import com.jd.blockchain.storage.service.ExPolicyKVStorage.ExPolicy; | ||||
import com.jd.blockchain.storage.service.VersioningKVEntry; | import com.jd.blockchain.storage.service.VersioningKVEntry; | ||||
@@ -1,6 +1,7 @@ | |||||
package com.jd.blockchain.ledger.core; | package com.jd.blockchain.ledger.core; | ||||
import com.jd.blockchain.crypto.HashDigest; | import com.jd.blockchain.crypto.HashDigest; | ||||
import com.jd.blockchain.ledger.MerkleProof; | |||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
public interface MerkleProvable { | public interface MerkleProvable { | ||||
@@ -20,6 +20,9 @@ import com.jd.blockchain.crypto.HashDigest; | |||||
import com.jd.blockchain.crypto.HashFunction; | import com.jd.blockchain.crypto.HashFunction; | ||||
import com.jd.blockchain.ledger.CryptoSetting; | import com.jd.blockchain.ledger.CryptoSetting; | ||||
import com.jd.blockchain.ledger.LedgerException; | 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; | ||||
import com.jd.blockchain.storage.service.ExPolicyKVStorage.ExPolicy; | import com.jd.blockchain.storage.service.ExPolicyKVStorage.ExPolicy; | ||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
@@ -27,6 +27,6 @@ public interface OperationHandle { | |||||
* @return | * @return | ||||
*/ | */ | ||||
BytesValue process(Operation op, LedgerDataset newBlockDataset, TransactionRequestExtension requestContext, | BytesValue process(Operation op, LedgerDataset newBlockDataset, TransactionRequestExtension requestContext, | ||||
LedgerDataset previousBlockDataset, OperationHandleContext handleContext, LedgerService ledgerService); | |||||
LedgerDataQuery previousBlockDataset, OperationHandleContext handleContext, LedgerService ledgerService); | |||||
} | } |
@@ -4,14 +4,16 @@ import com.jd.blockchain.binaryproto.BinaryProtocol; | |||||
import com.jd.blockchain.binaryproto.DataContractRegistry; | import com.jd.blockchain.binaryproto.DataContractRegistry; | ||||
import com.jd.blockchain.crypto.HashDigest; | import com.jd.blockchain.crypto.HashDigest; | ||||
import com.jd.blockchain.ledger.ParticipantNode; | import com.jd.blockchain.ledger.ParticipantNode; | ||||
import com.jd.blockchain.ledger.ParticipantDataQuery; | |||||
import com.jd.blockchain.ledger.CryptoSetting; | import com.jd.blockchain.ledger.CryptoSetting; | ||||
import com.jd.blockchain.ledger.LedgerException; | 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.ExPolicyKVStorage; | ||||
import com.jd.blockchain.storage.service.VersioningKVStorage; | import com.jd.blockchain.storage.service.VersioningKVStorage; | ||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
import com.jd.blockchain.utils.Transactional; | import com.jd.blockchain.utils.Transactional; | ||||
public class ParticipantDataset implements Transactional, MerkleProvable { | |||||
public class ParticipantDataset implements Transactional, MerkleProvable, ParticipantDataQuery { | |||||
static { | static { | ||||
DataContractRegistry.register(ParticipantNode.class); | DataContractRegistry.register(ParticipantNode.class); | ||||
@@ -54,6 +56,7 @@ public class ParticipantDataset implements Transactional, MerkleProvable { | |||||
dataset.cancel(); | dataset.cancel(); | ||||
} | } | ||||
@Override | |||||
public long getParticipantCount() { | public long getParticipantCount() { | ||||
return dataset.getDataCount(); | return dataset.getDataCount(); | ||||
} | } | ||||
@@ -77,6 +80,7 @@ public class ParticipantDataset implements Transactional, MerkleProvable { | |||||
return address; | return address; | ||||
} | } | ||||
@Override | |||||
public boolean contains(Bytes address) { | public boolean contains(Bytes address) { | ||||
Bytes key = encodeKey(address); | Bytes key = encodeKey(address); | ||||
long latestVersion = dataset.getVersion(key); | long latestVersion = dataset.getVersion(key); | ||||
@@ -92,6 +96,7 @@ public class ParticipantDataset implements Transactional, MerkleProvable { | |||||
* @param address | * @param address | ||||
* @return | * @return | ||||
*/ | */ | ||||
@Override | |||||
public ParticipantNode getParticipant(Bytes address) { | public ParticipantNode getParticipant(Bytes address) { | ||||
Bytes key = encodeKey(address); | Bytes key = encodeKey(address); | ||||
byte[] bytes = dataset.getValue(key); | byte[] bytes = dataset.getValue(key); | ||||
@@ -101,6 +106,7 @@ public class ParticipantDataset implements Transactional, MerkleProvable { | |||||
return BinaryProtocol.decode(bytes); | return BinaryProtocol.decode(bytes); | ||||
} | } | ||||
@Override | |||||
public ParticipantNode[] getParticipants() { | public ParticipantNode[] getParticipants() { | ||||
byte[][] bytes = dataset.getLatestValues(0, (int) dataset.getDataCount()); | byte[][] bytes = dataset.getLatestValues(0, (int) dataset.getDataCount()); | ||||
ParticipantNode[] pns = new ParticipantNode[bytes.length]; | ParticipantNode[] pns = new ParticipantNode[bytes.length]; | ||||
@@ -6,6 +6,7 @@ import com.jd.blockchain.ledger.CryptoSetting; | |||||
import com.jd.blockchain.ledger.LedgerException; | import com.jd.blockchain.ledger.LedgerException; | ||||
import com.jd.blockchain.ledger.LedgerPermission; | import com.jd.blockchain.ledger.LedgerPermission; | ||||
import com.jd.blockchain.ledger.LedgerPrivilege; | import com.jd.blockchain.ledger.LedgerPrivilege; | ||||
import com.jd.blockchain.ledger.MerkleProof; | |||||
import com.jd.blockchain.ledger.PrivilegeSet; | import com.jd.blockchain.ledger.PrivilegeSet; | ||||
import com.jd.blockchain.ledger.Privileges; | import com.jd.blockchain.ledger.Privileges; | ||||
import com.jd.blockchain.ledger.RolePrivilegeSettings; | import com.jd.blockchain.ledger.RolePrivilegeSettings; | ||||
@@ -46,7 +46,7 @@ public class TransactionBatchProcessor implements TransactionBatchProcess { | |||||
private LedgerEditor newBlockEditor; | private LedgerEditor newBlockEditor; | ||||
private LedgerDataset previousBlockDataset; | |||||
private LedgerDataQuery previousBlockDataset; | |||||
private OperationHandleRegisteration opHandles; | private OperationHandleRegisteration opHandles; | ||||
@@ -65,7 +65,7 @@ public class TransactionBatchProcessor implements TransactionBatchProcess { | |||||
* @param opHandles 操作处理对象注册表; | * @param opHandles 操作处理对象注册表; | ||||
*/ | */ | ||||
public TransactionBatchProcessor(LedgerSecurityManager securityManager, LedgerEditor newBlockEditor, | public TransactionBatchProcessor(LedgerSecurityManager securityManager, LedgerEditor newBlockEditor, | ||||
LedgerDataset previousBlockDataset, OperationHandleRegisteration opHandles, LedgerService ledgerService) { | |||||
LedgerDataQuery previousBlockDataset, OperationHandleRegisteration opHandles, LedgerService ledgerService) { | |||||
this.securityManager = securityManager; | this.securityManager = securityManager; | ||||
this.newBlockEditor = newBlockEditor; | this.newBlockEditor = newBlockEditor; | ||||
this.previousBlockDataset = previousBlockDataset; | this.previousBlockDataset = previousBlockDataset; | ||||
@@ -3,10 +3,10 @@ package com.jd.blockchain.ledger.core; | |||||
import java.util.Map; | import java.util.Map; | ||||
import java.util.concurrent.ConcurrentHashMap; | 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 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.TransactionBatchProcess; | ||||
import com.jd.blockchain.service.TransactionEngine; | import com.jd.blockchain.service.TransactionEngine; | ||||
@@ -40,11 +40,11 @@ public class TransactionEngineImpl implements TransactionEngine { | |||||
LedgerBlock ledgerBlock = ledgerRepo.getLatestBlock(); | LedgerBlock ledgerBlock = ledgerRepo.getLatestBlock(); | ||||
LedgerEditor newBlockEditor = ledgerRepo.createNextBlock(); | 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, | batch = new InnerTransactionBatchProcessor(ledgerHash, securityManager, newBlockEditor, previousBlockDataset, | ||||
opHdlRegs, ledgerService, ledgerBlock.getHeight()); | opHdlRegs, ledgerService, ledgerBlock.getHeight()); | ||||
batchs.put(ledgerHash, batch); | batchs.put(ledgerHash, batch); | ||||
@@ -75,7 +75,7 @@ public class TransactionEngineImpl implements TransactionEngine { | |||||
* @param opHandles 操作处理对象注册表; | * @param opHandles 操作处理对象注册表; | ||||
*/ | */ | ||||
public InnerTransactionBatchProcessor(HashDigest ledgerHash, LedgerSecurityManager securityManager, | public InnerTransactionBatchProcessor(HashDigest ledgerHash, LedgerSecurityManager securityManager, | ||||
LedgerEditor newBlockEditor, LedgerDataset previousBlockDataset, OperationHandleRegisteration opHandles, | |||||
LedgerEditor newBlockEditor, LedgerDataQuery previousBlockDataset, OperationHandleRegisteration opHandles, | |||||
LedgerService ledgerService, long blockHeight) { | LedgerService ledgerService, long blockHeight) { | ||||
super(securityManager, newBlockEditor, previousBlockDataset, opHandles, ledgerService); | super(securityManager, newBlockEditor, previousBlockDataset, opHandles, ledgerService); | ||||
this.ledgerHash = ledgerHash; | this.ledgerHash = ledgerHash; | ||||
@@ -6,6 +6,7 @@ import com.jd.blockchain.crypto.HashDigest; | |||||
import com.jd.blockchain.ledger.CryptoSetting; | import com.jd.blockchain.ledger.CryptoSetting; | ||||
import com.jd.blockchain.ledger.LedgerException; | import com.jd.blockchain.ledger.LedgerException; | ||||
import com.jd.blockchain.ledger.LedgerTransaction; | import com.jd.blockchain.ledger.LedgerTransaction; | ||||
import com.jd.blockchain.ledger.MerkleProof; | |||||
import com.jd.blockchain.ledger.TransactionState; | import com.jd.blockchain.ledger.TransactionState; | ||||
import com.jd.blockchain.storage.service.ExPolicyKVStorage; | import com.jd.blockchain.storage.service.ExPolicyKVStorage; | ||||
import com.jd.blockchain.storage.service.VersioningKVStorage; | import com.jd.blockchain.storage.service.VersioningKVStorage; | ||||
@@ -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); | |||||
} |
@@ -5,6 +5,7 @@ import com.jd.blockchain.crypto.PubKey; | |||||
import com.jd.blockchain.ledger.AccountHeader; | import com.jd.blockchain.ledger.AccountHeader; | ||||
import com.jd.blockchain.ledger.CryptoSetting; | import com.jd.blockchain.ledger.CryptoSetting; | ||||
import com.jd.blockchain.ledger.LedgerException; | 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.ExPolicyKVStorage; | ||||
import com.jd.blockchain.storage.service.VersioningKVStorage; | import com.jd.blockchain.storage.service.VersioningKVStorage; | ||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
@@ -14,7 +15,7 @@ import com.jd.blockchain.utils.Transactional; | |||||
* @author huanghaiquan | * @author huanghaiquan | ||||
* | * | ||||
*/ | */ | ||||
public class UserAccountSet implements Transactional, MerkleProvable { | |||||
public class UserAccountSet implements Transactional, MerkleProvable, UserAccountQuery { | |||||
private AccountSet accountSet; | private AccountSet accountSet; | ||||
@@ -30,6 +31,7 @@ public class UserAccountSet implements Transactional, MerkleProvable { | |||||
accessPolicy); | accessPolicy); | ||||
} | } | ||||
@Override | |||||
public AccountHeader[] getAccounts(int fromIndex, int count) { | public AccountHeader[] getAccounts(int fromIndex, int count) { | ||||
return accountSet.getAccounts(fromIndex,count); | return accountSet.getAccounts(fromIndex,count); | ||||
} | } | ||||
@@ -39,6 +41,7 @@ public class UserAccountSet implements Transactional, MerkleProvable { | |||||
* | * | ||||
* @return | * @return | ||||
*/ | */ | ||||
@Override | |||||
public long getTotalCount() { | public long getTotalCount() { | ||||
return accountSet.getTotalCount(); | return accountSet.getTotalCount(); | ||||
} | } | ||||
@@ -61,19 +64,23 @@ public class UserAccountSet implements Transactional, MerkleProvable { | |||||
return accountSet.getProof(key); | return accountSet.getProof(key); | ||||
} | } | ||||
@Override | |||||
public UserAccount getUser(String address) { | public UserAccount getUser(String address) { | ||||
return getUser(Bytes.fromBase58(address)); | return getUser(Bytes.fromBase58(address)); | ||||
} | } | ||||
@Override | |||||
public UserAccount getUser(Bytes address) { | public UserAccount getUser(Bytes address) { | ||||
BaseAccount baseAccount = accountSet.getAccount(address); | BaseAccount baseAccount = accountSet.getAccount(address); | ||||
return new UserAccount(baseAccount); | return new UserAccount(baseAccount); | ||||
} | } | ||||
@Override | |||||
public boolean contains(Bytes address) { | public boolean contains(Bytes address) { | ||||
return accountSet.contains(address); | return accountSet.contains(address); | ||||
} | } | ||||
@Override | |||||
public UserAccount getUser(Bytes address, long version) { | public UserAccount getUser(Bytes address, long version) { | ||||
BaseAccount baseAccount = accountSet.getAccount(address, version); | BaseAccount baseAccount = accountSet.getAccount(address, version); | ||||
return new UserAccount(baseAccount); | return new UserAccount(baseAccount); | ||||
@@ -7,6 +7,7 @@ import com.jd.blockchain.crypto.HashDigest; | |||||
import com.jd.blockchain.ledger.AuthorizationException; | import com.jd.blockchain.ledger.AuthorizationException; | ||||
import com.jd.blockchain.ledger.CryptoSetting; | import com.jd.blockchain.ledger.CryptoSetting; | ||||
import com.jd.blockchain.ledger.LedgerException; | import com.jd.blockchain.ledger.LedgerException; | ||||
import com.jd.blockchain.ledger.MerkleProof; | |||||
import com.jd.blockchain.ledger.RoleSet; | import com.jd.blockchain.ledger.RoleSet; | ||||
import com.jd.blockchain.ledger.RolesPolicy; | import com.jd.blockchain.ledger.RolesPolicy; | ||||
import com.jd.blockchain.ledger.UserRoles; | import com.jd.blockchain.ledger.UserRoles; | ||||
@@ -4,6 +4,7 @@ import com.jd.blockchain.binaryproto.DataContractRegistry; | |||||
import com.jd.blockchain.ledger.BytesValue; | import com.jd.blockchain.ledger.BytesValue; | ||||
import com.jd.blockchain.ledger.Operation; | import com.jd.blockchain.ledger.Operation; | ||||
import com.jd.blockchain.ledger.TransactionPermission; | 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.LedgerDataset; | ||||
import com.jd.blockchain.ledger.core.LedgerService; | import com.jd.blockchain.ledger.core.LedgerService; | ||||
import com.jd.blockchain.ledger.core.MultiIdsPolicy; | import com.jd.blockchain.ledger.core.MultiIdsPolicy; | ||||
@@ -44,7 +45,7 @@ public abstract class AbstractLedgerOperationHandle<T extends Operation> impleme | |||||
@Override | @Override | ||||
public final BytesValue process(Operation op, LedgerDataset newBlockDataset, | public final BytesValue process(Operation op, LedgerDataset newBlockDataset, | ||||
TransactionRequestExtension requestContext, LedgerDataset previousBlockDataset, | |||||
TransactionRequestExtension requestContext, LedgerDataQuery previousBlockDataset, | |||||
OperationHandleContext handleContext, LedgerService ledgerService) { | OperationHandleContext handleContext, LedgerService ledgerService) { | ||||
// 权限校验; | // 权限校验; | ||||
SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy(); | SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy(); | ||||
@@ -68,5 +69,5 @@ public abstract class AbstractLedgerOperationHandle<T extends Operation> impleme | |||||
* @param ledgerService | * @param ledgerService | ||||
*/ | */ | ||||
protected abstract void doProcess(T op, LedgerDataset newBlockDataset, TransactionRequestExtension requestContext, | protected abstract void doProcess(T op, LedgerDataset newBlockDataset, TransactionRequestExtension requestContext, | ||||
LedgerDataset previousBlockDataset, OperationHandleContext handleContext, LedgerService ledgerService); | |||||
LedgerDataQuery previousBlockDataset, OperationHandleContext handleContext, LedgerService ledgerService); | |||||
} | } |
@@ -10,7 +10,8 @@ import com.jd.blockchain.ledger.LedgerException; | |||||
import com.jd.blockchain.ledger.Operation; | import com.jd.blockchain.ledger.Operation; | ||||
import com.jd.blockchain.ledger.TransactionPermission; | import com.jd.blockchain.ledger.TransactionPermission; | ||||
import com.jd.blockchain.ledger.core.ContractAccount; | 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.LedgerDataset; | ||||
import com.jd.blockchain.ledger.core.LedgerQueryService; | import com.jd.blockchain.ledger.core.LedgerQueryService; | ||||
import com.jd.blockchain.ledger.core.LedgerService; | import com.jd.blockchain.ledger.core.LedgerService; | ||||
@@ -31,7 +32,7 @@ public abstract class AbtractContractEventSendOperationHandle implements Operati | |||||
@Override | @Override | ||||
public BytesValue process(Operation op, LedgerDataset newBlockDataset, TransactionRequestExtension requestContext, | 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 securityPolicy = SecurityContext.getContextUsersPolicy(); | ||||
securityPolicy.checkEndpoints(TransactionPermission.CONTRACT_OPERATION, MultiIdsPolicy.AT_LEAST_ONE); | 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, | private BytesValue doProcess(TransactionRequestExtension request, ContractEventSendOperation contractOP, | ||||
LedgerDataset newBlockDataset, LedgerDataset previousBlockDataset, OperationHandleContext opHandleContext, | |||||
LedgerDataset newBlockDataset, LedgerDataQuery previousBlockDataset, OperationHandleContext opHandleContext, | |||||
LedgerService ledgerService) { | LedgerService ledgerService) { | ||||
// 先从账本校验合约的有效性; | // 先从账本校验合约的有效性; | ||||
// 注意:必须在前一个区块的数据集中进行校验,因为那是经过共识的数据;从当前新区块链数据集校验则会带来攻击风险:未经共识的合约得到执行; | // 注意:必须在前一个区块的数据集中进行校验,因为那是经过共识的数据;从当前新区块链数据集校验则会带来攻击风险:未经共识的合约得到执行; | ||||
ContractAccountSet contractSet = previousBlockDataset.getContractAccountset(); | |||||
ContractAccountQuery contractSet = previousBlockDataset.getContractAccountset(); | |||||
if (!contractSet.contains(contractOP.getContractAddress())) { | if (!contractSet.contains(contractOP.getContractAddress())) { | ||||
throw new LedgerException(String.format("Contract was not registered! --[ContractAddress=%s]", | throw new LedgerException(String.format("Contract was not registered! --[ContractAddress=%s]", | ||||
contractOP.getContractAddress())); | contractOP.getContractAddress())); | ||||
@@ -2,6 +2,7 @@ package com.jd.blockchain.ledger.core.handles; | |||||
import com.jd.blockchain.ledger.ContractCodeDeployOperation; | import com.jd.blockchain.ledger.ContractCodeDeployOperation; | ||||
import com.jd.blockchain.ledger.LedgerPermission; | 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.LedgerDataset; | ||||
import com.jd.blockchain.ledger.core.LedgerService; | import com.jd.blockchain.ledger.core.LedgerService; | ||||
import com.jd.blockchain.ledger.core.MultiIdsPolicy; | import com.jd.blockchain.ledger.core.MultiIdsPolicy; | ||||
@@ -17,7 +18,7 @@ public class ContractCodeDeployOperationHandle extends AbstractLedgerOperationHa | |||||
@Override | @Override | ||||
protected void doProcess(ContractCodeDeployOperation op, LedgerDataset newBlockDataset, | protected void doProcess(ContractCodeDeployOperation op, LedgerDataset newBlockDataset, | ||||
TransactionRequestExtension requestContext, LedgerDataset previousBlockDataset, | |||||
TransactionRequestExtension requestContext, LedgerDataQuery previousBlockDataset, | |||||
OperationHandleContext handleContext, LedgerService ledgerService) { | OperationHandleContext handleContext, LedgerService ledgerService) { | ||||
// TODO: 校验合约代码的正确性; | // TODO: 校验合约代码的正确性; | ||||
@@ -2,10 +2,11 @@ package com.jd.blockchain.ledger.core.handles; | |||||
import com.jd.blockchain.ledger.DataAccountDoesNotExistException; | import com.jd.blockchain.ledger.DataAccountDoesNotExistException; | ||||
import com.jd.blockchain.ledger.DataAccountKVSetOperation; | import com.jd.blockchain.ledger.DataAccountKVSetOperation; | ||||
import com.jd.blockchain.ledger.DataVersionConflictException; | |||||
import com.jd.blockchain.ledger.DataAccountKVSetOperation.KVWriteEntry; | import com.jd.blockchain.ledger.DataAccountKVSetOperation.KVWriteEntry; | ||||
import com.jd.blockchain.ledger.DataVersionConflictException; | |||||
import com.jd.blockchain.ledger.LedgerPermission; | import com.jd.blockchain.ledger.LedgerPermission; | ||||
import com.jd.blockchain.ledger.core.DataAccount; | 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.LedgerDataset; | ||||
import com.jd.blockchain.ledger.core.LedgerService; | import com.jd.blockchain.ledger.core.LedgerService; | ||||
import com.jd.blockchain.ledger.core.MultiIdsPolicy; | import com.jd.blockchain.ledger.core.MultiIdsPolicy; | ||||
@@ -22,7 +23,7 @@ public class DataAccountKVSetOperationHandle extends AbstractLedgerOperationHand | |||||
@Override | @Override | ||||
protected void doProcess(DataAccountKVSetOperation kvWriteOp, LedgerDataset newBlockDataset, | protected void doProcess(DataAccountKVSetOperation kvWriteOp, LedgerDataset newBlockDataset, | ||||
TransactionRequestExtension requestContext, LedgerDataset previousBlockDataset, | |||||
TransactionRequestExtension requestContext, LedgerDataQuery previousBlockDataset, | |||||
OperationHandleContext handleContext, LedgerService ledgerService) { | OperationHandleContext handleContext, LedgerService ledgerService) { | ||||
// 权限校验; | // 权限校验; | ||||
SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy(); | SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy(); | ||||
@@ -3,6 +3,7 @@ package com.jd.blockchain.ledger.core.handles; | |||||
import com.jd.blockchain.ledger.BlockchainIdentity; | import com.jd.blockchain.ledger.BlockchainIdentity; | ||||
import com.jd.blockchain.ledger.DataAccountRegisterOperation; | import com.jd.blockchain.ledger.DataAccountRegisterOperation; | ||||
import com.jd.blockchain.ledger.LedgerPermission; | 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.LedgerDataset; | ||||
import com.jd.blockchain.ledger.core.LedgerService; | import com.jd.blockchain.ledger.core.LedgerService; | ||||
import com.jd.blockchain.ledger.core.MultiIdsPolicy; | import com.jd.blockchain.ledger.core.MultiIdsPolicy; | ||||
@@ -18,7 +19,7 @@ public class DataAccountRegisterOperationHandle extends AbstractLedgerOperationH | |||||
@Override | @Override | ||||
protected void doProcess(DataAccountRegisterOperation op, LedgerDataset newBlockDataset, | protected void doProcess(DataAccountRegisterOperation op, LedgerDataset newBlockDataset, | ||||
TransactionRequestExtension requestContext, LedgerDataset previousBlockDataset, | |||||
TransactionRequestExtension requestContext, LedgerDataQuery previousBlockDataset, | |||||
OperationHandleContext handleContext, LedgerService ledgerService) { | OperationHandleContext handleContext, LedgerService ledgerService) { | ||||
// TODO: 请求者应该提供数据账户的公钥签名,以更好地确保注册人对该地址和公钥具有合法使用权; | // TODO: 请求者应该提供数据账户的公钥签名,以更好地确保注册人对该地址和公钥具有合法使用权; | ||||
@@ -5,6 +5,7 @@ import com.jd.blockchain.ledger.RolePrivilegeSettings; | |||||
import com.jd.blockchain.ledger.RolePrivileges; | import com.jd.blockchain.ledger.RolePrivileges; | ||||
import com.jd.blockchain.ledger.RolesConfigureOperation; | import com.jd.blockchain.ledger.RolesConfigureOperation; | ||||
import com.jd.blockchain.ledger.RolesConfigureOperation.RolePrivilegeEntry; | 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.LedgerDataset; | ||||
import com.jd.blockchain.ledger.core.LedgerService; | import com.jd.blockchain.ledger.core.LedgerService; | ||||
import com.jd.blockchain.ledger.core.MultiIdsPolicy; | import com.jd.blockchain.ledger.core.MultiIdsPolicy; | ||||
@@ -20,7 +21,7 @@ public class RolesConfigureOperationHandle extends AbstractLedgerOperationHandle | |||||
@Override | @Override | ||||
protected void doProcess(RolesConfigureOperation operation, LedgerDataset newBlockDataset, | protected void doProcess(RolesConfigureOperation operation, LedgerDataset newBlockDataset, | ||||
TransactionRequestExtension request, LedgerDataset previousBlockDataset, | |||||
TransactionRequestExtension request, LedgerDataQuery previousBlockDataset, | |||||
OperationHandleContext handleContext, LedgerService ledgerService) { | OperationHandleContext handleContext, LedgerService ledgerService) { | ||||
// 权限校验; | // 权限校验; | ||||
SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy(); | SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy(); | ||||
@@ -10,6 +10,7 @@ import com.jd.blockchain.ledger.UserAuthorizeOperation; | |||||
import com.jd.blockchain.ledger.UserAuthorizeOperation.UserRolesEntry; | import com.jd.blockchain.ledger.UserAuthorizeOperation.UserRolesEntry; | ||||
import com.jd.blockchain.ledger.UserRoles; | import com.jd.blockchain.ledger.UserRoles; | ||||
import com.jd.blockchain.ledger.UserRolesSettings; | 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.LedgerDataset; | ||||
import com.jd.blockchain.ledger.core.LedgerService; | import com.jd.blockchain.ledger.core.LedgerService; | ||||
import com.jd.blockchain.ledger.core.MultiIdsPolicy; | import com.jd.blockchain.ledger.core.MultiIdsPolicy; | ||||
@@ -25,7 +26,7 @@ public class UserAuthorizeOperationHandle extends AbstractLedgerOperationHandle< | |||||
@Override | @Override | ||||
protected void doProcess(UserAuthorizeOperation operation, LedgerDataset newBlockDataset, | protected void doProcess(UserAuthorizeOperation operation, LedgerDataset newBlockDataset, | ||||
TransactionRequestExtension request, LedgerDataset previousBlockDataset, | |||||
TransactionRequestExtension request, LedgerDataQuery previousBlockDataset, | |||||
OperationHandleContext handleContext, LedgerService ledgerService) { | OperationHandleContext handleContext, LedgerService ledgerService) { | ||||
// 权限校验; | // 权限校验; | ||||
SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy(); | SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy(); | ||||
@@ -3,6 +3,7 @@ package com.jd.blockchain.ledger.core.handles; | |||||
import com.jd.blockchain.ledger.BlockchainIdentity; | import com.jd.blockchain.ledger.BlockchainIdentity; | ||||
import com.jd.blockchain.ledger.LedgerPermission; | import com.jd.blockchain.ledger.LedgerPermission; | ||||
import com.jd.blockchain.ledger.UserRegisterOperation; | 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.LedgerDataset; | ||||
import com.jd.blockchain.ledger.core.LedgerService; | import com.jd.blockchain.ledger.core.LedgerService; | ||||
import com.jd.blockchain.ledger.core.MultiIdsPolicy; | import com.jd.blockchain.ledger.core.MultiIdsPolicy; | ||||
@@ -19,7 +20,7 @@ public class UserRegisterOperationHandle extends AbstractLedgerOperationHandle<U | |||||
@Override | @Override | ||||
protected void doProcess(UserRegisterOperation op, LedgerDataset newBlockDataset, | protected void doProcess(UserRegisterOperation op, LedgerDataset newBlockDataset, | ||||
TransactionRequestExtension requestContext, LedgerDataset previousBlockDataset, | |||||
TransactionRequestExtension requestContext, LedgerDataQuery previousBlockDataset, | |||||
OperationHandleContext handleContext, LedgerService ledgerService) { | OperationHandleContext handleContext, LedgerService ledgerService) { | ||||
// 权限校验; | // 权限校验; | ||||
SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy(); | SecurityPolicy securityPolicy = SecurityContext.getContextUsersPolicy(); | ||||
@@ -43,6 +43,7 @@ import com.jd.blockchain.ledger.TransactionResponse; | |||||
import com.jd.blockchain.ledger.TransactionState; | import com.jd.blockchain.ledger.TransactionState; | ||||
import com.jd.blockchain.ledger.UserRegisterOperation; | import com.jd.blockchain.ledger.UserRegisterOperation; | ||||
import com.jd.blockchain.ledger.core.DefaultOperationHandleRegisteration; | import com.jd.blockchain.ledger.core.DefaultOperationHandleRegisteration; | ||||
import com.jd.blockchain.ledger.core.LedgerDataQuery; | |||||
import com.jd.blockchain.ledger.core.LedgerDataset; | import com.jd.blockchain.ledger.core.LedgerDataset; | ||||
import com.jd.blockchain.ledger.core.LedgerEditor; | import com.jd.blockchain.ledger.core.LedgerEditor; | ||||
import com.jd.blockchain.ledger.core.LedgerManager; | import com.jd.blockchain.ledger.core.LedgerManager; | ||||
@@ -112,7 +113,7 @@ public class ContractInvokingTest { | |||||
deploy(ledgerRepo, ledgerManager, opReg, ledgerHash, contractKey); | deploy(ledgerRepo, ledgerManager, opReg, ledgerHash, contractKey); | ||||
// 创建新区块的交易处理器; | // 创建新区块的交易处理器; | ||||
LedgerBlock preBlock = ledgerRepo.getLatestBlock(); | LedgerBlock preBlock = ledgerRepo.getLatestBlock(); | ||||
LedgerDataset previousBlockDataset = ledgerRepo.getDataSet(preBlock); | |||||
LedgerDataQuery previousBlockDataset = ledgerRepo.getDataSet(preBlock); | |||||
// 加载合约 | // 加载合约 | ||||
LedgerEditor newBlockEditor = ledgerRepo.createNextBlock(); | LedgerEditor newBlockEditor = ledgerRepo.createNextBlock(); | ||||
@@ -190,7 +191,7 @@ public class ContractInvokingTest { | |||||
// 创建新区块的交易处理器; | // 创建新区块的交易处理器; | ||||
LedgerBlock preBlock = ledgerRepo.getLatestBlock(); | LedgerBlock preBlock = ledgerRepo.getLatestBlock(); | ||||
LedgerDataset previousBlockDataset = ledgerRepo.getDataSet(preBlock); | |||||
LedgerDataQuery previousBlockDataset = ledgerRepo.getDataSet(preBlock); | |||||
// 加载合约 | // 加载合约 | ||||
LedgerEditor newBlockEditor = ledgerRepo.createNextBlock(); | LedgerEditor newBlockEditor = ledgerRepo.createNextBlock(); | ||||
@@ -339,7 +340,7 @@ public class ContractInvokingTest { | |||||
private LedgerBlock buildBlock(LedgerRepository ledgerRepo, LedgerService ledgerService, | private LedgerBlock buildBlock(LedgerRepository ledgerRepo, LedgerService ledgerService, | ||||
OperationHandleRegisteration opReg, TxDefinitor txDefinitor) { | OperationHandleRegisteration opReg, TxDefinitor txDefinitor) { | ||||
LedgerBlock preBlock = ledgerRepo.getLatestBlock(); | LedgerBlock preBlock = ledgerRepo.getLatestBlock(); | ||||
LedgerDataset previousBlockDataset = ledgerRepo.getDataSet(preBlock); | |||||
LedgerDataQuery previousBlockDataset = ledgerRepo.getDataSet(preBlock); | |||||
LedgerEditor newBlockEditor = ledgerRepo.createNextBlock(); | LedgerEditor newBlockEditor = ledgerRepo.createNextBlock(); | ||||
TransactionBatchProcessor txbatchProcessor = new TransactionBatchProcessor(getSecurityManager(), newBlockEditor, | TransactionBatchProcessor txbatchProcessor = new TransactionBatchProcessor(getSecurityManager(), newBlockEditor, | ||||
previousBlockDataset, opReg, ledgerService); | previousBlockDataset, opReg, ledgerService); | ||||
@@ -372,7 +373,7 @@ public class ContractInvokingTest { | |||||
private void registerDataAccount(LedgerRepository ledgerRepo, LedgerManager ledgerManager, | private void registerDataAccount(LedgerRepository ledgerRepo, LedgerManager ledgerManager, | ||||
DefaultOperationHandleRegisteration opReg, HashDigest ledgerHash, BlockchainKeypair kpDataAccount) { | DefaultOperationHandleRegisteration opReg, HashDigest ledgerHash, BlockchainKeypair kpDataAccount) { | ||||
LedgerBlock preBlock = ledgerRepo.getLatestBlock(); | LedgerBlock preBlock = ledgerRepo.getLatestBlock(); | ||||
LedgerDataset previousBlockDataset = ledgerRepo.getDataSet(preBlock); | |||||
LedgerDataQuery previousBlockDataset = ledgerRepo.getDataSet(preBlock); | |||||
// 加载合约 | // 加载合约 | ||||
LedgerEditor newBlockEditor = ledgerRepo.createNextBlock(); | LedgerEditor newBlockEditor = ledgerRepo.createNextBlock(); | ||||
@@ -402,7 +403,7 @@ public class ContractInvokingTest { | |||||
DefaultOperationHandleRegisteration opReg, HashDigest ledgerHash, BlockchainKeypair contractKey) { | DefaultOperationHandleRegisteration opReg, HashDigest ledgerHash, BlockchainKeypair contractKey) { | ||||
// 创建新区块的交易处理器; | // 创建新区块的交易处理器; | ||||
LedgerBlock preBlock = ledgerRepo.getLatestBlock(); | LedgerBlock preBlock = ledgerRepo.getLatestBlock(); | ||||
LedgerDataset previousBlockDataset = ledgerRepo.getDataSet(preBlock); | |||||
LedgerDataQuery previousBlockDataset = ledgerRepo.getDataSet(preBlock); | |||||
// 加载合约 | // 加载合约 | ||||
LedgerEditor newBlockEditor = ledgerRepo.createNextBlock(); | LedgerEditor newBlockEditor = ledgerRepo.createNextBlock(); | ||||
@@ -32,9 +32,9 @@ import com.jd.blockchain.ledger.TransactionRequest; | |||||
import com.jd.blockchain.ledger.TransactionRequestBuilder; | import com.jd.blockchain.ledger.TransactionRequestBuilder; | ||||
import com.jd.blockchain.ledger.TransactionState; | import com.jd.blockchain.ledger.TransactionState; | ||||
import com.jd.blockchain.ledger.UserRegisterOperation; | import com.jd.blockchain.ledger.UserRegisterOperation; | ||||
import com.jd.blockchain.ledger.core.ContractAccountSet; | |||||
import com.jd.blockchain.ledger.core.ContractAccountQuery; | |||||
import com.jd.blockchain.ledger.core.CryptoConfig; | import com.jd.blockchain.ledger.core.CryptoConfig; | ||||
import com.jd.blockchain.ledger.core.DataAccountSet; | |||||
import com.jd.blockchain.ledger.core.DataAccountQuery; | |||||
import com.jd.blockchain.ledger.core.LedgerDataset; | import com.jd.blockchain.ledger.core.LedgerDataset; | ||||
import com.jd.blockchain.ledger.core.LedgerEditor; | import com.jd.blockchain.ledger.core.LedgerEditor; | ||||
import com.jd.blockchain.ledger.core.LedgerInitializer; | import com.jd.blockchain.ledger.core.LedgerInitializer; | ||||
@@ -42,7 +42,7 @@ import com.jd.blockchain.ledger.core.LedgerManager; | |||||
import com.jd.blockchain.ledger.core.LedgerRepository; | import com.jd.blockchain.ledger.core.LedgerRepository; | ||||
import com.jd.blockchain.ledger.core.LedgerTransactionContext; | import com.jd.blockchain.ledger.core.LedgerTransactionContext; | ||||
import com.jd.blockchain.ledger.core.UserAccount; | 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.MemoryKVStorage; | import com.jd.blockchain.storage.service.utils.MemoryKVStorage; | ||||
import com.jd.blockchain.transaction.ConsensusParticipantData; | import com.jd.blockchain.transaction.ConsensusParticipantData; | ||||
import com.jd.blockchain.transaction.LedgerInitData; | import com.jd.blockchain.transaction.LedgerInitData; | ||||
@@ -170,9 +170,9 @@ public class LedgerManagerTest { | |||||
assertEquals(1, latestBlock.getHeight()); | assertEquals(1, latestBlock.getHeight()); | ||||
assertEquals(block1.getHash(), latestBlock.getHash()); | assertEquals(block1.getHash(), latestBlock.getHash()); | ||||
DataAccountSet dataAccountSet = reloadLedgerRepo.getDataAccountSet(latestBlock); | |||||
UserAccountSet userAccountSet = reloadLedgerRepo.getUserAccountSet(latestBlock); | |||||
ContractAccountSet contractAccountSet = reloadLedgerRepo.getContractAccountSet(latestBlock); | |||||
DataAccountQuery dataAccountSet = reloadLedgerRepo.getDataAccountSet(latestBlock); | |||||
UserAccountQuery userAccountSet = reloadLedgerRepo.getUserAccountSet(latestBlock); | |||||
ContractAccountQuery contractAccountSet = reloadLedgerRepo.getContractAccountSet(latestBlock); | |||||
} | } | ||||
@@ -20,9 +20,9 @@ import com.jd.blockchain.crypto.HashDigest; | |||||
import com.jd.blockchain.crypto.service.classic.ClassicAlgorithm; | import com.jd.blockchain.crypto.service.classic.ClassicAlgorithm; | ||||
import com.jd.blockchain.crypto.service.classic.ClassicCryptoService; | import com.jd.blockchain.crypto.service.classic.ClassicCryptoService; | ||||
import com.jd.blockchain.crypto.service.sm.SMCryptoService; | import com.jd.blockchain.crypto.service.sm.SMCryptoService; | ||||
import com.jd.blockchain.ledger.MerkleProof; | |||||
import com.jd.blockchain.ledger.core.CryptoConfig; | import com.jd.blockchain.ledger.core.CryptoConfig; | ||||
import com.jd.blockchain.ledger.core.MerkleDataSet; | import com.jd.blockchain.ledger.core.MerkleDataSet; | ||||
import com.jd.blockchain.ledger.core.MerkleProof; | |||||
import com.jd.blockchain.storage.service.VersioningKVEntry; | import com.jd.blockchain.storage.service.VersioningKVEntry; | ||||
import com.jd.blockchain.storage.service.utils.MemoryKVStorage; | import com.jd.blockchain.storage.service.utils.MemoryKVStorage; | ||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
@@ -17,9 +17,9 @@ import org.mockito.Mockito; | |||||
import com.jd.blockchain.crypto.HashDigest; | import com.jd.blockchain.crypto.HashDigest; | ||||
import com.jd.blockchain.crypto.service.classic.ClassicAlgorithm; | import com.jd.blockchain.crypto.service.classic.ClassicAlgorithm; | ||||
import com.jd.blockchain.ledger.CryptoSetting; | import com.jd.blockchain.ledger.CryptoSetting; | ||||
import com.jd.blockchain.ledger.core.MerkleDataNode; | |||||
import com.jd.blockchain.ledger.core.MerkleNode; | |||||
import com.jd.blockchain.ledger.core.MerkleProof; | |||||
import com.jd.blockchain.ledger.MerkleDataNode; | |||||
import com.jd.blockchain.ledger.MerkleNode; | |||||
import com.jd.blockchain.ledger.MerkleProof; | |||||
import com.jd.blockchain.ledger.core.MerkleTree; | import com.jd.blockchain.ledger.core.MerkleTree; | ||||
import com.jd.blockchain.storage.service.utils.ExistancePolicyKVStorageMap; | import com.jd.blockchain.storage.service.utils.ExistancePolicyKVStorageMap; | ||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
@@ -33,6 +33,7 @@ import com.jd.blockchain.ledger.TransactionState; | |||||
import com.jd.blockchain.ledger.UserRegisterOperation; | import com.jd.blockchain.ledger.UserRegisterOperation; | ||||
import com.jd.blockchain.ledger.core.DataAccount; | import com.jd.blockchain.ledger.core.DataAccount; | ||||
import com.jd.blockchain.ledger.core.DefaultOperationHandleRegisteration; | import com.jd.blockchain.ledger.core.DefaultOperationHandleRegisteration; | ||||
import com.jd.blockchain.ledger.core.LedgerDataQuery; | |||||
import com.jd.blockchain.ledger.core.LedgerDataset; | import com.jd.blockchain.ledger.core.LedgerDataset; | ||||
import com.jd.blockchain.ledger.core.LedgerEditor; | import com.jd.blockchain.ledger.core.LedgerEditor; | ||||
import com.jd.blockchain.ledger.core.LedgerManager; | import com.jd.blockchain.ledger.core.LedgerManager; | ||||
@@ -83,7 +84,7 @@ public class TransactionBatchProcessorTest { | |||||
LedgerRepository ledgerRepo = ledgerManager.register(ledgerHash, STORAGE); | LedgerRepository ledgerRepo = ledgerManager.register(ledgerHash, STORAGE); | ||||
// 验证参与方账户的存在; | // 验证参与方账户的存在; | ||||
LedgerDataset previousBlockDataset = ledgerRepo.getDataSet(ledgerRepo.getLatestBlock()); | |||||
LedgerDataQuery previousBlockDataset = ledgerRepo.getDataSet(ledgerRepo.getLatestBlock()); | |||||
UserAccount user0 = previousBlockDataset.getUserAccountSet().getUser(parti0.getAddress()); | UserAccount user0 = previousBlockDataset.getUserAccountSet().getUser(parti0.getAddress()); | ||||
assertNotNull(user0); | assertNotNull(user0); | ||||
boolean partiRegistered = previousBlockDataset.getUserAccountSet().contains(parti0.getAddress()); | boolean partiRegistered = previousBlockDataset.getUserAccountSet().contains(parti0.getAddress()); | ||||
@@ -143,7 +144,7 @@ public class TransactionBatchProcessorTest { | |||||
LedgerRepository ledgerRepo = ledgerManager.register(ledgerHash, STORAGE); | LedgerRepository ledgerRepo = ledgerManager.register(ledgerHash, STORAGE); | ||||
// 验证参与方账户的存在; | // 验证参与方账户的存在; | ||||
LedgerDataset previousBlockDataset = ledgerRepo.getDataSet(ledgerRepo.getLatestBlock()); | |||||
LedgerDataQuery previousBlockDataset = ledgerRepo.getDataSet(ledgerRepo.getLatestBlock()); | |||||
UserAccount user0 = previousBlockDataset.getUserAccountSet().getUser(parti0.getAddress()); | UserAccount user0 = previousBlockDataset.getUserAccountSet().getUser(parti0.getAddress()); | ||||
assertNotNull(user0); | assertNotNull(user0); | ||||
boolean partiRegistered = previousBlockDataset.getUserAccountSet().contains(parti0.getAddress()); | boolean partiRegistered = previousBlockDataset.getUserAccountSet().contains(parti0.getAddress()); | ||||
@@ -182,7 +183,7 @@ public class TransactionBatchProcessorTest { | |||||
assertEquals(newBlock.getHash(), latestBlock.getHash()); | assertEquals(newBlock.getHash(), latestBlock.getHash()); | ||||
assertEquals(1, newBlock.getHeight()); | assertEquals(1, newBlock.getHeight()); | ||||
LedgerDataset ledgerDS = ledgerRepo.getDataSet(latestBlock); | |||||
LedgerDataQuery ledgerDS = ledgerRepo.getDataSet(latestBlock); | |||||
boolean existUser1 = ledgerDS.getUserAccountSet().contains(userKeypair1.getAddress()); | boolean existUser1 = ledgerDS.getUserAccountSet().contains(userKeypair1.getAddress()); | ||||
boolean existUser2 = ledgerDS.getUserAccountSet().contains(userKeypair2.getAddress()); | boolean existUser2 = ledgerDS.getUserAccountSet().contains(userKeypair2.getAddress()); | ||||
assertTrue(existUser1); | assertTrue(existUser1); | ||||
@@ -201,7 +202,7 @@ public class TransactionBatchProcessorTest { | |||||
LedgerRepository ledgerRepo = ledgerManager.register(ledgerHash, STORAGE); | LedgerRepository ledgerRepo = ledgerManager.register(ledgerHash, STORAGE); | ||||
// 验证参与方账户的存在; | // 验证参与方账户的存在; | ||||
LedgerDataset previousBlockDataset = ledgerRepo.getDataSet(ledgerRepo.getLatestBlock()); | |||||
LedgerDataQuery previousBlockDataset = ledgerRepo.getDataSet(ledgerRepo.getLatestBlock()); | |||||
UserAccount user0 = previousBlockDataset.getUserAccountSet().getUser(parti0.getAddress()); | UserAccount user0 = previousBlockDataset.getUserAccountSet().getUser(parti0.getAddress()); | ||||
assertNotNull(user0); | assertNotNull(user0); | ||||
boolean partiRegistered = previousBlockDataset.getUserAccountSet().contains(parti0.getAddress()); | boolean partiRegistered = previousBlockDataset.getUserAccountSet().contains(parti0.getAddress()); | ||||
@@ -260,7 +261,7 @@ public class TransactionBatchProcessorTest { | |||||
assertNotNull(tx3); | assertNotNull(tx3); | ||||
assertEquals(TransactionState.SUCCESS, tx3.getExecutionState()); | assertEquals(TransactionState.SUCCESS, tx3.getExecutionState()); | ||||
LedgerDataset ledgerDS = ledgerRepo.getDataSet(latestBlock); | |||||
LedgerDataQuery ledgerDS = ledgerRepo.getDataSet(latestBlock); | |||||
boolean existUser1 = ledgerDS.getUserAccountSet().contains(userKeypair1.getAddress()); | boolean existUser1 = ledgerDS.getUserAccountSet().contains(userKeypair1.getAddress()); | ||||
boolean existUser2 = ledgerDS.getUserAccountSet().contains(userKeypair2.getAddress()); | boolean existUser2 = ledgerDS.getUserAccountSet().contains(userKeypair2.getAddress()); | ||||
boolean existUser3 = ledgerDS.getUserAccountSet().contains(userKeypair3.getAddress()); | boolean existUser3 = ledgerDS.getUserAccountSet().contains(userKeypair3.getAddress()); | ||||
@@ -281,7 +282,7 @@ public class TransactionBatchProcessorTest { | |||||
LedgerRepository ledgerRepo = ledgerManager.register(ledgerHash, STORAGE); | LedgerRepository ledgerRepo = ledgerManager.register(ledgerHash, STORAGE); | ||||
// 验证参与方账户的存在; | // 验证参与方账户的存在; | ||||
LedgerDataset previousBlockDataset = ledgerRepo.getDataSet(ledgerRepo.getLatestBlock()); | |||||
LedgerDataQuery previousBlockDataset = ledgerRepo.getDataSet(ledgerRepo.getLatestBlock()); | |||||
UserAccount user0 = previousBlockDataset.getUserAccountSet().getUser(parti0.getAddress()); | UserAccount user0 = previousBlockDataset.getUserAccountSet().getUser(parti0.getAddress()); | ||||
assertNotNull(user0); | assertNotNull(user0); | ||||
boolean partiRegistered = previousBlockDataset.getUserAccountSet().contains(parti0.getAddress()); | boolean partiRegistered = previousBlockDataset.getUserAccountSet().contains(parti0.getAddress()); | ||||
@@ -1,4 +1,4 @@ | |||||
package com.jd.blockchain.ledger.core; | |||||
package com.jd.blockchain.ledger; | |||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
@@ -1,4 +1,4 @@ | |||||
package com.jd.blockchain.ledger.core; | |||||
package com.jd.blockchain.ledger; | |||||
import com.jd.blockchain.crypto.HashDigest; | import com.jd.blockchain.crypto.HashDigest; | ||||
@@ -1,4 +1,4 @@ | |||||
package com.jd.blockchain.ledger.core; | |||||
package com.jd.blockchain.ledger; | |||||
import com.jd.blockchain.crypto.HashDigest; | import com.jd.blockchain.crypto.HashDigest; | ||||
@@ -0,0 +1,29 @@ | |||||
package com.jd.blockchain.ledger; | |||||
import com.jd.blockchain.crypto.HashDigest; | |||||
import com.jd.blockchain.utils.Bytes; | |||||
public interface ParticipantDataQuery { | |||||
HashDigest getRootHash(); | |||||
MerkleProof getProof(Bytes key); | |||||
long getParticipantCount(); | |||||
boolean contains(Bytes address); | |||||
/** | |||||
* 返回指定地址的参与方凭证; | |||||
* | |||||
* <br> | |||||
* 如果不存在,则返回 null; | |||||
* | |||||
* @param address | |||||
* @return | |||||
*/ | |||||
ParticipantNode getParticipant(Bytes address); | |||||
ParticipantNode[] getParticipants(); | |||||
} |
@@ -14,14 +14,14 @@ import org.springframework.web.bind.annotation.RestController; | |||||
import com.jd.blockchain.contract.ContractException; | import com.jd.blockchain.contract.ContractException; | ||||
import com.jd.blockchain.crypto.HashDigest; | 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.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.LedgerRepository; | ||||
import com.jd.blockchain.ledger.core.LedgerService; | import com.jd.blockchain.ledger.core.LedgerService; | ||||
import com.jd.blockchain.ledger.core.ParticipantCertData; | import com.jd.blockchain.ledger.core.ParticipantCertData; | ||||
import com.jd.blockchain.ledger.core.TransactionSet; | 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.transaction.BlockchainQueryService; | ||||
import com.jd.blockchain.utils.Bytes; | import com.jd.blockchain.utils.Bytes; | ||||
import com.jd.blockchain.utils.QueryUtil; | import com.jd.blockchain.utils.QueryUtil; | ||||
@@ -145,7 +145,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
@PathVariable(name = "blockHeight") long height) { | @PathVariable(name = "blockHeight") long height) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getBlock(height); | LedgerBlock block = ledger.getBlock(height); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
return dataAccountSet.getTotalCount(); | return dataAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -155,7 +155,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
@PathVariable(name = "blockHash") HashDigest blockHash) { | @PathVariable(name = "blockHash") HashDigest blockHash) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getBlock(blockHash); | LedgerBlock block = ledger.getBlock(blockHash); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
return dataAccountSet.getTotalCount(); | return dataAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -164,7 +164,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
public long getDataAccountTotalCount(@PathVariable(name = "ledgerHash") HashDigest ledgerHash) { | public long getDataAccountTotalCount(@PathVariable(name = "ledgerHash") HashDigest ledgerHash) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
return dataAccountSet.getTotalCount(); | return dataAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -174,7 +174,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
@PathVariable(name = "blockHeight") long height) { | @PathVariable(name = "blockHeight") long height) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getBlock(height); | LedgerBlock block = ledger.getBlock(height); | ||||
UserAccountSet userAccountSet = ledger.getUserAccountSet(block); | |||||
UserAccountQuery userAccountSet = ledger.getUserAccountSet(block); | |||||
return userAccountSet.getTotalCount(); | return userAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -184,7 +184,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
@PathVariable(name = "blockHash") HashDigest blockHash) { | @PathVariable(name = "blockHash") HashDigest blockHash) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getBlock(blockHash); | LedgerBlock block = ledger.getBlock(blockHash); | ||||
UserAccountSet userAccountSet = ledger.getUserAccountSet(block); | |||||
UserAccountQuery userAccountSet = ledger.getUserAccountSet(block); | |||||
return userAccountSet.getTotalCount(); | return userAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -193,7 +193,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
public long getUserTotalCount(@PathVariable(name = "ledgerHash") HashDigest ledgerHash) { | public long getUserTotalCount(@PathVariable(name = "ledgerHash") HashDigest ledgerHash) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
UserAccountSet userAccountSet = ledger.getUserAccountSet(block); | |||||
UserAccountQuery userAccountSet = ledger.getUserAccountSet(block); | |||||
return userAccountSet.getTotalCount(); | return userAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -203,7 +203,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
@PathVariable(name = "blockHeight") long height) { | @PathVariable(name = "blockHeight") long height) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getBlock(height); | LedgerBlock block = ledger.getBlock(height); | ||||
ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block); | |||||
ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block); | |||||
return contractAccountSet.getTotalCount(); | return contractAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -213,7 +213,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
@PathVariable(name = "blockHash") HashDigest blockHash) { | @PathVariable(name = "blockHash") HashDigest blockHash) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getBlock(blockHash); | LedgerBlock block = ledger.getBlock(blockHash); | ||||
ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block); | |||||
ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block); | |||||
return contractAccountSet.getTotalCount(); | return contractAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -222,7 +222,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
public long getContractTotalCount(@PathVariable(name = "ledgerHash") HashDigest ledgerHash) { | public long getContractTotalCount(@PathVariable(name = "ledgerHash") HashDigest ledgerHash) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block); | |||||
ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block); | |||||
return contractAccountSet.getTotalCount(); | return contractAccountSet.getTotalCount(); | ||||
} | } | ||||
@@ -320,7 +320,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
@PathVariable(name = "address") String address) { | @PathVariable(name = "address") String address) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
UserAccountSet userAccountSet = ledger.getUserAccountSet(block); | |||||
UserAccountQuery userAccountSet = ledger.getUserAccountSet(block); | |||||
return userAccountSet.getUser(address); | return userAccountSet.getUser(address); | ||||
} | } | ||||
@@ -330,7 +330,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
@PathVariable(name = "address") String address) { | @PathVariable(name = "address") String address) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
return dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | return dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | ||||
} | } | ||||
@@ -344,7 +344,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
} | } | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | ||||
KVDataEntry[] entries = new KVDataEntry[keys.length]; | KVDataEntry[] entries = new KVDataEntry[keys.length]; | ||||
@@ -393,7 +393,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | ||||
KVDataEntry[] entries = new KVDataEntry[keys.length]; | KVDataEntry[] entries = new KVDataEntry[keys.length]; | ||||
@@ -428,7 +428,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | ||||
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) dataAccount.getDataEntriesTotalCount()); | int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) dataAccount.getDataEntriesTotalCount()); | ||||
@@ -442,7 +442,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | DataAccount dataAccount = dataAccountSet.getDataAccount(Bytes.fromBase58(address)); | ||||
return dataAccount.getDataEntriesTotalCount(); | return dataAccount.getDataEntriesTotalCount(); | ||||
@@ -454,7 +454,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
@PathVariable(name = "address") String address) { | @PathVariable(name = "address") String address) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block); | |||||
ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block); | |||||
return contractAccountSet.getContract(Bytes.fromBase58(address)); | return contractAccountSet.getContract(Bytes.fromBase58(address)); | ||||
} | } | ||||
@@ -473,7 +473,7 @@ public class LedgerQueryController implements BlockchainQueryService { | |||||
@RequestParam(name = "count", required = false, defaultValue = "-1") int count) { | @RequestParam(name = "count", required = false, defaultValue = "-1") int count) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
UserAccountSet userAccountSet = ledger.getUserAccountSet(block); | |||||
UserAccountQuery userAccountSet = ledger.getUserAccountSet(block); | |||||
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) userAccountSet.getTotalCount()); | int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) userAccountSet.getTotalCount()); | ||||
return userAccountSet.getAccounts(pages[0], pages[1]); | 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) { | @RequestParam(name = "count", required = false, defaultValue = "-1") int count) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
DataAccountSet dataAccountSet = ledger.getDataAccountSet(block); | |||||
DataAccountQuery dataAccountSet = ledger.getDataAccountSet(block); | |||||
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) dataAccountSet.getTotalCount()); | int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) dataAccountSet.getTotalCount()); | ||||
return dataAccountSet.getAccounts(pages[0], pages[1]); | 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) { | @RequestParam(name = "count", required = false, defaultValue = "-1") int count) { | ||||
LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | LedgerRepository ledger = ledgerService.getLedger(ledgerHash); | ||||
LedgerBlock block = ledger.getLatestBlock(); | LedgerBlock block = ledger.getLatestBlock(); | ||||
ContractAccountSet contractAccountSet = ledger.getContractAccountSet(block); | |||||
ContractAccountQuery contractAccountSet = ledger.getContractAccountSet(block); | |||||
int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) contractAccountSet.getTotalCount()); | int pages[] = QueryUtil.calFromIndexAndCount(fromIndex, count, (int) contractAccountSet.getTotalCount()); | ||||
return contractAccountSet.getAccounts(pages[0], pages[1]); | return contractAccountSet.getAccounts(pages[0], pages[1]); | ||||
} | } | ||||
@@ -47,6 +47,7 @@ import com.jd.blockchain.ledger.TransactionContentBody; | |||||
import com.jd.blockchain.ledger.TransactionRequest; | import com.jd.blockchain.ledger.TransactionRequest; | ||||
import com.jd.blockchain.ledger.TransactionResponse; | import com.jd.blockchain.ledger.TransactionResponse; | ||||
import com.jd.blockchain.ledger.UserRegisterOperation; | 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.LedgerManage; | ||||
import com.jd.blockchain.ledger.core.LedgerRepository; | import com.jd.blockchain.ledger.core.LedgerRepository; | ||||
import com.jd.blockchain.peer.ConsensusRealm; | import com.jd.blockchain.peer.ConsensusRealm; | ||||
@@ -122,7 +123,7 @@ public class ManagementController implements LedgerBindingConfigAware, PeerManag | |||||
DataContractRegistry.register(BftsmartConsensusSettings.class); | DataContractRegistry.register(BftsmartConsensusSettings.class); | ||||
DataContractRegistry.register(BftsmartNodeSettings.class); | DataContractRegistry.register(BftsmartNodeSettings.class); | ||||
DataContractRegistry.register(LedgerAdminInfo.class); | |||||
DataContractRegistry.register(LedgerAdminDataQuery.class); | |||||
} | } | ||||
@@ -35,7 +35,7 @@ import com.jd.blockchain.ledger.PreparedTransaction; | |||||
import com.jd.blockchain.ledger.TransactionResponse; | import com.jd.blockchain.ledger.TransactionResponse; | ||||
import com.jd.blockchain.ledger.TransactionTemplate; | import com.jd.blockchain.ledger.TransactionTemplate; | ||||
import com.jd.blockchain.ledger.UserInfo; | 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.LedgerManage; | ||||
import com.jd.blockchain.ledger.core.LedgerManager; | import com.jd.blockchain.ledger.core.LedgerManager; | ||||
import com.jd.blockchain.ledger.core.LedgerRepository; | import com.jd.blockchain.ledger.core.LedgerRepository; | ||||
@@ -619,7 +619,7 @@ public class IntegrationTest { | |||||
LedgerBlock backgroundLedgerBlock = ledgerOfNode0.retrieveLatestBlock(); | LedgerBlock backgroundLedgerBlock = ledgerOfNode0.retrieveLatestBlock(); | ||||
// 验证合约中的赋值,外部可以获得; | // 验证合约中的赋值,外部可以获得; | ||||
DataAccountSet dataAccountSet = ledgerOfNode0.getDataAccountSet(backgroundLedgerBlock); | |||||
DataAccountQuery dataAccountSet = ledgerOfNode0.getDataAccountSet(backgroundLedgerBlock); | |||||
AsymmetricKeypair key = Crypto.getSignatureFunction("ED25519").generateKeypair(); | AsymmetricKeypair key = Crypto.getSignatureFunction("ED25519").generateKeypair(); | ||||
PubKey pubKey = key.getPubKey(); | PubKey pubKey = key.getPubKey(); | ||||
Bytes dataAddress = AddressEncoding.generateAddress(pubKey); | Bytes dataAddress = AddressEncoding.generateAddress(pubKey); | ||||
@@ -27,7 +27,7 @@ import com.jd.blockchain.ledger.core.LedgerInitProposal; | |||||
import com.jd.blockchain.ledger.core.LedgerManager; | import com.jd.blockchain.ledger.core.LedgerManager; | ||||
import com.jd.blockchain.ledger.core.LedgerRepository; | import com.jd.blockchain.ledger.core.LedgerRepository; | ||||
import com.jd.blockchain.ledger.core.UserAccount; | 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.MemoryDBConnFactory; | ||||
//import com.jd.blockchain.storage.service.utils.MemoryBasedDb; | //import com.jd.blockchain.storage.service.utils.MemoryBasedDb; | ||||
import com.jd.blockchain.tools.initializer.DBConnectionConfig; | import com.jd.blockchain.tools.initializer.DBConnectionConfig; | ||||
@@ -113,7 +113,7 @@ public class LedgerInitializeTest { | |||||
LedgerBlock genesisBlock = ledger0.getLatestBlock(); | LedgerBlock genesisBlock = ledger0.getLatestBlock(); | ||||
UserAccountSet userset0 = ledger0.getUserAccountSet(genesisBlock); | |||||
UserAccountQuery userset0 = ledger0.getUserAccountSet(genesisBlock); | |||||
PubKey pubKey0 = KeyGenUtils.decodePubKey(PUB_KEYS[0]); | PubKey pubKey0 = KeyGenUtils.decodePubKey(PUB_KEYS[0]); | ||||
Bytes address0 = AddressEncoding.generateAddress(pubKey0); | Bytes address0 = AddressEncoding.generateAddress(pubKey0); | ||||
@@ -32,7 +32,7 @@ import com.jd.blockchain.ledger.core.LedgerInitProposal; | |||||
import com.jd.blockchain.ledger.core.LedgerManager; | import com.jd.blockchain.ledger.core.LedgerManager; | ||||
import com.jd.blockchain.ledger.core.LedgerRepository; | import com.jd.blockchain.ledger.core.LedgerRepository; | ||||
import com.jd.blockchain.ledger.core.UserAccount; | 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.DbConnection; | ||||
import com.jd.blockchain.storage.service.impl.composite.CompositeConnectionFactory; | import com.jd.blockchain.storage.service.impl.composite.CompositeConnectionFactory; | ||||
//import com.jd.blockchain.storage.service.utils.MemoryBasedDb; | //import com.jd.blockchain.storage.service.utils.MemoryBasedDb; | ||||
@@ -298,7 +298,7 @@ public class LedgerInitializeWebTest { | |||||
LedgerBlock genesisBlock = ledger0.getLatestBlock(); | LedgerBlock genesisBlock = ledger0.getLatestBlock(); | ||||
UserAccountSet userset0 = ledger0.getUserAccountSet(genesisBlock); | |||||
UserAccountQuery userset0 = ledger0.getUserAccountSet(genesisBlock); | |||||
PubKey pubKey0 = KeyGenUtils.decodePubKey(PUB_KEYS[0]); | PubKey pubKey0 = KeyGenUtils.decodePubKey(PUB_KEYS[0]); | ||||
Bytes address0 = AddressEncoding.generateAddress(pubKey0); | Bytes address0 = AddressEncoding.generateAddress(pubKey0); | ||||
@@ -40,7 +40,7 @@ import com.jd.blockchain.ledger.TransactionRequestBuilder; | |||||
import com.jd.blockchain.ledger.TransactionResponse; | import com.jd.blockchain.ledger.TransactionResponse; | ||||
import com.jd.blockchain.ledger.UserRegisterOperation; | import com.jd.blockchain.ledger.UserRegisterOperation; | ||||
import com.jd.blockchain.ledger.core.DefaultOperationHandleRegisteration; | 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.LedgerEditor; | ||||
import com.jd.blockchain.ledger.core.LedgerManager; | import com.jd.blockchain.ledger.core.LedgerManager; | ||||
import com.jd.blockchain.ledger.core.LedgerRepository; | import com.jd.blockchain.ledger.core.LedgerRepository; | ||||
@@ -291,7 +291,7 @@ public class LedgerPerformanceTest { | |||||
ConsoleUtils.info("\r\n\r\n================= 准备测试交易 [执行合约] ================="); | ConsoleUtils.info("\r\n\r\n================= 准备测试交易 [执行合约] ================="); | ||||
LedgerBlock latestBlock = ledger.getLatestBlock(); | LedgerBlock latestBlock = ledger.getLatestBlock(); | ||||
LedgerDataset previousDataSet = ledger.getDataSet(latestBlock); | |||||
LedgerDataQuery previousDataSet = ledger.getDataSet(latestBlock); | |||||
LedgerEditor newEditor = ledger.createNextBlock(); | LedgerEditor newEditor = ledger.createNextBlock(); | ||||
TransactionBatchProcessor txProc = new TransactionBatchProcessor(DEFAULT_SECURITY_MANAGER, newEditor, | TransactionBatchProcessor txProc = new TransactionBatchProcessor(DEFAULT_SECURITY_MANAGER, newEditor, | ||||
previousDataSet, opHandler, ledgerManager); | previousDataSet, opHandler, ledgerManager); | ||||
@@ -324,7 +324,7 @@ public class LedgerPerformanceTest { | |||||
long batchStartTs = System.currentTimeMillis(); | long batchStartTs = System.currentTimeMillis(); | ||||
for (int i = 0; i < batchCount; i++) { | for (int i = 0; i < batchCount; i++) { | ||||
LedgerBlock latestBlock = ledger.getLatestBlock(); | LedgerBlock latestBlock = ledger.getLatestBlock(); | ||||
LedgerDataset previousDataSet = ledger.getDataSet(latestBlock); | |||||
LedgerDataQuery previousDataSet = ledger.getDataSet(latestBlock); | |||||
if (statistic) { | if (statistic) { | ||||
ConsoleUtils.info("------ 开始执行交易, 即将生成区块[高度:%s] ------", (latestBlock.getHeight() + 1)); | ConsoleUtils.info("------ 开始执行交易, 即将生成区块[高度:%s] ------", (latestBlock.getHeight() + 1)); | ||||
} | } | ||||
@@ -4,7 +4,7 @@ import com.jd.blockchain.crypto.*; | |||||
import com.jd.blockchain.gateway.GatewayConfigProperties.KeyPairConfig; | import com.jd.blockchain.gateway.GatewayConfigProperties.KeyPairConfig; | ||||
import com.jd.blockchain.ledger.*; | import com.jd.blockchain.ledger.*; | ||||
import com.jd.blockchain.ledger.core.DataAccount; | 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.LedgerManage; | ||||
import com.jd.blockchain.ledger.core.LedgerManager; | import com.jd.blockchain.ledger.core.LedgerManager; | ||||
import com.jd.blockchain.ledger.core.LedgerRepository; | import com.jd.blockchain.ledger.core.LedgerRepository; | ||||
@@ -445,7 +445,7 @@ public class IntegrationTestAll4Redis { | |||||
assertEquals(txResp.getBlockHeight(), backgroundLedgerBlock.getHeight()); | assertEquals(txResp.getBlockHeight(), backgroundLedgerBlock.getHeight()); | ||||
// 验证合约中的赋值,外部可以获得; | // 验证合约中的赋值,外部可以获得; | ||||
DataAccountSet dataAccountSet = ledgerRepository.getDataAccountSet(backgroundLedgerBlock); | |||||
DataAccountQuery dataAccountSet = ledgerRepository.getDataAccountSet(backgroundLedgerBlock); | |||||
AsymmetricKeypair key = Crypto.getSignatureFunction("ED25519").generateKeypair(); | AsymmetricKeypair key = Crypto.getSignatureFunction("ED25519").generateKeypair(); | ||||
PubKey pubKey = key.getPubKey(); | PubKey pubKey = key.getPubKey(); | ||||
Bytes dataAddress = AddressEncoding.generateAddress(pubKey); | Bytes dataAddress = AddressEncoding.generateAddress(pubKey); | ||||
@@ -29,7 +29,7 @@ import com.jd.blockchain.ledger.LedgerInitProperties; | |||||
import com.jd.blockchain.ledger.PreparedTransaction; | import com.jd.blockchain.ledger.PreparedTransaction; | ||||
import com.jd.blockchain.ledger.TransactionResponse; | import com.jd.blockchain.ledger.TransactionResponse; | ||||
import com.jd.blockchain.ledger.TransactionTemplate; | 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.LedgerManager; | ||||
import com.jd.blockchain.ledger.core.LedgerRepository; | import com.jd.blockchain.ledger.core.LedgerRepository; | ||||
import com.jd.blockchain.sdk.BlockchainService; | import com.jd.blockchain.sdk.BlockchainService; | ||||
@@ -187,7 +187,7 @@ public class IntegrationTestDataAccount { | |||||
LedgerRepository ledgerRepository = ledgerManager.register(ledgerHashs[0], memoryBasedDb.getStorageService()); | 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]); | TransactionTemplate txTpl = blockchainService.newTransaction(ledgerHashs[0]); | ||||
@@ -34,7 +34,7 @@ import com.jd.blockchain.ledger.core.LedgerInitProposal; | |||||
import com.jd.blockchain.ledger.core.LedgerManager; | import com.jd.blockchain.ledger.core.LedgerManager; | ||||
import com.jd.blockchain.ledger.core.LedgerRepository; | import com.jd.blockchain.ledger.core.LedgerRepository; | ||||
import com.jd.blockchain.ledger.core.UserAccount; | 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.MemoryDBConnFactory; | ||||
import com.jd.blockchain.tools.initializer.DBConnectionConfig; | import com.jd.blockchain.tools.initializer.DBConnectionConfig; | ||||
import com.jd.blockchain.tools.initializer.LedgerInitProcess; | import com.jd.blockchain.tools.initializer.LedgerInitProcess; | ||||
@@ -143,7 +143,7 @@ public class LedgerInitializeTest { | |||||
assertEquals(0, genesisBlock.getHeight()); | assertEquals(0, genesisBlock.getHeight()); | ||||
assertEquals(ledgerHash0, genesisBlock.getHash()); | assertEquals(ledgerHash0, genesisBlock.getHash()); | ||||
UserAccountSet userset0 = ledger0.getUserAccountSet(genesisBlock); | |||||
UserAccountQuery userset0 = ledger0.getUserAccountSet(genesisBlock); | |||||
PubKey pubKey0 = KeyGenUtils.decodePubKey(PUB_KEYS[0]); | PubKey pubKey0 = KeyGenUtils.decodePubKey(PUB_KEYS[0]); | ||||
Bytes address0 = AddressEncoding.generateAddress(pubKey0); | Bytes address0 = AddressEncoding.generateAddress(pubKey0); | ||||
@@ -138,7 +138,7 @@ public class LedgerInitializeWeb4Nodes { | |||||
assertEquals(0, genesisBlock.getHeight()); | assertEquals(0, genesisBlock.getHeight()); | ||||
assertEquals(ledgerHash0, genesisBlock.getHash()); | assertEquals(ledgerHash0, genesisBlock.getHash()); | ||||
UserAccountSet userset0 = ledger0.getUserAccountSet(genesisBlock); | |||||
UserAccountQuery userset0 = ledger0.getUserAccountSet(genesisBlock); | |||||
PubKey pubKey0 = KeyGenUtils.decodePubKey(PUB_KEYS[0]); | PubKey pubKey0 = KeyGenUtils.decodePubKey(PUB_KEYS[0]); | ||||
Bytes address0 = AddressEncoding.generateAddress(pubKey0); | Bytes address0 = AddressEncoding.generateAddress(pubKey0); | ||||
@@ -27,7 +27,7 @@ import com.jd.blockchain.ledger.LedgerInitProperties; | |||||
import com.jd.blockchain.ledger.TransactionRequest; | import com.jd.blockchain.ledger.TransactionRequest; | ||||
import com.jd.blockchain.ledger.TransactionRequestBuilder; | import com.jd.blockchain.ledger.TransactionRequestBuilder; | ||||
import com.jd.blockchain.ledger.core.DefaultOperationHandleRegisteration; | 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.LedgerEditor; | ||||
import com.jd.blockchain.ledger.core.LedgerManager; | import com.jd.blockchain.ledger.core.LedgerManager; | ||||
import com.jd.blockchain.ledger.core.LedgerRepository; | import com.jd.blockchain.ledger.core.LedgerRepository; | ||||
@@ -77,7 +77,7 @@ public class LedgerBlockGeneratingTest { | |||||
LedgerBlock latestBlock = ledger.getLatestBlock(); | LedgerBlock latestBlock = ledger.getLatestBlock(); | ||||
assertEquals(height + i, latestBlock.getHeight()); | assertEquals(height + i, latestBlock.getHeight()); | ||||
LedgerDataset previousDataSet = ledger.getDataSet(latestBlock); | |||||
LedgerDataQuery previousDataSet = ledger.getDataSet(latestBlock); | |||||
ConsoleUtils.info("------ 开始执行交易, 即将生成区块[%s] ------", (latestBlock.getHeight() + 1)); | ConsoleUtils.info("------ 开始执行交易, 即将生成区块[%s] ------", (latestBlock.getHeight() + 1)); | ||||
long startTs = System.currentTimeMillis(); | long startTs = System.currentTimeMillis(); | ||||
@@ -60,13 +60,12 @@ import com.jd.blockchain.ledger.UserInfo; | |||||
import com.jd.blockchain.ledger.UserRegisterOperation; | import com.jd.blockchain.ledger.UserRegisterOperation; | ||||
import com.jd.blockchain.ledger.core.CryptoConfig; | import com.jd.blockchain.ledger.core.CryptoConfig; | ||||
import com.jd.blockchain.ledger.core.DefaultOperationHandleRegisteration; | 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.LedgerEditor; | ||||
import com.jd.blockchain.ledger.core.LedgerManager; | import com.jd.blockchain.ledger.core.LedgerManager; | ||||
import com.jd.blockchain.ledger.core.LedgerQueryService; | import com.jd.blockchain.ledger.core.LedgerQueryService; | ||||
import com.jd.blockchain.ledger.core.LedgerRepository; | import com.jd.blockchain.ledger.core.LedgerRepository; | ||||
import com.jd.blockchain.ledger.core.LedgerSecurityManager; | 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.SecurityPolicy; | ||||
import com.jd.blockchain.ledger.core.TransactionBatchProcessor; | import com.jd.blockchain.ledger.core.TransactionBatchProcessor; | ||||
import com.jd.blockchain.mocker.config.MockerConstant; | import com.jd.blockchain.mocker.config.MockerConstant; | ||||
@@ -465,7 +464,7 @@ public class MockerNodeContext implements BlockchainQueryService { | |||||
public OperationResult[] txProcess(TransactionRequest txRequest) { | public OperationResult[] txProcess(TransactionRequest txRequest) { | ||||
LedgerEditor newEditor = ledgerRepository.createNextBlock(); | LedgerEditor newEditor = ledgerRepository.createNextBlock(); | ||||
LedgerBlock latestBlock = ledgerRepository.getLatestBlock(); | LedgerBlock latestBlock = ledgerRepository.getLatestBlock(); | ||||
LedgerDataset previousDataSet = ledgerRepository.getDataSet(latestBlock); | |||||
LedgerDataQuery previousDataSet = ledgerRepository.getDataSet(latestBlock); | |||||
TransactionBatchProcessor txProc = new TransactionBatchProcessor(getSecurityManager(), newEditor, | TransactionBatchProcessor txProc = new TransactionBatchProcessor(getSecurityManager(), newEditor, | ||||
previousDataSet, opHandler, ledgerManager); | previousDataSet, opHandler, ledgerManager); | ||||
TransactionResponse txResp = txProc.schedule(txRequest); | TransactionResponse txResp = txProc.schedule(txRequest); | ||||
@@ -9,7 +9,14 @@ import com.jd.blockchain.contract.ContractException; | |||||
import com.jd.blockchain.contract.EventProcessingAware; | import com.jd.blockchain.contract.EventProcessingAware; | ||||
import com.jd.blockchain.contract.LedgerContext; | import com.jd.blockchain.contract.LedgerContext; | ||||
import com.jd.blockchain.crypto.HashDigest; | 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.LedgerDataset; | ||||
import com.jd.blockchain.ledger.core.LedgerManager; | import com.jd.blockchain.ledger.core.LedgerManager; | ||||
import com.jd.blockchain.ledger.core.LedgerQueryService; | import com.jd.blockchain.ledger.core.LedgerQueryService; | ||||
@@ -30,7 +37,7 @@ public class MockerContractExeHandle implements OperationHandle { | |||||
@Override | @Override | ||||
public BytesValue process(Operation op, LedgerDataset dataset, TransactionRequestExtension request, | 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; | ContractEventSendOperation contractOP = (ContractEventSendOperation) op; | ||||
HashDigest txHash = request.getTransactionContent().getHash(); | HashDigest txHash = request.getTransactionContent().getHash(); | ||||