Skip to content

Commit

Permalink
Merge pull request #158 from cardano-foundation/issue_147
Browse files Browse the repository at this point in the history
Enable governance store, update conway genesis files and add new conway params
  • Loading branch information
Sotatek-HuyLe3a authored Mar 28, 2024
2 parents 0d6d20f + 3f2333d commit ccfcc9c
Show file tree
Hide file tree
Showing 16 changed files with 707 additions and 35 deletions.
1 change: 1 addition & 0 deletions application/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ dependencies {
implementation project(':components:scheduler')

implementation(libs.yaci.store.starter)
implementation(libs.yaci.store.governance.starter)

implementation(libs.cardano.client.lib)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@ public class GenesisData {
EpochParam shelley;
EpochParam alonzo;
EpochParam babbage;
EpochParam conway;
Timestamp startTime;
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ public interface EpochParamService {

void setDefBabbageEpochParam(EpochParam defBabbageEpochParam);

void setDefConwayEpochParam(EpochParam defConwayEpochParam);

/**
* Handle epoch params
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public class EpochParamServiceImpl implements EpochParamService {
EpochParam defShelleyEpochParam;
EpochParam defAlonzoEpochParam;
EpochParam defBabbageEpochParam;
EpochParam defConwayEpochParam;

public EpochParamServiceImpl(BlockRepository blockRepository, ParamProposalRepository paramProposalRepository,
EpochParamRepository epochParamRepository, EpochRepository epochRepository,
Expand Down Expand Up @@ -70,6 +71,11 @@ public void setDefBabbageEpochParam(EpochParam defBabbageEpochParam) {
this.defBabbageEpochParam = defBabbageEpochParam;
}

@Override
public void setDefConwayEpochParam(EpochParam defConwayEpochParam) {
this.defConwayEpochParam = defConwayEpochParam;
}

@Override
public void handleEpochParams() {
Integer lastEpochParam = epochParamRepository.findLastEpochParam()
Expand Down Expand Up @@ -126,6 +132,10 @@ void handleEpochParam(int epochNo) {
epochParamMapper.updateByEpochParam(curEpochParam, defBabbageEpochParam);
}

if (curEra == EraType.CONWAY && prevEra == EraType.BABBAGE) {
epochParamMapper.updateByEpochParam(curEpochParam, defConwayEpochParam);
}

List<ParamProposal> prevParamProposals = paramProposalRepository
.findParamProposalsByEpochNo(epochNo - 1);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,57 @@ private List<ParamProposal> handleParamProposal(AggregatedTx aggregatedTx, Tx tx
var collateralPercent = protocolParamUpdate.getCollateralPercent();
var maxCollateralInputs = protocolParamUpdate.getMaxCollateralInputs();

// conway era params
var poolVotingThresholds = protocolParamUpdate.getPoolVotingThresholds();

Double pvtMotionNoConfidence = null;
Double pvtCommitteeNormal = null;
Double pvtCommitteeNoConfidence = null;
Double pvtHardForkInitiation = null;
Double pvtPPSecurityGroup = null;

if (poolVotingThresholds != null) {
pvtMotionNoConfidence = toDouble(poolVotingThresholds.getPvtMotionNoConfidence());
pvtCommitteeNormal = toDouble(poolVotingThresholds.getPvtCommitteeNormal());
pvtCommitteeNoConfidence = toDouble(poolVotingThresholds.getPvtCommitteeNoConfidence());
pvtHardForkInitiation = toDouble(poolVotingThresholds.getPvtHardForkInitiation());
pvtPPSecurityGroup = toDouble(poolVotingThresholds.getPvtPPSecurityGroup());
}

var drepVotingThresholds = protocolParamUpdate.getDrepVotingThresholds();

Double dvtMotionNoConfidence = null;
Double dvtCommitteeNormal = null;
Double dvtCommitteeNoConfidence = null;
Double dvtUpdateToConstitution = null;
Double dvtHardForkInitiation = null;
Double dvtPPNetworkGroup = null;
Double dvtPPEconomicGroup = null;
Double dvtPPTechnicalGroup = null;
Double dvtPPGovGroup = null;
Double dvtTreasuryWithdrawal = null;

if (drepVotingThresholds != null) {
dvtMotionNoConfidence = toDouble(drepVotingThresholds.getDvtMotionNoConfidence());
dvtCommitteeNormal = toDouble(drepVotingThresholds.getDvtCommitteeNormal());
dvtCommitteeNoConfidence = toDouble(drepVotingThresholds.getDvtCommitteeNoConfidence());
dvtUpdateToConstitution = toDouble(drepVotingThresholds.getDvtUpdateToConstitution());
dvtHardForkInitiation = toDouble(drepVotingThresholds.getDvtHardForkInitiation());
dvtPPNetworkGroup = toDouble(drepVotingThresholds.getDvtPPNetworkGroup());
dvtPPEconomicGroup = toDouble(drepVotingThresholds.getDvtPPEconomicGroup());
dvtPPTechnicalGroup = toDouble(drepVotingThresholds.getDvtPPTechnicalGroup());
dvtPPGovGroup = toDouble(drepVotingThresholds.getDvtPPGovGroup());
dvtTreasuryWithdrawal = toDouble(drepVotingThresholds.getDvtTreasuryWithdrawal());
}

var committeeMinSize = toBigInteger(protocolParamUpdate.getCommitteeMinSize());
var committeeMaxTermLength = toBigInteger(protocolParamUpdate.getCommitteeMaxTermLength());
var govActionLifetime = toBigInteger(protocolParamUpdate.getGovActionLifetime());
var govActionDeposit = protocolParamUpdate.getGovActionDeposit();
var drepDeposit = protocolParamUpdate.getDrepDeposit();
var drepActivity = toBigInteger(protocolParamUpdate.getDrepActivity());
var minFeeRefScriptCostPerByte = toBigInteger(protocolParamUpdate.getMinFeeRefScriptCostPerByte());

return ParamProposal.builder()
.key(entrySet.getKey())
.epochNo(epochNo)
Expand Down Expand Up @@ -139,6 +190,29 @@ private List<ParamProposal> handleParamProposal(AggregatedTx aggregatedTx, Tx tx
.collateralPercent(collateralPercent)
.maxCollateralInputs(maxCollateralInputs)
.registeredTx(tx)
// conway era params
.pvtMotionNoConfidence(pvtMotionNoConfidence)
.pvtCommitteeNormal(pvtCommitteeNormal)
.pvtCommitteeNoConfidence(pvtCommitteeNoConfidence)
.pvtHardForkInitiation(pvtHardForkInitiation)
.pvtPPSecurityGroup(pvtPPSecurityGroup)
.dvtMotionNoConfidence(dvtMotionNoConfidence)
.dvtCommitteeNormal(dvtCommitteeNormal)
.dvtCommitteeNoConfidence(dvtCommitteeNoConfidence)
.dvtUpdateToConstitution(dvtUpdateToConstitution)
.dvtHardForkInitiation(dvtHardForkInitiation)
.dvtPPNetworkGroup(dvtPPNetworkGroup)
.dvtPPEconomicGroup(dvtPPEconomicGroup)
.dvtPPTechnicalGroup(dvtPPTechnicalGroup)
.dvtPPGovGroup(dvtPPGovGroup)
.dvtTreasuryWithdrawal(dvtTreasuryWithdrawal)
.committeeMinSize(committeeMinSize)
.committeeMaxTermLength(committeeMaxTermLength)
.govActionLifetime(govActionLifetime)
.govActionDeposit(govActionDeposit)
.drepDeposit(drepDeposit)
.drepActivity(drepActivity)
.minFeeRefScriptCostPerByte(minFeeRefScriptCostPerByte)
.build();
}).collect(Collectors.toList());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,40 @@ public class GenesisDataServiceImpl implements GenesisDataService {
public static final String UPDATE_QUORUM = "updateQuorum";

public static final String DELEGATION_KEYS = "genDelegs";
private final static String POOL_VOTING_THRESHOLDS = "poolVotingThresholds";
private final static String PVT_COMMITTEE_NORMAL = "committeeNormal";
private final static String PVT_COMMITTEE_NO_CONFIDENCE = "committeeNoConfidence";
private final static String PVT_HARD_FORK_INITIATION = "hardForkInitiation";
private final static String PVT_MOTION_NO_CONFIDENCE = "motionNoConfidence";
private final static String PVT_PP_SECURITY_GROUP = "ppSecurityGroup";
private final static String D_REP_VOTING_THRESHOLDS = "dRepVotingThresholds";
private final static String DVT_MOTION_NO_CONFIDENCE = "motionNoConfidence";
private final static String DVT_COMMITTEE_NORMAL = "committeeNormal";
private final static String DVT_COMMITTEE_NO_CONFIDENCE = "committeeNoConfidence";
private final static String DVT_UPDATE_TO_CONSTITUTION = "updateToConstitution";
private final static String DVT_HARD_FORK_INITIATION = "hardForkInitiation";
private final static String DVT_PP_NETWORK_GROUP = "ppNetworkGroup";
private final static String DVT_PP_ECONOMIC_GROUP = "ppEconomicGroup";
private final static String DVT_PP_TECHNICAL_GROUP = "ppTechnicalGroup";
private final static String DVT_PP_GOV_GROUP = "ppGovGroup";
private final static String DVT_TREASURY_WITHDRAWAL = "treasuryWithdrawal";

private final static String COMMITTEE_MIN_SIZE = "committeeMinSize";
private final static String COMMITTEE_MAX_TERM_LENGTH = "committeeMaxTermLength";
private final static String GOV_ACTION_LIFETIME = "govActionLifetime";
private final static String GOV_ACTION_DEPOSIT = "govActionDeposit";
private final static String D_REP_DEPOSIT = "dRepDeposit";
private final static String D_REP_ACTIVITY = "dRepActivity";

private final static String CONSTITUTION = "constitution";
private final static String ANCHOR = "anchor";
private final static String URL = "url";
private final static String DATA_HASH = "dataHash";

private final static String COMMITTEE = "committee";
private final static String MEMBERS = "members";
private final static String QUORUM = "quorum";


@Value("${genesis.byron}")
String genesisByron;
Expand Down Expand Up @@ -128,13 +162,16 @@ void init(){
fetchShelleyGenesis(genesisData);
fetchAlonzoGenesis(genesisData);
setupBabbageGenesis(genesisData);
fetchConwayGenesis(genesisData);

log.info("setup shelley genesis");
epochParamService.setDefShelleyEpochParam(genesisData.getShelley());
log.info("setup alonzo genesis");
epochParamService.setDefAlonzoEpochParam(genesisData.getAlonzo());
log.info("setup babbage genesis");
epochParamService.setDefBabbageEpochParam(genesisData.getBabbage());
log.info("setup conway genesis");
epochParamService.setDefConwayEpochParam(genesisData.getConway());
log.info("setup genesis cost model");
costModelService.setGenesisCostModel(genesisData.getCostModel());
}
Expand Down Expand Up @@ -330,6 +367,49 @@ public void setupBabbageGenesis(GenesisData genesisData) {
genesisData.setBabbage(genesisShelleyProtocols);
}

public void fetchConwayGenesis(GenesisData genesisData) {
log.info("Fetch block from url {}", genesisConway);
String genesisConwayJson = genesisFetching.getContent(genesisConway);

try {
Map<String, Object> genesisConwayJsonMap = objectMapper.readValue(genesisConwayJson,
new TypeReference<>() {
});
final var poolVotingThresholds = (Map<String, Object>) genesisConwayJsonMap.get(POOL_VOTING_THRESHOLDS);
final var dRepVotingThresholds = (Map<String, Object>) genesisConwayJsonMap.get(D_REP_VOTING_THRESHOLDS);

EpochParam genesisShelleyProtocols = EpochParam.builder()
.pvtCommitteeNormal(convertObjectToBigDecimal(poolVotingThresholds.get(PVT_COMMITTEE_NORMAL)).doubleValue())
.pvtCommitteeNoConfidence(convertObjectToBigDecimal(poolVotingThresholds.get(PVT_COMMITTEE_NO_CONFIDENCE)).doubleValue())
.pvtHardForkInitiation(convertObjectToBigDecimal(poolVotingThresholds.get(PVT_HARD_FORK_INITIATION)).doubleValue())
.pvtMotionNoConfidence(convertObjectToBigDecimal(poolVotingThresholds.get(PVT_MOTION_NO_CONFIDENCE)).doubleValue())
.pvtPPSecurityGroup(convertObjectToBigDecimal(poolVotingThresholds.get(PVT_PP_SECURITY_GROUP)).doubleValue())
.dvtMotionNoConfidence(convertObjectToBigDecimal(dRepVotingThresholds.get(DVT_MOTION_NO_CONFIDENCE)).doubleValue())
.dvtCommitteeNormal(convertObjectToBigDecimal(dRepVotingThresholds.get(DVT_COMMITTEE_NORMAL)).doubleValue())
.dvtCommitteeNoConfidence(convertObjectToBigDecimal(dRepVotingThresholds.get(DVT_COMMITTEE_NO_CONFIDENCE)).doubleValue())
.dvtUpdateToConstitution(convertObjectToBigDecimal(dRepVotingThresholds.get(DVT_UPDATE_TO_CONSTITUTION)).doubleValue())
.dvtHardForkInitiation(convertObjectToBigDecimal(dRepVotingThresholds.get(DVT_HARD_FORK_INITIATION)).doubleValue())
.dvtPPNetworkGroup(convertObjectToBigDecimal(dRepVotingThresholds.get(DVT_PP_NETWORK_GROUP)).doubleValue())
.dvtPPEconomicGroup(convertObjectToBigDecimal(dRepVotingThresholds.get(DVT_PP_ECONOMIC_GROUP)).doubleValue())
.dvtPPTechnicalGroup(convertObjectToBigDecimal(dRepVotingThresholds.get(DVT_PP_TECHNICAL_GROUP)).doubleValue())
.dvtPPGovGroup(convertObjectToBigDecimal(dRepVotingThresholds.get(DVT_PP_GOV_GROUP)).doubleValue())
.dvtTreasuryWithdrawal(convertObjectToBigDecimal(dRepVotingThresholds.get(DVT_TREASURY_WITHDRAWAL)).doubleValue())
.committeeMinSize(convertObjecToBigInteger(genesisConwayJsonMap.get(COMMITTEE_MIN_SIZE)))
.committeeMaxTermLength(convertObjecToBigInteger(genesisConwayJsonMap.get(COMMITTEE_MAX_TERM_LENGTH)))
.govActionLifetime(convertObjecToBigInteger(genesisConwayJsonMap.get(GOV_ACTION_LIFETIME)))
.govActionDeposit(convertObjecToBigInteger(genesisConwayJsonMap.get(GOV_ACTION_DEPOSIT)))
.drepDeposit(convertObjecToBigInteger(genesisConwayJsonMap.get(D_REP_DEPOSIT)))
.drepActivity(convertObjecToBigInteger(genesisConwayJsonMap.get(D_REP_ACTIVITY)))
.build();

genesisData.setConway(genesisShelleyProtocols);
} catch (Exception e) {
log.error("Genesis data at {} can't parse from json to java object", genesisConway);
log.error("{} value \n {}", genesisAlonzo, genesisConwayJson);
log.error("{}", e.getMessage());
System.exit(0);
}
}
/**
* Fetching data from alonzo-genesis.json link extracting and mapping protocol parameters in
* alonzo era
Expand Down Expand Up @@ -443,7 +523,6 @@ public void fetchShelleyGenesis(GenesisData genesisData) {
System.exit(0);
}
}

/**
* Read genesis hash from config.json
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
ALTER TABLE epoch_param
ADD COLUMN pvt_motion_no_confidence double precision,
ADD COLUMN pvt_commit_normal double precision,
ADD COLUMN pvt_committee_no_confidence double precision,
ADD COLUMN pvt_hard_fork_initiation double precision,
ADD COLUMN pvt_p_p_security_group double precision,
ADD COLUMN pvt_p_p_technical_group double precision,
ADD COLUMN pvt_p_p_gov_group double precision,
ADD COLUMN pvt_treasury_withdrawal double precision,
ADD COLUMN dvt_motion_no_confidence double precision,
ADD COLUMN dvt_commitee_normal double precision,
ADD COLUMN dvt_committee_no_confidence double precision,
ADD COLUMN dvt_update_to_constitution double precision,
ADD COLUMN dvt_hard_fork_initiation double precision,
ADD COLUMN dvt_p_p_network_group double precision,
ADD COLUMN dvt_p_p_economic_group double precision,
ADD COLUMN committee_min_size numeric(20, 0),
ADD COLUMN committee_max_term_length numeric(20, 0),
ADD COLUMN gov_action_lifetime numeric(20, 0),
ADD COLUMN gov_action_deposit numeric(20, 0),
ADD COLUMN drep_deposit numeric(20, 0),
ADD COLUMN drep_activity numeric(20, 0),
ADD COLUMN min_fee_ref_script_cost_per_byte numeric(20, 0);

ALTER TABLE param_proposal
ADD COLUMN pvt_motion_no_confidence double precision,
ADD COLUMN pvt_commit_normal double precision,
ADD COLUMN pvt_committee_no_confidence double precision,
ADD COLUMN pvt_hard_fork_initiation double precision,
ADD COLUMN pvt_p_p_security_group double precision,
ADD COLUMN pvt_p_p_technical_group double precision,
ADD COLUMN pvt_p_p_gov_group double precision,
ADD COLUMN pvt_treasury_withdrawal double precision,
ADD COLUMN dvt_motion_no_confidence double precision,
ADD COLUMN dvt_commitee_normal double precision,
ADD COLUMN dvt_committee_no_confidence double precision,
ADD COLUMN dvt_update_to_constitution double precision,
ADD COLUMN dvt_hard_fork_initiation double precision,
ADD COLUMN dvt_p_p_network_group double precision,
ADD COLUMN dvt_p_p_economic_group double precision,
ADD COLUMN committee_min_size numeric(20, 0),
ADD COLUMN committee_max_term_length numeric(20, 0),
ADD COLUMN gov_action_lifetime numeric(20, 0),
ADD COLUMN gov_action_deposit numeric(20, 0),
ADD COLUMN drep_deposit numeric(20, 0),
ADD COLUMN drep_activity numeric(20, 0),
ADD COLUMN min_fee_ref_script_cost_per_byte numeric(20, 0);
Original file line number Diff line number Diff line change
@@ -1,3 +1,38 @@
{
"genDelegs": {}
}
"poolVotingThresholds": {
"committeeNormal": 0.51,
"committeeNoConfidence": 0.51,
"hardForkInitiation": 0.51,
"motionNoConfidence": 0.51,
"ppSecurityGroup": 0.51
},
"dRepVotingThresholds": {
"motionNoConfidence": 0.51,
"committeeNormal": 0.51,
"committeeNoConfidence": 0.51,
"updateToConstitution": 0.51,
"hardForkInitiation": 0.51,
"ppNetworkGroup": 0.51,
"ppEconomicGroup": 0.51,
"ppTechnicalGroup": 0.51,
"ppGovGroup": 0.51,
"treasuryWithdrawal": 0.51
},
"committeeMinSize": 0,
"committeeMaxTermLength": 200,
"govActionLifetime": 10,
"govActionDeposit": 1000000000,
"dRepDeposit": 2000000,
"dRepActivity": 20,
"constitution": {
"anchor": {
"url": "",
"dataHash": "0000000000000000000000000000000000000000000000000000000000000000"
}
},
"committee": {
"members": {
},
"quorum": 0
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,38 @@
{
"genDelegs": {}
"poolVotingThresholds": {
"committeeNormal": 0.51,
"committeeNoConfidence": 0.51,
"hardForkInitiation": 0.51,
"motionNoConfidence": 0.51,
"ppSecurityGroup": 0.51
},
"dRepVotingThresholds": {
"motionNoConfidence": 0.51,
"committeeNormal": 0.51,
"committeeNoConfidence": 0.51,
"updateToConstitution": 0.51,
"hardForkInitiation": 0.51,
"ppNetworkGroup": 0.51,
"ppEconomicGroup": 0.51,
"ppTechnicalGroup": 0.51,
"ppGovGroup": 0.51,
"treasuryWithdrawal": 0.51
},
"committeeMinSize": 0,
"committeeMaxTermLength": 200,
"govActionLifetime": 10,
"govActionDeposit": 1000000000,
"dRepDeposit": 2000000,
"dRepActivity": 20,
"constitution": {
"anchor": {
"url": "",
"dataHash": "0000000000000000000000000000000000000000000000000000000000000000"
}
},
"committee": {
"members": {
},
"quorum": 0
}
}
Loading

0 comments on commit ccfcc9c

Please sign in to comment.