Skip to content

Commit 5e8c576

Browse files
feat: remove code deposit gas charge waiver (#18797)
Signed-off-by: Luke Lee <[email protected]> Signed-off-by: Stanimir Stoyanov <[email protected]> Co-authored-by: Stanimir Stoyanov <[email protected]>
1 parent 0cba1a3 commit 5e8c576

File tree

47 files changed

+206
-130
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+206
-130
lines changed

hedera-node/hedera-app/src/test/java/com/hedera/node/app/workflows/standalone/TransactionExecutorsTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@
144144
*/
145145
@ExtendWith(MockitoExtension.class)
146146
public class TransactionExecutorsTest {
147-
private static final long GAS = 100_000L;
147+
private static final long GAS = 400_000L;
148148
private static final long EXPECTED_LUCKY_NUMBER = 42L;
149149
private static final EntityIdFactory idFactory = new AppEntityIdFactory(DEFAULT_CONFIG);
150150
private static final AccountID TREASURY_ID = idFactory.newAccountId(2);
@@ -156,7 +156,7 @@ public class TransactionExecutorsTest {
156156
private static final com.esaulpaugh.headlong.abi.Function GET_LAST_BLOCKHASH_FUNCTION =
157157
new com.esaulpaugh.headlong.abi.Function("getLastBlockHash()", "(bytes32)");
158158
private static final String EXPECTED_TRACE_START =
159-
"{\"pc\":0,\"op\":96,\"gas\":\"0x13458\",\"gasCost\":\"0x3\",\"memSize\":0,\"depth\":1,\"refund\":0,\"opName\":\"PUSH1\"}";
159+
"{\"pc\":0,\"op\":96,\"gas\":\"0x5c838\",\"gasCost\":\"0x3\",\"memSize\":0,\"depth\":1,\"refund\":0,\"opName\":\"PUSH1\"}";
160160
private static final NodeInfo DEFAULT_NODE_INFO =
161161
new NodeInfoImpl(0, idFactory.newAccountId(3L), 10, List.of(), Bytes.EMPTY, List.of(), true);
162162

hedera-node/hedera-smart-contract-service-impl/src/main/java/com/hedera/node/app/service/contract/impl/exec/gas/CustomGasCalculator.java

-5
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,6 @@ public long logOperationGasCost(
7474
return Math.max(evmGasCost, hevmGasCost);
7575
}
7676

77-
@Override
78-
public long codeDepositGasCost(final int codeSize) {
79-
return 0L;
80-
}
81-
8277
/**
8378
* Gas charge to do a signature verification for an ED key.
8479
*

hedera-node/hedera-smart-contract-service-impl/src/test/java/com/hedera/node/app/service/contract/impl/test/exec/gas/CustomGasCalculatorTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ void txnIntrinsicCostNonContractCreate() {
2626
}
2727

2828
@Test
29-
void codeDepositCostIsZero() {
30-
assertEquals(0, subject.codeDepositGasCost(Integer.MAX_VALUE));
29+
void codeDepositCostIsUsingFrontierGasCost() {
30+
assertEquals(200 * 1000, subject.codeDepositGasCost(1000));
3131
}
3232

3333
@Test

hedera-node/test-clients/src/main/java/com/hedera/services/bdd/junit/support/validators/HgcaaLogValidator.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ private static class ProblemTracker {
9696
List.of("No pending blocks found"),
9797
List.of("Forcing handoff to construction", "with different target roster"),
9898
List.of("HintsSubmissions", "Failed to submit", "(PLATFORM_NOT_ACTIVE)"),
99-
List.of("Ignoring invalid partial signature"));
99+
List.of("Ignoring invalid partial signature"),
100+
List.of("Action stack prematurely empty"));
100101

101102
private int numProblems = 0;
102103
private int linesSinceInitialProblem = -1;

hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/contract/ethereum/EthereumSuite.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ final Stream<DynamicTest> sendingLargerBalanceThanAvailableFailsGracefully() {
167167
.bytecode(TOKEN_CREATE_CONTRACT)
168168
.gasPrice(10L)
169169
.maxGasAllowance(ONE_HUNDRED_HBARS)
170-
.gasLimit(1_000_000L)
170+
.gasLimit(4_000_000L)
171171
.hasKnownStatusFrom(SUCCESS)
172172
.via("deployTokenCreateContract"),
173173
getContractInfo(TOKEN_CREATE_CONTRACT)
@@ -1098,7 +1098,7 @@ final Stream<DynamicTest> etx007FungibleTokenCreateWithFeesHappyPath() {
10981098
.keyShape(SigControl.ED25519_ON)
10991099
.balance(ONE_MILLION_HBARS),
11001100
uploadInitCode(contract),
1101-
contractCreate(contract).gas(GAS_LIMIT),
1101+
contractCreate(contract).gas(4_000_000L),
11021102
tokenCreate(EXISTING_TOKEN).decimals(5),
11031103
tokenAssociate(feeCollectorAndAutoRenew, EXISTING_TOKEN),
11041104
cryptoUpdate(feeCollectorAndAutoRenew).key(SECP_256K1_SOURCE_KEY),
@@ -1164,7 +1164,7 @@ final Stream<DynamicTest> fungibleTokenCreateWithAmountLookingNegativeInTwosComp
11641164
.keyShape(SigControl.ED25519_ON)
11651165
.balance(ONE_MILLION_HBARS),
11661166
uploadInitCode(contract),
1167-
contractCreate(contract).gas(GAS_LIMIT),
1167+
contractCreate(contract).gas(4_000_000L),
11681168
tokenCreate(EXISTING_TOKEN).decimals(5),
11691169
tokenAssociate(feeCollectorAndAutoRenew, EXISTING_TOKEN),
11701170
cryptoUpdate(feeCollectorAndAutoRenew).key(SECP_256K1_SOURCE_KEY),

hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/contract/ethereum/HelloWorldEthereumSuite.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ final Stream<DynamicTest> idVariantsTreatedAsExpected() {
516516
.payingWith(RELAYER)
517517
.nonce(0)
518518
.maxGasAllowance(ONE_HUNDRED_HBARS)
519-
.gasLimit(1_000_000L)));
519+
.gasLimit(4_000_000L)));
520520
}
521521

522522
@HapiTest
@@ -536,7 +536,7 @@ final Stream<DynamicTest> bigContractCreate() {
536536
.payingWith(RELAYER)
537537
.nonce(0)
538538
.maxGasAllowance(ONE_HUNDRED_HBARS)
539-
.gasLimit(1_000_000L)
539+
.gasLimit(4_000_000L)
540540
.via("payTxn")
541541
.hasKnownStatus(SUCCESS),
542542
withOpContext((spec, opLog) -> updateSpecFor(spec, SECP_256K1_SOURCE_KEY)),

hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/contract/ethereum/JumboTransactionsEnabledTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ public Stream<DynamicTest> ethereumContractCreateJumboTxnMoreThen6Kb() {
271271
.payingWith(RELAYER)
272272
.nonce(0)
273273
.maxGasAllowance(ONE_HUNDRED_HBARS)
274-
.gasLimit(1_000_000L)
274+
.gasLimit(6_000_000L)
275275
.via("payTxn"));
276276
}
277277

hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/contract/ethereum/NonceSuite.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -573,9 +573,11 @@ final Stream<DynamicTest> nonceUpdatedAfterSuccessfulInternalContractDeployment(
573573
.signingWith(SECP_256K1_SOURCE_KEY)
574574
.payingWith(RELAYER)
575575
.nonce(0)
576+
.gasLimit(ENOUGH_GAS_LIMIT)
576577
.via(TX))),
577578
getAliasedAccountInfo(SECP_256K1_SOURCE_KEY).has(accountWith().nonce(1L)),
578579
getTxnRecord(TX)
580+
.logged()
579581
.hasPriority(
580582
recordWith().contractCallResult(resultWith().signerNonce(1L))));
581583
}
@@ -849,7 +851,7 @@ final Stream<DynamicTest> nonceUpdatedAfterSuccessfulEthereumContractCreation()
849851
.signingWith(SECP_256K1_SOURCE_KEY)
850852
.payingWith(RELAYER)
851853
.nonce(0)
852-
.gasLimit(ENOUGH_GAS_LIMIT)
854+
.gasLimit(4_000_000L)
853855
.via(TX),
854856
getAliasedAccountInfo(SECP_256K1_SOURCE_KEY).has(accountWith().nonce(1L)),
855857
getTxnRecord(TX)

hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/contract/evm/Evm46ValidationSuite.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1122,7 +1122,7 @@ final Stream<DynamicTest> internalCallsAgainstSystemAccountsWithValue() {
11221122
final var withAmount = "makeCallWithAmount";
11231123
return hapiTest(
11241124
uploadInitCode(MAKE_CALLS_CONTRACT),
1125-
contractCreate(MAKE_CALLS_CONTRACT).gas(GAS_LIMIT_FOR_CALL * 4),
1125+
contractCreate(MAKE_CALLS_CONTRACT).gas(400_000L),
11261126
balanceSnapshot("initialBalance", MAKE_CALLS_CONTRACT),
11271127
contractCall(
11281128
MAKE_CALLS_CONTRACT,
@@ -1145,7 +1145,7 @@ final Stream<DynamicTest> internalCallsAgainstSystemAccountsWithoutValue() {
11451145
final var withoutAmount = "makeCallWithoutAmount";
11461146
return hapiTest(
11471147
uploadInitCode(MAKE_CALLS_CONTRACT),
1148-
contractCreate(MAKE_CALLS_CONTRACT).gas(GAS_LIMIT_FOR_CALL * 4),
1148+
contractCreate(MAKE_CALLS_CONTRACT).gas(400_000L),
11491149
balanceSnapshot("initialBalance", MAKE_CALLS_CONTRACT),
11501150
contractCall(
11511151
MAKE_CALLS_CONTRACT,

hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/contract/hapi/ContractCallSuite.java

+11-8
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,7 @@ final Stream<DynamicTest> bitcarbonTestStillPasses() {
702702
.payingWith(DEFAULT_CONTRACT_SENDER)
703703
.refusingEthConversion(),
704704
contractCreate(jurisdictions)
705-
.gas(1_000_000L)
705+
.gas(4_000_000L)
706706
.exposingNumTo(num -> jurisdictionMirror.set(asHexedSolidityAddress(SHARD, REALM, num)))
707707
.withExplicitParams(() -> EXPLICIT_JURISDICTION_CONS_PARAMS)
708708
.payingWith(DEFAULT_CONTRACT_SENDER)
@@ -981,7 +981,7 @@ final Stream<DynamicTest> specialQueriesXTest() {
981981
.mapToObj(i -> movingUnique(erc721Name, i).between(TOKEN_TREASURY, ercUser))
982982
.toArray(TokenMovement[]::new)),
983983
uploadInitCode(contract),
984-
contractCreate(contract, secret).gas(250_000L),
984+
contractCreate(contract, secret).gas(1_250_000L),
985985
contractCallLocalWithFunctionAbi(contract, secretAbi)
986986
.exposingTypedResultsTo(results -> LOG.info("Secret is {}", results[0]))
987987
.exposingRawResultsTo(secretOutput::set),
@@ -1068,7 +1068,7 @@ final Stream<DynamicTest> ocToken() {
10681068
getAccountInfo("Dave").savingSnapshot("DaveAcctInfo"),
10691069
uploadInitCode(contract),
10701070
contractCreate(contract, BigInteger.valueOf(1_000_000L), "OpenCrowd Token", "OCT")
1071-
.gas(250_000L)
1071+
.gas(1_000_000L)
10721072
.payingWith(TOKEN_ISSUER)
10731073
.via("tokenCreateTxn")
10741074
.refusingEthConversion(),
@@ -1465,7 +1465,10 @@ final Stream<DynamicTest> insufficientFee() {
14651465
cryptoCreate("accountToPay"),
14661466
uploadInitCode(contract),
14671467
contractCreate(contract),
1468-
contractCall(contract, "create").fee(0L).payingWith("accountToPay"));
1468+
contractCall(contract, "create")
1469+
.fee(0L)
1470+
.payingWith("accountToPay")
1471+
.gas(400_000L));
14691472
}
14701473

14711474
@HapiTest
@@ -1651,7 +1654,7 @@ final Stream<DynamicTest> contractTransferToSigReqAccountWithoutKeyFails() {
16511654
.receiverSigRequired(true),
16521655
getAccountInfo(RECEIVABLE_SIG_REQ_ACCOUNT).savingSnapshot(RECEIVABLE_SIG_REQ_ACCOUNT_INFO),
16531656
uploadInitCode(TRANSFERRING_CONTRACT),
1654-
contractCreate(TRANSFERRING_CONTRACT).gas(300_000L).balance(5000L),
1657+
contractCreate(TRANSFERRING_CONTRACT).gas(1_000_000L).balance(5000L),
16551658
withOpContext((spec, opLog) -> {
16561659
final var accountAddress = spec.registry()
16571660
.getAccountInfo(RECEIVABLE_SIG_REQ_ACCOUNT_INFO)
@@ -2365,7 +2368,7 @@ final Stream<DynamicTest> callToNonExtantEvmAddressUsesTargetedAddress() {
23652368
return hapiTest(
23662369
recordStreamMustIncludeNoFailuresFrom(sidecarIdValidator()),
23672370
uploadInitCode(contract),
2368-
contractCreate(contract),
2371+
contractCreate(contract).gas(400_000L),
23692372
contractCall(contract, "callRequested", nonExtantEvmAddress, new byte[0], BigInteger.valueOf(88_888L)));
23702373
}
23712374

@@ -2404,7 +2407,7 @@ final Stream<DynamicTest> contractCreateFollowedByContractCallNoncesExternalizat
24042407
return hapiTest(
24052408
cryptoCreate(payer).balance(10 * ONE_HUNDRED_HBARS),
24062409
uploadInitCode(contract),
2407-
contractCreate(contract).via(contractCreateTx).gas(500_000L),
2410+
contractCreate(contract).via(contractCreateTx).gas(1_000_000L),
24082411
withOpContext((spec, opLog) -> allRunFor(
24092412
spec,
24102413
contractCall(contract, deployParentContractFn)
@@ -2492,7 +2495,7 @@ final Stream<DynamicTest> contractCreateNoncesExternalizationHappyPath() {
24922495
return hapiTest(
24932496
cryptoCreate(PAYER).balance(10 * ONE_HUNDRED_HBARS),
24942497
uploadInitCode(contract),
2495-
contractCreate(contract).via(contractCreateTxn).gas(500_000L),
2498+
contractCreate(contract).via(contractCreateTxn).gas(1_000_000L),
24962499
withOpContext((spec, opLog) -> {
24972500
final var opContractTxnRecord = getTxnRecord(contractCreateTxn);
24982501

hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/contract/hapi/ContractCreateSuite.java

+20-1
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,10 @@ final Stream<DynamicTest> contractCreationsHaveValidAssociations() {
342342
.via("constructorCreate")
343343
.maxAutomaticTokenAssociations(5)
344344
.hasKnownStatus(SUCCESS),
345-
contractCall(createContract, "create").via("createViaCall").hasKnownStatus(SUCCESS),
345+
contractCall(createContract, "create")
346+
.via("createViaCall")
347+
.gas(400_000L)
348+
.hasKnownStatus(SUCCESS),
346349
ethereumCall(createContract, "create")
347350
.type(EthTxData.EthTransactionType.EIP1559)
348351
.signingWith(SECP_256K1_SOURCE_KEY)
@@ -912,6 +915,22 @@ final var record = getRecord(spec, txn, SUCCESS);
912915
}));
913916
}
914917

918+
@HapiTest
919+
final Stream<DynamicTest> contractCreateGas() {
920+
final String txn = "contractCreateGas";
921+
return hapiTest(
922+
uploadInitCode("Storage"),
923+
contractCreate("Storage").gas(124_000L).via(txn).logged(),
924+
getTxnRecord(txn).andAllChildRecords().logged().saveTxnRecordToRegistry(txn),
925+
withOpContext((spec, ignore) -> {
926+
final var gasUsed = spec.registry()
927+
.getTransactionRecord(txn)
928+
.getContractCreateResult()
929+
.getGasUsed();
930+
assertEquals(117661, gasUsed);
931+
}));
932+
}
933+
915934
private TransactionRecord getRecord(HapiSpec spec, String txn, ResponseCodeEnum status) {
916935
final var hapiGetRecord = getTxnRecord(txn);
917936
allRunFor(spec, hapiGetRecord);

hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/contract/hapi/ContractStateSuite.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import static com.hedera.services.bdd.spec.transactions.TxnVerbs.contractCreate;
88
import static com.hedera.services.bdd.spec.transactions.TxnVerbs.uploadInitCode;
99
import static com.hedera.services.bdd.spec.transactions.contract.HapiParserUtil.asHeadlongAddress;
10+
import static com.hedera.services.bdd.spec.utilops.UtilVerbs.overriding;
1011
import static com.hedera.services.bdd.spec.utilops.UtilVerbs.validateAnyLogAfter;
1112
import static com.hedera.services.bdd.suites.HapiSuite.flattened;
1213
import static java.lang.Integer.MAX_VALUE;
@@ -36,16 +37,17 @@ public class ContractStateSuite {
3637
final Stream<DynamicTest> netZeroSlotUsageUpdateLogsNoErrors() {
3738
final var contract = "ThreeSlots";
3839
return hapiTest(
40+
overriding("contracts.maxGasPerSec", "15_000_000_000"),
3941
uploadInitCode(contract),
40-
contractCreate(contract),
42+
contractCreate(contract).gas(500_000),
4143
// Use slot 'b' only
4244
contractCall(contract, "setAB", BigInteger.ZERO, BigInteger.ONE),
4345
// Clear slot 'b', use slot 'a' (net-zero slot usage but first key impact)
4446
contractCall(contract, "setAB", BigInteger.ONE, BigInteger.ZERO),
4547
// And now use slot 'c' (will trigger ERROR log unless first key is 'a')
4648
contractCall(contract, "setC", BigInteger.ONE),
4749
// Ensure there are still no problems in the logs
48-
validateAnyLogAfter(Duration.ofMillis(250)));
50+
validateAnyLogAfter(Duration.ofMillis(450)));
4951
}
5052

5153
@HapiTest
@@ -76,7 +78,8 @@ final Stream<DynamicTest> stateChangesSpec() {
7678
.map(type -> contractCall(
7779
CONTRACT, "setVar" + type, integralTypes.get(type))),
7880
Stream.of(contractCall(CONTRACT, "setVarAddress", randomHeadlongAddress())),
79-
Stream.of(contractCall(CONTRACT, "setVarContractType")),
81+
Stream.of(contractCall(CONTRACT, "setVarContractType")
82+
.gas(5_000_000)),
8083
Stream.of(contractCall(CONTRACT, "setVarBytes32", randomBytes32())),
8184
Stream.of(contractCall(CONTRACT, "setVarString", randomString())),
8285
Stream.of(contractCall(CONTRACT, "setVarEnum", randomEnum())),

hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/contract/hips/hip583/CreateWithAliasDisabledTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ final Stream<DynamicTest> createTokenWithInvalidFeeCollector() {
8787
newKeyNamed(ECDSA_KEY).shape(SECP256K1),
8888
cryptoCreate(ACCOUNT).balance(ONE_MILLION_HBARS).key(ECDSA_KEY),
8989
uploadInitCode(TOKEN_CREATE_CONTRACT),
90-
contractCreate(TOKEN_CREATE_CONTRACT).gas(GAS_TO_OFFER),
90+
contractCreate(TOKEN_CREATE_CONTRACT).gas(4_000_000L),
9191
tokenCreate(EXISTING_TOKEN),
9292
withOpContext((spec, opLog) -> allRunFor(
9393
spec,

hedera-node/test-clients/src/main/java/com/hedera/services/bdd/suites/contract/hips/hip632/AliasTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
@DisplayName("hip632ViewFunctions")
3939
@HapiTestLifecycle
4040
class AliasTest {
41-
@Contract(contract = "HRC632Contract", creationGas = 1_000_000L)
41+
@Contract(contract = "HRC632Contract", creationGas = 2_000_000L)
4242
static SpecContract hrc632Contract;
4343

4444
@Account(maxAutoAssociations = 10, tinybarBalance = ONE_MILLION_HBARS)

0 commit comments

Comments
 (0)