@@ -22,7 +22,7 @@ public interface DataCodes { | |||||
public static final int DATA_SNAPSHOT = 0x130; | public static final int DATA_SNAPSHOT = 0x130; | ||||
// public static final int LEDGER_ADMIN_DATA = 0x131; | |||||
public static final int LEDGER_ADMIN_INFO = 0x131; | |||||
public static final int TX = 0x200; | public static final int TX = 0x200; | ||||
@@ -2,7 +2,7 @@ package com.jd.blockchain.ledger.core; | |||||
import com.jd.blockchain.crypto.HashDigest; | import com.jd.blockchain.crypto.HashDigest; | ||||
import com.jd.blockchain.ledger.AccountHeader; | import com.jd.blockchain.ledger.AccountHeader; | ||||
import com.jd.blockchain.ledger.LedgerAdminInfo; | |||||
import com.jd.blockchain.ledger.LedgerAdminSettings; | |||||
import com.jd.blockchain.ledger.MerkleProof; | import com.jd.blockchain.ledger.MerkleProof; | ||||
import com.jd.blockchain.ledger.ParticipantDataQuery; | import com.jd.blockchain.ledger.ParticipantDataQuery; | ||||
import com.jd.blockchain.ledger.ParticipantNode; | import com.jd.blockchain.ledger.ParticipantNode; | ||||
@@ -45,7 +45,7 @@ public class EmptyLedgerDataset implements LedgerDataQuery { | |||||
@Override | @Override | ||||
public LedgerAdminInfo getAdminInfo() { | |||||
public LedgerAdminSettings getAdminInfo() { | |||||
return null; | return null; | ||||
} | } | ||||
@@ -1,11 +1,11 @@ | |||||
package com.jd.blockchain.ledger.core; | package com.jd.blockchain.ledger.core; | ||||
import com.jd.blockchain.ledger.LedgerAdminInfo; | |||||
import com.jd.blockchain.ledger.LedgerAdminSettings; | |||||
import com.jd.blockchain.ledger.ParticipantDataQuery; | import com.jd.blockchain.ledger.ParticipantDataQuery; | ||||
public interface LedgerAdminDataQuery { | public interface LedgerAdminDataQuery { | ||||
LedgerAdminInfo getAdminInfo(); | |||||
LedgerAdminSettings getAdminInfo(); | |||||
ParticipantDataQuery getParticipantDataset(); | ParticipantDataQuery getParticipantDataset(); | ||||
@@ -8,7 +8,7 @@ import com.jd.blockchain.binaryproto.DataContractRegistry; | |||||
import com.jd.blockchain.crypto.Crypto; | import com.jd.blockchain.crypto.Crypto; | ||||
import com.jd.blockchain.crypto.HashDigest; | import com.jd.blockchain.crypto.HashDigest; | ||||
import com.jd.blockchain.crypto.HashFunction; | import com.jd.blockchain.crypto.HashFunction; | ||||
import com.jd.blockchain.ledger.LedgerAdminInfo; | |||||
import com.jd.blockchain.ledger.LedgerAdminSettings; | |||||
import com.jd.blockchain.ledger.LedgerException; | import com.jd.blockchain.ledger.LedgerException; | ||||
import com.jd.blockchain.ledger.LedgerInitSetting; | import com.jd.blockchain.ledger.LedgerInitSetting; | ||||
import com.jd.blockchain.ledger.LedgerMetadata; | import com.jd.blockchain.ledger.LedgerMetadata; | ||||
@@ -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, LedgerAdminDataQuery, LedgerAdminInfo { | |||||
public class LedgerAdminDataset implements Transactional, LedgerAdminDataQuery, LedgerAdminSettings { | |||||
static { | static { | ||||
DataContractRegistry.register(LedgerMetadata.class); | DataContractRegistry.register(LedgerMetadata.class); | ||||
@@ -110,7 +110,7 @@ public class LedgerAdminDataset implements Transactional, LedgerAdminDataQuery, | |||||
} | } | ||||
@Override | @Override | ||||
public LedgerAdminInfo getAdminInfo() { | |||||
public LedgerAdminSettings getAdminInfo() { | |||||
return this; | return this; | ||||
} | } | ||||
@@ -8,6 +8,7 @@ import com.jd.blockchain.ledger.BlockchainIdentityData; | |||||
import com.jd.blockchain.ledger.BlockchainKeypair; | import com.jd.blockchain.ledger.BlockchainKeypair; | ||||
import com.jd.blockchain.ledger.DigitalSignature; | import com.jd.blockchain.ledger.DigitalSignature; | ||||
import com.jd.blockchain.ledger.LedgerAdminInfo; | import com.jd.blockchain.ledger.LedgerAdminInfo; | ||||
import com.jd.blockchain.ledger.LedgerAdminSettings; | |||||
import com.jd.blockchain.ledger.LedgerBlock; | import com.jd.blockchain.ledger.LedgerBlock; | ||||
import com.jd.blockchain.ledger.LedgerInitException; | import com.jd.blockchain.ledger.LedgerInitException; | ||||
import com.jd.blockchain.ledger.LedgerInitOperation; | import com.jd.blockchain.ledger.LedgerInitOperation; | ||||
@@ -254,6 +255,16 @@ public class LedgerInitializer { | |||||
public LedgerAdminInfo getAdminInfo(LedgerBlock block) { | public LedgerAdminInfo getAdminInfo(LedgerBlock block) { | ||||
return null; | return null; | ||||
} | } | ||||
@Override | |||||
public LedgerAdminSettings getAdminSettings() { | |||||
return null; | |||||
} | |||||
@Override | |||||
public LedgerAdminSettings getAdminSettings(LedgerBlock block) { | |||||
return null; | |||||
} | |||||
@Override | @Override | ||||
public LedgerBlock getBlock(HashDigest hash) { | public LedgerBlock getBlock(HashDigest hash) { | ||||
@@ -2,6 +2,7 @@ package com.jd.blockchain.ledger.core; | |||||
import com.jd.blockchain.crypto.HashDigest; | import com.jd.blockchain.crypto.HashDigest; | ||||
import com.jd.blockchain.ledger.LedgerAdminInfo; | import com.jd.blockchain.ledger.LedgerAdminInfo; | ||||
import com.jd.blockchain.ledger.LedgerAdminSettings; | |||||
import com.jd.blockchain.ledger.LedgerBlock; | import com.jd.blockchain.ledger.LedgerBlock; | ||||
public interface LedgerQuery { | public interface LedgerQuery { | ||||
@@ -53,6 +54,10 @@ public interface LedgerQuery { | |||||
LedgerAdminInfo getAdminInfo(); | LedgerAdminInfo getAdminInfo(); | ||||
LedgerAdminInfo getAdminInfo(LedgerBlock block); | LedgerAdminInfo getAdminInfo(LedgerBlock block); | ||||
LedgerAdminSettings getAdminSettings(); | |||||
LedgerAdminSettings getAdminSettings(LedgerBlock block); | |||||
LedgerBlock getBlock(HashDigest hash); | LedgerBlock getBlock(HashDigest hash); | ||||
@@ -7,6 +7,7 @@ import com.jd.blockchain.crypto.HashFunction; | |||||
import com.jd.blockchain.ledger.BlockBody; | import com.jd.blockchain.ledger.BlockBody; | ||||
import com.jd.blockchain.ledger.CryptoSetting; | import com.jd.blockchain.ledger.CryptoSetting; | ||||
import com.jd.blockchain.ledger.LedgerAdminInfo; | import com.jd.blockchain.ledger.LedgerAdminInfo; | ||||
import com.jd.blockchain.ledger.LedgerAdminSettings; | |||||
import com.jd.blockchain.ledger.LedgerBlock; | import com.jd.blockchain.ledger.LedgerBlock; | ||||
import com.jd.blockchain.ledger.LedgerDataSnapshot; | import com.jd.blockchain.ledger.LedgerDataSnapshot; | ||||
import com.jd.blockchain.ledger.LedgerInitSetting; | import com.jd.blockchain.ledger.LedgerInitSetting; | ||||
@@ -244,7 +245,7 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
@Override | @Override | ||||
public LedgerAdminInfo getAdminInfo() { | public LedgerAdminInfo getAdminInfo() { | ||||
return getAdminInfo(getLatestBlock()); | |||||
return getAdminSettings(getLatestBlock()); | |||||
} | } | ||||
private LedgerBlock deserialize(byte[] blockBytes) { | private LedgerBlock deserialize(byte[] blockBytes) { | ||||
@@ -265,7 +266,17 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
} | } | ||||
@Override | @Override | ||||
public LedgerAdminDataset getAdminInfo(LedgerBlock block) { | |||||
public LedgerAdminInfo getAdminInfo(LedgerBlock block) { | |||||
return getAdminSettings(block); | |||||
} | |||||
@Override | |||||
public LedgerAdminSettings getAdminSettings() { | |||||
return getAdminSettings(getLatestBlock()); | |||||
} | |||||
@Override | |||||
public LedgerAdminSettings getAdminSettings(LedgerBlock block) { | |||||
long height = getLatestBlockHeight(); | long height = getLatestBlockHeight(); | ||||
if (height == block.getHeight()) { | if (height == block.getHeight()) { | ||||
return latestState.getAdminDataset(); | return latestState.getAdminDataset(); | ||||
@@ -284,7 +295,7 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
if (height == block.getHeight()) { | if (height == block.getHeight()) { | ||||
return latestState.getUserAccountSet(); | return latestState.getUserAccountSet(); | ||||
} | } | ||||
LedgerAdminDataset adminAccount = getAdminInfo(block); | |||||
LedgerAdminSettings adminAccount = getAdminSettings(block); | |||||
return createUserAccountSet(block, adminAccount.getSettings().getCryptoSetting()); | return createUserAccountSet(block, adminAccount.getSettings().getCryptoSetting()); | ||||
} | } | ||||
@@ -300,7 +311,7 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
return latestState.getDataAccountSet(); | return latestState.getDataAccountSet(); | ||||
} | } | ||||
LedgerAdminDataset adminAccount = getAdminInfo(block); | |||||
LedgerAdminSettings adminAccount = getAdminSettings(block); | |||||
return createDataAccountSet(block, adminAccount.getSettings().getCryptoSetting()); | return createDataAccountSet(block, adminAccount.getSettings().getCryptoSetting()); | ||||
} | } | ||||
@@ -316,7 +327,7 @@ class LedgerRepositoryImpl implements LedgerRepository { | |||||
return latestState.getContractAccountSet(); | return latestState.getContractAccountSet(); | ||||
} | } | ||||
LedgerAdminDataset adminAccount = getAdminInfo(block); | |||||
LedgerAdminSettings adminAccount = getAdminSettings(block); | |||||
return createContractAccountSet(block, adminAccount.getSettings().getCryptoSetting()); | return createContractAccountSet(block, adminAccount.getSettings().getCryptoSetting()); | ||||
} | } | ||||
@@ -10,7 +10,6 @@ import static org.junit.Assert.assertTrue; | |||||
import java.util.Arrays; | import java.util.Arrays; | ||||
import java.util.Random; | import java.util.Random; | ||||
import com.jd.blockchain.ledger.*; | |||||
import org.junit.Test; | import org.junit.Test; | ||||
import com.jd.blockchain.crypto.AddressEncoding; | import com.jd.blockchain.crypto.AddressEncoding; | ||||
@@ -20,6 +19,21 @@ 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.BlockchainKeyGenerator; | |||||
import com.jd.blockchain.ledger.BlockchainKeypair; | |||||
import com.jd.blockchain.ledger.LedgerAdminInfo; | |||||
import com.jd.blockchain.ledger.LedgerAdminSettings; | |||||
import com.jd.blockchain.ledger.LedgerMetadata_V2; | |||||
import com.jd.blockchain.ledger.LedgerPermission; | |||||
import com.jd.blockchain.ledger.LedgerSettings; | |||||
import com.jd.blockchain.ledger.ParticipantNode; | |||||
import com.jd.blockchain.ledger.ParticipantNodeState; | |||||
import com.jd.blockchain.ledger.RolePrivilegeSettings; | |||||
import com.jd.blockchain.ledger.RolePrivileges; | |||||
import com.jd.blockchain.ledger.RolesPolicy; | |||||
import com.jd.blockchain.ledger.TransactionPermission; | |||||
import com.jd.blockchain.ledger.UserRoles; | |||||
import com.jd.blockchain.ledger.UserRolesSettings; | |||||
import com.jd.blockchain.ledger.core.CryptoConfig; | import com.jd.blockchain.ledger.core.CryptoConfig; | ||||
import com.jd.blockchain.ledger.core.LedgerAdminDataset; | import com.jd.blockchain.ledger.core.LedgerAdminDataset; | ||||
import com.jd.blockchain.ledger.core.LedgerConfiguration; | import com.jd.blockchain.ledger.core.LedgerConfiguration; | ||||
@@ -213,7 +227,7 @@ public class LedgerAdminDatasetTest { | |||||
actualLedgerSettings.getCryptoSetting().getHashAlgorithm()); | actualLedgerSettings.getCryptoSetting().getHashAlgorithm()); | ||||
} | } | ||||
private void verifyRealoadingRoleAuthorizations(LedgerAdminInfo actualAccount, | |||||
private void verifyRealoadingRoleAuthorizations(LedgerAdminSettings actualAccount, | |||||
RolePrivilegeSettings expRolePrivilegeSettings, UserRolesSettings expUserRoleSettings) { | RolePrivilegeSettings expRolePrivilegeSettings, UserRolesSettings expUserRoleSettings) { | ||||
// 验证基本信息; | // 验证基本信息; | ||||
RolePrivilegeSettings actualRolePrivileges = actualAccount.getRolePrivileges(); | RolePrivilegeSettings actualRolePrivileges = actualAccount.getRolePrivileges(); | ||||
@@ -1,17 +1,23 @@ | |||||
package com.jd.blockchain.ledger; | package com.jd.blockchain.ledger; | ||||
import com.jd.blockchain.binaryproto.DataContract; | |||||
import com.jd.blockchain.binaryproto.DataField; | |||||
import com.jd.blockchain.binaryproto.PrimitiveType; | |||||
import com.jd.blockchain.consts.DataCodes; | |||||
@DataContract(code=DataCodes.LEDGER_ADMIN_INFO) | |||||
public interface LedgerAdminInfo { | public interface LedgerAdminInfo { | ||||
@DataField(order=1, refContract = true) | |||||
LedgerMetadata_V2 getMetadata(); | LedgerMetadata_V2 getMetadata(); | ||||
@DataField(order=2, refContract = true) | |||||
LedgerSettings getSettings(); | LedgerSettings getSettings(); | ||||
long getParticipantCount(); | |||||
@DataField(order=3, refContract = true, list = true) | |||||
ParticipantNode[] getParticipants(); | ParticipantNode[] getParticipants(); | ||||
UserRolesSettings getUserRoles(); | |||||
RolePrivilegeSettings getRolePrivileges(); | |||||
@DataField(order=4, primitiveType = PrimitiveType.INT64) | |||||
long getParticipantCount(); | |||||
} | } |
@@ -0,0 +1,8 @@ | |||||
package com.jd.blockchain.ledger; | |||||
public interface LedgerAdminSettings extends LedgerAdminInfo { | |||||
UserRolesSettings getUserRoles(); | |||||
RolePrivilegeSettings getRolePrivileges(); | |||||
} |
@@ -192,7 +192,7 @@ public class RolesAuthorizationTest { | |||||
if (roles == null) { | if (roles == null) { | ||||
roles = new String[0]; | roles = new String[0]; | ||||
} | } | ||||
UserRoles userRoles = ledger.getAdminInfo().getUserRoles().getUserRoles(address); | |||||
UserRoles userRoles = ledger.getAdminSettings().getUserRoles().getUserRoles(address); | |||||
assertNotNull(userRoles); | assertNotNull(userRoles); | ||||
assertEquals(policy, userRoles.getPolicy()); | assertEquals(policy, userRoles.getPolicy()); | ||||
@@ -206,7 +206,7 @@ public class RolesAuthorizationTest { | |||||
private void assertRolePermissions(LedgerQuery ledger, String roleName, LedgerPermission[] ledgerPermissions, | private void assertRolePermissions(LedgerQuery ledger, String roleName, LedgerPermission[] ledgerPermissions, | ||||
TransactionPermission[] txPermissions) { | TransactionPermission[] txPermissions) { | ||||
RolePrivilegeSettings roles = ledger.getAdminInfo().getRolePrivileges(); | |||||
RolePrivilegeSettings roles = ledger.getAdminSettings().getRolePrivileges(); | |||||
assertTrue(roles.contains(roleName)); | assertTrue(roles.contains(roleName)); | ||||
RolePrivileges privileges = roles.getRolePrivilege(roleName); | RolePrivileges privileges = roles.getRolePrivilege(roleName); | ||||
assertEquals(ledgerPermissions.length, privileges.getLedgerPrivilege().getPermissionCount()); | assertEquals(ledgerPermissions.length, privileges.getLedgerPrivilege().getPermissionCount()); | ||||