Skip to content

Commit 5ce7d1b

Browse files
Merge branch 'develop' into longvalue_exact
2 parents 8de86f6 + a7af7bf commit 5ce7d1b

File tree

9 files changed

+87
-11
lines changed

9 files changed

+87
-11
lines changed

src/main/java/org/tron/common/runtime/Runtime.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -333,8 +333,11 @@ private void create()
333333
// thisTxENERGYLimitInUs = Constant.ENERGY_LIMIT_IN_ONE_TX_OF_SMART_CONTRACT;
334334
// }
335335

336-
long thisTxCPULimitInUs =
337-
(long) (Constant.MAX_CPU_TIME_OF_ONE_TX * getThisTxCPULimitInUsRatio());
336+
long MAX_CPU_TIME_OF_ONE_TX = deposit.getDbManager().getDynamicPropertiesStore()
337+
.getMaxCpuTimeOfOneTX() * 1000;
338+
339+
long thisTxCPULimitInUs = (long) (MAX_CPU_TIME_OF_ONE_TX * getThisTxCPULimitInUsRatio());
340+
338341
long vmStartInUs = System.nanoTime() / 1000;
339342
long vmShouldEndInUs = vmStartInUs + thisTxCPULimitInUs;
340343

@@ -401,8 +404,10 @@ private void call()
401404
this.deposit.getContract(contractAddress).getInstance()
402405
.getOriginAddress().toByteArray());
403406

407+
long MAX_CPU_TIME_OF_ONE_TX = deposit.getDbManager().getDynamicPropertiesStore()
408+
.getMaxCpuTimeOfOneTX() * 1000;
404409
long thisTxCPULimitInUs =
405-
(long) (Constant.MAX_CPU_TIME_OF_ONE_TX * getThisTxCPULimitInUsRatio());
410+
(long) (MAX_CPU_TIME_OF_ONE_TX * getThisTxCPULimitInUsRatio());
406411

407412
long vmStartInUs = System.nanoTime() / 1000;
408413
long vmShouldEndInUs = vmStartInUs + thisTxCPULimitInUs;

src/main/java/org/tron/common/runtime/vm/program/Storage.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public void put(DataWord key, DataWord value) {
4848
if (row == null || row.getInstance() == null) {
4949
row = new StorageRowCapsule(rowKey, value.getData());
5050
} else {
51+
row.setValue(value);
5152
beforeUseSize += row.getInstance().length;
5253
}
5354
rowCache.put(key, row);

src/main/java/org/tron/common/runtime/vm/program/invoke/ProgramInvokeFactoryImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public ProgramInvoke createProgramInvoke(InternalTransaction.TrxType trxType,
7474
if (null != block) {
7575
lastHash = block.getBlockHeader().getRawDataOrBuilder().getParentHash().toByteArray();
7676
coinbase = block.getBlockHeader().getRawDataOrBuilder().getWitnessAddress().toByteArray();
77-
timestamp = block.getBlockHeader().getRawDataOrBuilder().getTimestamp();
77+
timestamp = block.getBlockHeader().getRawDataOrBuilder().getTimestamp() / 1000;
7878
number = block.getBlockHeader().getRawDataOrBuilder().getNumber();
7979
}
8080
break;
@@ -130,7 +130,7 @@ public ProgramInvoke createProgramInvoke(InternalTransaction.TrxType trxType,
130130
/*** COINBASE op ***/
131131
coinbase = block.getBlockHeader().getRawDataOrBuilder().getWitnessAddress().toByteArray();
132132
/*** TIMESTAMP op ***/
133-
timestamp = block.getBlockHeader().getRawDataOrBuilder().getTimestamp();
133+
timestamp = block.getBlockHeader().getRawDataOrBuilder().getTimestamp() / 1000;
134134
/*** NUMBER op ***/
135135
number = block.getBlockHeader().getRawDataOrBuilder().getNumber();
136136
}

src/main/java/org/tron/core/Wallet.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,30 @@ public Protocol.ChainParameters getChainParameters() {
580580
dynamicPropertiesStore.getAllowCreationOfContracts())
581581
.build());
582582

583+
builder.addChainParameter(builder1
584+
.setKey(ChainParameters.REMOVE_THE_POWER_OF_THE_GR.name())
585+
.setValue(
586+
dynamicPropertiesStore.getRemoveThePowerOfTheGr())
587+
.build());
588+
589+
builder.addChainParameter(builder1
590+
.setKey(ChainParameters.ENERGY_FEE.name())
591+
.setValue(
592+
dynamicPropertiesStore.getEnergyFee())
593+
.build());
594+
595+
builder.addChainParameter(builder1
596+
.setKey(ChainParameters.EXCHANGE_CREATE_FEE.name())
597+
.setValue(
598+
dynamicPropertiesStore.getExchangeCreateFee())
599+
.build());
600+
601+
builder.addChainParameter(builder1
602+
.setKey(ChainParameters.MAX_CPU_TIME_OF_ONE_TX.name())
603+
.setValue(
604+
dynamicPropertiesStore.getMaxCpuTimeOfOneTX())
605+
.build());
606+
583607
return builder.build();
584608
}
585609

