Skip to content

Commit

Permalink
add oracle address variable for accurate price
Browse files Browse the repository at this point in the history
- Add constants and variable for oracleAddress and `oraclePerDiff`
- Add setterGetter for OracleAddress
- Add Setter and getter for slippage percentage for `oraclePerDiff`
- Organize imports
- Update values on constructor
- Add tests for swap with added values
  • Loading branch information
sdpisreddevil committed Aug 1, 2023
1 parent 0225e2a commit 9428707
Show file tree
Hide file tree
Showing 5 changed files with 117 additions and 64 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.eclipsesource.json.Json;
import com.eclipsesource.json.JsonObject;
import community.icon.cps.score.lib.interfaces.CPFTreasuryInterface;
import score.*;
import score.annotation.EventLog;
import score.annotation.External;
Expand All @@ -16,7 +17,6 @@
import static community.icon.cps.score.cpftreasury.Constants.*;
import static community.icon.cps.score.cpftreasury.Validations.validateAdmins;
import static community.icon.cps.score.cpftreasury.Validations.validateCpsScore;
import community.icon.cps.score.lib.interfaces.CPFTreasuryInterface;

public class CPFTreasury extends SetterGetter implements CPFTreasuryInterface {
public static final VarDB<Address> cpsTreasuryScore = Context.newVarDB(CPS_TREASURY_SCORE, Address.class);
Expand All @@ -25,18 +25,28 @@ public class CPFTreasury extends SetterGetter implements CPFTreasuryInterface {
public static final VarDB<Address> dexScore = Context.newVarDB(DEX_SCORE, Address.class);
public static final VarDB<Address> sICXScore = Context.newVarDB(SICX_SCORE, Address.class);
public static final VarDB<Address> routerScore = Context.newVarDB(ROUTER_SCORE, Address.class);
public static final VarDB<Address> oracleAddress = Context.newVarDB(ORACLE_ADDRESS, Address.class);
private final ArrayDB<String> proposalsKeys = Context.newArrayDB(PROPOSALS_KEYS, String.class);
private final DictDB<String, BigInteger> proposalBudgets = Context.newDictDB(PROPOSAL_BUDGETS, BigInteger.class);
private final VarDB<BigInteger> treasuryFund = Context.newVarDB(TREASURY_FUND, BigInteger.class);
private final VarDB<BigInteger> treasuryFundbnUSD = Context.newVarDB(TREASURY_FUND_BNUSD, BigInteger.class);

private final VarDB<Integer> swapState = Context.newVarDB(SWAP_STATE, Integer.class);
private final VarDB<Integer> swapCount = Context.newVarDB(SWAP_COUNT, Integer.class);
private final VarDB<Integer> oraclePerDiff = Context.newVarDB(ORACLE_PERCENTAGE_DIFF, Integer.class);

private final VarDB<Boolean> swapFlag = Context.newVarDB(SWAP_FLAG, Boolean.class);

public CPFTreasury() {
swapFlag.set(true);
if (treasuryFund.get() == null) {
treasuryFund.set(BigInteger.valueOf(1000000).multiply(EXA));
swapCount.set(SwapReset);
swapState.set(SwapReset);
swapFlag.set(false);
}
oraclePerDiff.set(5);
oracleAddress.set(Address.fromString("cxe647e0af68a4661566f5e9861ad4ac854de808a2"));

}

private boolean proposalExists(String ipfsKey) {
Expand Down Expand Up @@ -217,6 +227,11 @@ private void burnExtraFund() {
}
}

@External(readonly = true)
public int getPerDiff() {
return oraclePerDiff.getOrDefault(0);
}

private void swapTokens(Address _from, Address _to, BigInteger _amount) {
JsonObject swapData = new JsonObject();
swapData.add("method", "_swap");
Expand Down Expand Up @@ -317,6 +332,12 @@ public void reset_swap_state() {
swapCount.set(SwapReset);
}

@External
public void setOraclePercentageDifference(int _value) {
validateAdmins();
oraclePerDiff.set(_value);
}

@Override
@External(readonly = true)
public Map<String, Object> get_proposal_details(@Optional int _start_index, @Optional int _end_index) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@ public class Constants {
public static final String DEX_SCORE = "dex_score";
public static final String SICX_SCORE = "sicx_score";
public static final String ROUTER_SCORE = "router_score";
public static final String ORACLE_ADDRESS = "oracle_address";

public static final String SWAP_STATE = "swap_state";
public static final String SWAP_COUNT = "swap_count";
public static final String ORACLE_PERCENTAGE_DIFF = "oracle_percentage_diff";
public static final String SWAP_FLAG = "swap_flag";
public static final Address SYSTEM_ADDRESS = Address.fromString("cx0000000000000000000000000000000000000000");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,21 @@ public void setRouterScore(Address _score) {
public Address getRouterScore() {
return CPFTreasury.routerScore.get();
}

@External
public void setOracleAddress(Address _score) {
Validations.validateAdminScore(_score);
CPFTreasury.oracleAddress.set(_score);
}

/**
* Returns the router score address
*
* @return router score address
*/
@External(readonly = true)
public Address getOracleAddress() {
return CPFTreasury.oracleAddress.get();
}

}
Loading

0 comments on commit 9428707

Please sign in to comment.