Skip to content

Commit

Permalink
Merge pull request #811 from NethermindEth/eip_2028
Browse files Browse the repository at this point in the history
EIP 2028 Transaction data gas cost reduction #771
  • Loading branch information
tkstanczak authored Aug 21, 2019
2 parents 4f76065 + ac2fcdc commit a10c03d
Show file tree
Hide file tree
Showing 28 changed files with 150 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ public void Eip_transitions_loaded_correctly()
chainSpec.Parameters.Eip1283Transition = 12830L;
chainSpec.Parameters.Eip1283DisableTransition = 12831L;
chainSpec.Parameters.Eip1344Transition = 13440L;
chainSpec.Parameters.Eip2028Transition = 20280L;

ChainSpecBasedSpecProvider provider = new ChainSpecBasedSpecProvider(chainSpec);
Assert.AreEqual(long.MaxValue, provider.GetSpec(maxCodeTransition - 1).MaxCodeSize, "one before");
Expand Down Expand Up @@ -227,6 +228,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec0.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec0.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec0.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec0.IsEip2028Enabled);

IReleaseSpec releaseSpec1 = provider.GetSpec(1L);
Assert.AreEqual(maxCodeSize, releaseSpec1.MaxCodeSize);
Expand All @@ -252,6 +254,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec1.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec1.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec1.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec1.IsEip2028Enabled);

IReleaseSpec releaseSpec7 = provider.GetSpec(70L);
Assert.AreEqual(releaseSpec7.MaxCodeSize, maxCodeSize);
Expand All @@ -277,6 +280,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec7.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec7.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec7.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec7.IsEip2028Enabled);

IReleaseSpec releaseSpec100 = provider.GetSpec(1000L);
Assert.AreEqual(releaseSpec100.MaxCodeSize, maxCodeSize);
Expand All @@ -302,6 +306,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec100.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec100.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec100.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec100.IsEip2028Enabled);

IReleaseSpec releaseSpec140 = provider.GetSpec(1400L);
Assert.AreEqual(releaseSpec100.MaxCodeSize, maxCodeSize);
Expand All @@ -327,6 +332,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec140.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec140.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec140.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec140.IsEip2028Enabled);

IReleaseSpec releaseSpec145 = provider.GetSpec(1450L);
Assert.AreEqual(releaseSpec145.MaxCodeSize, maxCodeSize);
Expand All @@ -352,6 +358,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec145.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec145.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec145.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec145.IsEip2028Enabled);

IReleaseSpec releaseSpec150 = provider.GetSpec(1500L);
Assert.AreEqual(releaseSpec150.MaxCodeSize, maxCodeSize);
Expand All @@ -377,6 +384,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec150.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec150.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec150.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec150.IsEip2028Enabled);

IReleaseSpec releaseSpec155 = provider.GetSpec(1550L);
Assert.AreEqual(releaseSpec155.MaxCodeSize, maxCodeSize);
Expand All @@ -402,6 +410,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec155.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec155.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec155.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec155.IsEip2028Enabled);

IReleaseSpec releaseSpec158 = provider.GetSpec(1580L);
Assert.AreEqual(releaseSpec158.MaxCodeSize, maxCodeSize);
Expand All @@ -427,6 +436,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec158.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec158.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec158.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec158.IsEip2028Enabled);

IReleaseSpec releaseSpec160 = provider.GetSpec(1600L);
Assert.AreEqual(releaseSpec160.MaxCodeSize, maxCodeSize);
Expand All @@ -452,6 +462,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec160.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec160.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec160.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec160.IsEip2028Enabled);

IReleaseSpec releaseSpec170 = provider.GetSpec(1700L);
Assert.AreEqual(releaseSpec170.MaxCodeSize, maxCodeSize);
Expand All @@ -477,6 +488,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec170.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec170.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec170.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec170.IsEip2028Enabled);

IReleaseSpec releaseSpec196 = provider.GetSpec(1960L);
Assert.AreEqual(releaseSpec196.MaxCodeSize, maxCodeSize);
Expand All @@ -502,6 +514,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec196.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec196.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec196.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec196.IsEip2028Enabled);

IReleaseSpec releaseSpec211 = provider.GetSpec(2110L);
Assert.AreEqual(releaseSpec211.MaxCodeSize, maxCodeSize);
Expand All @@ -527,6 +540,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec211.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec211.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec211.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec211.IsEip2028Enabled);

IReleaseSpec releaseSpec214 = provider.GetSpec(2140L);
Assert.AreEqual(releaseSpec214.MaxCodeSize, maxCodeSize);
Expand All @@ -552,6 +566,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(false, releaseSpec214.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec214.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec214.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec214.IsEip2028Enabled);