src/main/java/org/tron/core/actuator/ProposalCreateActuator.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,13 +127,14 @@ private void validateValue(Map.Entry<Long, Long> entry) throws ContractValidateE
127127
throw new ContractValidateException(
128128
"Bad chain parameter value,valid range is [0,100_000_000_000_000_000L]");
129129
}
130-
return;
130+
break;
131131
}
132132
case (9):{
133133
if(entry.getValue() != 1){
134134
throw new ContractValidateException(
135135
"This value[ALLOW_CREATION_OF_CONTRACTS] is only allowed to be 1");
136136
}
137+
break;
137138
}
138139
case (10):{
139140
if(dbManager.getDynamicPropertiesStore().getRemoveThePowerOfTheGr() == -1){
@@ -145,7 +146,14 @@ private void validateValue(Map.Entry<Long, Long> entry) throws ContractValidateE
145146
throw new ContractValidateException(
146147
"This value[REMOVE_THE_POWER_OF_THE_GR] is only allowed to be 1");
147148
}
149+
break;
148150
}
151+
case (11):
152+
break;
153+
case (12):
154+
break;
155+
case (13):
156+
break;
149157
default:
150158
break;
151159
}

src/main/java/org/tron/core/config/Parameter.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,10 @@ enum ChainParameters {
6767
CREATE_NEW_ACCOUNT_FEE_IN_SYSTEM_CONTRACT, //drop ,7
6868
CREATE_NEW_ACCOUNT_BANDWIDTH_RATE, // 1 ~ ,8
6969
ALLOW_CREATION_OF_CONTRACTS, // 0 / >0 ,9
70-
REMOVE_THE_POWER_OF_THE_GR // 1 ,10
70+
REMOVE_THE_POWER_OF_THE_GR, // 1 ,10
71+
ENERGY_FEE, // drop, 11
72+
EXCHANGE_CREATE_FEE, // drop, 12
73+
MAX_CPU_TIME_OF_ONE_TX // ms, 13
7174
// ONE_DAY_NET_LIMIT,
7275
// MAX_FROZEN_TIME,
7376
// MIN_FROZEN_TIME,
@@ -77,7 +80,9 @@ enum ChainParameters {
7780
// WITNESS_ALLOWANCE_FROZEN_TIME,
7881
// PUBLIC_NET_LIMIT,
7982
// FREE_NET_LIMIT,
80-
// TOTAL_NET_LIMIT
83+
// TOTAL_NET_LIMIT,
84+
// EXCHANGE_BALANCE_LIMIT,
85+
// TOTAL_ENERGY_LIMIT,
8186
}
8287

8388
}

src/main/java/org/tron/core/db/DynamicPropertiesStore.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,13 @@ public class DynamicPropertiesStore extends TronStoreWithRevoking<BytesCapsule>
8181

8282
private static final byte[] ENERGY_FEE = "ENERGY_FEE".getBytes();
8383

