Skip to content

Commit 586a98a

Browse files
committed
Remove cross-aa code
1 parent b8fb0d8 commit 586a98a

File tree

20 files changed

+21
-332
lines changed

20 files changed

+21
-332
lines changed

contract/AElf.Contracts.MultiToken/TokenContract_Helper.cs

+1-7
Original file line numberDiff line numberDiff line change
@@ -215,16 +215,10 @@ private Address ExtractTokenContractAddress(ByteString bytes)
215215
private void AssertCrossChainTransaction(Transaction originalTransaction, Address validAddress,
216216
params string[] validMethodNames)
217217
{
218-
var validateResult = validMethodNames.Contains(MaybeRecoverInlineTransactionFunctionName(originalTransaction.MethodName))
218+
var validateResult = validMethodNames.Contains(originalTransaction.MethodName)
219219
&& originalTransaction.To == validAddress;
220220
Assert(validateResult, "Invalid transaction.");
221221
}
222-
223-
private static string MaybeRecoverInlineTransactionFunctionName(string methodName)
224-
{
225-
var parts = methodName.Split('.');
226-
return parts.Length > 1 ? parts[^2] : methodName;
227-
}
228222

229223
private void RegisterTokenInfo(TokenInfo tokenInfo)
230224
{

protobuf/test_virtual_address_contract.proto

-6
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ service VirtualAddressContract {
1414
option (aelf.base) = "acs1.proto";
1515

1616
rpc VirtualAddressVote(VirtualAddressVoteInput) returns (google.protobuf.Empty);
17-
rpc VirtualAddressVoteWithInline(VirtualAddressVoteWithCountInput) returns (google.protobuf.Empty);
1817
rpc VirtualAddressWithdraw(aelf.Hash) returns (google.protobuf.Empty);
1918
rpc VirtualAddressChangeVotingOption(VirtualAddressChangeVotingOptionInput) returns (google.protobuf.Empty);
2019
rpc VirtualAddressClaimProfit(VirtualAddressClaimProfitInput) returns (google.protobuf.Empty);
@@ -33,11 +32,6 @@ message VirtualAddressVoteInput {
3332
aelf.Hash token = 4;
3433
}
3534

36-
message VirtualAddressVoteWithCountInput {
37-
VirtualAddressVoteInput vote_input = 1; // Existing input type
38-
int32 count = 2; // Additional count input
39-
}
40-
4135
message VirtualAddressChangeVotingOptionInput {
4236
bool is_reset = 1;
4337
aelf.Hash vote_id = 2;

src/AElf.ContractTestKit.AEDPoSExtension/UnitTestPlainTransactionExecutingService.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using System.Threading;
33
using System.Threading.Tasks;
44
using AElf.Kernel;
5-
using AElf.Kernel.Blockchain.Application;
65
using AElf.Kernel.FeatureDisable.Core;
76
using AElf.Kernel.SmartContract;
87
using AElf.Kernel.SmartContract.Application;
@@ -14,8 +13,8 @@ public class UnitTestPlainTransactionExecutingService : PlainTransactionExecutin
1413
{
1514
public UnitTestPlainTransactionExecutingService(ISmartContractExecutiveService smartContractExecutiveService,
1615
IEnumerable<IPostExecutionPlugin> postPlugins, IEnumerable<IPreExecutionPlugin> prePlugins,
17-
ITransactionContextFactory transactionContextFactory, IFeatureDisableService featureDisableService,IBlockchainService blockchainService) : base(
18-
smartContractExecutiveService, postPlugins, prePlugins, transactionContextFactory, featureDisableService,blockchainService)
16+
ITransactionContextFactory transactionContextFactory, IFeatureDisableService featureDisableService) : base(
17+
smartContractExecutiveService, postPlugins, prePlugins, transactionContextFactory, featureDisableService)
1918
{
2019
}
2120

src/AElf.Kernel.Core/Extensions/TransactionExtensions.cs

-13
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@ public static int Size(this Transaction transaction)
1616

1717
public static bool VerifySignature(this Transaction transaction)
1818
{
19-
if (transaction.IsInlineWithTransactionId())
20-
{
21-
return true;
22-
}
2319
if (!transaction.VerifyFields())
2420
return false;
2521

@@ -31,16 +27,7 @@ public static bool VerifySignature(this Transaction transaction)
3127

3228
public static bool VerifyExpiration(this Transaction transaction, long chainBranchBlockHeight)
3329
{
34-
if (transaction.IsInlineWithTransactionId())
35-
{
36-
return true;
37-
}
3830
return transaction.RefBlockNumber <= chainBranchBlockHeight &&
3931
transaction.GetExpiryBlockNumber() > chainBranchBlockHeight;
4032
}
41-
42-
public static bool IsInlineWithTransactionId(this Transaction transaction)
43-
{
44-
return transaction.MethodName.Contains(".");
45-
}
4633
}

src/AElf.Kernel.SmartContract/AElf.Kernel.SmartContract.csproj

-3
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,5 @@
2222
<ContractMessage Include="..\..\protobuf\virtual_transaction.proto">
2323
<Link>Protobuf\Proto\virtual_transaction.proto</Link>
2424
</ContractMessage>
25-
<ContractMessage Include="..\..\protobuf\inline_transaction.proto">
26-
<Link>Protobuf\Proto\inline_transaction.proto</Link>
27-
</ContractMessage>
2825
</ItemGroup>
2926
</Project>

src/AElf.Kernel.SmartContract/Application/PlainTransactionExecutingService.cs

+5-97
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
using System.Linq;
44
using System.Threading;
55
using System.Threading.Tasks;
6-
using AElf.CSharp.Core.Extension;
7-
using AElf.Kernel.Blockchain.Application;
86
using AElf.Kernel.FeatureDisable.Core;
97
using AElf.Kernel.SmartContract.Domain;
108
using AElf.Kernel.SmartContract.Infrastructure;
@@ -25,17 +23,14 @@ public class PlainTransactionExecutingService : IPlainTransactionExecutingServic
2523
private readonly ISmartContractExecutiveService _smartContractExecutiveService;
2624
private readonly ITransactionContextFactory _transactionContextFactory;
2725
private readonly IFeatureDisableService _featureDisableService;
28-
private readonly IBlockchainService _blockchainService;
2926

3027
public PlainTransactionExecutingService(ISmartContractExecutiveService smartContractExecutiveService,
3128
IEnumerable<IPostExecutionPlugin> postPlugins, IEnumerable<IPreExecutionPlugin> prePlugins,
32-
ITransactionContextFactory transactionContextFactory, IFeatureDisableService featureDisableService,
33-
IBlockchainService blockchainService)
29+
ITransactionContextFactory transactionContextFactory, IFeatureDisableService featureDisableService)
3430
{
3531
_smartContractExecutiveService = smartContractExecutiveService;
3632
_transactionContextFactory = transactionContextFactory;
3733
_featureDisableService = featureDisableService;
38-
_blockchainService = blockchainService;
3934
_prePlugins = GetUniquePlugins(prePlugins);
4035
_postPlugins = GetUniquePlugins(postPlugins);
4136
Logger = NullLogger<PlainTransactionExecutingService>.Instance;
@@ -66,7 +61,6 @@ public async Task<List<ExecutionReturnSet>> ExecuteAsync(TransactionExecutingDto
6661
var singleTxExecutingDto = new SingleTransactionExecutingDto
6762
{
6863
Depth = 0,
69-
InlineWithTransactionIdCounter = new InlineWithTransactionIdCounter(),
7064
ChainContext = groupChainContext,
7165
Transaction = transaction,
7266
CurrentBlockTime = transactionExecutingDto.BlockHeader.Time,
@@ -77,7 +71,7 @@ public async Task<List<ExecutionReturnSet>> ExecuteAsync(TransactionExecutingDto
7771
var transactionExecutionTask = Task.Run(() => ExecuteOneAsync(singleTxExecutingDto,
7872
cancellationToken), cancellationToken);
7973

80-
trace = await transactionExecutionTask;
74+
trace = await transactionExecutionTask.WithCancellation(cancellationToken);
8175
}
8276
catch (OperationCanceledException)
8377
{
@@ -96,7 +90,7 @@ public async Task<List<ExecutionReturnSet>> ExecuteAsync(TransactionExecutingDto
9690
var result = GetTransactionResult(trace, transactionExecutingDto.BlockHeader.Height);
9791

9892
var returnSet = GetReturnSet(trace, result);
99-
returnSets.AddRange(returnSet);
93+
returnSets.Add(returnSet);
10094
}
10195

10296
return returnSets;
@@ -181,22 +175,14 @@ protected virtual async Task<TransactionTrace> ExecuteOneAsync(
181175

182176
#endregion
183177

184-
var methodName = txContext.Transaction.MethodName;
185-
var originMethodName = MaybeRecoverInlineTransactionFunctionName(methodName);
186-
txContext.Transaction.MethodName = originMethodName;
187-
188178
await executive.ApplyAsync(txContext);
189179

190180
if (txContext.Trace.IsSuccessful())
191-
{
192-
// Maybe layered method name.
193-
txContext.Transaction.MethodName = methodName;
194181
await ExecuteInlineTransactions(singleTxExecutingDto.Depth, singleTxExecutingDto.CurrentBlockTime,
195182
txContext, internalStateCache,
196183
internalChainContext,
197184
singleTxExecutingDto.OriginTransactionId,
198185
cancellationToken);
199-
}
200186

201187
#region PostTransaction
202188

@@ -235,40 +221,11 @@ private async Task ExecuteInlineTransactions(int depth, Timestamp currentBlockTi
235221
{
236222
var trace = txContext.Trace;
237223
internalStateCache.Update(txContext.Trace.GetStateSets());
238-
239-
var methodNameCount = new Dictionary<string, int>();
240224
foreach (var inlineTx in txContext.Trace.InlineTransactions)
241225
{
242-
var needTxId = NeedTransactionId(inlineTx.MethodName);
243-
if (needTxId)
244-
{
245-
txContext.InlineWithTransactionIdCounter.Increment();
246-
if (!methodNameCount.TryAdd(inlineTx.MethodName, 0))
247-
{
248-
methodNameCount[inlineTx.MethodName]++;
249-
inlineTx.MethodName =
250-
GenerateLayeredMethodNameForInlineTransaction(
251-
txContext.Transaction,
252-
inlineTx.MethodName,
253-
methodNameCount[inlineTx.MethodName]
254-
);
255-
}
256-
else
257-
{
258-
inlineTx.MethodName = GenerateLayeredMethodNameForInlineTransaction(
259-
txContext.Transaction,
260-
inlineTx.MethodName,
261-
0
262-
);
263-
}
264-
265-
await _blockchainService.AddTransactionsAsync([inlineTx]);
266-
}
267-
268226
var singleTxExecutingDto = new SingleTransactionExecutingDto
269227
{
270228
Depth = depth + 1,
271-
InlineWithTransactionIdCounter = txContext.InlineWithTransactionIdCounter,
272229
ChainContext = internalChainContext,
273230
Transaction = inlineTx,
274231
CurrentBlockTime = currentBlockTime,
@@ -289,25 +246,6 @@ private async Task ExecuteInlineTransactions(int depth, Timestamp currentBlockTi
289246
}
290247
}
291248

292-
private static string GenerateLayeredMethodNameForInlineTransaction(Transaction parentTx, string inlineFunctionName,
293-
int index)
294-
{
295-
var parentTxMethodName = parentTx.MethodName;
296-
inlineFunctionName = inlineFunctionName.StartsWith('.') ? inlineFunctionName[1..] : inlineFunctionName;
297-
return $"{parentTx.GetHash().ToHex()}.{parentTxMethodName}.{inlineFunctionName}.{index}";
298-
}
299-
300-
private static string MaybeRecoverInlineTransactionFunctionName(string methodName)
301-
{
302-
var parts = methodName.Split('.');
303-
return parts.Length > 1 ? parts[^2] : methodName;
304-
}
305-
306-
private static bool NeedTransactionId(string methodName)
307-
{
308-
return methodName.Contains('.');
309-
}
310-
311249
private async Task<bool> ExecutePluginOnPreTransactionStageAsync(IExecutive executive,
312250
ITransactionContext txContext,
313251
Timestamp currentBlockTime,
@@ -455,7 +393,7 @@ private TransactionResult GetTransactionResult(TransactionTrace trace, long bloc
455393
return txResult;
456394
}
457395

458-
private IEnumerable<ExecutionReturnSet> GetReturnSet(TransactionTrace trace, TransactionResult result)
396+
private ExecutionReturnSet GetReturnSet(TransactionTrace trace, TransactionResult result)
459397
{
460398
var returnSet = new ExecutionReturnSet
461399
{
@@ -464,41 +402,12 @@ private IEnumerable<ExecutionReturnSet> GetReturnSet(TransactionTrace trace, Tra
464402
Bloom = result.Bloom,
465403
TransactionResult = result
466404
};
467-
var returnSets = new List<ExecutionReturnSet> { returnSet };
468405

469406
if (trace.IsSuccessful())
470407
{
471408
var transactionExecutingStateSets = trace.GetStateSets();
472409
returnSet = GetReturnSet(returnSet, transactionExecutingStateSets);
473410
returnSet.ReturnValue = trace.ReturnValue;
474-
475-
var inlineTxWithIdList = trace.GetAllInlineTransactions().Where(tx => NeedTransactionId(tx.MethodName));
476-
foreach (var inlineTx in inlineTxWithIdList)
477-
{
478-
var inlineTxId = inlineTx.GetHash();
479-
var inlineReturnSet = new ExecutionReturnSet
480-
{
481-
TransactionId = inlineTxId,
482-
Status = TransactionResultStatus.Mined,
483-
TransactionResult = new TransactionResult
484-
{
485-
TransactionId = inlineTxId,
486-
BlockNumber = result.BlockNumber,
487-
Status = TransactionResultStatus.Mined
488-
}
489-
};
490-
491-
// No need to execute GetReturnSet method, because changes are already set to `returnSet`.
492-
493-
returnSets.Add(inlineReturnSet);
494-
495-
Logger.LogWarning($"Inline tx id: {inlineTx.GetHash().ToHex()}\n{inlineTx}");
496-
var log = new InlineTransactionCreated()
497-
{
498-
Transaction = inlineTx
499-
};
500-
returnSet.TransactionResult.Logs.Add(log.ToLogEvent(inlineTx.To));
501-
}
502411
}
503412
else
504413
{
@@ -517,7 +426,7 @@ private IEnumerable<ExecutionReturnSet> GetReturnSet(TransactionTrace trace, Tra
517426
var reads = trace.GetFlattenedReads();
518427
foreach (var read in reads) returnSet.StateAccesses[read.Key] = read.Value;
519428

520-
return returnSets;
429+
return returnSet;
521430
}
522431

523432
private ExecutionReturnSet GetReturnSet(ExecutionReturnSet returnSet,
@@ -567,7 +476,6 @@ protected ITransactionContext CreateTransactionContext(SingleTransactionExecutin
567476
singleTxExecutingDto.ChainContext, singleTxExecutingDto.OriginTransactionId, origin,
568477
singleTxExecutingDto.Depth, singleTxExecutingDto.CurrentBlockTime);
569478

570-
txContext.InlineWithTransactionIdCounter = singleTxExecutingDto.InlineWithTransactionIdCounter;
571479
return txContext;
572480
}
573481
}

src/AElf.Kernel.SmartContract/Dto/SingleTransactionExecutingDto.cs

-1
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,4 @@ public class SingleTransactionExecutingDto
1313
public bool IsCancellable { get; set; } = true;
1414

1515
public Hash OriginTransactionId { get; set; }
16-
public InlineWithTransactionIdCounter InlineWithTransactionIdCounter { get; set; }
1716
}

src/AElf.Kernel.SmartContract/ITransactionContext.cs

-1
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,4 @@ public interface ITransactionContext
1616
Transaction Transaction { get; set; }
1717
TransactionTrace Trace { get; set; }
1818
IStateCache StateCache { get; set; }
19-
InlineWithTransactionIdCounter InlineWithTransactionIdCounter { get; set; }
2019
}

src/AElf.Kernel.SmartContract/InlineWithTransactionIdCounter.cs

-18
This file was deleted.

src/AElf.Kernel.SmartContract/TransactionContext.cs

-1
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,4 @@ public class TransactionContext : ITransactionContext
1616
public Transaction Transaction { get; set; }
1717
public TransactionTrace Trace { get; set; }
1818
public IStateCache StateCache { get; set; }
19-
public InlineWithTransactionIdCounter InlineWithTransactionIdCounter { get; set; }
2019
}

0 commit comments

Comments
 (0)