IReleaseSpec releaseSpec658 = provider.GetSpec(6580L);
Assert.AreEqual(releaseSpec658.MaxCodeSize, maxCodeSize);
Expand All @@ -577,6 +592,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(true, releaseSpec658.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec658.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec658.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec658.IsEip2028Enabled);

IReleaseSpec releaseSpec1014 = provider.GetSpec(10140L);
Assert.AreEqual(releaseSpec1014.MaxCodeSize, maxCodeSize);
Expand All @@ -602,6 +618,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(true, releaseSpec1014.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec1014.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec1014.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec1014.IsEip2028Enabled);

IReleaseSpec releaseSpec1052 = provider.GetSpec(10520L);
Assert.AreEqual(releaseSpec1052.MaxCodeSize, maxCodeSize);
Expand All @@ -627,6 +644,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(true, releaseSpec1052.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec1052.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec1052.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec1052.IsEip2028Enabled);

IReleaseSpec releaseSpec1283 = provider.GetSpec(12830L);
Assert.AreEqual(releaseSpec1283.MaxCodeSize, maxCodeSize);
Expand All @@ -652,6 +670,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(true, releaseSpec1283.IsEip1234Enabled);
Assert.AreEqual(true, releaseSpec1283.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec1283.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec1283.IsEip2028Enabled);

IReleaseSpec releaseSpec1283Disabled = provider.GetSpec(12831L);
Assert.AreEqual(releaseSpec1283Disabled.MaxCodeSize, maxCodeSize);
Expand All @@ -677,6 +696,7 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(true, releaseSpec1283Disabled.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec1283Disabled.IsEip1283Enabled);
Assert.AreEqual(false, releaseSpec1283Disabled.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec1283Disabled.IsEip2028Enabled);

var releaseSpec1344 = provider.GetSpec(13440L);
Assert.AreEqual(releaseSpec1344.MaxCodeSize, maxCodeSize);
Expand All @@ -702,6 +722,33 @@ public void Eip_transitions_loaded_correctly()
Assert.AreEqual(true, releaseSpec1344.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec1344.IsEip1283Enabled);
Assert.AreEqual(true, releaseSpec1344.IsEip1344Enabled);
Assert.AreEqual(false, releaseSpec1344.IsEip2028Enabled);

var releaseSpec2028 = provider.GetSpec(20280L);
Assert.AreEqual(releaseSpec2028.MaxCodeSize, maxCodeSize);
Assert.AreEqual(true, releaseSpec2028.IsEip2Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip7Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip100Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip140Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip145Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip150Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip155Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip158Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip160Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip170Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip196Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip197Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip198Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip211Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip214Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip649Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip658Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip1014Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip1052Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip1234Enabled);
Assert.AreEqual(false, releaseSpec2028.IsEip1283Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip1344Enabled);
Assert.AreEqual(true, releaseSpec2028.IsEip2028Enabled);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,6 @@ public class ChainParameters
public long? Eip1283Transition { get; set; }
public long? Eip1283DisableTransition { get; set; }
public long? Eip1344Transition { get; set; }
public long? Eip2028Transition { get; set; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ private void BuildTransitions()
releaseSpec.IsEip1234Enabled = (_chainSpec.ConstantinopleBlockNumber ?? 0) <= releaseStartBlock;
releaseSpec.IsEip1283Enabled = (_chainSpec.Parameters.Eip1283Transition ?? long.MaxValue) <= releaseStartBlock && (_chainSpec.Parameters.Eip1283DisableTransition ?? long.MaxValue) > releaseStartBlock;
releaseSpec.IsEip1344Enabled = (_chainSpec.Parameters.Eip1344Transition ?? long.MaxValue) <= releaseStartBlock;
releaseSpec.IsEip2028Enabled = (_chainSpec.Parameters.Eip2028Transition ?? long.MaxValue) <= releaseStartBlock;

if (_chainSpec.Ethash != null)
{
Expand Down
1 change: 1 addition & 0 deletions src/Nethermind/Nethermind.Core/Specs/Forks/0_Olympic.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,6 @@ private Olympic()
public bool IsEip1283Enabled => false;
public bool IsEip1234Enabled => false;
public bool IsEip1344Enabled => false;
public bool IsEip2028Enabled => false;
}
}
1 change: 1 addition & 0 deletions src/Nethermind/Nethermind.Core/Specs/Forks/1_Frontier.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,6 @@ private Frontier()
public bool IsEip1283Enabled => false;
public bool IsEip1234Enabled => false;
public bool IsEip1344Enabled => false;
public bool IsEip2028Enabled => false;
}
}
1 change: 1 addition & 0 deletions src/Nethermind/Nethermind.Core/Specs/Forks/2_Homestead.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,6 @@ private Homestead()
public bool IsEip1283Enabled => false;
public bool IsEip1234Enabled => false;
public bool IsEip1344Enabled => false;
public bool IsEip2028Enabled => false;
}
}
1 change: 1 addition & 0 deletions src/Nethermind/Nethermind.Core/Specs/Forks/3_Dao.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,6 @@ private Dao()
public bool IsEip1283Enabled => false;
public bool IsEip1234Enabled => false;
public bool IsEip1344Enabled => false;
public bool IsEip2028Enabled => false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,6 @@ private TangerineWhistle()
public bool IsEip1283Enabled => false;
public bool IsEip1234Enabled => false;
public bool IsEip1344Enabled => false;
public bool IsEip2028Enabled => false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,6 @@ private SpuriousDragon()
public bool IsEip1283Enabled => false;
public bool IsEip1234Enabled => false;
public bool IsEip1344Enabled => false;
public bool IsEip2028Enabled => false;
}
}
1 change: 1 addition & 0 deletions src/Nethermind/Nethermind.Core/Specs/Forks/6_Byzantium.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,6 @@ private Byzantium()
public bool IsEip1283Enabled => false;
public bool IsEip1234Enabled => false;
public bool IsEip1344Enabled => false;
public bool IsEip2028Enabled => false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,6 @@ private Constantinople()
public bool IsEip1283Enabled => true;
public bool IsEip1234Enabled => true;
public bool IsEip1344Enabled => false;
public bool IsEip2028Enabled => false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,6 @@ private ConstantinopleFix()
public bool IsEip1283Enabled => false;
public bool IsEip1234Enabled => true;
public bool IsEip1344Enabled => false;
public bool IsEip2028Enabled => false;
}
}
1 change: 1 addition & 0 deletions src/Nethermind/Nethermind.Core/Specs/Forks/9_Istanbul.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,6 @@ private Istanbul()
public bool IsEip1283Enabled => false;
public bool IsEip1234Enabled => true;
public bool IsEip1344Enabled => true;
public bool IsEip2028Enabled => true;
}
}
5 changes: 5 additions & 0 deletions src/Nethermind/Nethermind.Core/Specs/IReleaseSpec.cs
Original file line number Diff line number Diff line change
Expand Up @@ -166,5 +166,10 @@ public interface IReleaseSpec
/// Istanbul ChainID opcode
/// </summary>
bool IsEip1344Enabled { get; }