84+
private static final byte[] MAX_CPU_TIME_OF_ONE_TX = "MAX_CPU_TIME_OF_ONE_TX".getBytes();
85+
8486
//abandon
8587
private static final byte[] CREATE_ACCOUNT_FEE = "CREATE_ACCOUNT_FEE".getBytes();
8688

87-
private static final byte[] CREATE_NEW_ACCOUNT_FEE_IN_SYSTEM_CONTRACT = "CREATE_NEW_ACCOUNT_FEE_IN_SYSTEM_CONTRACT"
88-
.getBytes();
89+
private static final byte[] CREATE_NEW_ACCOUNT_FEE_IN_SYSTEM_CONTRACT
90+
= "CREATE_NEW_ACCOUNT_FEE_IN_SYSTEM_CONTRACT".getBytes();
8991

9092
private static final byte[] CREATE_NEW_ACCOUNT_BANDWIDTH_RATE = "CREATE_NEW_ACCOUNT_BANDWIDTH_RATE"
9193
.getBytes();
@@ -294,6 +296,12 @@ private DynamicPropertiesStore(@Value("properties") String dbName) {
294296
this.saveEnergyFee(100L);// 100 sun per energy
295297
}
296298

299+
try {
300+
this.getMaxCpuTimeOfOneTX();
301+
} catch (IllegalArgumentException e) {
302+
this.saveMaxCpuTimeOfOneTX(50L);
303+
}
304+
297305
try {
298306
this.getCreateAccountFee();
299307
} catch (IllegalArgumentException e) {
@@ -710,6 +718,19 @@ public long getEnergyFee() {
710718
() -> new IllegalArgumentException("not found ENERGY_FEE"));
711719
}
712720

721+
public void saveMaxCpuTimeOfOneTX(long time) {
722+
this.put(MAX_CPU_TIME_OF_ONE_TX,
723+
new BytesCapsule(ByteArray.fromLong(time)));
724+
}
725+
726+
public long getMaxCpuTimeOfOneTX() {
727+
return Optional.ofNullable(getUnchecked(MAX_CPU_TIME_OF_ONE_TX))
728+
.map(BytesCapsule::getData)
729+
.map(ByteArray::toLong)
730+
.orElseThrow(
731+
() -> new IllegalArgumentException("not found MAX_CPU_TIME_OF_ONE_TX"));
732+
}
733+
713734
public void saveCreateAccountFee(long fee) {
714735
this.put(CREATE_ACCOUNT_FEE,
715736
new BytesCapsule(ByteArray.fromLong(fee)));

src/main/java/org/tron/core/witness/ProposalController.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,18 @@ public void setDynamicParameters(ProposalCapsule proposalCapsule) {
138138
manager.getDynamicPropertiesStore().saveRemoveThePowerOfTheGr(entry.getValue());
139139
break;
140140
}
141+
case (11): {
142+
manager.getDynamicPropertiesStore().saveEnergyFee(entry.getValue());
143+
break;
144+
}
145+
case (12): {
146+
manager.getDynamicPropertiesStore().saveExchangeCreateFee(entry.getValue());
147+
break;
148+
}
149+
case (13): {
150+
manager.getDynamicPropertiesStore().saveMaxCpuTimeOfOneTX(entry.getValue());
151+
break;
152+
}
141153
default:
142154
break;
143155
}

src/test/java/stest/tron/wallet/committee/WalletTestCommittee004.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ public void testGetChainParameters() {
189189
logger.info(getChainParameters.get().getChainParameter(i).getKey());
190190
logger.info(Long.toString(getChainParameters.get().getChainParameter(i).getValue()));
191191
}
192-
Assert.assertTrue(getChainParameters.get().getChainParameterCount() == 10);
192+
Assert.assertTrue(getChainParameters.get().getChainParameterCount() >= 10);
193193
Assert.assertTrue(getChainParameters.get()
194194
.getChainParameter(1).getValue() == 9999000000L);
195195
Assert.assertTrue(getChainParameters.get().getChainParameter(4)

0 commit comments

Comments
 (0)