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