/// <summary>
/// Transaction data gas cost reduction
/// </summary>
bool IsEip2028Enabled { get; }
}
}
1 change: 1 addition & 0 deletions src/Nethermind/Nethermind.Core/Specs/ReleaseSpec.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,5 +53,6 @@ public class ReleaseSpec : IReleaseSpec
public bool IsEip1283Enabled { get; set; }
public bool IsEip1234Enabled { get; set; }
public bool IsEip1344Enabled { get; set; }
public bool IsEip2028Enabled { get; set; }
}
}
4 changes: 0 additions & 4 deletions src/Nethermind/Nethermind.Evm.Test/CmpTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,10 @@
* along with the Nethermind. If not, see <http://www.gnu.org/licenses/>.
*/

using System;
using System.Linq;
using Nethermind.Core;
using Nethermind.Core.Crypto;
using Nethermind.Core.Extensions;
using Nethermind.Core.Specs;
using Nethermind.Core.Test.Builders;
using Nethermind.Dirichlet.Numerics;
using Nethermind.Evm.Tracing;
using NUnit.Framework;

Expand Down
1 change: 0 additions & 1 deletion src/Nethermind/Nethermind.Evm.Test/CoinbaseTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
using Nethermind.Core;
using Nethermind.Core.Specs;
using Nethermind.Core.Test.Builders;
using Nethermind.Dirichlet.Numerics;
using NUnit.Framework;

namespace Nethermind.Evm.Test
Expand Down
2 changes: 0 additions & 2 deletions src/Nethermind/Nethermind.Evm.Test/Eip1014Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,11 @@
*/

using System;
using System.Linq;
using Nethermind.Core;
using Nethermind.Core.Crypto;
using Nethermind.Core.Extensions;
using Nethermind.Core.Specs;
using Nethermind.Core.Test.Builders;
using Nethermind.Dirichlet.Numerics;
using NUnit.Framework;

namespace Nethermind.Evm.Test
Expand Down
2 changes: 0 additions & 2 deletions src/Nethermind/Nethermind.Evm.Test/Eip1283Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,8 @@
*/

using System;
using Nethermind.Core;
using Nethermind.Core.Extensions;
using Nethermind.Core.Specs;
using Nethermind.Dirichlet.Numerics;
using Nethermind.Store;
using NUnit.Framework;

Expand Down
2 changes: 0 additions & 2 deletions src/Nethermind/Nethermind.Evm.Test/Eip145Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,8 @@
* along with the Nethermind. If not, see <http://www.gnu.org/licenses/>.
*/

using Nethermind.Core;
using Nethermind.Core.Extensions;
using Nethermind.Core.Specs;
using Nethermind.Dirichlet.Numerics;
using Nethermind.Evm.Tracing;
using NUnit.Framework;

Expand Down
Loading

0 comments on commit a10c03d

Please sign in to comment.