From 9db670041b7ecffaaf7775162148532a1226cbec Mon Sep 17 00:00:00 2001 From: Jin Qiao Date: Tue, 3 Nov 2020 17:13:31 +0800 Subject: [PATCH 1/3] Move MaxValidUntilBlockIncrement & MaxTraceableBlocks to protocol --- src/neo/Network/P2P/Payloads/Transaction.cs | 3 +-- src/neo/ProtocolSettings.cs | 4 ++++ src/neo/SmartContract/ApplicationEngine.Blockchain.cs | 4 +--- src/neo/Wallets/Wallet.cs | 2 +- tests/neo.UnitTests/SmartContract/UT_Syscalls.cs | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/neo/Network/P2P/Payloads/Transaction.cs b/src/neo/Network/P2P/Payloads/Transaction.cs index 54860c6a86..10b292065d 100644 --- a/src/neo/Network/P2P/Payloads/Transaction.cs +++ b/src/neo/Network/P2P/Payloads/Transaction.cs @@ -19,7 +19,6 @@ namespace Neo.Network.P2P.Payloads public class Transaction : IEquatable, IInventory, IInteroperable { public const int MaxTransactionSize = 102400; - public const uint MaxValidUntilBlockIncrement = 2102400; /// /// Maximum number of attributes that can be contained within a transaction /// @@ -283,7 +282,7 @@ bool IInventory.Verify(StoreView snapshot) public virtual VerifyResult VerifyStateDependent(StoreView snapshot, TransactionVerificationContext context) { - if (ValidUntilBlock <= snapshot.Height || ValidUntilBlock > snapshot.Height + MaxValidUntilBlockIncrement) + if (ValidUntilBlock <= snapshot.Height || ValidUntilBlock > snapshot.Height + ProtocolSettings.Default.MaxValidUntilBlockIncrement) return VerifyResult.Expired; foreach (UInt160 hash in GetScriptHashesForVerifying(snapshot)) if (NativeContract.Policy.IsBlocked(snapshot, hash)) diff --git a/src/neo/ProtocolSettings.cs b/src/neo/ProtocolSettings.cs index 7ac2f16273..1894a618d7 100644 --- a/src/neo/ProtocolSettings.cs +++ b/src/neo/ProtocolSettings.cs @@ -15,6 +15,8 @@ public class ProtocolSettings public string[] SeedList { get; } public uint MillisecondsPerBlock { get; } public int MemoryPoolMaxTransactions { get; } + public uint MaxValidUntilBlockIncrement { get; } + public uint MaxTraceableBlocks { get; } static ProtocolSettings _default; @@ -94,6 +96,8 @@ private ProtocolSettings(IConfigurationSection section) }; this.MillisecondsPerBlock = section.GetValue("MillisecondsPerBlock", 15000u); this.MemoryPoolMaxTransactions = Math.Max(1, section.GetValue("MemoryPoolMaxTransactions", 50_000)); + this.MaxValidUntilBlockIncrement = section.GetValue("MaxValidUntilBlockIncrement", 5760u); + this.MaxTraceableBlocks = section.GetValue("MaxTraceableBlocks", 2_102_400u); } } } diff --git a/src/neo/SmartContract/ApplicationEngine.Blockchain.cs b/src/neo/SmartContract/ApplicationEngine.Blockchain.cs index dad192c29f..191a2322e7 100644 --- a/src/neo/SmartContract/ApplicationEngine.Blockchain.cs +++ b/src/neo/SmartContract/ApplicationEngine.Blockchain.cs @@ -8,8 +8,6 @@ namespace Neo.SmartContract { partial class ApplicationEngine { - public const uint MaxTraceableBlocks = Transaction.MaxValidUntilBlockIncrement; - public static readonly InteropDescriptor System_Blockchain_GetHeight = Register("System.Blockchain.GetHeight", nameof(GetBlockchainHeight), 0_00000400, CallFlags.AllowStates, true); public static readonly InteropDescriptor System_Blockchain_GetBlock = Register("System.Blockchain.GetBlock", nameof(GetBlock), 0_02500000, CallFlags.AllowStates, true); public static readonly InteropDescriptor System_Blockchain_GetTransaction = Register("System.Blockchain.GetTransaction", nameof(GetTransaction), 0_01000000, CallFlags.AllowStates, true); @@ -97,7 +95,7 @@ protected internal ContractState GetContract(UInt160 hash) private static bool IsTraceableBlock(StoreView snapshot, uint index) { if (index > snapshot.Height) return false; - return index + MaxTraceableBlocks > snapshot.Height; + return index + ProtocolSettings.Default.MaxTraceableBlocks > snapshot.Height; } } } diff --git a/src/neo/Wallets/Wallet.cs b/src/neo/Wallets/Wallet.cs index 603c6a50a6..18974c1ade 100644 --- a/src/neo/Wallets/Wallet.cs +++ b/src/neo/Wallets/Wallet.cs @@ -341,7 +341,7 @@ private Transaction MakeTransaction(StoreView snapshot, byte[] script, Signer[] Version = 0, Nonce = (uint)rand.Next(), Script = script, - ValidUntilBlock = snapshot.Height + Transaction.MaxValidUntilBlockIncrement, + ValidUntilBlock = snapshot.Height + ProtocolSettings.Default.MaxValidUntilBlockIncrement, Signers = GetSigners(account, cosigners), Attributes = attributes, }; diff --git a/tests/neo.UnitTests/SmartContract/UT_Syscalls.cs b/tests/neo.UnitTests/SmartContract/UT_Syscalls.cs index 654b686160..b69c5f4759 100644 --- a/tests/neo.UnitTests/SmartContract/UT_Syscalls.cs +++ b/tests/neo.UnitTests/SmartContract/UT_Syscalls.cs @@ -71,7 +71,7 @@ public void System_Blockchain_GetBlock() // Not traceable block var height = snapshot.BlockHashIndex.GetAndChange(); - height.Index = block.Index + Transaction.MaxValidUntilBlockIncrement; + height.Index = block.Index + ProtocolSettings.Default.MaxTraceableBlocks; var blocks = snapshot.Blocks; var txs = snapshot.Transactions; From b5dc6bb5d652cd26d62723a27217139647f79e4d Mon Sep 17 00:00:00 2001 From: Shargon Date: Tue, 3 Nov 2020 11:51:13 +0100 Subject: [PATCH 2/3] Add comments --- src/neo/ProtocolSettings.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/neo/ProtocolSettings.cs b/src/neo/ProtocolSettings.cs index 1894a618d7..8d1669e2dc 100644 --- a/src/neo/ProtocolSettings.cs +++ b/src/neo/ProtocolSettings.cs @@ -96,8 +96,8 @@ private ProtocolSettings(IConfigurationSection section) }; this.MillisecondsPerBlock = section.GetValue("MillisecondsPerBlock", 15000u); this.MemoryPoolMaxTransactions = Math.Max(1, section.GetValue("MemoryPoolMaxTransactions", 50_000)); - this.MaxValidUntilBlockIncrement = section.GetValue("MaxValidUntilBlockIncrement", 5760u); - this.MaxTraceableBlocks = section.GetValue("MaxTraceableBlocks", 2_102_400u); + this.MaxValidUntilBlockIncrement = section.GetValue("MaxValidUntilBlockIncrement", 5760u); // 24 hour + this.MaxTraceableBlocks = section.GetValue("MaxTraceableBlocks", 2_102_400u); // 365 days } } } From 7c54fa2105635a29fbbad5d73a49c2661e9cdc63 Mon Sep 17 00:00:00 2001 From: Qiao Jin Date: Wed, 4 Nov 2020 15:53:20 +0800 Subject: [PATCH 3/3] Revert MaxValidUntilBlockIncrement --- src/neo/Network/P2P/Payloads/Transaction.cs | 3 ++- src/neo/ProtocolSettings.cs | 4 +--- src/neo/Wallets/Wallet.cs | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/neo/Network/P2P/Payloads/Transaction.cs b/src/neo/Network/P2P/Payloads/Transaction.cs index 10b292065d..fabb005c9a 100644 --- a/src/neo/Network/P2P/Payloads/Transaction.cs +++ b/src/neo/Network/P2P/Payloads/Transaction.cs @@ -19,6 +19,7 @@ namespace Neo.Network.P2P.Payloads public class Transaction : IEquatable, IInventory, IInteroperable { public const int MaxTransactionSize = 102400; + public const uint MaxValidUntilBlockIncrement = 5760; // 24 hour /// /// Maximum number of attributes that can be contained within a transaction /// @@ -282,7 +283,7 @@ bool IInventory.Verify(StoreView snapshot) public virtual VerifyResult VerifyStateDependent(StoreView snapshot, TransactionVerificationContext context) { - if (ValidUntilBlock <= snapshot.Height || ValidUntilBlock > snapshot.Height + ProtocolSettings.Default.MaxValidUntilBlockIncrement) + if (ValidUntilBlock <= snapshot.Height || ValidUntilBlock > snapshot.Height + MaxValidUntilBlockIncrement) return VerifyResult.Expired; foreach (UInt160 hash in GetScriptHashesForVerifying(snapshot)) if (NativeContract.Policy.IsBlocked(snapshot, hash)) diff --git a/src/neo/ProtocolSettings.cs b/src/neo/ProtocolSettings.cs index 8d1669e2dc..a2673a35c3 100644 --- a/src/neo/ProtocolSettings.cs +++ b/src/neo/ProtocolSettings.cs @@ -15,7 +15,6 @@ public class ProtocolSettings public string[] SeedList { get; } public uint MillisecondsPerBlock { get; } public int MemoryPoolMaxTransactions { get; } - public uint MaxValidUntilBlockIncrement { get; } public uint MaxTraceableBlocks { get; } static ProtocolSettings _default; @@ -96,8 +95,7 @@ private ProtocolSettings(IConfigurationSection section) }; this.MillisecondsPerBlock = section.GetValue("MillisecondsPerBlock", 15000u); this.MemoryPoolMaxTransactions = Math.Max(1, section.GetValue("MemoryPoolMaxTransactions", 50_000)); - this.MaxValidUntilBlockIncrement = section.GetValue("MaxValidUntilBlockIncrement", 5760u); // 24 hour - this.MaxTraceableBlocks = section.GetValue("MaxTraceableBlocks", 2_102_400u); // 365 days + this.MaxTraceableBlocks = section.GetValue("MaxTraceableBlocks", 2_102_400u);// 365 days } } } diff --git a/src/neo/Wallets/Wallet.cs b/src/neo/Wallets/Wallet.cs index 18974c1ade..603c6a50a6 100644 --- a/src/neo/Wallets/Wallet.cs +++ b/src/neo/Wallets/Wallet.cs @@ -341,7 +341,7 @@ private Transaction MakeTransaction(StoreView snapshot, byte[] script, Signer[] Version = 0, Nonce = (uint)rand.Next(), Script = script, - ValidUntilBlock = snapshot.Height + ProtocolSettings.Default.MaxValidUntilBlockIncrement, + ValidUntilBlock = snapshot.Height + Transaction.MaxValidUntilBlockIncrement, Signers = GetSigners(account, cosigners), Attributes = attributes, };