Skip to content

Commit 58eb7f9

Browse files
committed
change bandwidth.
1 parent 4ae4572 commit 58eb7f9

File tree

5 files changed

+28
-5
lines changed

5 files changed

+28
-5
lines changed

src/main/java/org/tron/core/capsule/TransactionCapsule.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
import org.tron.protos.Protocol.Transaction.Contract.ContractType;
7777
import org.tron.protos.Protocol.Transaction.Result;
7878
import org.tron.protos.Protocol.Transaction.Result.contractResult;
79+
import org.tron.protos.Protocol.Transaction.raw;
7980

8081
@Slf4j
8182
public class TransactionCapsule implements ProtoCapsule<Transaction> {
@@ -159,6 +160,11 @@ public TransactionCapsule(ParticipateAssetIssueContract participateAssetIssueCon
159160
createTransaction(participateAssetIssueContract, ContractType.ParticipateAssetIssueContract);
160161
}
161162

163+
public TransactionCapsule(raw rawData, List<ByteString> signatureList) {
164+
this.transaction = Transaction.newBuilder().setRawData(rawData).addAllSignature(signatureList)
165+
.build();
166+
}
167+
162168
public void resetResult() {
163169
if (this.getInstance().getRetCount() > 0) {
164170
this.transaction = this.getInstance().toBuilder().clearRet().build();

src/main/java/org/tron/core/capsule/TransactionResultCapsule.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package org.tron.core.capsule;
22

3-
import com.google.protobuf.ByteString;
43
import com.google.protobuf.InvalidProtocolBufferException;
54
import lombok.extern.slf4j.Slf4j;
65
import org.tron.core.exception.BadItemException;
76
import org.tron.protos.Protocol.Transaction;
87
import org.tron.protos.Protocol.Transaction.Result;
8+
import org.tron.protos.Protocol.Transaction.Result.contractResult;
99

1010
@Slf4j
1111
public class TransactionResultCapsule implements ProtoCapsule<Transaction.Result> {
@@ -31,6 +31,10 @@ public TransactionResultCapsule() {
3131
this.transactionResult = Transaction.Result.newBuilder().build();
3232
}
3333

34+
public TransactionResultCapsule(contractResult code) {
35+
this.transactionResult = Transaction.Result.newBuilder().setContractRet(code).build();
36+
}
37+
3438
public TransactionResultCapsule(Transaction.Result.code code, long fee) {
3539
this.transactionResult = Transaction.Result.newBuilder().setRet(code).setFee(fee).build();
3640
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,10 @@ public void consume(TransactionCapsule trx, TransactionResultCapsule ret,
5353
throws ContractValidateException, AccountResourceInsufficientException {
5454
List<Contract> contracts =
5555
trx.getInstance().getRawData().getContractList();
56-
56+
TransactionCapsule transactionCapsule = new TransactionCapsule(trx.getInstance().getRawData(),
57+
trx.getInstance().getSignatureList());
5758
for (Contract contract : contracts) {
58-
long bytes = trx.getSerializedSize();
59+
long bytes = transactionCapsule.getSerializedSize();
5960
logger.debug("trxId {},bandwidth cost :{}", trx.getTransactionId(), bytes);
6061
trace.setNetBill(bytes, 0);
6162
byte[] address = TransactionCapsule.getOwner(contract);

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

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1040,6 +1040,12 @@ public boolean processTransaction(final TransactionCapsule trxCap, BlockCapsule
10401040
// Fixme Wrong exception
10411041
throw new UnsupportVMException("cannot call constant method ");
10421042
}
1043+
// if (SystemProperties.getInstance().vmOn()) {
1044+
// if(trxCap.getInstance().getRetCount()<=0){
1045+
// trxCap.setResult(new TransactionResultCapsule(contractResult.UNKNOWN));
1046+
// }
1047+
// }
1048+
10431049
consumeBandwidth(trxCap, runtime.getResult().getRet(), trace);
10441050

10451051
trace.init();
@@ -1053,8 +1059,11 @@ public boolean processTransaction(final TransactionCapsule trxCap, BlockCapsule
10531059
}
10541060

10551061
trace.finalization(runtime);
1056-
1057-
trxCap.setResult(runtime);
1062+
if (Objects.nonNull(blockCap)) {
1063+
if (SystemProperties.getInstance().vmOn()) {
1064+
trxCap.setResult(runtime);
1065+
}
1066+
}
10581067
transactionStore.put(trxCap.getTransactionId().getBytes(), trxCap);
10591068

10601069
ReceiptCapsule traceReceipt = trace.getReceipt();

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,9 @@ public ReceiptCapsule getReceipt() {
167167
}
168168

169169
public void setResult(Runtime runtime) {
170+
if (!needVM()) {
171+
return;
172+
}
170173
RuntimeException exception = runtime.getResult().getException();
171174
if (Objects.isNull(exception) && StringUtils
172175
.isEmpty(runtime.getRuntimeError()) && !runtime.getResult().isRevert()) {

0 commit comments

Comments
 (0)