From 5626a3ac6a16b1a9de92c7ef3d5e37885690b852 Mon Sep 17 00:00:00 2001 From: Erik van den Brink Date: Wed, 20 Nov 2019 10:47:11 +0100 Subject: [PATCH 01/13] apply strict enum checking --- neo/Consensus/ChangeView.cs | 2 +- neo/Consensus/ConsensusMessage.cs | 2 +- neo/Helper.cs | 29 +++++++++++++++++++ neo/Network/P2P/Message.cs | 4 +-- neo/Network/P2P/Payloads/InvPayload.cs | 4 +-- .../P2P/Payloads/TransactionAttribute.cs | 6 ++-- .../Manifest/ContractParameterDefinition.cs | 2 +- neo/Wallets/SQLite/VerificationContract.cs | 2 +- neo/neo.csproj | 2 +- 9 files changed, 39 insertions(+), 14 deletions(-) diff --git a/neo/Consensus/ChangeView.cs b/neo/Consensus/ChangeView.cs index 607e44cfd5..02b0d6fab9 100644 --- a/neo/Consensus/ChangeView.cs +++ b/neo/Consensus/ChangeView.cs @@ -31,7 +31,7 @@ public override void Deserialize(BinaryReader reader) { base.Deserialize(reader); Timestamp = reader.ReadUInt64(); - Reason = (ChangeViewReason)reader.ReadByte(); + Reason = Helper.StrictEnum(reader.ReadByte()); } public override void Serialize(BinaryWriter writer) diff --git a/neo/Consensus/ConsensusMessage.cs b/neo/Consensus/ConsensusMessage.cs index af16db03e3..beabcbd79e 100644 --- a/neo/Consensus/ConsensusMessage.cs +++ b/neo/Consensus/ConsensusMessage.cs @@ -24,7 +24,7 @@ protected ConsensusMessage(ConsensusMessageType type) public virtual void Deserialize(BinaryReader reader) { - if (Type != (ConsensusMessageType)reader.ReadByte()) + if (Type != Helper.StrictEnum(reader.ReadByte())) throw new FormatException(); ViewNumber = reader.ReadByte(); } diff --git a/neo/Helper.cs b/neo/Helper.cs index fa3b384a35..26451b335a 100644 --- a/neo/Helper.cs +++ b/neo/Helper.cs @@ -320,5 +320,34 @@ public static IConfigurationRoot LoadConfig(string config) .AddJsonFile(configFile, true) .Build(); } + + public static T StrictEnum(int value) where T: Enum + { + T state = (T)Enum.ToObject(typeof(T), value); + if (!EnumValueCache.definedValues.Contains(state)) + throw new FormatException(); + return state; + } + + public static T StrictEnum(byte value) where T : Enum + { + T state = (T)Enum.ToObject(typeof(T), value); + if (!EnumValueCache.definedValues.Contains(state)) + throw new FormatException(); + return state; + } + + public static T StrictEnumParse(string value) where T: Enum + { + T state = (T)Enum.Parse(typeof(T), value); + if (!EnumValueCache.definedValues.Contains(state)) + throw new FormatException(); + return state; + } + + private static class EnumValueCache where T : Enum + { + public static readonly HashSet definedValues = new HashSet((T[])Enum.GetValues(typeof(T))); + } } } diff --git a/neo/Network/P2P/Message.cs b/neo/Network/P2P/Message.cs index 38bc2bf6c1..a62ec2395a 100644 --- a/neo/Network/P2P/Message.cs +++ b/neo/Network/P2P/Message.cs @@ -101,7 +101,7 @@ private void DecompressPayload() void ISerializable.Deserialize(BinaryReader reader) { Flags = (MessageFlags)reader.ReadByte(); - Command = (MessageCommand)reader.ReadByte(); + Command = Neo.Helper.StrictEnum(reader.ReadByte()); _payload_compressed = reader.ReadVarBytes(PayloadMaxSize); DecompressPayload(); } @@ -149,7 +149,7 @@ internal static int TryDeserialize(ByteString data, out Message msg) msg = new Message() { Flags = flags, - Command = (MessageCommand)header[1], + Command = Neo.Helper.StrictEnum(header[1]), _payload_compressed = length <= 0 ? new byte[0] : data.Slice(payloadIndex, (int)length).ToArray() }; msg.DecompressPayload(); diff --git a/neo/Network/P2P/Payloads/InvPayload.cs b/neo/Network/P2P/Payloads/InvPayload.cs index 613d280234..64dff0fbb9 100644 --- a/neo/Network/P2P/Payloads/InvPayload.cs +++ b/neo/Network/P2P/Payloads/InvPayload.cs @@ -36,9 +36,7 @@ public static IEnumerable CreateGroup(InventoryType type, UInt256[] void ISerializable.Deserialize(BinaryReader reader) { - Type = (InventoryType)reader.ReadByte(); - if (!Enum.IsDefined(typeof(InventoryType), Type)) - throw new FormatException(); + Type = Neo.Helper.StrictEnum(reader.ReadByte()); Hashes = reader.ReadSerializableArray(MaxHashesCount); } diff --git a/neo/Network/P2P/Payloads/TransactionAttribute.cs b/neo/Network/P2P/Payloads/TransactionAttribute.cs index fa92010004..555efcfffe 100644 --- a/neo/Network/P2P/Payloads/TransactionAttribute.cs +++ b/neo/Network/P2P/Payloads/TransactionAttribute.cs @@ -14,9 +14,7 @@ public class TransactionAttribute : ISerializable void ISerializable.Deserialize(BinaryReader reader) { - Usage = (TransactionAttributeUsage)reader.ReadByte(); - if (!Enum.IsDefined(typeof(TransactionAttributeUsage), Usage)) - throw new FormatException(); + Usage = Neo.Helper.StrictEnum(reader.ReadByte()); Data = reader.ReadVarBytes(252); } @@ -37,7 +35,7 @@ public JObject ToJson() public static TransactionAttribute FromJson(JObject json) { TransactionAttribute transactionAttribute = new TransactionAttribute(); - transactionAttribute.Usage = (TransactionAttributeUsage)(byte.Parse(json["usage"].AsString())); + transactionAttribute.Usage = Neo.Helper.StrictEnum(byte.Parse(json["usage"].AsString())); transactionAttribute.Data = Convert.FromBase64String(json["data"].AsString()); return transactionAttribute; } diff --git a/neo/SmartContract/Manifest/ContractParameterDefinition.cs b/neo/SmartContract/Manifest/ContractParameterDefinition.cs index 3f184d6ba8..c972c9fac2 100644 --- a/neo/SmartContract/Manifest/ContractParameterDefinition.cs +++ b/neo/SmartContract/Manifest/ContractParameterDefinition.cs @@ -26,7 +26,7 @@ public static ContractParameterDefinition FromJson(JObject json) return new ContractParameterDefinition { Name = json["name"].AsString(), - Type = (ContractParameterType)Enum.Parse(typeof(ContractParameterType), json["type"].AsString()), + Type = Neo.Helper.StrictEnumParse(json["type"].AsString()) }; } diff --git a/neo/Wallets/SQLite/VerificationContract.cs b/neo/Wallets/SQLite/VerificationContract.cs index 587a0fe468..3b159ec2f8 100644 --- a/neo/Wallets/SQLite/VerificationContract.cs +++ b/neo/Wallets/SQLite/VerificationContract.cs @@ -14,7 +14,7 @@ public class VerificationContract : SmartContract.Contract, IEquatable(); - ParameterList = reader.ReadVarBytes().Select(p => (ContractParameterType)p).ToArray(); + ParameterList = reader.ReadVarBytes().Select(p => Neo.Helper.StrictEnum(p)).ToArray(); Script = reader.ReadVarBytes(); } diff --git a/neo/neo.csproj b/neo/neo.csproj index 98824eb526..054467d541 100644 --- a/neo/neo.csproj +++ b/neo/neo.csproj @@ -17,7 +17,7 @@ Neo The Neo Project Neo - preview + 7.3 From 39e904227a4d1a4ec0fe6c5b1c6880e5bd00b227 Mon Sep 17 00:00:00 2001 From: Erik van den Brink Date: Wed, 20 Nov 2019 10:56:12 +0100 Subject: [PATCH 02/13] i hate Windows --- neo/Helper.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/neo/Helper.cs b/neo/Helper.cs index 26451b335a..712c048efd 100644 --- a/neo/Helper.cs +++ b/neo/Helper.cs @@ -321,7 +321,7 @@ public static IConfigurationRoot LoadConfig(string config) .Build(); } - public static T StrictEnum(int value) where T: Enum + public static T StrictEnum(int value) where T : Enum { T state = (T)Enum.ToObject(typeof(T), value); if (!EnumValueCache.definedValues.Contains(state)) @@ -337,7 +337,7 @@ public static IConfigurationRoot LoadConfig(string config) return state; } - public static T StrictEnumParse(string value) where T: Enum + public static T StrictEnumParse(string value) where T : Enum { T state = (T)Enum.Parse(typeof(T), value); if (!EnumValueCache.definedValues.Contains(state)) From 2f79770e09c011998bc0078dfa0e0b8d011144b2 Mon Sep 17 00:00:00 2001 From: Erik van den Brink Date: Wed, 20 Nov 2019 11:54:08 +0100 Subject: [PATCH 03/13] process feedback --- neo.UnitTests/UT_Helper.cs | 15 +++++++++++++++ neo/Helper.cs | 16 ---------------- neo/Network/P2P/Payloads/Cosigner.cs | 2 +- .../Manifest/ContractParameterDefinition.cs | 2 +- 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/neo.UnitTests/UT_Helper.cs b/neo.UnitTests/UT_Helper.cs index 45da27146c..9317e3290e 100644 --- a/neo.UnitTests/UT_Helper.cs +++ b/neo.UnitTests/UT_Helper.cs @@ -151,6 +151,16 @@ public void TestUnmapForIPEndPoin() endPoint2.Unmap().Should().Be(endPoint); } + [TestMethod] + public void TestStrictEnum() + { + TestEnum te = Helper.StrictEnum(0x1); + te.Should().Be(TestEnum.ENTRY1); + + Action action = () => Helper.StrictEnum(0x2); + action.Should().Throw(); + } + [TestMethod] public void TestWeightedAverage() { @@ -282,6 +292,11 @@ private static void CheckArgumentNullException(double start, double end, Func p.Weight, p => p.Weight); action.Should().Throw(); } + + internal enum TestEnum : byte + { + ENTRY1 = 0x1 + } } class Foo diff --git a/neo/Helper.cs b/neo/Helper.cs index 712c048efd..a8954cc25b 100644 --- a/neo/Helper.cs +++ b/neo/Helper.cs @@ -321,14 +321,6 @@ public static IConfigurationRoot LoadConfig(string config) .Build(); } - public static T StrictEnum(int value) where T : Enum - { - T state = (T)Enum.ToObject(typeof(T), value); - if (!EnumValueCache.definedValues.Contains(state)) - throw new FormatException(); - return state; - } - public static T StrictEnum(byte value) where T : Enum { T state = (T)Enum.ToObject(typeof(T), value); @@ -337,14 +329,6 @@ public static IConfigurationRoot LoadConfig(string config) return state; } - public static T StrictEnumParse(string value) where T : Enum - { - T state = (T)Enum.Parse(typeof(T), value); - if (!EnumValueCache.definedValues.Contains(state)) - throw new FormatException(); - return state; - } - private static class EnumValueCache where T : Enum { public static readonly HashSet definedValues = new HashSet((T[])Enum.GetValues(typeof(T))); diff --git a/neo/Network/P2P/Payloads/Cosigner.cs b/neo/Network/P2P/Payloads/Cosigner.cs index 99672ecf4d..3af28176b8 100644 --- a/neo/Network/P2P/Payloads/Cosigner.cs +++ b/neo/Network/P2P/Payloads/Cosigner.cs @@ -31,7 +31,7 @@ public Cosigner() void ISerializable.Deserialize(BinaryReader reader) { Account = reader.ReadSerializable(); - Scopes = (WitnessScope)reader.ReadByte(); + Scopes = Neo.Helper.StrictEnum(reader.ReadByte()); AllowedContracts = Scopes.HasFlag(WitnessScope.CustomContracts) ? reader.ReadSerializableArray(MaxSubitems) : new UInt160[0]; diff --git a/neo/SmartContract/Manifest/ContractParameterDefinition.cs b/neo/SmartContract/Manifest/ContractParameterDefinition.cs index c972c9fac2..18e10db8aa 100644 --- a/neo/SmartContract/Manifest/ContractParameterDefinition.cs +++ b/neo/SmartContract/Manifest/ContractParameterDefinition.cs @@ -26,7 +26,7 @@ public static ContractParameterDefinition FromJson(JObject json) return new ContractParameterDefinition { Name = json["name"].AsString(), - Type = Neo.Helper.StrictEnumParse(json["type"].AsString()) + Type = (ContractParameterType)Enum.Parse(typeof(ContractParameterType), json["type"].AsString()) }; } From 81a994b258baa0bc34e0f94689eae01c1234e520 Mon Sep 17 00:00:00 2001 From: Shargon Date: Wed, 20 Nov 2019 11:59:00 +0100 Subject: [PATCH 04/13] Update neo.csproj --- neo/neo.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/neo/neo.csproj b/neo/neo.csproj index 054467d541..98824eb526 100644 --- a/neo/neo.csproj +++ b/neo/neo.csproj @@ -17,7 +17,7 @@ Neo The Neo Project Neo - 7.3 + preview From bd1dee2105809391d55802cbfe5cec37993fe48a Mon Sep 17 00:00:00 2001 From: Erik van den Brink Date: Wed, 20 Nov 2019 15:01:00 +0100 Subject: [PATCH 05/13] change exception type --- neo.UnitTests/UT_Helper.cs | 2 +- neo/Helper.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/neo.UnitTests/UT_Helper.cs b/neo.UnitTests/UT_Helper.cs index 9317e3290e..d6d0f00104 100644 --- a/neo.UnitTests/UT_Helper.cs +++ b/neo.UnitTests/UT_Helper.cs @@ -158,7 +158,7 @@ public void TestStrictEnum() te.Should().Be(TestEnum.ENTRY1); Action action = () => Helper.StrictEnum(0x2); - action.Should().Throw(); + action.Should().Throw(); } [TestMethod] diff --git a/neo/Helper.cs b/neo/Helper.cs index a8954cc25b..d5b730e86b 100644 --- a/neo/Helper.cs +++ b/neo/Helper.cs @@ -325,7 +325,7 @@ public static IConfigurationRoot LoadConfig(string config) { T state = (T)Enum.ToObject(typeof(T), value); if (!EnumValueCache.definedValues.Contains(state)) - throw new FormatException(); + throw new ArgumentOutOfRangeException(); return state; } From 510a06cedda3cae48b3bda39a22a03e182089749 Mon Sep 17 00:00:00 2001 From: Erik van den Brink Date: Thu, 21 Nov 2019 11:15:26 +0100 Subject: [PATCH 06/13] remove helper, only use Enum.IsDefined --- neo.UnitTests/UT_Helper.cs | 15 --------------- neo/Consensus/ChangeView.cs | 5 ++++- neo/Consensus/ConsensusMessage.cs | 6 +++++- neo/Helper.cs | 13 ------------- neo/Network/P2P/Message.cs | 4 +++- neo/Network/P2P/Payloads/Cosigner.cs | 4 +++- neo/Network/P2P/Payloads/InvPayload.cs | 4 +++- neo/Network/P2P/Payloads/TransactionAttribute.cs | 8 ++++++-- neo/Wallets/SQLite/VerificationContract.cs | 7 ++++++- 9 files changed, 30 insertions(+), 36 deletions(-) diff --git a/neo.UnitTests/UT_Helper.cs b/neo.UnitTests/UT_Helper.cs index d6d0f00104..45da27146c 100644 --- a/neo.UnitTests/UT_Helper.cs +++ b/neo.UnitTests/UT_Helper.cs @@ -151,16 +151,6 @@ public void TestUnmapForIPEndPoin() endPoint2.Unmap().Should().Be(endPoint); } - [TestMethod] - public void TestStrictEnum() - { - TestEnum te = Helper.StrictEnum(0x1); - te.Should().Be(TestEnum.ENTRY1); - - Action action = () => Helper.StrictEnum(0x2); - action.Should().Throw(); - } - [TestMethod] public void TestWeightedAverage() { @@ -292,11 +282,6 @@ private static void CheckArgumentNullException(double start, double end, Func p.Weight, p => p.Weight); action.Should().Throw(); } - - internal enum TestEnum : byte - { - ENTRY1 = 0x1 - } } class Foo diff --git a/neo/Consensus/ChangeView.cs b/neo/Consensus/ChangeView.cs index 02b0d6fab9..608ed9897a 100644 --- a/neo/Consensus/ChangeView.cs +++ b/neo/Consensus/ChangeView.cs @@ -1,3 +1,4 @@ +using System; using System.IO; namespace Neo.Consensus @@ -31,7 +32,9 @@ public override void Deserialize(BinaryReader reader) { base.Deserialize(reader); Timestamp = reader.ReadUInt64(); - Reason = Helper.StrictEnum(reader.ReadByte()); + Reason = (ChangeViewReason)reader.ReadByte(); + if (!Enum.IsDefined(typeof(ChangeViewReason), Reason)) + throw new FormatException(); } public override void Serialize(BinaryWriter writer) diff --git a/neo/Consensus/ConsensusMessage.cs b/neo/Consensus/ConsensusMessage.cs index beabcbd79e..f07a4ea068 100644 --- a/neo/Consensus/ConsensusMessage.cs +++ b/neo/Consensus/ConsensusMessage.cs @@ -24,7 +24,11 @@ protected ConsensusMessage(ConsensusMessageType type) public virtual void Deserialize(BinaryReader reader) { - if (Type != Helper.StrictEnum(reader.ReadByte())) + ConsensusMessageType cmt = (ConsensusMessageType)reader.ReadByte(); + if (!Enum.IsDefined(typeof(ConsensusMessageType), cmt)) + throw new FormatException(); + + if (Type != cmt) throw new FormatException(); ViewNumber = reader.ReadByte(); } diff --git a/neo/Helper.cs b/neo/Helper.cs index d5b730e86b..fa3b384a35 100644 --- a/neo/Helper.cs +++ b/neo/Helper.cs @@ -320,18 +320,5 @@ public static IConfigurationRoot LoadConfig(string config) .AddJsonFile(configFile, true) .Build(); } - - public static T StrictEnum(byte value) where T : Enum - { - T state = (T)Enum.ToObject(typeof(T), value); - if (!EnumValueCache.definedValues.Contains(state)) - throw new ArgumentOutOfRangeException(); - return state; - } - - private static class EnumValueCache where T : Enum - { - public static readonly HashSet definedValues = new HashSet((T[])Enum.GetValues(typeof(T))); - } } } diff --git a/neo/Network/P2P/Message.cs b/neo/Network/P2P/Message.cs index a62ec2395a..885ab42641 100644 --- a/neo/Network/P2P/Message.cs +++ b/neo/Network/P2P/Message.cs @@ -101,7 +101,9 @@ private void DecompressPayload() void ISerializable.Deserialize(BinaryReader reader) { Flags = (MessageFlags)reader.ReadByte(); - Command = Neo.Helper.StrictEnum(reader.ReadByte()); + Command = (MessageCommand)reader.ReadByte(); + if (!Enum.IsDefined(typeof(MessageCommand), Command)) + throw new FormatException(); _payload_compressed = reader.ReadVarBytes(PayloadMaxSize); DecompressPayload(); } diff --git a/neo/Network/P2P/Payloads/Cosigner.cs b/neo/Network/P2P/Payloads/Cosigner.cs index 3af28176b8..5eb817ba94 100644 --- a/neo/Network/P2P/Payloads/Cosigner.cs +++ b/neo/Network/P2P/Payloads/Cosigner.cs @@ -31,7 +31,9 @@ public Cosigner() void ISerializable.Deserialize(BinaryReader reader) { Account = reader.ReadSerializable(); - Scopes = Neo.Helper.StrictEnum(reader.ReadByte()); + Scopes = (WitnessScope)reader.ReadByte(); + if (!Enum.IsDefined(typeof(WitnessScope), Scopes)) + throw new FormatException(); AllowedContracts = Scopes.HasFlag(WitnessScope.CustomContracts) ? reader.ReadSerializableArray(MaxSubitems) : new UInt160[0]; diff --git a/neo/Network/P2P/Payloads/InvPayload.cs b/neo/Network/P2P/Payloads/InvPayload.cs index 64dff0fbb9..613d280234 100644 --- a/neo/Network/P2P/Payloads/InvPayload.cs +++ b/neo/Network/P2P/Payloads/InvPayload.cs @@ -36,7 +36,9 @@ public static IEnumerable CreateGroup(InventoryType type, UInt256[] void ISerializable.Deserialize(BinaryReader reader) { - Type = Neo.Helper.StrictEnum(reader.ReadByte()); + Type = (InventoryType)reader.ReadByte(); + if (!Enum.IsDefined(typeof(InventoryType), Type)) + throw new FormatException(); Hashes = reader.ReadSerializableArray(MaxHashesCount); } diff --git a/neo/Network/P2P/Payloads/TransactionAttribute.cs b/neo/Network/P2P/Payloads/TransactionAttribute.cs index 555efcfffe..d4c31b2e49 100644 --- a/neo/Network/P2P/Payloads/TransactionAttribute.cs +++ b/neo/Network/P2P/Payloads/TransactionAttribute.cs @@ -14,7 +14,9 @@ public class TransactionAttribute : ISerializable void ISerializable.Deserialize(BinaryReader reader) { - Usage = Neo.Helper.StrictEnum(reader.ReadByte()); + Usage = (TransactionAttributeUsage)reader.ReadByte(); + if (!Enum.IsDefined(typeof(TransactionAttributeUsage), Usage)) + throw new FormatException(); Data = reader.ReadVarBytes(252); } @@ -35,7 +37,9 @@ public JObject ToJson() public static TransactionAttribute FromJson(JObject json) { TransactionAttribute transactionAttribute = new TransactionAttribute(); - transactionAttribute.Usage = Neo.Helper.StrictEnum(byte.Parse(json["usage"].AsString())); + transactionAttribute.Usage = (TransactionAttributeUsage)byte.Parse(json["usage"].AsString()); + if (!Enum.IsDefined(typeof(TransactionAttributeUsage), transactionAttribute.Usage)) + throw new ArgumentException(); transactionAttribute.Data = Convert.FromBase64String(json["data"].AsString()); return transactionAttribute; } diff --git a/neo/Wallets/SQLite/VerificationContract.cs b/neo/Wallets/SQLite/VerificationContract.cs index 3b159ec2f8..82b73937f8 100644 --- a/neo/Wallets/SQLite/VerificationContract.cs +++ b/neo/Wallets/SQLite/VerificationContract.cs @@ -14,7 +14,12 @@ public class VerificationContract : SmartContract.Contract, IEquatable(); - ParameterList = reader.ReadVarBytes().Select(p => Neo.Helper.StrictEnum(p)).ToArray(); + ParameterList = reader.ReadVarBytes().Select(p => (ContractParameterType)p).ToArray(); + foreach (var parameter in ParameterList) + { + if (!Enum.IsDefined(typeof(ContractParameterType), parameter)) + throw new FormatException(); + } Script = reader.ReadVarBytes(); } From fb79e87c8302674b227e8ae4ec59beba2ed856c4 Mon Sep 17 00:00:00 2001 From: Erik van den Brink Date: Thu, 21 Nov 2019 11:33:54 +0100 Subject: [PATCH 07/13] missed refactor --- neo/Network/P2P/Message.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/neo/Network/P2P/Message.cs b/neo/Network/P2P/Message.cs index 885ab42641..72a6d3b9d8 100644 --- a/neo/Network/P2P/Message.cs +++ b/neo/Network/P2P/Message.cs @@ -151,9 +151,11 @@ internal static int TryDeserialize(ByteString data, out Message msg) msg = new Message() { Flags = flags, - Command = Neo.Helper.StrictEnum(header[1]), + Command = (MessageCommand)header[1], _payload_compressed = length <= 0 ? new byte[0] : data.Slice(payloadIndex, (int)length).ToArray() }; + if (!Enum.IsDefined(typeof(MessageCommand), msg.Command)) + throw new FormatException(); msg.DecompressPayload(); return payloadIndex + (int)length; From bab1c8f105892c3f7006ab3e269bc2b356640590 Mon Sep 17 00:00:00 2001 From: Shargon Date: Thu, 21 Nov 2019 17:54:52 +0100 Subject: [PATCH 08/13] Optimize VerificationContract --- neo/Wallets/SQLite/VerificationContract.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/neo/Wallets/SQLite/VerificationContract.cs b/neo/Wallets/SQLite/VerificationContract.cs index 82b73937f8..b195f50ca5 100644 --- a/neo/Wallets/SQLite/VerificationContract.cs +++ b/neo/Wallets/SQLite/VerificationContract.cs @@ -14,12 +14,13 @@ public class VerificationContract : SmartContract.Contract, IEquatable(); - ParameterList = reader.ReadVarBytes().Select(p => (ContractParameterType)p).ToArray(); - foreach (var parameter in ParameterList) + ParameterList = reader.ReadVarBytes().Select(p => { - if (!Enum.IsDefined(typeof(ContractParameterType), parameter)) + var ret = (ContractParameterType)p; + if (!Enum.IsDefined(typeof(ContractParameterType), ret)) throw new FormatException(); - } + return ret; + }).ToArray(); Script = reader.ReadVarBytes(); } From 3421ec756ecb1ce8879d8fa4de3e704d0f04e029 Mon Sep 17 00:00:00 2001 From: Erik van den Brink Date: Fri, 22 Nov 2019 11:11:55 +0100 Subject: [PATCH 09/13] remove checking for flag enum, change check location to constructor of ConsensusMessage --- neo/Consensus/ConsensusMessage.cs | 8 +++----- neo/Network/P2P/Payloads/Cosigner.cs | 2 -- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/neo/Consensus/ConsensusMessage.cs b/neo/Consensus/ConsensusMessage.cs index f07a4ea068..4976e2ad66 100644 --- a/neo/Consensus/ConsensusMessage.cs +++ b/neo/Consensus/ConsensusMessage.cs @@ -19,16 +19,14 @@ public abstract class ConsensusMessage : ISerializable protected ConsensusMessage(ConsensusMessageType type) { + if (!Enum.IsDefined(typeof(ConsensusMessageType), type)) + throw new ArgumentException(); this.Type = type; } public virtual void Deserialize(BinaryReader reader) { - ConsensusMessageType cmt = (ConsensusMessageType)reader.ReadByte(); - if (!Enum.IsDefined(typeof(ConsensusMessageType), cmt)) - throw new FormatException(); - - if (Type != cmt) + if (Type != (ConsensusMessageType)reader.ReadByte()) throw new FormatException(); ViewNumber = reader.ReadByte(); } diff --git a/neo/Network/P2P/Payloads/Cosigner.cs b/neo/Network/P2P/Payloads/Cosigner.cs index 5eb817ba94..99672ecf4d 100644 --- a/neo/Network/P2P/Payloads/Cosigner.cs +++ b/neo/Network/P2P/Payloads/Cosigner.cs @@ -32,8 +32,6 @@ void ISerializable.Deserialize(BinaryReader reader) { Account = reader.ReadSerializable(); Scopes = (WitnessScope)reader.ReadByte(); - if (!Enum.IsDefined(typeof(WitnessScope), Scopes)) - throw new FormatException(); AllowedContracts = Scopes.HasFlag(WitnessScope.CustomContracts) ? reader.ReadSerializableArray(MaxSubitems) : new UInt160[0]; From ae0c79e41fb816c1f2efbecd6acc7984cd577e0f Mon Sep 17 00:00:00 2001 From: erikzhang Date: Fri, 22 Nov 2019 20:55:15 +0800 Subject: [PATCH 10/13] Update ConsensusMessage.cs --- neo/Consensus/ConsensusMessage.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/neo/Consensus/ConsensusMessage.cs b/neo/Consensus/ConsensusMessage.cs index 25bca91ec5..856ccdc72b 100644 --- a/neo/Consensus/ConsensusMessage.cs +++ b/neo/Consensus/ConsensusMessage.cs @@ -15,7 +15,7 @@ public abstract class ConsensusMessage : ISerializable protected ConsensusMessage(ConsensusMessageType type) { if (!Enum.IsDefined(typeof(ConsensusMessageType), type)) - throw new ArgumentException(); + throw new ArgumentOutOfRangeException(nameof(type)); this.Type = type; } From a162d0082a5c6940dd06d7fa313ad9ceb44df131 Mon Sep 17 00:00:00 2001 From: erikzhang Date: Fri, 22 Nov 2019 20:56:35 +0800 Subject: [PATCH 11/13] Update ContractParameterDefinition.cs --- neo/SmartContract/Manifest/ContractParameterDefinition.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/neo/SmartContract/Manifest/ContractParameterDefinition.cs b/neo/SmartContract/Manifest/ContractParameterDefinition.cs index 18e10db8aa..3f184d6ba8 100644 --- a/neo/SmartContract/Manifest/ContractParameterDefinition.cs +++ b/neo/SmartContract/Manifest/ContractParameterDefinition.cs @@ -26,7 +26,7 @@ public static ContractParameterDefinition FromJson(JObject json) return new ContractParameterDefinition { Name = json["name"].AsString(), - Type = (ContractParameterType)Enum.Parse(typeof(ContractParameterType), json["type"].AsString()) + Type = (ContractParameterType)Enum.Parse(typeof(ContractParameterType), json["type"].AsString()), }; } From 5105174fb8ec099535ff7de3ce3385c501be7f33 Mon Sep 17 00:00:00 2001 From: erikzhang Date: Tue, 26 Nov 2019 11:43:57 +0800 Subject: [PATCH 12/13] move projects --- neo.sln | 20 ++++++++++++++----- {neo => src/neo}/BigDecimal.cs | 0 {neo => src/neo}/Consensus/ChangeView.cs | 0 .../neo}/Consensus/ChangeViewReason.cs | 0 {neo => src/neo}/Consensus/Commit.cs | 0 .../neo}/Consensus/ConsensusContext.cs | 0 .../neo}/Consensus/ConsensusMessage.cs | 0 .../neo}/Consensus/ConsensusMessageType.cs | 0 .../neo}/Consensus/ConsensusService.cs | 0 {neo => src/neo}/Consensus/PrepareRequest.cs | 0 {neo => src/neo}/Consensus/PrepareResponse.cs | 0 ...ecoveryMessage.ChangeViewPayloadCompact.cs | 0 .../RecoveryMessage.CommitPayloadCompact.cs | 0 ...coveryMessage.PreparationPayloadCompact.cs | 0 {neo => src/neo}/Consensus/RecoveryMessage.cs | 0 {neo => src/neo}/Consensus/RecoveryRequest.cs | 0 {neo => src/neo}/Cryptography/Base58.cs | 0 {neo => src/neo}/Cryptography/BloomFilter.cs | 0 {neo => src/neo}/Cryptography/Crypto.cs | 0 {neo => src/neo}/Cryptography/ECC/ECCurve.cs | 0 {neo => src/neo}/Cryptography/ECC/ECDsa.cs | 0 .../neo}/Cryptography/ECC/ECFieldElement.cs | 0 {neo => src/neo}/Cryptography/ECC/ECPoint.cs | 0 {neo => src/neo}/Cryptography/Helper.cs | 0 {neo => src/neo}/Cryptography/MerkleTree.cs | 0 .../neo}/Cryptography/MerkleTreeNode.cs | 0 {neo => src/neo}/Cryptography/Murmur3.cs | 0 .../neo}/Cryptography/RIPEMD160Managed.cs | 0 {neo => src/neo}/Cryptography/SCrypt.cs | 0 {neo => src/neo}/Helper.cs | 0 {neo => src/neo}/IO/Actors/Idle.cs | 0 {neo => src/neo}/IO/Actors/PriorityMailbox.cs | 0 .../neo}/IO/Actors/PriorityMessageQueue.cs | 0 {neo => src/neo}/IO/ByteArrayComparer.cs | 0 {neo => src/neo}/IO/Caching/Cache.cs | 0 {neo => src/neo}/IO/Caching/CloneCache.cs | 0 {neo => src/neo}/IO/Caching/CloneMetaCache.cs | 0 {neo => src/neo}/IO/Caching/DataCache.cs | 0 {neo => src/neo}/IO/Caching/FIFOCache.cs | 0 {neo => src/neo}/IO/Caching/FIFOSet.cs | 0 {neo => src/neo}/IO/Caching/MetaDataCache.cs | 0 .../neo}/IO/Caching/OrderedDictionary.cs | 0 .../neo}/IO/Caching/ReflectionCache.cs | 0 .../IO/Caching/ReflectionCacheAttribute.cs | 0 {neo => src/neo}/IO/Caching/RelayCache.cs | 0 {neo => src/neo}/IO/Caching/TrackState.cs | 0 {neo => src/neo}/IO/Data/LevelDB/DB.cs | 0 {neo => src/neo}/IO/Data/LevelDB/Helper.cs | 0 {neo => src/neo}/IO/Data/LevelDB/Iterator.cs | 0 .../neo}/IO/Data/LevelDB/LevelDBException.cs | 0 {neo => src/neo}/IO/Data/LevelDB/Native.cs | 0 {neo => src/neo}/IO/Data/LevelDB/Options.cs | 0 .../neo}/IO/Data/LevelDB/ReadOptions.cs | 0 {neo => src/neo}/IO/Data/LevelDB/Slice.cs | 0 .../neo}/IO/Data/LevelDB/SliceBuilder.cs | 0 {neo => src/neo}/IO/Data/LevelDB/Snapshot.cs | 0 .../neo}/IO/Data/LevelDB/WriteBatch.cs | 0 .../neo}/IO/Data/LevelDB/WriteOptions.cs | 0 {neo => src/neo}/IO/Helper.cs | 0 {neo => src/neo}/IO/ICloneable.cs | 0 {neo => src/neo}/IO/ISerializable.cs | 0 {neo => src/neo}/IO/Json/JArray.cs | 0 {neo => src/neo}/IO/Json/JBoolean.cs | 0 {neo => src/neo}/IO/Json/JNumber.cs | 0 {neo => src/neo}/IO/Json/JObject.cs | 0 {neo => src/neo}/IO/Json/JString.cs | 0 .../neo}/IO/Wrappers/SerializableWrapper.cs | 0 {neo => src/neo}/IO/Wrappers/UInt32Wrapper.cs | 0 .../Ledger/Blockchain.ApplicationExecuted.cs | 0 {neo => src/neo}/Ledger/Blockchain.cs | 0 {neo => src/neo}/Ledger/ContractState.cs | 0 {neo => src/neo}/Ledger/HashIndexState.cs | 0 {neo => src/neo}/Ledger/HeaderHashList.cs | 0 {neo => src/neo}/Ledger/MemoryPool.cs | 0 {neo => src/neo}/Ledger/PoolItem.cs | 0 {neo => src/neo}/Ledger/RelayResultReason.cs | 0 {neo => src/neo}/Ledger/SendersFeeMonitor.cs | 0 {neo => src/neo}/Ledger/StorageFlags.cs | 0 {neo => src/neo}/Ledger/StorageItem.cs | 0 {neo => src/neo}/Ledger/StorageKey.cs | 0 {neo => src/neo}/Ledger/TransactionState.cs | 0 {neo => src/neo}/Ledger/TrimmedBlock.cs | 0 {neo => src/neo}/NeoSystem.cs | 0 .../P2P/Capabilities/FullNodeCapability.cs | 0 .../P2P/Capabilities/NodeCapability.cs | 0 .../P2P/Capabilities/NodeCapabilityType.cs | 0 .../P2P/Capabilities/ServerCapability.cs | 0 .../neo}/Network/P2P/ChannelsConfig.cs | 0 {neo => src/neo}/Network/P2P/Connection.cs | 0 {neo => src/neo}/Network/P2P/Helper.cs | 0 {neo => src/neo}/Network/P2P/LocalNode.cs | 0 {neo => src/neo}/Network/P2P/Message.cs | 0 .../neo}/Network/P2P/MessageCommand.cs | 0 {neo => src/neo}/Network/P2P/MessageFlags.cs | 0 .../neo}/Network/P2P/Payloads/AddrPayload.cs | 0 .../neo}/Network/P2P/Payloads/Block.cs | 0 .../neo}/Network/P2P/Payloads/BlockBase.cs | 0 .../Network/P2P/Payloads/ConsensusData.cs | 0 .../Network/P2P/Payloads/ConsensusPayload.cs | 0 .../neo}/Network/P2P/Payloads/Cosigner.cs | 0 .../Network/P2P/Payloads/FilterAddPayload.cs | 0 .../Network/P2P/Payloads/FilterLoadPayload.cs | 0 .../P2P/Payloads/GetBlockDataPayload.cs | 0 .../Network/P2P/Payloads/GetBlocksPayload.cs | 0 .../neo}/Network/P2P/Payloads/Header.cs | 0 .../Network/P2P/Payloads/HeadersPayload.cs | 0 .../neo}/Network/P2P/Payloads/IInventory.cs | 0 .../neo}/Network/P2P/Payloads/IVerifiable.cs | 0 .../neo}/Network/P2P/Payloads/InvPayload.cs | 0 .../Network/P2P/Payloads/InventoryType.cs | 0 .../P2P/Payloads/MerkleBlockPayload.cs | 0 .../P2P/Payloads/NetworkAddressWithTime.cs | 0 .../neo}/Network/P2P/Payloads/PingPayload.cs | 0 .../neo}/Network/P2P/Payloads/Transaction.cs | 0 .../P2P/Payloads/TransactionAttribute.cs | 0 .../P2P/Payloads/TransactionAttributeUsage.cs | 0 .../Network/P2P/Payloads/VersionPayload.cs | 0 .../neo}/Network/P2P/Payloads/Witness.cs | 0 .../neo}/Network/P2P/Payloads/WitnessScope.cs | 0 {neo => src/neo}/Network/P2P/Peer.cs | 0 .../neo}/Network/P2P/ProtocolHandler.cs | 0 {neo => src/neo}/Network/P2P/RemoteNode.cs | 0 {neo => src/neo}/Network/P2P/TaskManager.cs | 0 {neo => src/neo}/Network/P2P/TaskSession.cs | 0 .../neo}/Network/RPC/ContractClient.cs | 0 {neo => src/neo}/Network/RPC/Helper.cs | 0 .../neo}/Network/RPC/Models/RpcBlock.cs | 0 .../neo}/Network/RPC/Models/RpcBlockHeader.cs | 0 .../Network/RPC/Models/RpcInvokeResult.cs | 0 .../Network/RPC/Models/RpcNep5Balances.cs | 0 .../Network/RPC/Models/RpcNep5TokenInfo.cs | 0 .../neo}/Network/RPC/Models/RpcPeers.cs | 0 .../neo}/Network/RPC/Models/RpcPlugin.cs | 0 .../neo}/Network/RPC/Models/RpcRawMemPool.cs | 0 .../neo}/Network/RPC/Models/RpcRequest.cs | 0 .../neo}/Network/RPC/Models/RpcResponse.cs | 0 .../neo}/Network/RPC/Models/RpcTransaction.cs | 0 .../RPC/Models/RpcValidateAddressResult.cs | 0 .../neo}/Network/RPC/Models/RpcValidator.cs | 0 .../neo}/Network/RPC/Models/RpcVersion.cs | 0 {neo => src/neo}/Network/RPC/Nep5API.cs | 0 {neo => src/neo}/Network/RPC/PolicyAPI.cs | 0 {neo => src/neo}/Network/RPC/RpcClient.cs | 0 {neo => src/neo}/Network/RPC/RpcException.cs | 0 {neo => src/neo}/Network/RPC/RpcServer.cs | 0 .../neo}/Network/RPC/TransactionManager.cs | 0 {neo => src/neo}/Network/RPC/WalletAPI.cs | 0 {neo => src/neo}/Network/UPnP.cs | 0 {neo => src/neo}/Persistence/CloneSnapshot.cs | 0 {neo => src/neo}/Persistence/Helper.cs | 0 {neo => src/neo}/Persistence/IPersistence.cs | 0 .../neo}/Persistence/LevelDB/DbCache.cs | 0 .../Persistence/LevelDB/DbMetaDataCache.cs | 0 .../neo}/Persistence/LevelDB/DbSnapshot.cs | 0 .../neo}/Persistence/LevelDB/LevelDBStore.cs | 0 .../neo}/Persistence/LevelDB/Prefixes.cs | 0 {neo => src/neo}/Persistence/Snapshot.cs | 0 {neo => src/neo}/Persistence/Store.cs | 0 {neo => src/neo}/Plugins/ILogPlugin.cs | 0 .../Plugins/IMemoryPoolTxObserverPlugin.cs | 0 {neo => src/neo}/Plugins/IP2PPlugin.cs | 0 .../neo}/Plugins/IPersistencePlugin.cs | 0 {neo => src/neo}/Plugins/IRpcPlugin.cs | 0 {neo => src/neo}/Plugins/LogLevel.cs | 0 .../neo}/Plugins/MemoryPoolTxRemovalReason.cs | 0 {neo => src/neo}/Plugins/Plugin.cs | 0 {neo => src/neo}/Properties/AssemblyInfo.cs | 0 {neo => src/neo}/ProtocolSettings.cs | 0 .../ApplicationEngine.OpCodePrices.cs | 0 .../neo}/SmartContract/ApplicationEngine.cs | 0 .../SmartContract/ContainerPlaceholder.cs | 0 {neo => src/neo}/SmartContract/Contract.cs | 0 .../neo}/SmartContract/ContractParameter.cs | 0 .../SmartContract/ContractParameterType.cs | 0 .../ContractParametersContext.cs | 0 .../Enumerators/ConcatenatedEnumerator.cs | 0 .../SmartContract/Enumerators/IEnumerator.cs | 0 .../Enumerators/IteratorKeysWrapper.cs | 0 .../Enumerators/IteratorValuesWrapper.cs | 0 .../SmartContract/ExecutionContextState.cs | 0 {neo => src/neo}/SmartContract/Helper.cs | 0 .../neo}/SmartContract/IInteroperable.cs | 0 .../neo}/SmartContract/InteropDescriptor.cs | 0 .../neo}/SmartContract/InteropService.NEO.cs | 0 .../neo}/SmartContract/InteropService.cs | 0 .../SmartContract/Iterators/ArrayWrapper.cs | 0 .../Iterators/ConcatenatedIterator.cs | 0 .../neo}/SmartContract/Iterators/IIterator.cs | 0 .../SmartContract/Iterators/MapWrapper.cs | 0 .../Iterators/StorageIterator.cs | 0 .../neo}/SmartContract/JsonSerializer.cs | 0 .../neo}/SmartContract/LogEventArgs.cs | 0 .../SmartContract/Manifest/ContractAbi.cs | 0 .../Manifest/ContractEventDescriptor.cs | 0 .../Manifest/ContractFeatures.cs | 0 .../SmartContract/Manifest/ContractGroup.cs | 0 .../Manifest/ContractManifest.cs | 0 .../Manifest/ContractMethodDescriptor.cs | 0 .../Manifest/ContractParameterDefinition.cs | 0 .../Manifest/ContractPermission.cs | 0 .../Manifest/ContractPermissionDescriptor.cs | 0 .../Manifest/WildCardContainer.cs | 0 .../Native/ContractMethodAttribute.cs | 0 .../Native/ContractMethodMetadata.cs | 0 .../SmartContract/Native/NativeContract.cs | 0 .../SmartContract/Native/PolicyContract.cs | 0 .../SmartContract/Native/Tokens/GasToken.cs | 0 .../SmartContract/Native/Tokens/NeoToken.cs | 0 .../Native/Tokens/Nep5AccountState.cs | 0 .../SmartContract/Native/Tokens/Nep5Token.cs | 0 {neo => src/neo}/SmartContract/NefFile.cs | 0 .../neo}/SmartContract/NotifyEventArgs.cs | 0 .../neo}/SmartContract/StackItemType.cs | 0 .../neo}/SmartContract/StorageContext.cs | 0 {neo => src/neo}/SmartContract/TriggerType.cs | 0 {neo => src/neo}/TimeProvider.cs | 0 {neo => src/neo}/UInt160.cs | 0 {neo => src/neo}/UInt256.cs | 0 {neo => src/neo}/UIntBase.cs | 0 {neo => src/neo}/Utility.cs | 0 {neo => src/neo}/VM/Helper.cs | 0 {neo => src/neo}/Wallets/AssetDescriptor.cs | 0 {neo => src/neo}/Wallets/Helper.cs | 0 {neo => src/neo}/Wallets/KeyPair.cs | 0 {neo => src/neo}/Wallets/NEP6/NEP6Account.cs | 0 {neo => src/neo}/Wallets/NEP6/NEP6Contract.cs | 0 {neo => src/neo}/Wallets/NEP6/NEP6Wallet.cs | 0 .../neo}/Wallets/NEP6/ScryptParameters.cs | 0 {neo => src/neo}/Wallets/NEP6/WalletLocker.cs | 0 {neo => src/neo}/Wallets/SQLite/Account.cs | 0 {neo => src/neo}/Wallets/SQLite/Address.cs | 0 {neo => src/neo}/Wallets/SQLite/Contract.cs | 0 {neo => src/neo}/Wallets/SQLite/Key.cs | 0 {neo => src/neo}/Wallets/SQLite/UserWallet.cs | 0 .../neo}/Wallets/SQLite/UserWalletAccount.cs | 0 .../Wallets/SQLite/VerificationContract.cs | 0 .../neo}/Wallets/SQLite/WalletDataContext.cs | 0 {neo => src/neo}/Wallets/TransferOutput.cs | 0 {neo => src/neo}/Wallets/Wallet.cs | 0 {neo => src/neo}/Wallets/WalletAccount.cs | 0 {neo => src/neo}/neo.csproj | 0 .../neo.UnitTests}/Consensus/UT_Consensus.cs | 0 .../Consensus/UT_ConsensusContext.cs | 0 .../Consensus/UT_ConsensusServiceMailbox.cs | 0 .../Cryptography/ECC/UT_ECDsa.cs | 0 .../Cryptography/ECC/UT_ECFieldElement.cs | 0 .../Cryptography/ECC/UT_ECPoint.cs | 0 .../neo.UnitTests}/Cryptography/UT_Base58.cs | 0 .../Cryptography/UT_BloomFilter.cs | 0 .../neo.UnitTests}/Cryptography/UT_Crypto.cs | 0 .../Cryptography/UT_Cryptography_Helper.cs | 0 .../Cryptography/UT_MerkleTree.cs | 0 .../Cryptography/UT_MerkleTreeNode.cs | 0 .../neo.UnitTests}/Cryptography/UT_Murmur3.cs | 0 .../neo.UnitTests}/Cryptography/UT_SCrypt.cs | 0 .../Extensions/NativeContractExtensions.cs | 0 .../Nep5NativeContractExtensions.cs | 0 .../neo.UnitTests}/IO/Caching/UT_Cache.cs | 0 .../IO/Caching/UT_CloneCache.cs | 0 .../IO/Caching/UT_CloneMetaCache.cs | 0 .../neo.UnitTests}/IO/Caching/UT_DataCache.cs | 0 .../neo.UnitTests}/IO/Caching/UT_FIFOSet.cs | 0 .../IO/Caching/UT_MetaDataCache.cs | 0 .../IO/Caching/UT_OrderedDictionary.cs | 0 .../IO/Caching/UT_ReflectionCache.cs | 0 .../IO/Caching/UT_RelayCache.cs | 0 .../IO/Data/LevelDb/UT_Slice.cs | 0 .../neo.UnitTests}/IO/Json/UT_JArray.cs | 0 .../neo.UnitTests}/IO/Json/UT_JBoolean.cs | 0 .../neo.UnitTests}/IO/Json/UT_JNumber.cs | 0 .../neo.UnitTests}/IO/Json/UT_JObject.cs | 0 .../neo.UnitTests}/IO/Json/UT_JString.cs | 0 .../neo.UnitTests}/IO/UT_ByteArrayComparer.cs | 0 .../neo.UnitTests}/IO/UT_IOHelper.cs | 0 .../IO/Wrappers/UT_SerializableWrapper.cs | 0 .../IO/Wrappers/UT_UInt32Wrapper.cs | 0 .../neo.UnitTests}/Ledger/UT_Blockchain.cs | 0 .../neo.UnitTests}/Ledger/UT_ContractState.cs | 0 .../Ledger/UT_HashIndexState.cs | 0 .../Ledger/UT_HeaderHashList.cs | 0 .../neo.UnitTests}/Ledger/UT_MemoryPool.cs | 0 .../neo.UnitTests}/Ledger/UT_PoolItem.cs | 0 .../Ledger/UT_SendersFeeMonitor.cs | 0 .../neo.UnitTests}/Ledger/UT_StorageItem.cs | 0 .../neo.UnitTests}/Ledger/UT_StorageKey.cs | 0 .../Ledger/UT_TransactionState.cs | 0 .../neo.UnitTests}/Ledger/UT_TrimmedBlock.cs | 0 .../Network/P2P/Payloads/UT_Block.cs | 0 .../Network/P2P/Payloads/UT_Cosigner.cs | 0 .../Network/P2P/Payloads/UT_Header.cs | 0 .../Network/P2P/Payloads/UT_Transaction.cs | 0 .../Network/P2P/Payloads/UT_Witness.cs | 0 .../neo.UnitTests}/Network/P2P/UT_Message.cs | 0 .../Network/P2P/UT_ProtocolHandler.cs | 0 .../Network/P2P/UT_ProtocolHandlerMailbox.cs | 0 .../Network/P2P/UT_RemoteNode.cs | 0 .../Network/P2P/UT_RemoteNodeMailbox.cs | 0 .../Network/P2P/UT_TaskManagerMailbox.cs | 0 .../Network/RPC/Models/UT_RpcBlock.cs | 0 .../Network/RPC/Models/UT_RpcBlockHeader.cs | 0 .../Network/RPC/Models/UT_RpcNep5Balance.cs | 0 .../Network/RPC/Models/UT_RpcNep5Balances.cs | 0 .../Network/RPC/Models/UT_RpcPeer.cs | 0 .../Network/RPC/Models/UT_RpcPeers.cs | 0 .../Network/RPC/Models/UT_RpcRawMemPool.cs | 0 .../Network/RPC/Models/UT_RpcRequest.cs | 0 .../Network/RPC/Models/UT_RpcResponse.cs | 0 .../Network/RPC/Models/UT_RpcVersion.cs | 0 .../Network/RPC/UT_ContractClient.cs | 0 .../neo.UnitTests}/Network/RPC/UT_Helper.cs | 0 .../neo.UnitTests}/Network/RPC/UT_Nep5API.cs | 0 .../Network/RPC/UT_PolicyAPI.cs | 0 .../Network/RPC/UT_RpcClient.cs | 0 .../Network/RPC/UT_RpcServer.cs | 0 .../Network/RPC/UT_TransactionManager.cs | 0 .../Network/RPC/UT_WalletAPI.cs | 0 .../neo.UnitTests}/Plugins/TestLogPlugin.cs | 0 .../neo.UnitTests}/Plugins/UT_Plugin.cs | 0 .../neo.UnitTests}/README.md | 0 .../Enumerators/UT_ConcatenatedEnumerator.cs | 0 .../Enumerators/UT_IteratorKeysWrapper.cs | 0 .../Enumerators/UT_IteratorValuesWrapper.cs | 0 .../Iterators/UT_ArrayWrapper.cs | 0 .../Iterators/UT_ConcatenatedIterator.cs | 0 .../SmartContract/Iterators/UT_MapWrapper.cs | 0 .../Iterators/UT_StorageIterator.cs | 0 .../Manifest/UT_ContractEventDescriptor.cs | 0 .../Manifest/UT_ContractGroup.cs | 0 .../Manifest/UT_ContractManifest.cs | 0 .../Manifest/UT_ContractPermission.cs | 0 .../UT_ContractPermissionDescriptor.cs | 0 .../Manifest/UT_WildCardContainer.cs | 0 .../Native/Tokens/UT_GasToken.cs | 0 .../Native/Tokens/UT_NeoToken.cs | 0 .../Native/Tokens/UT_Nep5Token.cs | 0 .../SmartContract/Native/UT_NativeContract.cs | 0 .../SmartContract/Native/UT_PolicyContract.cs | 0 .../SmartContract/UT_ApplicationEngine.cs | 0 .../SmartContract/UT_ContainerPlaceholder.cs | 0 .../SmartContract/UT_Contract.cs | 0 .../SmartContract/UT_ContractParameter.cs | 0 .../UT_ContractParameterContext.cs | 0 .../SmartContract/UT_InteropDescriptor.cs | 0 .../SmartContract/UT_InteropPrices.cs | 0 .../SmartContract/UT_InteropService.NEO.cs | 0 .../SmartContract/UT_InteropService.cs | 0 .../SmartContract/UT_JsonSerializer.cs | 0 .../SmartContract/UT_LogEventArgs.cs | 0 .../SmartContract/UT_NefFile.cs | 0 .../SmartContract/UT_NotifyEventArgs.cs | 0 .../SmartContract/UT_OpCodePrices.cs | 0 .../SmartContract/UT_SmartContractHelper.cs | 0 .../SmartContract/UT_StorageContext.cs | 0 .../SmartContract/UT_Syscalls.cs | 0 .../neo.UnitTests}/TestBlockchain.cs | 0 .../neo.UnitTests}/TestDataCache.cs | 0 .../neo.UnitTests}/TestMetaDataCache.cs | 0 .../neo.UnitTests}/TestUtils.cs | 0 .../neo.UnitTests}/TestVerifiable.cs | 0 .../neo.UnitTests}/TestWalletAccount.cs | 0 .../neo.UnitTests}/UT_BigDecimal.cs | 0 .../neo.UnitTests}/UT_Culture.cs | 0 .../neo.UnitTests}/UT_DataCache.cs | 0 .../neo.UnitTests}/UT_Helper.cs | 0 .../neo.UnitTests}/UT_NeoSystem.cs | 0 .../neo.UnitTests}/UT_ProtocolSettings.cs | 0 .../neo.UnitTests}/UT_UInt160.cs | 0 .../neo.UnitTests}/UT_UInt256.cs | 0 .../neo.UnitTests}/UT_UIntBase.cs | 0 .../neo.UnitTests}/UT_UIntBenchmarks.cs | 0 .../neo.UnitTests}/UT_Utility.cs | 0 .../neo.UnitTests}/VM/UT_Helper.cs | 0 .../Wallets/NEP6/UT_NEP6Account.cs | 0 .../Wallets/NEP6/UT_NEP6Contract.cs | 0 .../Wallets/NEP6/UT_NEP6Wallet.cs | 0 .../Wallets/NEP6/UT_ScryptParameters.cs | 0 .../Wallets/SQLite/UT_Account.cs | 0 .../Wallets/SQLite/UT_Address.cs | 0 .../Wallets/SQLite/UT_Contract.cs | 0 .../neo.UnitTests}/Wallets/SQLite/UT_Key.cs | 0 .../Wallets/SQLite/UT_UserWallet.cs | 0 .../Wallets/SQLite/UT_UserWalletAccount.cs | 0 .../Wallets/SQLite/UT_VerificationContract.cs | 0 .../Wallets/UT_AssetDescriptor.cs | 0 .../neo.UnitTests}/Wallets/UT_KeyPair.cs | 0 .../neo.UnitTests}/Wallets/UT_Wallet.cs | 0 .../Wallets/UT_WalletAccount.cs | 0 .../Wallets/UT_Wallets_Helper.cs | 0 .../neo.UnitTests}/neo.UnitTests.csproj | 2 +- .../neo.UnitTests}/protocol.json | 0 390 files changed, 16 insertions(+), 6 deletions(-) rename {neo => src/neo}/BigDecimal.cs (100%) rename {neo => src/neo}/Consensus/ChangeView.cs (100%) rename {neo => src/neo}/Consensus/ChangeViewReason.cs (100%) rename {neo => src/neo}/Consensus/Commit.cs (100%) rename {neo => src/neo}/Consensus/ConsensusContext.cs (100%) rename {neo => src/neo}/Consensus/ConsensusMessage.cs (100%) rename {neo => src/neo}/Consensus/ConsensusMessageType.cs (100%) rename {neo => src/neo}/Consensus/ConsensusService.cs (100%) rename {neo => src/neo}/Consensus/PrepareRequest.cs (100%) rename {neo => src/neo}/Consensus/PrepareResponse.cs (100%) rename {neo => src/neo}/Consensus/RecoveryMessage.ChangeViewPayloadCompact.cs (100%) rename {neo => src/neo}/Consensus/RecoveryMessage.CommitPayloadCompact.cs (100%) rename {neo => src/neo}/Consensus/RecoveryMessage.PreparationPayloadCompact.cs (100%) rename {neo => src/neo}/Consensus/RecoveryMessage.cs (100%) rename {neo => src/neo}/Consensus/RecoveryRequest.cs (100%) rename {neo => src/neo}/Cryptography/Base58.cs (100%) rename {neo => src/neo}/Cryptography/BloomFilter.cs (100%) rename {neo => src/neo}/Cryptography/Crypto.cs (100%) rename {neo => src/neo}/Cryptography/ECC/ECCurve.cs (100%) rename {neo => src/neo}/Cryptography/ECC/ECDsa.cs (100%) rename {neo => src/neo}/Cryptography/ECC/ECFieldElement.cs (100%) rename {neo => src/neo}/Cryptography/ECC/ECPoint.cs (100%) rename {neo => src/neo}/Cryptography/Helper.cs (100%) rename {neo => src/neo}/Cryptography/MerkleTree.cs (100%) rename {neo => src/neo}/Cryptography/MerkleTreeNode.cs (100%) rename {neo => src/neo}/Cryptography/Murmur3.cs (100%) rename {neo => src/neo}/Cryptography/RIPEMD160Managed.cs (100%) rename {neo => src/neo}/Cryptography/SCrypt.cs (100%) rename {neo => src/neo}/Helper.cs (100%) rename {neo => src/neo}/IO/Actors/Idle.cs (100%) rename {neo => src/neo}/IO/Actors/PriorityMailbox.cs (100%) rename {neo => src/neo}/IO/Actors/PriorityMessageQueue.cs (100%) rename {neo => src/neo}/IO/ByteArrayComparer.cs (100%) rename {neo => src/neo}/IO/Caching/Cache.cs (100%) rename {neo => src/neo}/IO/Caching/CloneCache.cs (100%) rename {neo => src/neo}/IO/Caching/CloneMetaCache.cs (100%) rename {neo => src/neo}/IO/Caching/DataCache.cs (100%) rename {neo => src/neo}/IO/Caching/FIFOCache.cs (100%) rename {neo => src/neo}/IO/Caching/FIFOSet.cs (100%) rename {neo => src/neo}/IO/Caching/MetaDataCache.cs (100%) rename {neo => src/neo}/IO/Caching/OrderedDictionary.cs (100%) rename {neo => src/neo}/IO/Caching/ReflectionCache.cs (100%) rename {neo => src/neo}/IO/Caching/ReflectionCacheAttribute.cs (100%) rename {neo => src/neo}/IO/Caching/RelayCache.cs (100%) rename {neo => src/neo}/IO/Caching/TrackState.cs (100%) rename {neo => src/neo}/IO/Data/LevelDB/DB.cs (100%) rename {neo => src/neo}/IO/Data/LevelDB/Helper.cs (100%) rename {neo => src/neo}/IO/Data/LevelDB/Iterator.cs (100%) rename {neo => src/neo}/IO/Data/LevelDB/LevelDBException.cs (100%) rename {neo => src/neo}/IO/Data/LevelDB/Native.cs (100%) rename {neo => src/neo}/IO/Data/LevelDB/Options.cs (100%) rename {neo => src/neo}/IO/Data/LevelDB/ReadOptions.cs (100%) rename {neo => src/neo}/IO/Data/LevelDB/Slice.cs (100%) rename {neo => src/neo}/IO/Data/LevelDB/SliceBuilder.cs (100%) rename {neo => src/neo}/IO/Data/LevelDB/Snapshot.cs (100%) rename {neo => src/neo}/IO/Data/LevelDB/WriteBatch.cs (100%) rename {neo => src/neo}/IO/Data/LevelDB/WriteOptions.cs (100%) rename {neo => src/neo}/IO/Helper.cs (100%) rename {neo => src/neo}/IO/ICloneable.cs (100%) rename {neo => src/neo}/IO/ISerializable.cs (100%) rename {neo => src/neo}/IO/Json/JArray.cs (100%) rename {neo => src/neo}/IO/Json/JBoolean.cs (100%) rename {neo => src/neo}/IO/Json/JNumber.cs (100%) rename {neo => src/neo}/IO/Json/JObject.cs (100%) rename {neo => src/neo}/IO/Json/JString.cs (100%) rename {neo => src/neo}/IO/Wrappers/SerializableWrapper.cs (100%) rename {neo => src/neo}/IO/Wrappers/UInt32Wrapper.cs (100%) rename {neo => src/neo}/Ledger/Blockchain.ApplicationExecuted.cs (100%) rename {neo => src/neo}/Ledger/Blockchain.cs (100%) rename {neo => src/neo}/Ledger/ContractState.cs (100%) rename {neo => src/neo}/Ledger/HashIndexState.cs (100%) rename {neo => src/neo}/Ledger/HeaderHashList.cs (100%) rename {neo => src/neo}/Ledger/MemoryPool.cs (100%) rename {neo => src/neo}/Ledger/PoolItem.cs (100%) rename {neo => src/neo}/Ledger/RelayResultReason.cs (100%) rename {neo => src/neo}/Ledger/SendersFeeMonitor.cs (100%) rename {neo => src/neo}/Ledger/StorageFlags.cs (100%) rename {neo => src/neo}/Ledger/StorageItem.cs (100%) rename {neo => src/neo}/Ledger/StorageKey.cs (100%) rename {neo => src/neo}/Ledger/TransactionState.cs (100%) rename {neo => src/neo}/Ledger/TrimmedBlock.cs (100%) rename {neo => src/neo}/NeoSystem.cs (100%) rename {neo => src/neo}/Network/P2P/Capabilities/FullNodeCapability.cs (100%) rename {neo => src/neo}/Network/P2P/Capabilities/NodeCapability.cs (100%) rename {neo => src/neo}/Network/P2P/Capabilities/NodeCapabilityType.cs (100%) rename {neo => src/neo}/Network/P2P/Capabilities/ServerCapability.cs (100%) rename {neo => src/neo}/Network/P2P/ChannelsConfig.cs (100%) rename {neo => src/neo}/Network/P2P/Connection.cs (100%) rename {neo => src/neo}/Network/P2P/Helper.cs (100%) rename {neo => src/neo}/Network/P2P/LocalNode.cs (100%) rename {neo => src/neo}/Network/P2P/Message.cs (100%) rename {neo => src/neo}/Network/P2P/MessageCommand.cs (100%) rename {neo => src/neo}/Network/P2P/MessageFlags.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/AddrPayload.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/Block.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/BlockBase.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/ConsensusData.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/ConsensusPayload.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/Cosigner.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/FilterAddPayload.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/FilterLoadPayload.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/GetBlockDataPayload.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/GetBlocksPayload.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/Header.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/HeadersPayload.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/IInventory.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/IVerifiable.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/InvPayload.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/InventoryType.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/MerkleBlockPayload.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/NetworkAddressWithTime.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/PingPayload.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/Transaction.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/TransactionAttribute.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/TransactionAttributeUsage.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/VersionPayload.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/Witness.cs (100%) rename {neo => src/neo}/Network/P2P/Payloads/WitnessScope.cs (100%) rename {neo => src/neo}/Network/P2P/Peer.cs (100%) rename {neo => src/neo}/Network/P2P/ProtocolHandler.cs (100%) rename {neo => src/neo}/Network/P2P/RemoteNode.cs (100%) rename {neo => src/neo}/Network/P2P/TaskManager.cs (100%) rename {neo => src/neo}/Network/P2P/TaskSession.cs (100%) rename {neo => src/neo}/Network/RPC/ContractClient.cs (100%) rename {neo => src/neo}/Network/RPC/Helper.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcBlock.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcBlockHeader.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcInvokeResult.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcNep5Balances.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcNep5TokenInfo.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcPeers.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcPlugin.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcRawMemPool.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcRequest.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcResponse.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcTransaction.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcValidateAddressResult.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcValidator.cs (100%) rename {neo => src/neo}/Network/RPC/Models/RpcVersion.cs (100%) rename {neo => src/neo}/Network/RPC/Nep5API.cs (100%) rename {neo => src/neo}/Network/RPC/PolicyAPI.cs (100%) rename {neo => src/neo}/Network/RPC/RpcClient.cs (100%) rename {neo => src/neo}/Network/RPC/RpcException.cs (100%) rename {neo => src/neo}/Network/RPC/RpcServer.cs (100%) rename {neo => src/neo}/Network/RPC/TransactionManager.cs (100%) rename {neo => src/neo}/Network/RPC/WalletAPI.cs (100%) rename {neo => src/neo}/Network/UPnP.cs (100%) rename {neo => src/neo}/Persistence/CloneSnapshot.cs (100%) rename {neo => src/neo}/Persistence/Helper.cs (100%) rename {neo => src/neo}/Persistence/IPersistence.cs (100%) rename {neo => src/neo}/Persistence/LevelDB/DbCache.cs (100%) rename {neo => src/neo}/Persistence/LevelDB/DbMetaDataCache.cs (100%) rename {neo => src/neo}/Persistence/LevelDB/DbSnapshot.cs (100%) rename {neo => src/neo}/Persistence/LevelDB/LevelDBStore.cs (100%) rename {neo => src/neo}/Persistence/LevelDB/Prefixes.cs (100%) rename {neo => src/neo}/Persistence/Snapshot.cs (100%) rename {neo => src/neo}/Persistence/Store.cs (100%) rename {neo => src/neo}/Plugins/ILogPlugin.cs (100%) rename {neo => src/neo}/Plugins/IMemoryPoolTxObserverPlugin.cs (100%) rename {neo => src/neo}/Plugins/IP2PPlugin.cs (100%) rename {neo => src/neo}/Plugins/IPersistencePlugin.cs (100%) rename {neo => src/neo}/Plugins/IRpcPlugin.cs (100%) rename {neo => src/neo}/Plugins/LogLevel.cs (100%) rename {neo => src/neo}/Plugins/MemoryPoolTxRemovalReason.cs (100%) rename {neo => src/neo}/Plugins/Plugin.cs (100%) rename {neo => src/neo}/Properties/AssemblyInfo.cs (100%) rename {neo => src/neo}/ProtocolSettings.cs (100%) rename {neo => src/neo}/SmartContract/ApplicationEngine.OpCodePrices.cs (100%) rename {neo => src/neo}/SmartContract/ApplicationEngine.cs (100%) rename {neo => src/neo}/SmartContract/ContainerPlaceholder.cs (100%) rename {neo => src/neo}/SmartContract/Contract.cs (100%) rename {neo => src/neo}/SmartContract/ContractParameter.cs (100%) rename {neo => src/neo}/SmartContract/ContractParameterType.cs (100%) rename {neo => src/neo}/SmartContract/ContractParametersContext.cs (100%) rename {neo => src/neo}/SmartContract/Enumerators/ConcatenatedEnumerator.cs (100%) rename {neo => src/neo}/SmartContract/Enumerators/IEnumerator.cs (100%) rename {neo => src/neo}/SmartContract/Enumerators/IteratorKeysWrapper.cs (100%) rename {neo => src/neo}/SmartContract/Enumerators/IteratorValuesWrapper.cs (100%) rename {neo => src/neo}/SmartContract/ExecutionContextState.cs (100%) rename {neo => src/neo}/SmartContract/Helper.cs (100%) rename {neo => src/neo}/SmartContract/IInteroperable.cs (100%) rename {neo => src/neo}/SmartContract/InteropDescriptor.cs (100%) rename {neo => src/neo}/SmartContract/InteropService.NEO.cs (100%) rename {neo => src/neo}/SmartContract/InteropService.cs (100%) rename {neo => src/neo}/SmartContract/Iterators/ArrayWrapper.cs (100%) rename {neo => src/neo}/SmartContract/Iterators/ConcatenatedIterator.cs (100%) rename {neo => src/neo}/SmartContract/Iterators/IIterator.cs (100%) rename {neo => src/neo}/SmartContract/Iterators/MapWrapper.cs (100%) rename {neo => src/neo}/SmartContract/Iterators/StorageIterator.cs (100%) rename {neo => src/neo}/SmartContract/JsonSerializer.cs (100%) rename {neo => src/neo}/SmartContract/LogEventArgs.cs (100%) rename {neo => src/neo}/SmartContract/Manifest/ContractAbi.cs (100%) rename {neo => src/neo}/SmartContract/Manifest/ContractEventDescriptor.cs (100%) rename {neo => src/neo}/SmartContract/Manifest/ContractFeatures.cs (100%) rename {neo => src/neo}/SmartContract/Manifest/ContractGroup.cs (100%) rename {neo => src/neo}/SmartContract/Manifest/ContractManifest.cs (100%) rename {neo => src/neo}/SmartContract/Manifest/ContractMethodDescriptor.cs (100%) rename {neo => src/neo}/SmartContract/Manifest/ContractParameterDefinition.cs (100%) rename {neo => src/neo}/SmartContract/Manifest/ContractPermission.cs (100%) rename {neo => src/neo}/SmartContract/Manifest/ContractPermissionDescriptor.cs (100%) rename {neo => src/neo}/SmartContract/Manifest/WildCardContainer.cs (100%) rename {neo => src/neo}/SmartContract/Native/ContractMethodAttribute.cs (100%) rename {neo => src/neo}/SmartContract/Native/ContractMethodMetadata.cs (100%) rename {neo => src/neo}/SmartContract/Native/NativeContract.cs (100%) rename {neo => src/neo}/SmartContract/Native/PolicyContract.cs (100%) rename {neo => src/neo}/SmartContract/Native/Tokens/GasToken.cs (100%) rename {neo => src/neo}/SmartContract/Native/Tokens/NeoToken.cs (100%) rename {neo => src/neo}/SmartContract/Native/Tokens/Nep5AccountState.cs (100%) rename {neo => src/neo}/SmartContract/Native/Tokens/Nep5Token.cs (100%) rename {neo => src/neo}/SmartContract/NefFile.cs (100%) rename {neo => src/neo}/SmartContract/NotifyEventArgs.cs (100%) rename {neo => src/neo}/SmartContract/StackItemType.cs (100%) rename {neo => src/neo}/SmartContract/StorageContext.cs (100%) rename {neo => src/neo}/SmartContract/TriggerType.cs (100%) rename {neo => src/neo}/TimeProvider.cs (100%) rename {neo => src/neo}/UInt160.cs (100%) rename {neo => src/neo}/UInt256.cs (100%) rename {neo => src/neo}/UIntBase.cs (100%) rename {neo => src/neo}/Utility.cs (100%) rename {neo => src/neo}/VM/Helper.cs (100%) rename {neo => src/neo}/Wallets/AssetDescriptor.cs (100%) rename {neo => src/neo}/Wallets/Helper.cs (100%) rename {neo => src/neo}/Wallets/KeyPair.cs (100%) rename {neo => src/neo}/Wallets/NEP6/NEP6Account.cs (100%) rename {neo => src/neo}/Wallets/NEP6/NEP6Contract.cs (100%) rename {neo => src/neo}/Wallets/NEP6/NEP6Wallet.cs (100%) rename {neo => src/neo}/Wallets/NEP6/ScryptParameters.cs (100%) rename {neo => src/neo}/Wallets/NEP6/WalletLocker.cs (100%) rename {neo => src/neo}/Wallets/SQLite/Account.cs (100%) rename {neo => src/neo}/Wallets/SQLite/Address.cs (100%) rename {neo => src/neo}/Wallets/SQLite/Contract.cs (100%) rename {neo => src/neo}/Wallets/SQLite/Key.cs (100%) rename {neo => src/neo}/Wallets/SQLite/UserWallet.cs (100%) rename {neo => src/neo}/Wallets/SQLite/UserWalletAccount.cs (100%) rename {neo => src/neo}/Wallets/SQLite/VerificationContract.cs (100%) rename {neo => src/neo}/Wallets/SQLite/WalletDataContext.cs (100%) rename {neo => src/neo}/Wallets/TransferOutput.cs (100%) rename {neo => src/neo}/Wallets/Wallet.cs (100%) rename {neo => src/neo}/Wallets/WalletAccount.cs (100%) rename {neo => src/neo}/neo.csproj (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Consensus/UT_Consensus.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Consensus/UT_ConsensusContext.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Consensus/UT_ConsensusServiceMailbox.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Cryptography/ECC/UT_ECDsa.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Cryptography/ECC/UT_ECFieldElement.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Cryptography/ECC/UT_ECPoint.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Cryptography/UT_Base58.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Cryptography/UT_BloomFilter.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Cryptography/UT_Crypto.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Cryptography/UT_Cryptography_Helper.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Cryptography/UT_MerkleTree.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Cryptography/UT_MerkleTreeNode.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Cryptography/UT_Murmur3.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Cryptography/UT_SCrypt.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Extensions/NativeContractExtensions.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Extensions/Nep5NativeContractExtensions.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Caching/UT_Cache.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Caching/UT_CloneCache.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Caching/UT_CloneMetaCache.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Caching/UT_DataCache.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Caching/UT_FIFOSet.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Caching/UT_MetaDataCache.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Caching/UT_OrderedDictionary.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Caching/UT_ReflectionCache.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Caching/UT_RelayCache.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Data/LevelDb/UT_Slice.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Json/UT_JArray.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Json/UT_JBoolean.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Json/UT_JNumber.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Json/UT_JObject.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Json/UT_JString.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/UT_ByteArrayComparer.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/UT_IOHelper.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Wrappers/UT_SerializableWrapper.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/IO/Wrappers/UT_UInt32Wrapper.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Ledger/UT_Blockchain.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Ledger/UT_ContractState.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Ledger/UT_HashIndexState.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Ledger/UT_HeaderHashList.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Ledger/UT_MemoryPool.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Ledger/UT_PoolItem.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Ledger/UT_SendersFeeMonitor.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Ledger/UT_StorageItem.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Ledger/UT_StorageKey.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Ledger/UT_TransactionState.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Ledger/UT_TrimmedBlock.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/P2P/Payloads/UT_Block.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/P2P/Payloads/UT_Cosigner.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/P2P/Payloads/UT_Header.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/P2P/Payloads/UT_Transaction.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/P2P/Payloads/UT_Witness.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/P2P/UT_Message.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/P2P/UT_ProtocolHandler.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/P2P/UT_ProtocolHandlerMailbox.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/P2P/UT_RemoteNode.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/P2P/UT_RemoteNodeMailbox.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/P2P/UT_TaskManagerMailbox.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/Models/UT_RpcBlock.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/Models/UT_RpcBlockHeader.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/Models/UT_RpcNep5Balance.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/Models/UT_RpcNep5Balances.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/Models/UT_RpcPeer.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/Models/UT_RpcPeers.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/Models/UT_RpcRawMemPool.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/Models/UT_RpcRequest.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/Models/UT_RpcResponse.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/Models/UT_RpcVersion.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/UT_ContractClient.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/UT_Helper.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/UT_Nep5API.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/UT_PolicyAPI.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/UT_RpcClient.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/UT_RpcServer.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/UT_TransactionManager.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Network/RPC/UT_WalletAPI.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Plugins/TestLogPlugin.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Plugins/UT_Plugin.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/README.md (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Enumerators/UT_ConcatenatedEnumerator.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Enumerators/UT_IteratorKeysWrapper.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Enumerators/UT_IteratorValuesWrapper.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Iterators/UT_ArrayWrapper.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Iterators/UT_ConcatenatedIterator.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Iterators/UT_MapWrapper.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Iterators/UT_StorageIterator.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Manifest/UT_ContractEventDescriptor.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Manifest/UT_ContractGroup.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Manifest/UT_ContractManifest.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Manifest/UT_ContractPermission.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Manifest/UT_ContractPermissionDescriptor.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Manifest/UT_WildCardContainer.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Native/Tokens/UT_GasToken.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Native/Tokens/UT_NeoToken.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Native/Tokens/UT_Nep5Token.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Native/UT_NativeContract.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/Native/UT_PolicyContract.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_ApplicationEngine.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_ContainerPlaceholder.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_Contract.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_ContractParameter.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_ContractParameterContext.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_InteropDescriptor.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_InteropPrices.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_InteropService.NEO.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_InteropService.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_JsonSerializer.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_LogEventArgs.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_NefFile.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_NotifyEventArgs.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_OpCodePrices.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_SmartContractHelper.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_StorageContext.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/SmartContract/UT_Syscalls.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/TestBlockchain.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/TestDataCache.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/TestMetaDataCache.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/TestUtils.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/TestVerifiable.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/TestWalletAccount.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/UT_BigDecimal.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/UT_Culture.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/UT_DataCache.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/UT_Helper.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/UT_NeoSystem.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/UT_ProtocolSettings.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/UT_UInt160.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/UT_UInt256.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/UT_UIntBase.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/UT_UIntBenchmarks.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/UT_Utility.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/VM/UT_Helper.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/NEP6/UT_NEP6Account.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/NEP6/UT_NEP6Contract.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/NEP6/UT_NEP6Wallet.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/NEP6/UT_ScryptParameters.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/SQLite/UT_Account.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/SQLite/UT_Address.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/SQLite/UT_Contract.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/SQLite/UT_Key.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/SQLite/UT_UserWallet.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/SQLite/UT_UserWalletAccount.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/SQLite/UT_VerificationContract.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/UT_AssetDescriptor.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/UT_KeyPair.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/UT_Wallet.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/UT_WalletAccount.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/Wallets/UT_Wallets_Helper.cs (100%) rename {neo.UnitTests => tests/neo.UnitTests}/neo.UnitTests.csproj (94%) rename {neo.UnitTests => tests/neo.UnitTests}/protocol.json (100%) diff --git a/neo.sln b/neo.sln index fd72762fc2..81bc487b0b 100644 --- a/neo.sln +++ b/neo.sln @@ -1,11 +1,14 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26430.15 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29519.87 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "neo", "neo\neo.csproj", "{36447A9B-0311-4D4D-A3D5-AECBE9C15BBC}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "neo", "src\neo\neo.csproj", "{36447A9B-0311-4D4D-A3D5-AECBE9C15BBC}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "neo.UnitTests", "neo.UnitTests\neo.UnitTests.csproj", "{5B783B30-B422-4C2F-AC22-187A8D1993F4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "neo.UnitTests", "tests\neo.UnitTests\neo.UnitTests.csproj", "{5B783B30-B422-4C2F-AC22-187A8D1993F4}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{28728CD7-0BA9-419A-A77E-2A62913727FB}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{D588A082-E634-4143-A9BC-77AF6413AD30}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -25,4 +28,11 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {36447A9B-0311-4D4D-A3D5-AECBE9C15BBC} = {28728CD7-0BA9-419A-A77E-2A62913727FB} + {5B783B30-B422-4C2F-AC22-187A8D1993F4} = {D588A082-E634-4143-A9BC-77AF6413AD30} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {182E32CA-4200-4A71-8448-EA6BDE7A06B8} + EndGlobalSection EndGlobal diff --git a/neo/BigDecimal.cs b/src/neo/BigDecimal.cs similarity index 100% rename from neo/BigDecimal.cs rename to src/neo/BigDecimal.cs diff --git a/neo/Consensus/ChangeView.cs b/src/neo/Consensus/ChangeView.cs similarity index 100% rename from neo/Consensus/ChangeView.cs rename to src/neo/Consensus/ChangeView.cs diff --git a/neo/Consensus/ChangeViewReason.cs b/src/neo/Consensus/ChangeViewReason.cs similarity index 100% rename from neo/Consensus/ChangeViewReason.cs rename to src/neo/Consensus/ChangeViewReason.cs diff --git a/neo/Consensus/Commit.cs b/src/neo/Consensus/Commit.cs similarity index 100% rename from neo/Consensus/Commit.cs rename to src/neo/Consensus/Commit.cs diff --git a/neo/Consensus/ConsensusContext.cs b/src/neo/Consensus/ConsensusContext.cs similarity index 100% rename from neo/Consensus/ConsensusContext.cs rename to src/neo/Consensus/ConsensusContext.cs diff --git a/neo/Consensus/ConsensusMessage.cs b/src/neo/Consensus/ConsensusMessage.cs similarity index 100% rename from neo/Consensus/ConsensusMessage.cs rename to src/neo/Consensus/ConsensusMessage.cs diff --git a/neo/Consensus/ConsensusMessageType.cs b/src/neo/Consensus/ConsensusMessageType.cs similarity index 100% rename from neo/Consensus/ConsensusMessageType.cs rename to src/neo/Consensus/ConsensusMessageType.cs diff --git a/neo/Consensus/ConsensusService.cs b/src/neo/Consensus/ConsensusService.cs similarity index 100% rename from neo/Consensus/ConsensusService.cs rename to src/neo/Consensus/ConsensusService.cs diff --git a/neo/Consensus/PrepareRequest.cs b/src/neo/Consensus/PrepareRequest.cs similarity index 100% rename from neo/Consensus/PrepareRequest.cs rename to src/neo/Consensus/PrepareRequest.cs diff --git a/neo/Consensus/PrepareResponse.cs b/src/neo/Consensus/PrepareResponse.cs similarity index 100% rename from neo/Consensus/PrepareResponse.cs rename to src/neo/Consensus/PrepareResponse.cs diff --git a/neo/Consensus/RecoveryMessage.ChangeViewPayloadCompact.cs b/src/neo/Consensus/RecoveryMessage.ChangeViewPayloadCompact.cs similarity index 100% rename from neo/Consensus/RecoveryMessage.ChangeViewPayloadCompact.cs rename to src/neo/Consensus/RecoveryMessage.ChangeViewPayloadCompact.cs diff --git a/neo/Consensus/RecoveryMessage.CommitPayloadCompact.cs b/src/neo/Consensus/RecoveryMessage.CommitPayloadCompact.cs similarity index 100% rename from neo/Consensus/RecoveryMessage.CommitPayloadCompact.cs rename to src/neo/Consensus/RecoveryMessage.CommitPayloadCompact.cs diff --git a/neo/Consensus/RecoveryMessage.PreparationPayloadCompact.cs b/src/neo/Consensus/RecoveryMessage.PreparationPayloadCompact.cs similarity index 100% rename from neo/Consensus/RecoveryMessage.PreparationPayloadCompact.cs rename to src/neo/Consensus/RecoveryMessage.PreparationPayloadCompact.cs diff --git a/neo/Consensus/RecoveryMessage.cs b/src/neo/Consensus/RecoveryMessage.cs similarity index 100% rename from neo/Consensus/RecoveryMessage.cs rename to src/neo/Consensus/RecoveryMessage.cs diff --git a/neo/Consensus/RecoveryRequest.cs b/src/neo/Consensus/RecoveryRequest.cs similarity index 100% rename from neo/Consensus/RecoveryRequest.cs rename to src/neo/Consensus/RecoveryRequest.cs diff --git a/neo/Cryptography/Base58.cs b/src/neo/Cryptography/Base58.cs similarity index 100% rename from neo/Cryptography/Base58.cs rename to src/neo/Cryptography/Base58.cs diff --git a/neo/Cryptography/BloomFilter.cs b/src/neo/Cryptography/BloomFilter.cs similarity index 100% rename from neo/Cryptography/BloomFilter.cs rename to src/neo/Cryptography/BloomFilter.cs diff --git a/neo/Cryptography/Crypto.cs b/src/neo/Cryptography/Crypto.cs similarity index 100% rename from neo/Cryptography/Crypto.cs rename to src/neo/Cryptography/Crypto.cs diff --git a/neo/Cryptography/ECC/ECCurve.cs b/src/neo/Cryptography/ECC/ECCurve.cs similarity index 100% rename from neo/Cryptography/ECC/ECCurve.cs rename to src/neo/Cryptography/ECC/ECCurve.cs diff --git a/neo/Cryptography/ECC/ECDsa.cs b/src/neo/Cryptography/ECC/ECDsa.cs similarity index 100% rename from neo/Cryptography/ECC/ECDsa.cs rename to src/neo/Cryptography/ECC/ECDsa.cs diff --git a/neo/Cryptography/ECC/ECFieldElement.cs b/src/neo/Cryptography/ECC/ECFieldElement.cs similarity index 100% rename from neo/Cryptography/ECC/ECFieldElement.cs rename to src/neo/Cryptography/ECC/ECFieldElement.cs diff --git a/neo/Cryptography/ECC/ECPoint.cs b/src/neo/Cryptography/ECC/ECPoint.cs similarity index 100% rename from neo/Cryptography/ECC/ECPoint.cs rename to src/neo/Cryptography/ECC/ECPoint.cs diff --git a/neo/Cryptography/Helper.cs b/src/neo/Cryptography/Helper.cs similarity index 100% rename from neo/Cryptography/Helper.cs rename to src/neo/Cryptography/Helper.cs diff --git a/neo/Cryptography/MerkleTree.cs b/src/neo/Cryptography/MerkleTree.cs similarity index 100% rename from neo/Cryptography/MerkleTree.cs rename to src/neo/Cryptography/MerkleTree.cs diff --git a/neo/Cryptography/MerkleTreeNode.cs b/src/neo/Cryptography/MerkleTreeNode.cs similarity index 100% rename from neo/Cryptography/MerkleTreeNode.cs rename to src/neo/Cryptography/MerkleTreeNode.cs diff --git a/neo/Cryptography/Murmur3.cs b/src/neo/Cryptography/Murmur3.cs similarity index 100% rename from neo/Cryptography/Murmur3.cs rename to src/neo/Cryptography/Murmur3.cs diff --git a/neo/Cryptography/RIPEMD160Managed.cs b/src/neo/Cryptography/RIPEMD160Managed.cs similarity index 100% rename from neo/Cryptography/RIPEMD160Managed.cs rename to src/neo/Cryptography/RIPEMD160Managed.cs diff --git a/neo/Cryptography/SCrypt.cs b/src/neo/Cryptography/SCrypt.cs similarity index 100% rename from neo/Cryptography/SCrypt.cs rename to src/neo/Cryptography/SCrypt.cs diff --git a/neo/Helper.cs b/src/neo/Helper.cs similarity index 100% rename from neo/Helper.cs rename to src/neo/Helper.cs diff --git a/neo/IO/Actors/Idle.cs b/src/neo/IO/Actors/Idle.cs similarity index 100% rename from neo/IO/Actors/Idle.cs rename to src/neo/IO/Actors/Idle.cs diff --git a/neo/IO/Actors/PriorityMailbox.cs b/src/neo/IO/Actors/PriorityMailbox.cs similarity index 100% rename from neo/IO/Actors/PriorityMailbox.cs rename to src/neo/IO/Actors/PriorityMailbox.cs diff --git a/neo/IO/Actors/PriorityMessageQueue.cs b/src/neo/IO/Actors/PriorityMessageQueue.cs similarity index 100% rename from neo/IO/Actors/PriorityMessageQueue.cs rename to src/neo/IO/Actors/PriorityMessageQueue.cs diff --git a/neo/IO/ByteArrayComparer.cs b/src/neo/IO/ByteArrayComparer.cs similarity index 100% rename from neo/IO/ByteArrayComparer.cs rename to src/neo/IO/ByteArrayComparer.cs diff --git a/neo/IO/Caching/Cache.cs b/src/neo/IO/Caching/Cache.cs similarity index 100% rename from neo/IO/Caching/Cache.cs rename to src/neo/IO/Caching/Cache.cs diff --git a/neo/IO/Caching/CloneCache.cs b/src/neo/IO/Caching/CloneCache.cs similarity index 100% rename from neo/IO/Caching/CloneCache.cs rename to src/neo/IO/Caching/CloneCache.cs diff --git a/neo/IO/Caching/CloneMetaCache.cs b/src/neo/IO/Caching/CloneMetaCache.cs similarity index 100% rename from neo/IO/Caching/CloneMetaCache.cs rename to src/neo/IO/Caching/CloneMetaCache.cs diff --git a/neo/IO/Caching/DataCache.cs b/src/neo/IO/Caching/DataCache.cs similarity index 100% rename from neo/IO/Caching/DataCache.cs rename to src/neo/IO/Caching/DataCache.cs diff --git a/neo/IO/Caching/FIFOCache.cs b/src/neo/IO/Caching/FIFOCache.cs similarity index 100% rename from neo/IO/Caching/FIFOCache.cs rename to src/neo/IO/Caching/FIFOCache.cs diff --git a/neo/IO/Caching/FIFOSet.cs b/src/neo/IO/Caching/FIFOSet.cs similarity index 100% rename from neo/IO/Caching/FIFOSet.cs rename to src/neo/IO/Caching/FIFOSet.cs diff --git a/neo/IO/Caching/MetaDataCache.cs b/src/neo/IO/Caching/MetaDataCache.cs similarity index 100% rename from neo/IO/Caching/MetaDataCache.cs rename to src/neo/IO/Caching/MetaDataCache.cs diff --git a/neo/IO/Caching/OrderedDictionary.cs b/src/neo/IO/Caching/OrderedDictionary.cs similarity index 100% rename from neo/IO/Caching/OrderedDictionary.cs rename to src/neo/IO/Caching/OrderedDictionary.cs diff --git a/neo/IO/Caching/ReflectionCache.cs b/src/neo/IO/Caching/ReflectionCache.cs similarity index 100% rename from neo/IO/Caching/ReflectionCache.cs rename to src/neo/IO/Caching/ReflectionCache.cs diff --git a/neo/IO/Caching/ReflectionCacheAttribute.cs b/src/neo/IO/Caching/ReflectionCacheAttribute.cs similarity index 100% rename from neo/IO/Caching/ReflectionCacheAttribute.cs rename to src/neo/IO/Caching/ReflectionCacheAttribute.cs diff --git a/neo/IO/Caching/RelayCache.cs b/src/neo/IO/Caching/RelayCache.cs similarity index 100% rename from neo/IO/Caching/RelayCache.cs rename to src/neo/IO/Caching/RelayCache.cs diff --git a/neo/IO/Caching/TrackState.cs b/src/neo/IO/Caching/TrackState.cs similarity index 100% rename from neo/IO/Caching/TrackState.cs rename to src/neo/IO/Caching/TrackState.cs diff --git a/neo/IO/Data/LevelDB/DB.cs b/src/neo/IO/Data/LevelDB/DB.cs similarity index 100% rename from neo/IO/Data/LevelDB/DB.cs rename to src/neo/IO/Data/LevelDB/DB.cs diff --git a/neo/IO/Data/LevelDB/Helper.cs b/src/neo/IO/Data/LevelDB/Helper.cs similarity index 100% rename from neo/IO/Data/LevelDB/Helper.cs rename to src/neo/IO/Data/LevelDB/Helper.cs diff --git a/neo/IO/Data/LevelDB/Iterator.cs b/src/neo/IO/Data/LevelDB/Iterator.cs similarity index 100% rename from neo/IO/Data/LevelDB/Iterator.cs rename to src/neo/IO/Data/LevelDB/Iterator.cs diff --git a/neo/IO/Data/LevelDB/LevelDBException.cs b/src/neo/IO/Data/LevelDB/LevelDBException.cs similarity index 100% rename from neo/IO/Data/LevelDB/LevelDBException.cs rename to src/neo/IO/Data/LevelDB/LevelDBException.cs diff --git a/neo/IO/Data/LevelDB/Native.cs b/src/neo/IO/Data/LevelDB/Native.cs similarity index 100% rename from neo/IO/Data/LevelDB/Native.cs rename to src/neo/IO/Data/LevelDB/Native.cs diff --git a/neo/IO/Data/LevelDB/Options.cs b/src/neo/IO/Data/LevelDB/Options.cs similarity index 100% rename from neo/IO/Data/LevelDB/Options.cs rename to src/neo/IO/Data/LevelDB/Options.cs diff --git a/neo/IO/Data/LevelDB/ReadOptions.cs b/src/neo/IO/Data/LevelDB/ReadOptions.cs similarity index 100% rename from neo/IO/Data/LevelDB/ReadOptions.cs rename to src/neo/IO/Data/LevelDB/ReadOptions.cs diff --git a/neo/IO/Data/LevelDB/Slice.cs b/src/neo/IO/Data/LevelDB/Slice.cs similarity index 100% rename from neo/IO/Data/LevelDB/Slice.cs rename to src/neo/IO/Data/LevelDB/Slice.cs diff --git a/neo/IO/Data/LevelDB/SliceBuilder.cs b/src/neo/IO/Data/LevelDB/SliceBuilder.cs similarity index 100% rename from neo/IO/Data/LevelDB/SliceBuilder.cs rename to src/neo/IO/Data/LevelDB/SliceBuilder.cs diff --git a/neo/IO/Data/LevelDB/Snapshot.cs b/src/neo/IO/Data/LevelDB/Snapshot.cs similarity index 100% rename from neo/IO/Data/LevelDB/Snapshot.cs rename to src/neo/IO/Data/LevelDB/Snapshot.cs diff --git a/neo/IO/Data/LevelDB/WriteBatch.cs b/src/neo/IO/Data/LevelDB/WriteBatch.cs similarity index 100% rename from neo/IO/Data/LevelDB/WriteBatch.cs rename to src/neo/IO/Data/LevelDB/WriteBatch.cs diff --git a/neo/IO/Data/LevelDB/WriteOptions.cs b/src/neo/IO/Data/LevelDB/WriteOptions.cs similarity index 100% rename from neo/IO/Data/LevelDB/WriteOptions.cs rename to src/neo/IO/Data/LevelDB/WriteOptions.cs diff --git a/neo/IO/Helper.cs b/src/neo/IO/Helper.cs similarity index 100% rename from neo/IO/Helper.cs rename to src/neo/IO/Helper.cs diff --git a/neo/IO/ICloneable.cs b/src/neo/IO/ICloneable.cs similarity index 100% rename from neo/IO/ICloneable.cs rename to src/neo/IO/ICloneable.cs diff --git a/neo/IO/ISerializable.cs b/src/neo/IO/ISerializable.cs similarity index 100% rename from neo/IO/ISerializable.cs rename to src/neo/IO/ISerializable.cs diff --git a/neo/IO/Json/JArray.cs b/src/neo/IO/Json/JArray.cs similarity index 100% rename from neo/IO/Json/JArray.cs rename to src/neo/IO/Json/JArray.cs diff --git a/neo/IO/Json/JBoolean.cs b/src/neo/IO/Json/JBoolean.cs similarity index 100% rename from neo/IO/Json/JBoolean.cs rename to src/neo/IO/Json/JBoolean.cs diff --git a/neo/IO/Json/JNumber.cs b/src/neo/IO/Json/JNumber.cs similarity index 100% rename from neo/IO/Json/JNumber.cs rename to src/neo/IO/Json/JNumber.cs diff --git a/neo/IO/Json/JObject.cs b/src/neo/IO/Json/JObject.cs similarity index 100% rename from neo/IO/Json/JObject.cs rename to src/neo/IO/Json/JObject.cs diff --git a/neo/IO/Json/JString.cs b/src/neo/IO/Json/JString.cs similarity index 100% rename from neo/IO/Json/JString.cs rename to src/neo/IO/Json/JString.cs diff --git a/neo/IO/Wrappers/SerializableWrapper.cs b/src/neo/IO/Wrappers/SerializableWrapper.cs similarity index 100% rename from neo/IO/Wrappers/SerializableWrapper.cs rename to src/neo/IO/Wrappers/SerializableWrapper.cs diff --git a/neo/IO/Wrappers/UInt32Wrapper.cs b/src/neo/IO/Wrappers/UInt32Wrapper.cs similarity index 100% rename from neo/IO/Wrappers/UInt32Wrapper.cs rename to src/neo/IO/Wrappers/UInt32Wrapper.cs diff --git a/neo/Ledger/Blockchain.ApplicationExecuted.cs b/src/neo/Ledger/Blockchain.ApplicationExecuted.cs similarity index 100% rename from neo/Ledger/Blockchain.ApplicationExecuted.cs rename to src/neo/Ledger/Blockchain.ApplicationExecuted.cs diff --git a/neo/Ledger/Blockchain.cs b/src/neo/Ledger/Blockchain.cs similarity index 100% rename from neo/Ledger/Blockchain.cs rename to src/neo/Ledger/Blockchain.cs diff --git a/neo/Ledger/ContractState.cs b/src/neo/Ledger/ContractState.cs similarity index 100% rename from neo/Ledger/ContractState.cs rename to src/neo/Ledger/ContractState.cs diff --git a/neo/Ledger/HashIndexState.cs b/src/neo/Ledger/HashIndexState.cs similarity index 100% rename from neo/Ledger/HashIndexState.cs rename to src/neo/Ledger/HashIndexState.cs diff --git a/neo/Ledger/HeaderHashList.cs b/src/neo/Ledger/HeaderHashList.cs similarity index 100% rename from neo/Ledger/HeaderHashList.cs rename to src/neo/Ledger/HeaderHashList.cs diff --git a/neo/Ledger/MemoryPool.cs b/src/neo/Ledger/MemoryPool.cs similarity index 100% rename from neo/Ledger/MemoryPool.cs rename to src/neo/Ledger/MemoryPool.cs diff --git a/neo/Ledger/PoolItem.cs b/src/neo/Ledger/PoolItem.cs similarity index 100% rename from neo/Ledger/PoolItem.cs rename to src/neo/Ledger/PoolItem.cs diff --git a/neo/Ledger/RelayResultReason.cs b/src/neo/Ledger/RelayResultReason.cs similarity index 100% rename from neo/Ledger/RelayResultReason.cs rename to src/neo/Ledger/RelayResultReason.cs diff --git a/neo/Ledger/SendersFeeMonitor.cs b/src/neo/Ledger/SendersFeeMonitor.cs similarity index 100% rename from neo/Ledger/SendersFeeMonitor.cs rename to src/neo/Ledger/SendersFeeMonitor.cs diff --git a/neo/Ledger/StorageFlags.cs b/src/neo/Ledger/StorageFlags.cs similarity index 100% rename from neo/Ledger/StorageFlags.cs rename to src/neo/Ledger/StorageFlags.cs diff --git a/neo/Ledger/StorageItem.cs b/src/neo/Ledger/StorageItem.cs similarity index 100% rename from neo/Ledger/StorageItem.cs rename to src/neo/Ledger/StorageItem.cs diff --git a/neo/Ledger/StorageKey.cs b/src/neo/Ledger/StorageKey.cs similarity index 100% rename from neo/Ledger/StorageKey.cs rename to src/neo/Ledger/StorageKey.cs diff --git a/neo/Ledger/TransactionState.cs b/src/neo/Ledger/TransactionState.cs similarity index 100% rename from neo/Ledger/TransactionState.cs rename to src/neo/Ledger/TransactionState.cs diff --git a/neo/Ledger/TrimmedBlock.cs b/src/neo/Ledger/TrimmedBlock.cs similarity index 100% rename from neo/Ledger/TrimmedBlock.cs rename to src/neo/Ledger/TrimmedBlock.cs diff --git a/neo/NeoSystem.cs b/src/neo/NeoSystem.cs similarity index 100% rename from neo/NeoSystem.cs rename to src/neo/NeoSystem.cs diff --git a/neo/Network/P2P/Capabilities/FullNodeCapability.cs b/src/neo/Network/P2P/Capabilities/FullNodeCapability.cs similarity index 100% rename from neo/Network/P2P/Capabilities/FullNodeCapability.cs rename to src/neo/Network/P2P/Capabilities/FullNodeCapability.cs diff --git a/neo/Network/P2P/Capabilities/NodeCapability.cs b/src/neo/Network/P2P/Capabilities/NodeCapability.cs similarity index 100% rename from neo/Network/P2P/Capabilities/NodeCapability.cs rename to src/neo/Network/P2P/Capabilities/NodeCapability.cs diff --git a/neo/Network/P2P/Capabilities/NodeCapabilityType.cs b/src/neo/Network/P2P/Capabilities/NodeCapabilityType.cs similarity index 100% rename from neo/Network/P2P/Capabilities/NodeCapabilityType.cs rename to src/neo/Network/P2P/Capabilities/NodeCapabilityType.cs diff --git a/neo/Network/P2P/Capabilities/ServerCapability.cs b/src/neo/Network/P2P/Capabilities/ServerCapability.cs similarity index 100% rename from neo/Network/P2P/Capabilities/ServerCapability.cs rename to src/neo/Network/P2P/Capabilities/ServerCapability.cs diff --git a/neo/Network/P2P/ChannelsConfig.cs b/src/neo/Network/P2P/ChannelsConfig.cs similarity index 100% rename from neo/Network/P2P/ChannelsConfig.cs rename to src/neo/Network/P2P/ChannelsConfig.cs diff --git a/neo/Network/P2P/Connection.cs b/src/neo/Network/P2P/Connection.cs similarity index 100% rename from neo/Network/P2P/Connection.cs rename to src/neo/Network/P2P/Connection.cs diff --git a/neo/Network/P2P/Helper.cs b/src/neo/Network/P2P/Helper.cs similarity index 100% rename from neo/Network/P2P/Helper.cs rename to src/neo/Network/P2P/Helper.cs diff --git a/neo/Network/P2P/LocalNode.cs b/src/neo/Network/P2P/LocalNode.cs similarity index 100% rename from neo/Network/P2P/LocalNode.cs rename to src/neo/Network/P2P/LocalNode.cs diff --git a/neo/Network/P2P/Message.cs b/src/neo/Network/P2P/Message.cs similarity index 100% rename from neo/Network/P2P/Message.cs rename to src/neo/Network/P2P/Message.cs diff --git a/neo/Network/P2P/MessageCommand.cs b/src/neo/Network/P2P/MessageCommand.cs similarity index 100% rename from neo/Network/P2P/MessageCommand.cs rename to src/neo/Network/P2P/MessageCommand.cs diff --git a/neo/Network/P2P/MessageFlags.cs b/src/neo/Network/P2P/MessageFlags.cs similarity index 100% rename from neo/Network/P2P/MessageFlags.cs rename to src/neo/Network/P2P/MessageFlags.cs diff --git a/neo/Network/P2P/Payloads/AddrPayload.cs b/src/neo/Network/P2P/Payloads/AddrPayload.cs similarity index 100% rename from neo/Network/P2P/Payloads/AddrPayload.cs rename to src/neo/Network/P2P/Payloads/AddrPayload.cs diff --git a/neo/Network/P2P/Payloads/Block.cs b/src/neo/Network/P2P/Payloads/Block.cs similarity index 100% rename from neo/Network/P2P/Payloads/Block.cs rename to src/neo/Network/P2P/Payloads/Block.cs diff --git a/neo/Network/P2P/Payloads/BlockBase.cs b/src/neo/Network/P2P/Payloads/BlockBase.cs similarity index 100% rename from neo/Network/P2P/Payloads/BlockBase.cs rename to src/neo/Network/P2P/Payloads/BlockBase.cs diff --git a/neo/Network/P2P/Payloads/ConsensusData.cs b/src/neo/Network/P2P/Payloads/ConsensusData.cs similarity index 100% rename from neo/Network/P2P/Payloads/ConsensusData.cs rename to src/neo/Network/P2P/Payloads/ConsensusData.cs diff --git a/neo/Network/P2P/Payloads/ConsensusPayload.cs b/src/neo/Network/P2P/Payloads/ConsensusPayload.cs similarity index 100% rename from neo/Network/P2P/Payloads/ConsensusPayload.cs rename to src/neo/Network/P2P/Payloads/ConsensusPayload.cs diff --git a/neo/Network/P2P/Payloads/Cosigner.cs b/src/neo/Network/P2P/Payloads/Cosigner.cs similarity index 100% rename from neo/Network/P2P/Payloads/Cosigner.cs rename to src/neo/Network/P2P/Payloads/Cosigner.cs diff --git a/neo/Network/P2P/Payloads/FilterAddPayload.cs b/src/neo/Network/P2P/Payloads/FilterAddPayload.cs similarity index 100% rename from neo/Network/P2P/Payloads/FilterAddPayload.cs rename to src/neo/Network/P2P/Payloads/FilterAddPayload.cs diff --git a/neo/Network/P2P/Payloads/FilterLoadPayload.cs b/src/neo/Network/P2P/Payloads/FilterLoadPayload.cs similarity index 100% rename from neo/Network/P2P/Payloads/FilterLoadPayload.cs rename to src/neo/Network/P2P/Payloads/FilterLoadPayload.cs diff --git a/neo/Network/P2P/Payloads/GetBlockDataPayload.cs b/src/neo/Network/P2P/Payloads/GetBlockDataPayload.cs similarity index 100% rename from neo/Network/P2P/Payloads/GetBlockDataPayload.cs rename to src/neo/Network/P2P/Payloads/GetBlockDataPayload.cs diff --git a/neo/Network/P2P/Payloads/GetBlocksPayload.cs b/src/neo/Network/P2P/Payloads/GetBlocksPayload.cs similarity index 100% rename from neo/Network/P2P/Payloads/GetBlocksPayload.cs rename to src/neo/Network/P2P/Payloads/GetBlocksPayload.cs diff --git a/neo/Network/P2P/Payloads/Header.cs b/src/neo/Network/P2P/Payloads/Header.cs similarity index 100% rename from neo/Network/P2P/Payloads/Header.cs rename to src/neo/Network/P2P/Payloads/Header.cs diff --git a/neo/Network/P2P/Payloads/HeadersPayload.cs b/src/neo/Network/P2P/Payloads/HeadersPayload.cs similarity index 100% rename from neo/Network/P2P/Payloads/HeadersPayload.cs rename to src/neo/Network/P2P/Payloads/HeadersPayload.cs diff --git a/neo/Network/P2P/Payloads/IInventory.cs b/src/neo/Network/P2P/Payloads/IInventory.cs similarity index 100% rename from neo/Network/P2P/Payloads/IInventory.cs rename to src/neo/Network/P2P/Payloads/IInventory.cs diff --git a/neo/Network/P2P/Payloads/IVerifiable.cs b/src/neo/Network/P2P/Payloads/IVerifiable.cs similarity index 100% rename from neo/Network/P2P/Payloads/IVerifiable.cs rename to src/neo/Network/P2P/Payloads/IVerifiable.cs diff --git a/neo/Network/P2P/Payloads/InvPayload.cs b/src/neo/Network/P2P/Payloads/InvPayload.cs similarity index 100% rename from neo/Network/P2P/Payloads/InvPayload.cs rename to src/neo/Network/P2P/Payloads/InvPayload.cs diff --git a/neo/Network/P2P/Payloads/InventoryType.cs b/src/neo/Network/P2P/Payloads/InventoryType.cs similarity index 100% rename from neo/Network/P2P/Payloads/InventoryType.cs rename to src/neo/Network/P2P/Payloads/InventoryType.cs diff --git a/neo/Network/P2P/Payloads/MerkleBlockPayload.cs b/src/neo/Network/P2P/Payloads/MerkleBlockPayload.cs similarity index 100% rename from neo/Network/P2P/Payloads/MerkleBlockPayload.cs rename to src/neo/Network/P2P/Payloads/MerkleBlockPayload.cs diff --git a/neo/Network/P2P/Payloads/NetworkAddressWithTime.cs b/src/neo/Network/P2P/Payloads/NetworkAddressWithTime.cs similarity index 100% rename from neo/Network/P2P/Payloads/NetworkAddressWithTime.cs rename to src/neo/Network/P2P/Payloads/NetworkAddressWithTime.cs diff --git a/neo/Network/P2P/Payloads/PingPayload.cs b/src/neo/Network/P2P/Payloads/PingPayload.cs similarity index 100% rename from neo/Network/P2P/Payloads/PingPayload.cs rename to src/neo/Network/P2P/Payloads/PingPayload.cs diff --git a/neo/Network/P2P/Payloads/Transaction.cs b/src/neo/Network/P2P/Payloads/Transaction.cs similarity index 100% rename from neo/Network/P2P/Payloads/Transaction.cs rename to src/neo/Network/P2P/Payloads/Transaction.cs diff --git a/neo/Network/P2P/Payloads/TransactionAttribute.cs b/src/neo/Network/P2P/Payloads/TransactionAttribute.cs similarity index 100% rename from neo/Network/P2P/Payloads/TransactionAttribute.cs rename to src/neo/Network/P2P/Payloads/TransactionAttribute.cs diff --git a/neo/Network/P2P/Payloads/TransactionAttributeUsage.cs b/src/neo/Network/P2P/Payloads/TransactionAttributeUsage.cs similarity index 100% rename from neo/Network/P2P/Payloads/TransactionAttributeUsage.cs rename to src/neo/Network/P2P/Payloads/TransactionAttributeUsage.cs diff --git a/neo/Network/P2P/Payloads/VersionPayload.cs b/src/neo/Network/P2P/Payloads/VersionPayload.cs similarity index 100% rename from neo/Network/P2P/Payloads/VersionPayload.cs rename to src/neo/Network/P2P/Payloads/VersionPayload.cs diff --git a/neo/Network/P2P/Payloads/Witness.cs b/src/neo/Network/P2P/Payloads/Witness.cs similarity index 100% rename from neo/Network/P2P/Payloads/Witness.cs rename to src/neo/Network/P2P/Payloads/Witness.cs diff --git a/neo/Network/P2P/Payloads/WitnessScope.cs b/src/neo/Network/P2P/Payloads/WitnessScope.cs similarity index 100% rename from neo/Network/P2P/Payloads/WitnessScope.cs rename to src/neo/Network/P2P/Payloads/WitnessScope.cs diff --git a/neo/Network/P2P/Peer.cs b/src/neo/Network/P2P/Peer.cs similarity index 100% rename from neo/Network/P2P/Peer.cs rename to src/neo/Network/P2P/Peer.cs diff --git a/neo/Network/P2P/ProtocolHandler.cs b/src/neo/Network/P2P/ProtocolHandler.cs similarity index 100% rename from neo/Network/P2P/ProtocolHandler.cs rename to src/neo/Network/P2P/ProtocolHandler.cs diff --git a/neo/Network/P2P/RemoteNode.cs b/src/neo/Network/P2P/RemoteNode.cs similarity index 100% rename from neo/Network/P2P/RemoteNode.cs rename to src/neo/Network/P2P/RemoteNode.cs diff --git a/neo/Network/P2P/TaskManager.cs b/src/neo/Network/P2P/TaskManager.cs similarity index 100% rename from neo/Network/P2P/TaskManager.cs rename to src/neo/Network/P2P/TaskManager.cs diff --git a/neo/Network/P2P/TaskSession.cs b/src/neo/Network/P2P/TaskSession.cs similarity index 100% rename from neo/Network/P2P/TaskSession.cs rename to src/neo/Network/P2P/TaskSession.cs diff --git a/neo/Network/RPC/ContractClient.cs b/src/neo/Network/RPC/ContractClient.cs similarity index 100% rename from neo/Network/RPC/ContractClient.cs rename to src/neo/Network/RPC/ContractClient.cs diff --git a/neo/Network/RPC/Helper.cs b/src/neo/Network/RPC/Helper.cs similarity index 100% rename from neo/Network/RPC/Helper.cs rename to src/neo/Network/RPC/Helper.cs diff --git a/neo/Network/RPC/Models/RpcBlock.cs b/src/neo/Network/RPC/Models/RpcBlock.cs similarity index 100% rename from neo/Network/RPC/Models/RpcBlock.cs rename to src/neo/Network/RPC/Models/RpcBlock.cs diff --git a/neo/Network/RPC/Models/RpcBlockHeader.cs b/src/neo/Network/RPC/Models/RpcBlockHeader.cs similarity index 100% rename from neo/Network/RPC/Models/RpcBlockHeader.cs rename to src/neo/Network/RPC/Models/RpcBlockHeader.cs diff --git a/neo/Network/RPC/Models/RpcInvokeResult.cs b/src/neo/Network/RPC/Models/RpcInvokeResult.cs similarity index 100% rename from neo/Network/RPC/Models/RpcInvokeResult.cs rename to src/neo/Network/RPC/Models/RpcInvokeResult.cs diff --git a/neo/Network/RPC/Models/RpcNep5Balances.cs b/src/neo/Network/RPC/Models/RpcNep5Balances.cs similarity index 100% rename from neo/Network/RPC/Models/RpcNep5Balances.cs rename to src/neo/Network/RPC/Models/RpcNep5Balances.cs diff --git a/neo/Network/RPC/Models/RpcNep5TokenInfo.cs b/src/neo/Network/RPC/Models/RpcNep5TokenInfo.cs similarity index 100% rename from neo/Network/RPC/Models/RpcNep5TokenInfo.cs rename to src/neo/Network/RPC/Models/RpcNep5TokenInfo.cs diff --git a/neo/Network/RPC/Models/RpcPeers.cs b/src/neo/Network/RPC/Models/RpcPeers.cs similarity index 100% rename from neo/Network/RPC/Models/RpcPeers.cs rename to src/neo/Network/RPC/Models/RpcPeers.cs diff --git a/neo/Network/RPC/Models/RpcPlugin.cs b/src/neo/Network/RPC/Models/RpcPlugin.cs similarity index 100% rename from neo/Network/RPC/Models/RpcPlugin.cs rename to src/neo/Network/RPC/Models/RpcPlugin.cs diff --git a/neo/Network/RPC/Models/RpcRawMemPool.cs b/src/neo/Network/RPC/Models/RpcRawMemPool.cs similarity index 100% rename from neo/Network/RPC/Models/RpcRawMemPool.cs rename to src/neo/Network/RPC/Models/RpcRawMemPool.cs diff --git a/neo/Network/RPC/Models/RpcRequest.cs b/src/neo/Network/RPC/Models/RpcRequest.cs similarity index 100% rename from neo/Network/RPC/Models/RpcRequest.cs rename to src/neo/Network/RPC/Models/RpcRequest.cs diff --git a/neo/Network/RPC/Models/RpcResponse.cs b/src/neo/Network/RPC/Models/RpcResponse.cs similarity index 100% rename from neo/Network/RPC/Models/RpcResponse.cs rename to src/neo/Network/RPC/Models/RpcResponse.cs diff --git a/neo/Network/RPC/Models/RpcTransaction.cs b/src/neo/Network/RPC/Models/RpcTransaction.cs similarity index 100% rename from neo/Network/RPC/Models/RpcTransaction.cs rename to src/neo/Network/RPC/Models/RpcTransaction.cs diff --git a/neo/Network/RPC/Models/RpcValidateAddressResult.cs b/src/neo/Network/RPC/Models/RpcValidateAddressResult.cs similarity index 100% rename from neo/Network/RPC/Models/RpcValidateAddressResult.cs rename to src/neo/Network/RPC/Models/RpcValidateAddressResult.cs diff --git a/neo/Network/RPC/Models/RpcValidator.cs b/src/neo/Network/RPC/Models/RpcValidator.cs similarity index 100% rename from neo/Network/RPC/Models/RpcValidator.cs rename to src/neo/Network/RPC/Models/RpcValidator.cs diff --git a/neo/Network/RPC/Models/RpcVersion.cs b/src/neo/Network/RPC/Models/RpcVersion.cs similarity index 100% rename from neo/Network/RPC/Models/RpcVersion.cs rename to src/neo/Network/RPC/Models/RpcVersion.cs diff --git a/neo/Network/RPC/Nep5API.cs b/src/neo/Network/RPC/Nep5API.cs similarity index 100% rename from neo/Network/RPC/Nep5API.cs rename to src/neo/Network/RPC/Nep5API.cs diff --git a/neo/Network/RPC/PolicyAPI.cs b/src/neo/Network/RPC/PolicyAPI.cs similarity index 100% rename from neo/Network/RPC/PolicyAPI.cs rename to src/neo/Network/RPC/PolicyAPI.cs diff --git a/neo/Network/RPC/RpcClient.cs b/src/neo/Network/RPC/RpcClient.cs similarity index 100% rename from neo/Network/RPC/RpcClient.cs rename to src/neo/Network/RPC/RpcClient.cs diff --git a/neo/Network/RPC/RpcException.cs b/src/neo/Network/RPC/RpcException.cs similarity index 100% rename from neo/Network/RPC/RpcException.cs rename to src/neo/Network/RPC/RpcException.cs diff --git a/neo/Network/RPC/RpcServer.cs b/src/neo/Network/RPC/RpcServer.cs similarity index 100% rename from neo/Network/RPC/RpcServer.cs rename to src/neo/Network/RPC/RpcServer.cs diff --git a/neo/Network/RPC/TransactionManager.cs b/src/neo/Network/RPC/TransactionManager.cs similarity index 100% rename from neo/Network/RPC/TransactionManager.cs rename to src/neo/Network/RPC/TransactionManager.cs diff --git a/neo/Network/RPC/WalletAPI.cs b/src/neo/Network/RPC/WalletAPI.cs similarity index 100% rename from neo/Network/RPC/WalletAPI.cs rename to src/neo/Network/RPC/WalletAPI.cs diff --git a/neo/Network/UPnP.cs b/src/neo/Network/UPnP.cs similarity index 100% rename from neo/Network/UPnP.cs rename to src/neo/Network/UPnP.cs diff --git a/neo/Persistence/CloneSnapshot.cs b/src/neo/Persistence/CloneSnapshot.cs similarity index 100% rename from neo/Persistence/CloneSnapshot.cs rename to src/neo/Persistence/CloneSnapshot.cs diff --git a/neo/Persistence/Helper.cs b/src/neo/Persistence/Helper.cs similarity index 100% rename from neo/Persistence/Helper.cs rename to src/neo/Persistence/Helper.cs diff --git a/neo/Persistence/IPersistence.cs b/src/neo/Persistence/IPersistence.cs similarity index 100% rename from neo/Persistence/IPersistence.cs rename to src/neo/Persistence/IPersistence.cs diff --git a/neo/Persistence/LevelDB/DbCache.cs b/src/neo/Persistence/LevelDB/DbCache.cs similarity index 100% rename from neo/Persistence/LevelDB/DbCache.cs rename to src/neo/Persistence/LevelDB/DbCache.cs diff --git a/neo/Persistence/LevelDB/DbMetaDataCache.cs b/src/neo/Persistence/LevelDB/DbMetaDataCache.cs similarity index 100% rename from neo/Persistence/LevelDB/DbMetaDataCache.cs rename to src/neo/Persistence/LevelDB/DbMetaDataCache.cs diff --git a/neo/Persistence/LevelDB/DbSnapshot.cs b/src/neo/Persistence/LevelDB/DbSnapshot.cs similarity index 100% rename from neo/Persistence/LevelDB/DbSnapshot.cs rename to src/neo/Persistence/LevelDB/DbSnapshot.cs diff --git a/neo/Persistence/LevelDB/LevelDBStore.cs b/src/neo/Persistence/LevelDB/LevelDBStore.cs similarity index 100% rename from neo/Persistence/LevelDB/LevelDBStore.cs rename to src/neo/Persistence/LevelDB/LevelDBStore.cs diff --git a/neo/Persistence/LevelDB/Prefixes.cs b/src/neo/Persistence/LevelDB/Prefixes.cs similarity index 100% rename from neo/Persistence/LevelDB/Prefixes.cs rename to src/neo/Persistence/LevelDB/Prefixes.cs diff --git a/neo/Persistence/Snapshot.cs b/src/neo/Persistence/Snapshot.cs similarity index 100% rename from neo/Persistence/Snapshot.cs rename to src/neo/Persistence/Snapshot.cs diff --git a/neo/Persistence/Store.cs b/src/neo/Persistence/Store.cs similarity index 100% rename from neo/Persistence/Store.cs rename to src/neo/Persistence/Store.cs diff --git a/neo/Plugins/ILogPlugin.cs b/src/neo/Plugins/ILogPlugin.cs similarity index 100% rename from neo/Plugins/ILogPlugin.cs rename to src/neo/Plugins/ILogPlugin.cs diff --git a/neo/Plugins/IMemoryPoolTxObserverPlugin.cs b/src/neo/Plugins/IMemoryPoolTxObserverPlugin.cs similarity index 100% rename from neo/Plugins/IMemoryPoolTxObserverPlugin.cs rename to src/neo/Plugins/IMemoryPoolTxObserverPlugin.cs diff --git a/neo/Plugins/IP2PPlugin.cs b/src/neo/Plugins/IP2PPlugin.cs similarity index 100% rename from neo/Plugins/IP2PPlugin.cs rename to src/neo/Plugins/IP2PPlugin.cs diff --git a/neo/Plugins/IPersistencePlugin.cs b/src/neo/Plugins/IPersistencePlugin.cs similarity index 100% rename from neo/Plugins/IPersistencePlugin.cs rename to src/neo/Plugins/IPersistencePlugin.cs diff --git a/neo/Plugins/IRpcPlugin.cs b/src/neo/Plugins/IRpcPlugin.cs similarity index 100% rename from neo/Plugins/IRpcPlugin.cs rename to src/neo/Plugins/IRpcPlugin.cs diff --git a/neo/Plugins/LogLevel.cs b/src/neo/Plugins/LogLevel.cs similarity index 100% rename from neo/Plugins/LogLevel.cs rename to src/neo/Plugins/LogLevel.cs diff --git a/neo/Plugins/MemoryPoolTxRemovalReason.cs b/src/neo/Plugins/MemoryPoolTxRemovalReason.cs similarity index 100% rename from neo/Plugins/MemoryPoolTxRemovalReason.cs rename to src/neo/Plugins/MemoryPoolTxRemovalReason.cs diff --git a/neo/Plugins/Plugin.cs b/src/neo/Plugins/Plugin.cs similarity index 100% rename from neo/Plugins/Plugin.cs rename to src/neo/Plugins/Plugin.cs diff --git a/neo/Properties/AssemblyInfo.cs b/src/neo/Properties/AssemblyInfo.cs similarity index 100% rename from neo/Properties/AssemblyInfo.cs rename to src/neo/Properties/AssemblyInfo.cs diff --git a/neo/ProtocolSettings.cs b/src/neo/ProtocolSettings.cs similarity index 100% rename from neo/ProtocolSettings.cs rename to src/neo/ProtocolSettings.cs diff --git a/neo/SmartContract/ApplicationEngine.OpCodePrices.cs b/src/neo/SmartContract/ApplicationEngine.OpCodePrices.cs similarity index 100% rename from neo/SmartContract/ApplicationEngine.OpCodePrices.cs rename to src/neo/SmartContract/ApplicationEngine.OpCodePrices.cs diff --git a/neo/SmartContract/ApplicationEngine.cs b/src/neo/SmartContract/ApplicationEngine.cs similarity index 100% rename from neo/SmartContract/ApplicationEngine.cs rename to src/neo/SmartContract/ApplicationEngine.cs diff --git a/neo/SmartContract/ContainerPlaceholder.cs b/src/neo/SmartContract/ContainerPlaceholder.cs similarity index 100% rename from neo/SmartContract/ContainerPlaceholder.cs rename to src/neo/SmartContract/ContainerPlaceholder.cs diff --git a/neo/SmartContract/Contract.cs b/src/neo/SmartContract/Contract.cs similarity index 100% rename from neo/SmartContract/Contract.cs rename to src/neo/SmartContract/Contract.cs diff --git a/neo/SmartContract/ContractParameter.cs b/src/neo/SmartContract/ContractParameter.cs similarity index 100% rename from neo/SmartContract/ContractParameter.cs rename to src/neo/SmartContract/ContractParameter.cs diff --git a/neo/SmartContract/ContractParameterType.cs b/src/neo/SmartContract/ContractParameterType.cs similarity index 100% rename from neo/SmartContract/ContractParameterType.cs rename to src/neo/SmartContract/ContractParameterType.cs diff --git a/neo/SmartContract/ContractParametersContext.cs b/src/neo/SmartContract/ContractParametersContext.cs similarity index 100% rename from neo/SmartContract/ContractParametersContext.cs rename to src/neo/SmartContract/ContractParametersContext.cs diff --git a/neo/SmartContract/Enumerators/ConcatenatedEnumerator.cs b/src/neo/SmartContract/Enumerators/ConcatenatedEnumerator.cs similarity index 100% rename from neo/SmartContract/Enumerators/ConcatenatedEnumerator.cs rename to src/neo/SmartContract/Enumerators/ConcatenatedEnumerator.cs diff --git a/neo/SmartContract/Enumerators/IEnumerator.cs b/src/neo/SmartContract/Enumerators/IEnumerator.cs similarity index 100% rename from neo/SmartContract/Enumerators/IEnumerator.cs rename to src/neo/SmartContract/Enumerators/IEnumerator.cs diff --git a/neo/SmartContract/Enumerators/IteratorKeysWrapper.cs b/src/neo/SmartContract/Enumerators/IteratorKeysWrapper.cs similarity index 100% rename from neo/SmartContract/Enumerators/IteratorKeysWrapper.cs rename to src/neo/SmartContract/Enumerators/IteratorKeysWrapper.cs diff --git a/neo/SmartContract/Enumerators/IteratorValuesWrapper.cs b/src/neo/SmartContract/Enumerators/IteratorValuesWrapper.cs similarity index 100% rename from neo/SmartContract/Enumerators/IteratorValuesWrapper.cs rename to src/neo/SmartContract/Enumerators/IteratorValuesWrapper.cs diff --git a/neo/SmartContract/ExecutionContextState.cs b/src/neo/SmartContract/ExecutionContextState.cs similarity index 100% rename from neo/SmartContract/ExecutionContextState.cs rename to src/neo/SmartContract/ExecutionContextState.cs diff --git a/neo/SmartContract/Helper.cs b/src/neo/SmartContract/Helper.cs similarity index 100% rename from neo/SmartContract/Helper.cs rename to src/neo/SmartContract/Helper.cs diff --git a/neo/SmartContract/IInteroperable.cs b/src/neo/SmartContract/IInteroperable.cs similarity index 100% rename from neo/SmartContract/IInteroperable.cs rename to src/neo/SmartContract/IInteroperable.cs diff --git a/neo/SmartContract/InteropDescriptor.cs b/src/neo/SmartContract/InteropDescriptor.cs similarity index 100% rename from neo/SmartContract/InteropDescriptor.cs rename to src/neo/SmartContract/InteropDescriptor.cs diff --git a/neo/SmartContract/InteropService.NEO.cs b/src/neo/SmartContract/InteropService.NEO.cs similarity index 100% rename from neo/SmartContract/InteropService.NEO.cs rename to src/neo/SmartContract/InteropService.NEO.cs diff --git a/neo/SmartContract/InteropService.cs b/src/neo/SmartContract/InteropService.cs similarity index 100% rename from neo/SmartContract/InteropService.cs rename to src/neo/SmartContract/InteropService.cs diff --git a/neo/SmartContract/Iterators/ArrayWrapper.cs b/src/neo/SmartContract/Iterators/ArrayWrapper.cs similarity index 100% rename from neo/SmartContract/Iterators/ArrayWrapper.cs rename to src/neo/SmartContract/Iterators/ArrayWrapper.cs diff --git a/neo/SmartContract/Iterators/ConcatenatedIterator.cs b/src/neo/SmartContract/Iterators/ConcatenatedIterator.cs similarity index 100% rename from neo/SmartContract/Iterators/ConcatenatedIterator.cs rename to src/neo/SmartContract/Iterators/ConcatenatedIterator.cs diff --git a/neo/SmartContract/Iterators/IIterator.cs b/src/neo/SmartContract/Iterators/IIterator.cs similarity index 100% rename from neo/SmartContract/Iterators/IIterator.cs rename to src/neo/SmartContract/Iterators/IIterator.cs diff --git a/neo/SmartContract/Iterators/MapWrapper.cs b/src/neo/SmartContract/Iterators/MapWrapper.cs similarity index 100% rename from neo/SmartContract/Iterators/MapWrapper.cs rename to src/neo/SmartContract/Iterators/MapWrapper.cs diff --git a/neo/SmartContract/Iterators/StorageIterator.cs b/src/neo/SmartContract/Iterators/StorageIterator.cs similarity index 100% rename from neo/SmartContract/Iterators/StorageIterator.cs rename to src/neo/SmartContract/Iterators/StorageIterator.cs diff --git a/neo/SmartContract/JsonSerializer.cs b/src/neo/SmartContract/JsonSerializer.cs similarity index 100% rename from neo/SmartContract/JsonSerializer.cs rename to src/neo/SmartContract/JsonSerializer.cs diff --git a/neo/SmartContract/LogEventArgs.cs b/src/neo/SmartContract/LogEventArgs.cs similarity index 100% rename from neo/SmartContract/LogEventArgs.cs rename to src/neo/SmartContract/LogEventArgs.cs diff --git a/neo/SmartContract/Manifest/ContractAbi.cs b/src/neo/SmartContract/Manifest/ContractAbi.cs similarity index 100% rename from neo/SmartContract/Manifest/ContractAbi.cs rename to src/neo/SmartContract/Manifest/ContractAbi.cs diff --git a/neo/SmartContract/Manifest/ContractEventDescriptor.cs b/src/neo/SmartContract/Manifest/ContractEventDescriptor.cs similarity index 100% rename from neo/SmartContract/Manifest/ContractEventDescriptor.cs rename to src/neo/SmartContract/Manifest/ContractEventDescriptor.cs diff --git a/neo/SmartContract/Manifest/ContractFeatures.cs b/src/neo/SmartContract/Manifest/ContractFeatures.cs similarity index 100% rename from neo/SmartContract/Manifest/ContractFeatures.cs rename to src/neo/SmartContract/Manifest/ContractFeatures.cs diff --git a/neo/SmartContract/Manifest/ContractGroup.cs b/src/neo/SmartContract/Manifest/ContractGroup.cs similarity index 100% rename from neo/SmartContract/Manifest/ContractGroup.cs rename to src/neo/SmartContract/Manifest/ContractGroup.cs diff --git a/neo/SmartContract/Manifest/ContractManifest.cs b/src/neo/SmartContract/Manifest/ContractManifest.cs similarity index 100% rename from neo/SmartContract/Manifest/ContractManifest.cs rename to src/neo/SmartContract/Manifest/ContractManifest.cs diff --git a/neo/SmartContract/Manifest/ContractMethodDescriptor.cs b/src/neo/SmartContract/Manifest/ContractMethodDescriptor.cs similarity index 100% rename from neo/SmartContract/Manifest/ContractMethodDescriptor.cs rename to src/neo/SmartContract/Manifest/ContractMethodDescriptor.cs diff --git a/neo/SmartContract/Manifest/ContractParameterDefinition.cs b/src/neo/SmartContract/Manifest/ContractParameterDefinition.cs similarity index 100% rename from neo/SmartContract/Manifest/ContractParameterDefinition.cs rename to src/neo/SmartContract/Manifest/ContractParameterDefinition.cs diff --git a/neo/SmartContract/Manifest/ContractPermission.cs b/src/neo/SmartContract/Manifest/ContractPermission.cs similarity index 100% rename from neo/SmartContract/Manifest/ContractPermission.cs rename to src/neo/SmartContract/Manifest/ContractPermission.cs diff --git a/neo/SmartContract/Manifest/ContractPermissionDescriptor.cs b/src/neo/SmartContract/Manifest/ContractPermissionDescriptor.cs similarity index 100% rename from neo/SmartContract/Manifest/ContractPermissionDescriptor.cs rename to src/neo/SmartContract/Manifest/ContractPermissionDescriptor.cs diff --git a/neo/SmartContract/Manifest/WildCardContainer.cs b/src/neo/SmartContract/Manifest/WildCardContainer.cs similarity index 100% rename from neo/SmartContract/Manifest/WildCardContainer.cs rename to src/neo/SmartContract/Manifest/WildCardContainer.cs diff --git a/neo/SmartContract/Native/ContractMethodAttribute.cs b/src/neo/SmartContract/Native/ContractMethodAttribute.cs similarity index 100% rename from neo/SmartContract/Native/ContractMethodAttribute.cs rename to src/neo/SmartContract/Native/ContractMethodAttribute.cs diff --git a/neo/SmartContract/Native/ContractMethodMetadata.cs b/src/neo/SmartContract/Native/ContractMethodMetadata.cs similarity index 100% rename from neo/SmartContract/Native/ContractMethodMetadata.cs rename to src/neo/SmartContract/Native/ContractMethodMetadata.cs diff --git a/neo/SmartContract/Native/NativeContract.cs b/src/neo/SmartContract/Native/NativeContract.cs similarity index 100% rename from neo/SmartContract/Native/NativeContract.cs rename to src/neo/SmartContract/Native/NativeContract.cs diff --git a/neo/SmartContract/Native/PolicyContract.cs b/src/neo/SmartContract/Native/PolicyContract.cs similarity index 100% rename from neo/SmartContract/Native/PolicyContract.cs rename to src/neo/SmartContract/Native/PolicyContract.cs diff --git a/neo/SmartContract/Native/Tokens/GasToken.cs b/src/neo/SmartContract/Native/Tokens/GasToken.cs similarity index 100% rename from neo/SmartContract/Native/Tokens/GasToken.cs rename to src/neo/SmartContract/Native/Tokens/GasToken.cs diff --git a/neo/SmartContract/Native/Tokens/NeoToken.cs b/src/neo/SmartContract/Native/Tokens/NeoToken.cs similarity index 100% rename from neo/SmartContract/Native/Tokens/NeoToken.cs rename to src/neo/SmartContract/Native/Tokens/NeoToken.cs diff --git a/neo/SmartContract/Native/Tokens/Nep5AccountState.cs b/src/neo/SmartContract/Native/Tokens/Nep5AccountState.cs similarity index 100% rename from neo/SmartContract/Native/Tokens/Nep5AccountState.cs rename to src/neo/SmartContract/Native/Tokens/Nep5AccountState.cs diff --git a/neo/SmartContract/Native/Tokens/Nep5Token.cs b/src/neo/SmartContract/Native/Tokens/Nep5Token.cs similarity index 100% rename from neo/SmartContract/Native/Tokens/Nep5Token.cs rename to src/neo/SmartContract/Native/Tokens/Nep5Token.cs diff --git a/neo/SmartContract/NefFile.cs b/src/neo/SmartContract/NefFile.cs similarity index 100% rename from neo/SmartContract/NefFile.cs rename to src/neo/SmartContract/NefFile.cs diff --git a/neo/SmartContract/NotifyEventArgs.cs b/src/neo/SmartContract/NotifyEventArgs.cs similarity index 100% rename from neo/SmartContract/NotifyEventArgs.cs rename to src/neo/SmartContract/NotifyEventArgs.cs diff --git a/neo/SmartContract/StackItemType.cs b/src/neo/SmartContract/StackItemType.cs similarity index 100% rename from neo/SmartContract/StackItemType.cs rename to src/neo/SmartContract/StackItemType.cs diff --git a/neo/SmartContract/StorageContext.cs b/src/neo/SmartContract/StorageContext.cs similarity index 100% rename from neo/SmartContract/StorageContext.cs rename to src/neo/SmartContract/StorageContext.cs diff --git a/neo/SmartContract/TriggerType.cs b/src/neo/SmartContract/TriggerType.cs similarity index 100% rename from neo/SmartContract/TriggerType.cs rename to src/neo/SmartContract/TriggerType.cs diff --git a/neo/TimeProvider.cs b/src/neo/TimeProvider.cs similarity index 100% rename from neo/TimeProvider.cs rename to src/neo/TimeProvider.cs diff --git a/neo/UInt160.cs b/src/neo/UInt160.cs similarity index 100% rename from neo/UInt160.cs rename to src/neo/UInt160.cs diff --git a/neo/UInt256.cs b/src/neo/UInt256.cs similarity index 100% rename from neo/UInt256.cs rename to src/neo/UInt256.cs diff --git a/neo/UIntBase.cs b/src/neo/UIntBase.cs similarity index 100% rename from neo/UIntBase.cs rename to src/neo/UIntBase.cs diff --git a/neo/Utility.cs b/src/neo/Utility.cs similarity index 100% rename from neo/Utility.cs rename to src/neo/Utility.cs diff --git a/neo/VM/Helper.cs b/src/neo/VM/Helper.cs similarity index 100% rename from neo/VM/Helper.cs rename to src/neo/VM/Helper.cs diff --git a/neo/Wallets/AssetDescriptor.cs b/src/neo/Wallets/AssetDescriptor.cs similarity index 100% rename from neo/Wallets/AssetDescriptor.cs rename to src/neo/Wallets/AssetDescriptor.cs diff --git a/neo/Wallets/Helper.cs b/src/neo/Wallets/Helper.cs similarity index 100% rename from neo/Wallets/Helper.cs rename to src/neo/Wallets/Helper.cs diff --git a/neo/Wallets/KeyPair.cs b/src/neo/Wallets/KeyPair.cs similarity index 100% rename from neo/Wallets/KeyPair.cs rename to src/neo/Wallets/KeyPair.cs diff --git a/neo/Wallets/NEP6/NEP6Account.cs b/src/neo/Wallets/NEP6/NEP6Account.cs similarity index 100% rename from neo/Wallets/NEP6/NEP6Account.cs rename to src/neo/Wallets/NEP6/NEP6Account.cs diff --git a/neo/Wallets/NEP6/NEP6Contract.cs b/src/neo/Wallets/NEP6/NEP6Contract.cs similarity index 100% rename from neo/Wallets/NEP6/NEP6Contract.cs rename to src/neo/Wallets/NEP6/NEP6Contract.cs diff --git a/neo/Wallets/NEP6/NEP6Wallet.cs b/src/neo/Wallets/NEP6/NEP6Wallet.cs similarity index 100% rename from neo/Wallets/NEP6/NEP6Wallet.cs rename to src/neo/Wallets/NEP6/NEP6Wallet.cs diff --git a/neo/Wallets/NEP6/ScryptParameters.cs b/src/neo/Wallets/NEP6/ScryptParameters.cs similarity index 100% rename from neo/Wallets/NEP6/ScryptParameters.cs rename to src/neo/Wallets/NEP6/ScryptParameters.cs diff --git a/neo/Wallets/NEP6/WalletLocker.cs b/src/neo/Wallets/NEP6/WalletLocker.cs similarity index 100% rename from neo/Wallets/NEP6/WalletLocker.cs rename to src/neo/Wallets/NEP6/WalletLocker.cs diff --git a/neo/Wallets/SQLite/Account.cs b/src/neo/Wallets/SQLite/Account.cs similarity index 100% rename from neo/Wallets/SQLite/Account.cs rename to src/neo/Wallets/SQLite/Account.cs diff --git a/neo/Wallets/SQLite/Address.cs b/src/neo/Wallets/SQLite/Address.cs similarity index 100% rename from neo/Wallets/SQLite/Address.cs rename to src/neo/Wallets/SQLite/Address.cs diff --git a/neo/Wallets/SQLite/Contract.cs b/src/neo/Wallets/SQLite/Contract.cs similarity index 100% rename from neo/Wallets/SQLite/Contract.cs rename to src/neo/Wallets/SQLite/Contract.cs diff --git a/neo/Wallets/SQLite/Key.cs b/src/neo/Wallets/SQLite/Key.cs similarity index 100% rename from neo/Wallets/SQLite/Key.cs rename to src/neo/Wallets/SQLite/Key.cs diff --git a/neo/Wallets/SQLite/UserWallet.cs b/src/neo/Wallets/SQLite/UserWallet.cs similarity index 100% rename from neo/Wallets/SQLite/UserWallet.cs rename to src/neo/Wallets/SQLite/UserWallet.cs diff --git a/neo/Wallets/SQLite/UserWalletAccount.cs b/src/neo/Wallets/SQLite/UserWalletAccount.cs similarity index 100% rename from neo/Wallets/SQLite/UserWalletAccount.cs rename to src/neo/Wallets/SQLite/UserWalletAccount.cs diff --git a/neo/Wallets/SQLite/VerificationContract.cs b/src/neo/Wallets/SQLite/VerificationContract.cs similarity index 100% rename from neo/Wallets/SQLite/VerificationContract.cs rename to src/neo/Wallets/SQLite/VerificationContract.cs diff --git a/neo/Wallets/SQLite/WalletDataContext.cs b/src/neo/Wallets/SQLite/WalletDataContext.cs similarity index 100% rename from neo/Wallets/SQLite/WalletDataContext.cs rename to src/neo/Wallets/SQLite/WalletDataContext.cs diff --git a/neo/Wallets/TransferOutput.cs b/src/neo/Wallets/TransferOutput.cs similarity index 100% rename from neo/Wallets/TransferOutput.cs rename to src/neo/Wallets/TransferOutput.cs diff --git a/neo/Wallets/Wallet.cs b/src/neo/Wallets/Wallet.cs similarity index 100% rename from neo/Wallets/Wallet.cs rename to src/neo/Wallets/Wallet.cs diff --git a/neo/Wallets/WalletAccount.cs b/src/neo/Wallets/WalletAccount.cs similarity index 100% rename from neo/Wallets/WalletAccount.cs rename to src/neo/Wallets/WalletAccount.cs diff --git a/neo/neo.csproj b/src/neo/neo.csproj similarity index 100% rename from neo/neo.csproj rename to src/neo/neo.csproj diff --git a/neo.UnitTests/Consensus/UT_Consensus.cs b/tests/neo.UnitTests/Consensus/UT_Consensus.cs similarity index 100% rename from neo.UnitTests/Consensus/UT_Consensus.cs rename to tests/neo.UnitTests/Consensus/UT_Consensus.cs diff --git a/neo.UnitTests/Consensus/UT_ConsensusContext.cs b/tests/neo.UnitTests/Consensus/UT_ConsensusContext.cs similarity index 100% rename from neo.UnitTests/Consensus/UT_ConsensusContext.cs rename to tests/neo.UnitTests/Consensus/UT_ConsensusContext.cs diff --git a/neo.UnitTests/Consensus/UT_ConsensusServiceMailbox.cs b/tests/neo.UnitTests/Consensus/UT_ConsensusServiceMailbox.cs similarity index 100% rename from neo.UnitTests/Consensus/UT_ConsensusServiceMailbox.cs rename to tests/neo.UnitTests/Consensus/UT_ConsensusServiceMailbox.cs diff --git a/neo.UnitTests/Cryptography/ECC/UT_ECDsa.cs b/tests/neo.UnitTests/Cryptography/ECC/UT_ECDsa.cs similarity index 100% rename from neo.UnitTests/Cryptography/ECC/UT_ECDsa.cs rename to tests/neo.UnitTests/Cryptography/ECC/UT_ECDsa.cs diff --git a/neo.UnitTests/Cryptography/ECC/UT_ECFieldElement.cs b/tests/neo.UnitTests/Cryptography/ECC/UT_ECFieldElement.cs similarity index 100% rename from neo.UnitTests/Cryptography/ECC/UT_ECFieldElement.cs rename to tests/neo.UnitTests/Cryptography/ECC/UT_ECFieldElement.cs diff --git a/neo.UnitTests/Cryptography/ECC/UT_ECPoint.cs b/tests/neo.UnitTests/Cryptography/ECC/UT_ECPoint.cs similarity index 100% rename from neo.UnitTests/Cryptography/ECC/UT_ECPoint.cs rename to tests/neo.UnitTests/Cryptography/ECC/UT_ECPoint.cs diff --git a/neo.UnitTests/Cryptography/UT_Base58.cs b/tests/neo.UnitTests/Cryptography/UT_Base58.cs similarity index 100% rename from neo.UnitTests/Cryptography/UT_Base58.cs rename to tests/neo.UnitTests/Cryptography/UT_Base58.cs diff --git a/neo.UnitTests/Cryptography/UT_BloomFilter.cs b/tests/neo.UnitTests/Cryptography/UT_BloomFilter.cs similarity index 100% rename from neo.UnitTests/Cryptography/UT_BloomFilter.cs rename to tests/neo.UnitTests/Cryptography/UT_BloomFilter.cs diff --git a/neo.UnitTests/Cryptography/UT_Crypto.cs b/tests/neo.UnitTests/Cryptography/UT_Crypto.cs similarity index 100% rename from neo.UnitTests/Cryptography/UT_Crypto.cs rename to tests/neo.UnitTests/Cryptography/UT_Crypto.cs diff --git a/neo.UnitTests/Cryptography/UT_Cryptography_Helper.cs b/tests/neo.UnitTests/Cryptography/UT_Cryptography_Helper.cs similarity index 100% rename from neo.UnitTests/Cryptography/UT_Cryptography_Helper.cs rename to tests/neo.UnitTests/Cryptography/UT_Cryptography_Helper.cs diff --git a/neo.UnitTests/Cryptography/UT_MerkleTree.cs b/tests/neo.UnitTests/Cryptography/UT_MerkleTree.cs similarity index 100% rename from neo.UnitTests/Cryptography/UT_MerkleTree.cs rename to tests/neo.UnitTests/Cryptography/UT_MerkleTree.cs diff --git a/neo.UnitTests/Cryptography/UT_MerkleTreeNode.cs b/tests/neo.UnitTests/Cryptography/UT_MerkleTreeNode.cs similarity index 100% rename from neo.UnitTests/Cryptography/UT_MerkleTreeNode.cs rename to tests/neo.UnitTests/Cryptography/UT_MerkleTreeNode.cs diff --git a/neo.UnitTests/Cryptography/UT_Murmur3.cs b/tests/neo.UnitTests/Cryptography/UT_Murmur3.cs similarity index 100% rename from neo.UnitTests/Cryptography/UT_Murmur3.cs rename to tests/neo.UnitTests/Cryptography/UT_Murmur3.cs diff --git a/neo.UnitTests/Cryptography/UT_SCrypt.cs b/tests/neo.UnitTests/Cryptography/UT_SCrypt.cs similarity index 100% rename from neo.UnitTests/Cryptography/UT_SCrypt.cs rename to tests/neo.UnitTests/Cryptography/UT_SCrypt.cs diff --git a/neo.UnitTests/Extensions/NativeContractExtensions.cs b/tests/neo.UnitTests/Extensions/NativeContractExtensions.cs similarity index 100% rename from neo.UnitTests/Extensions/NativeContractExtensions.cs rename to tests/neo.UnitTests/Extensions/NativeContractExtensions.cs diff --git a/neo.UnitTests/Extensions/Nep5NativeContractExtensions.cs b/tests/neo.UnitTests/Extensions/Nep5NativeContractExtensions.cs similarity index 100% rename from neo.UnitTests/Extensions/Nep5NativeContractExtensions.cs rename to tests/neo.UnitTests/Extensions/Nep5NativeContractExtensions.cs diff --git a/neo.UnitTests/IO/Caching/UT_Cache.cs b/tests/neo.UnitTests/IO/Caching/UT_Cache.cs similarity index 100% rename from neo.UnitTests/IO/Caching/UT_Cache.cs rename to tests/neo.UnitTests/IO/Caching/UT_Cache.cs diff --git a/neo.UnitTests/IO/Caching/UT_CloneCache.cs b/tests/neo.UnitTests/IO/Caching/UT_CloneCache.cs similarity index 100% rename from neo.UnitTests/IO/Caching/UT_CloneCache.cs rename to tests/neo.UnitTests/IO/Caching/UT_CloneCache.cs diff --git a/neo.UnitTests/IO/Caching/UT_CloneMetaCache.cs b/tests/neo.UnitTests/IO/Caching/UT_CloneMetaCache.cs similarity index 100% rename from neo.UnitTests/IO/Caching/UT_CloneMetaCache.cs rename to tests/neo.UnitTests/IO/Caching/UT_CloneMetaCache.cs diff --git a/neo.UnitTests/IO/Caching/UT_DataCache.cs b/tests/neo.UnitTests/IO/Caching/UT_DataCache.cs similarity index 100% rename from neo.UnitTests/IO/Caching/UT_DataCache.cs rename to tests/neo.UnitTests/IO/Caching/UT_DataCache.cs diff --git a/neo.UnitTests/IO/Caching/UT_FIFOSet.cs b/tests/neo.UnitTests/IO/Caching/UT_FIFOSet.cs similarity index 100% rename from neo.UnitTests/IO/Caching/UT_FIFOSet.cs rename to tests/neo.UnitTests/IO/Caching/UT_FIFOSet.cs diff --git a/neo.UnitTests/IO/Caching/UT_MetaDataCache.cs b/tests/neo.UnitTests/IO/Caching/UT_MetaDataCache.cs similarity index 100% rename from neo.UnitTests/IO/Caching/UT_MetaDataCache.cs rename to tests/neo.UnitTests/IO/Caching/UT_MetaDataCache.cs diff --git a/neo.UnitTests/IO/Caching/UT_OrderedDictionary.cs b/tests/neo.UnitTests/IO/Caching/UT_OrderedDictionary.cs similarity index 100% rename from neo.UnitTests/IO/Caching/UT_OrderedDictionary.cs rename to tests/neo.UnitTests/IO/Caching/UT_OrderedDictionary.cs diff --git a/neo.UnitTests/IO/Caching/UT_ReflectionCache.cs b/tests/neo.UnitTests/IO/Caching/UT_ReflectionCache.cs similarity index 100% rename from neo.UnitTests/IO/Caching/UT_ReflectionCache.cs rename to tests/neo.UnitTests/IO/Caching/UT_ReflectionCache.cs diff --git a/neo.UnitTests/IO/Caching/UT_RelayCache.cs b/tests/neo.UnitTests/IO/Caching/UT_RelayCache.cs similarity index 100% rename from neo.UnitTests/IO/Caching/UT_RelayCache.cs rename to tests/neo.UnitTests/IO/Caching/UT_RelayCache.cs diff --git a/neo.UnitTests/IO/Data/LevelDb/UT_Slice.cs b/tests/neo.UnitTests/IO/Data/LevelDb/UT_Slice.cs similarity index 100% rename from neo.UnitTests/IO/Data/LevelDb/UT_Slice.cs rename to tests/neo.UnitTests/IO/Data/LevelDb/UT_Slice.cs diff --git a/neo.UnitTests/IO/Json/UT_JArray.cs b/tests/neo.UnitTests/IO/Json/UT_JArray.cs similarity index 100% rename from neo.UnitTests/IO/Json/UT_JArray.cs rename to tests/neo.UnitTests/IO/Json/UT_JArray.cs diff --git a/neo.UnitTests/IO/Json/UT_JBoolean.cs b/tests/neo.UnitTests/IO/Json/UT_JBoolean.cs similarity index 100% rename from neo.UnitTests/IO/Json/UT_JBoolean.cs rename to tests/neo.UnitTests/IO/Json/UT_JBoolean.cs diff --git a/neo.UnitTests/IO/Json/UT_JNumber.cs b/tests/neo.UnitTests/IO/Json/UT_JNumber.cs similarity index 100% rename from neo.UnitTests/IO/Json/UT_JNumber.cs rename to tests/neo.UnitTests/IO/Json/UT_JNumber.cs diff --git a/neo.UnitTests/IO/Json/UT_JObject.cs b/tests/neo.UnitTests/IO/Json/UT_JObject.cs similarity index 100% rename from neo.UnitTests/IO/Json/UT_JObject.cs rename to tests/neo.UnitTests/IO/Json/UT_JObject.cs diff --git a/neo.UnitTests/IO/Json/UT_JString.cs b/tests/neo.UnitTests/IO/Json/UT_JString.cs similarity index 100% rename from neo.UnitTests/IO/Json/UT_JString.cs rename to tests/neo.UnitTests/IO/Json/UT_JString.cs diff --git a/neo.UnitTests/IO/UT_ByteArrayComparer.cs b/tests/neo.UnitTests/IO/UT_ByteArrayComparer.cs similarity index 100% rename from neo.UnitTests/IO/UT_ByteArrayComparer.cs rename to tests/neo.UnitTests/IO/UT_ByteArrayComparer.cs diff --git a/neo.UnitTests/IO/UT_IOHelper.cs b/tests/neo.UnitTests/IO/UT_IOHelper.cs similarity index 100% rename from neo.UnitTests/IO/UT_IOHelper.cs rename to tests/neo.UnitTests/IO/UT_IOHelper.cs diff --git a/neo.UnitTests/IO/Wrappers/UT_SerializableWrapper.cs b/tests/neo.UnitTests/IO/Wrappers/UT_SerializableWrapper.cs similarity index 100% rename from neo.UnitTests/IO/Wrappers/UT_SerializableWrapper.cs rename to tests/neo.UnitTests/IO/Wrappers/UT_SerializableWrapper.cs diff --git a/neo.UnitTests/IO/Wrappers/UT_UInt32Wrapper.cs b/tests/neo.UnitTests/IO/Wrappers/UT_UInt32Wrapper.cs similarity index 100% rename from neo.UnitTests/IO/Wrappers/UT_UInt32Wrapper.cs rename to tests/neo.UnitTests/IO/Wrappers/UT_UInt32Wrapper.cs diff --git a/neo.UnitTests/Ledger/UT_Blockchain.cs b/tests/neo.UnitTests/Ledger/UT_Blockchain.cs similarity index 100% rename from neo.UnitTests/Ledger/UT_Blockchain.cs rename to tests/neo.UnitTests/Ledger/UT_Blockchain.cs diff --git a/neo.UnitTests/Ledger/UT_ContractState.cs b/tests/neo.UnitTests/Ledger/UT_ContractState.cs similarity index 100% rename from neo.UnitTests/Ledger/UT_ContractState.cs rename to tests/neo.UnitTests/Ledger/UT_ContractState.cs diff --git a/neo.UnitTests/Ledger/UT_HashIndexState.cs b/tests/neo.UnitTests/Ledger/UT_HashIndexState.cs similarity index 100% rename from neo.UnitTests/Ledger/UT_HashIndexState.cs rename to tests/neo.UnitTests/Ledger/UT_HashIndexState.cs diff --git a/neo.UnitTests/Ledger/UT_HeaderHashList.cs b/tests/neo.UnitTests/Ledger/UT_HeaderHashList.cs similarity index 100% rename from neo.UnitTests/Ledger/UT_HeaderHashList.cs rename to tests/neo.UnitTests/Ledger/UT_HeaderHashList.cs diff --git a/neo.UnitTests/Ledger/UT_MemoryPool.cs b/tests/neo.UnitTests/Ledger/UT_MemoryPool.cs similarity index 100% rename from neo.UnitTests/Ledger/UT_MemoryPool.cs rename to tests/neo.UnitTests/Ledger/UT_MemoryPool.cs diff --git a/neo.UnitTests/Ledger/UT_PoolItem.cs b/tests/neo.UnitTests/Ledger/UT_PoolItem.cs similarity index 100% rename from neo.UnitTests/Ledger/UT_PoolItem.cs rename to tests/neo.UnitTests/Ledger/UT_PoolItem.cs diff --git a/neo.UnitTests/Ledger/UT_SendersFeeMonitor.cs b/tests/neo.UnitTests/Ledger/UT_SendersFeeMonitor.cs similarity index 100% rename from neo.UnitTests/Ledger/UT_SendersFeeMonitor.cs rename to tests/neo.UnitTests/Ledger/UT_SendersFeeMonitor.cs diff --git a/neo.UnitTests/Ledger/UT_StorageItem.cs b/tests/neo.UnitTests/Ledger/UT_StorageItem.cs similarity index 100% rename from neo.UnitTests/Ledger/UT_StorageItem.cs rename to tests/neo.UnitTests/Ledger/UT_StorageItem.cs diff --git a/neo.UnitTests/Ledger/UT_StorageKey.cs b/tests/neo.UnitTests/Ledger/UT_StorageKey.cs similarity index 100% rename from neo.UnitTests/Ledger/UT_StorageKey.cs rename to tests/neo.UnitTests/Ledger/UT_StorageKey.cs diff --git a/neo.UnitTests/Ledger/UT_TransactionState.cs b/tests/neo.UnitTests/Ledger/UT_TransactionState.cs similarity index 100% rename from neo.UnitTests/Ledger/UT_TransactionState.cs rename to tests/neo.UnitTests/Ledger/UT_TransactionState.cs diff --git a/neo.UnitTests/Ledger/UT_TrimmedBlock.cs b/tests/neo.UnitTests/Ledger/UT_TrimmedBlock.cs similarity index 100% rename from neo.UnitTests/Ledger/UT_TrimmedBlock.cs rename to tests/neo.UnitTests/Ledger/UT_TrimmedBlock.cs diff --git a/neo.UnitTests/Network/P2P/Payloads/UT_Block.cs b/tests/neo.UnitTests/Network/P2P/Payloads/UT_Block.cs similarity index 100% rename from neo.UnitTests/Network/P2P/Payloads/UT_Block.cs rename to tests/neo.UnitTests/Network/P2P/Payloads/UT_Block.cs diff --git a/neo.UnitTests/Network/P2P/Payloads/UT_Cosigner.cs b/tests/neo.UnitTests/Network/P2P/Payloads/UT_Cosigner.cs similarity index 100% rename from neo.UnitTests/Network/P2P/Payloads/UT_Cosigner.cs rename to tests/neo.UnitTests/Network/P2P/Payloads/UT_Cosigner.cs diff --git a/neo.UnitTests/Network/P2P/Payloads/UT_Header.cs b/tests/neo.UnitTests/Network/P2P/Payloads/UT_Header.cs similarity index 100% rename from neo.UnitTests/Network/P2P/Payloads/UT_Header.cs rename to tests/neo.UnitTests/Network/P2P/Payloads/UT_Header.cs diff --git a/neo.UnitTests/Network/P2P/Payloads/UT_Transaction.cs b/tests/neo.UnitTests/Network/P2P/Payloads/UT_Transaction.cs similarity index 100% rename from neo.UnitTests/Network/P2P/Payloads/UT_Transaction.cs rename to tests/neo.UnitTests/Network/P2P/Payloads/UT_Transaction.cs diff --git a/neo.UnitTests/Network/P2P/Payloads/UT_Witness.cs b/tests/neo.UnitTests/Network/P2P/Payloads/UT_Witness.cs similarity index 100% rename from neo.UnitTests/Network/P2P/Payloads/UT_Witness.cs rename to tests/neo.UnitTests/Network/P2P/Payloads/UT_Witness.cs diff --git a/neo.UnitTests/Network/P2P/UT_Message.cs b/tests/neo.UnitTests/Network/P2P/UT_Message.cs similarity index 100% rename from neo.UnitTests/Network/P2P/UT_Message.cs rename to tests/neo.UnitTests/Network/P2P/UT_Message.cs diff --git a/neo.UnitTests/Network/P2P/UT_ProtocolHandler.cs b/tests/neo.UnitTests/Network/P2P/UT_ProtocolHandler.cs similarity index 100% rename from neo.UnitTests/Network/P2P/UT_ProtocolHandler.cs rename to tests/neo.UnitTests/Network/P2P/UT_ProtocolHandler.cs diff --git a/neo.UnitTests/Network/P2P/UT_ProtocolHandlerMailbox.cs b/tests/neo.UnitTests/Network/P2P/UT_ProtocolHandlerMailbox.cs similarity index 100% rename from neo.UnitTests/Network/P2P/UT_ProtocolHandlerMailbox.cs rename to tests/neo.UnitTests/Network/P2P/UT_ProtocolHandlerMailbox.cs diff --git a/neo.UnitTests/Network/P2P/UT_RemoteNode.cs b/tests/neo.UnitTests/Network/P2P/UT_RemoteNode.cs similarity index 100% rename from neo.UnitTests/Network/P2P/UT_RemoteNode.cs rename to tests/neo.UnitTests/Network/P2P/UT_RemoteNode.cs diff --git a/neo.UnitTests/Network/P2P/UT_RemoteNodeMailbox.cs b/tests/neo.UnitTests/Network/P2P/UT_RemoteNodeMailbox.cs similarity index 100% rename from neo.UnitTests/Network/P2P/UT_RemoteNodeMailbox.cs rename to tests/neo.UnitTests/Network/P2P/UT_RemoteNodeMailbox.cs diff --git a/neo.UnitTests/Network/P2P/UT_TaskManagerMailbox.cs b/tests/neo.UnitTests/Network/P2P/UT_TaskManagerMailbox.cs similarity index 100% rename from neo.UnitTests/Network/P2P/UT_TaskManagerMailbox.cs rename to tests/neo.UnitTests/Network/P2P/UT_TaskManagerMailbox.cs diff --git a/neo.UnitTests/Network/RPC/Models/UT_RpcBlock.cs b/tests/neo.UnitTests/Network/RPC/Models/UT_RpcBlock.cs similarity index 100% rename from neo.UnitTests/Network/RPC/Models/UT_RpcBlock.cs rename to tests/neo.UnitTests/Network/RPC/Models/UT_RpcBlock.cs diff --git a/neo.UnitTests/Network/RPC/Models/UT_RpcBlockHeader.cs b/tests/neo.UnitTests/Network/RPC/Models/UT_RpcBlockHeader.cs similarity index 100% rename from neo.UnitTests/Network/RPC/Models/UT_RpcBlockHeader.cs rename to tests/neo.UnitTests/Network/RPC/Models/UT_RpcBlockHeader.cs diff --git a/neo.UnitTests/Network/RPC/Models/UT_RpcNep5Balance.cs b/tests/neo.UnitTests/Network/RPC/Models/UT_RpcNep5Balance.cs similarity index 100% rename from neo.UnitTests/Network/RPC/Models/UT_RpcNep5Balance.cs rename to tests/neo.UnitTests/Network/RPC/Models/UT_RpcNep5Balance.cs diff --git a/neo.UnitTests/Network/RPC/Models/UT_RpcNep5Balances.cs b/tests/neo.UnitTests/Network/RPC/Models/UT_RpcNep5Balances.cs similarity index 100% rename from neo.UnitTests/Network/RPC/Models/UT_RpcNep5Balances.cs rename to tests/neo.UnitTests/Network/RPC/Models/UT_RpcNep5Balances.cs diff --git a/neo.UnitTests/Network/RPC/Models/UT_RpcPeer.cs b/tests/neo.UnitTests/Network/RPC/Models/UT_RpcPeer.cs similarity index 100% rename from neo.UnitTests/Network/RPC/Models/UT_RpcPeer.cs rename to tests/neo.UnitTests/Network/RPC/Models/UT_RpcPeer.cs diff --git a/neo.UnitTests/Network/RPC/Models/UT_RpcPeers.cs b/tests/neo.UnitTests/Network/RPC/Models/UT_RpcPeers.cs similarity index 100% rename from neo.UnitTests/Network/RPC/Models/UT_RpcPeers.cs rename to tests/neo.UnitTests/Network/RPC/Models/UT_RpcPeers.cs diff --git a/neo.UnitTests/Network/RPC/Models/UT_RpcRawMemPool.cs b/tests/neo.UnitTests/Network/RPC/Models/UT_RpcRawMemPool.cs similarity index 100% rename from neo.UnitTests/Network/RPC/Models/UT_RpcRawMemPool.cs rename to tests/neo.UnitTests/Network/RPC/Models/UT_RpcRawMemPool.cs diff --git a/neo.UnitTests/Network/RPC/Models/UT_RpcRequest.cs b/tests/neo.UnitTests/Network/RPC/Models/UT_RpcRequest.cs similarity index 100% rename from neo.UnitTests/Network/RPC/Models/UT_RpcRequest.cs rename to tests/neo.UnitTests/Network/RPC/Models/UT_RpcRequest.cs diff --git a/neo.UnitTests/Network/RPC/Models/UT_RpcResponse.cs b/tests/neo.UnitTests/Network/RPC/Models/UT_RpcResponse.cs similarity index 100% rename from neo.UnitTests/Network/RPC/Models/UT_RpcResponse.cs rename to tests/neo.UnitTests/Network/RPC/Models/UT_RpcResponse.cs diff --git a/neo.UnitTests/Network/RPC/Models/UT_RpcVersion.cs b/tests/neo.UnitTests/Network/RPC/Models/UT_RpcVersion.cs similarity index 100% rename from neo.UnitTests/Network/RPC/Models/UT_RpcVersion.cs rename to tests/neo.UnitTests/Network/RPC/Models/UT_RpcVersion.cs diff --git a/neo.UnitTests/Network/RPC/UT_ContractClient.cs b/tests/neo.UnitTests/Network/RPC/UT_ContractClient.cs similarity index 100% rename from neo.UnitTests/Network/RPC/UT_ContractClient.cs rename to tests/neo.UnitTests/Network/RPC/UT_ContractClient.cs diff --git a/neo.UnitTests/Network/RPC/UT_Helper.cs b/tests/neo.UnitTests/Network/RPC/UT_Helper.cs similarity index 100% rename from neo.UnitTests/Network/RPC/UT_Helper.cs rename to tests/neo.UnitTests/Network/RPC/UT_Helper.cs diff --git a/neo.UnitTests/Network/RPC/UT_Nep5API.cs b/tests/neo.UnitTests/Network/RPC/UT_Nep5API.cs similarity index 100% rename from neo.UnitTests/Network/RPC/UT_Nep5API.cs rename to tests/neo.UnitTests/Network/RPC/UT_Nep5API.cs diff --git a/neo.UnitTests/Network/RPC/UT_PolicyAPI.cs b/tests/neo.UnitTests/Network/RPC/UT_PolicyAPI.cs similarity index 100% rename from neo.UnitTests/Network/RPC/UT_PolicyAPI.cs rename to tests/neo.UnitTests/Network/RPC/UT_PolicyAPI.cs diff --git a/neo.UnitTests/Network/RPC/UT_RpcClient.cs b/tests/neo.UnitTests/Network/RPC/UT_RpcClient.cs similarity index 100% rename from neo.UnitTests/Network/RPC/UT_RpcClient.cs rename to tests/neo.UnitTests/Network/RPC/UT_RpcClient.cs diff --git a/neo.UnitTests/Network/RPC/UT_RpcServer.cs b/tests/neo.UnitTests/Network/RPC/UT_RpcServer.cs similarity index 100% rename from neo.UnitTests/Network/RPC/UT_RpcServer.cs rename to tests/neo.UnitTests/Network/RPC/UT_RpcServer.cs diff --git a/neo.UnitTests/Network/RPC/UT_TransactionManager.cs b/tests/neo.UnitTests/Network/RPC/UT_TransactionManager.cs similarity index 100% rename from neo.UnitTests/Network/RPC/UT_TransactionManager.cs rename to tests/neo.UnitTests/Network/RPC/UT_TransactionManager.cs diff --git a/neo.UnitTests/Network/RPC/UT_WalletAPI.cs b/tests/neo.UnitTests/Network/RPC/UT_WalletAPI.cs similarity index 100% rename from neo.UnitTests/Network/RPC/UT_WalletAPI.cs rename to tests/neo.UnitTests/Network/RPC/UT_WalletAPI.cs diff --git a/neo.UnitTests/Plugins/TestLogPlugin.cs b/tests/neo.UnitTests/Plugins/TestLogPlugin.cs similarity index 100% rename from neo.UnitTests/Plugins/TestLogPlugin.cs rename to tests/neo.UnitTests/Plugins/TestLogPlugin.cs diff --git a/neo.UnitTests/Plugins/UT_Plugin.cs b/tests/neo.UnitTests/Plugins/UT_Plugin.cs similarity index 100% rename from neo.UnitTests/Plugins/UT_Plugin.cs rename to tests/neo.UnitTests/Plugins/UT_Plugin.cs diff --git a/neo.UnitTests/README.md b/tests/neo.UnitTests/README.md similarity index 100% rename from neo.UnitTests/README.md rename to tests/neo.UnitTests/README.md diff --git a/neo.UnitTests/SmartContract/Enumerators/UT_ConcatenatedEnumerator.cs b/tests/neo.UnitTests/SmartContract/Enumerators/UT_ConcatenatedEnumerator.cs similarity index 100% rename from neo.UnitTests/SmartContract/Enumerators/UT_ConcatenatedEnumerator.cs rename to tests/neo.UnitTests/SmartContract/Enumerators/UT_ConcatenatedEnumerator.cs diff --git a/neo.UnitTests/SmartContract/Enumerators/UT_IteratorKeysWrapper.cs b/tests/neo.UnitTests/SmartContract/Enumerators/UT_IteratorKeysWrapper.cs similarity index 100% rename from neo.UnitTests/SmartContract/Enumerators/UT_IteratorKeysWrapper.cs rename to tests/neo.UnitTests/SmartContract/Enumerators/UT_IteratorKeysWrapper.cs diff --git a/neo.UnitTests/SmartContract/Enumerators/UT_IteratorValuesWrapper.cs b/tests/neo.UnitTests/SmartContract/Enumerators/UT_IteratorValuesWrapper.cs similarity index 100% rename from neo.UnitTests/SmartContract/Enumerators/UT_IteratorValuesWrapper.cs rename to tests/neo.UnitTests/SmartContract/Enumerators/UT_IteratorValuesWrapper.cs diff --git a/neo.UnitTests/SmartContract/Iterators/UT_ArrayWrapper.cs b/tests/neo.UnitTests/SmartContract/Iterators/UT_ArrayWrapper.cs similarity index 100% rename from neo.UnitTests/SmartContract/Iterators/UT_ArrayWrapper.cs rename to tests/neo.UnitTests/SmartContract/Iterators/UT_ArrayWrapper.cs diff --git a/neo.UnitTests/SmartContract/Iterators/UT_ConcatenatedIterator.cs b/tests/neo.UnitTests/SmartContract/Iterators/UT_ConcatenatedIterator.cs similarity index 100% rename from neo.UnitTests/SmartContract/Iterators/UT_ConcatenatedIterator.cs rename to tests/neo.UnitTests/SmartContract/Iterators/UT_ConcatenatedIterator.cs diff --git a/neo.UnitTests/SmartContract/Iterators/UT_MapWrapper.cs b/tests/neo.UnitTests/SmartContract/Iterators/UT_MapWrapper.cs similarity index 100% rename from neo.UnitTests/SmartContract/Iterators/UT_MapWrapper.cs rename to tests/neo.UnitTests/SmartContract/Iterators/UT_MapWrapper.cs diff --git a/neo.UnitTests/SmartContract/Iterators/UT_StorageIterator.cs b/tests/neo.UnitTests/SmartContract/Iterators/UT_StorageIterator.cs similarity index 100% rename from neo.UnitTests/SmartContract/Iterators/UT_StorageIterator.cs rename to tests/neo.UnitTests/SmartContract/Iterators/UT_StorageIterator.cs diff --git a/neo.UnitTests/SmartContract/Manifest/UT_ContractEventDescriptor.cs b/tests/neo.UnitTests/SmartContract/Manifest/UT_ContractEventDescriptor.cs similarity index 100% rename from neo.UnitTests/SmartContract/Manifest/UT_ContractEventDescriptor.cs rename to tests/neo.UnitTests/SmartContract/Manifest/UT_ContractEventDescriptor.cs diff --git a/neo.UnitTests/SmartContract/Manifest/UT_ContractGroup.cs b/tests/neo.UnitTests/SmartContract/Manifest/UT_ContractGroup.cs similarity index 100% rename from neo.UnitTests/SmartContract/Manifest/UT_ContractGroup.cs rename to tests/neo.UnitTests/SmartContract/Manifest/UT_ContractGroup.cs diff --git a/neo.UnitTests/SmartContract/Manifest/UT_ContractManifest.cs b/tests/neo.UnitTests/SmartContract/Manifest/UT_ContractManifest.cs similarity index 100% rename from neo.UnitTests/SmartContract/Manifest/UT_ContractManifest.cs rename to tests/neo.UnitTests/SmartContract/Manifest/UT_ContractManifest.cs diff --git a/neo.UnitTests/SmartContract/Manifest/UT_ContractPermission.cs b/tests/neo.UnitTests/SmartContract/Manifest/UT_ContractPermission.cs similarity index 100% rename from neo.UnitTests/SmartContract/Manifest/UT_ContractPermission.cs rename to tests/neo.UnitTests/SmartContract/Manifest/UT_ContractPermission.cs diff --git a/neo.UnitTests/SmartContract/Manifest/UT_ContractPermissionDescriptor.cs b/tests/neo.UnitTests/SmartContract/Manifest/UT_ContractPermissionDescriptor.cs similarity index 100% rename from neo.UnitTests/SmartContract/Manifest/UT_ContractPermissionDescriptor.cs rename to tests/neo.UnitTests/SmartContract/Manifest/UT_ContractPermissionDescriptor.cs diff --git a/neo.UnitTests/SmartContract/Manifest/UT_WildCardContainer.cs b/tests/neo.UnitTests/SmartContract/Manifest/UT_WildCardContainer.cs similarity index 100% rename from neo.UnitTests/SmartContract/Manifest/UT_WildCardContainer.cs rename to tests/neo.UnitTests/SmartContract/Manifest/UT_WildCardContainer.cs diff --git a/neo.UnitTests/SmartContract/Native/Tokens/UT_GasToken.cs b/tests/neo.UnitTests/SmartContract/Native/Tokens/UT_GasToken.cs similarity index 100% rename from neo.UnitTests/SmartContract/Native/Tokens/UT_GasToken.cs rename to tests/neo.UnitTests/SmartContract/Native/Tokens/UT_GasToken.cs diff --git a/neo.UnitTests/SmartContract/Native/Tokens/UT_NeoToken.cs b/tests/neo.UnitTests/SmartContract/Native/Tokens/UT_NeoToken.cs similarity index 100% rename from neo.UnitTests/SmartContract/Native/Tokens/UT_NeoToken.cs rename to tests/neo.UnitTests/SmartContract/Native/Tokens/UT_NeoToken.cs diff --git a/neo.UnitTests/SmartContract/Native/Tokens/UT_Nep5Token.cs b/tests/neo.UnitTests/SmartContract/Native/Tokens/UT_Nep5Token.cs similarity index 100% rename from neo.UnitTests/SmartContract/Native/Tokens/UT_Nep5Token.cs rename to tests/neo.UnitTests/SmartContract/Native/Tokens/UT_Nep5Token.cs diff --git a/neo.UnitTests/SmartContract/Native/UT_NativeContract.cs b/tests/neo.UnitTests/SmartContract/Native/UT_NativeContract.cs similarity index 100% rename from neo.UnitTests/SmartContract/Native/UT_NativeContract.cs rename to tests/neo.UnitTests/SmartContract/Native/UT_NativeContract.cs diff --git a/neo.UnitTests/SmartContract/Native/UT_PolicyContract.cs b/tests/neo.UnitTests/SmartContract/Native/UT_PolicyContract.cs similarity index 100% rename from neo.UnitTests/SmartContract/Native/UT_PolicyContract.cs rename to tests/neo.UnitTests/SmartContract/Native/UT_PolicyContract.cs diff --git a/neo.UnitTests/SmartContract/UT_ApplicationEngine.cs b/tests/neo.UnitTests/SmartContract/UT_ApplicationEngine.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_ApplicationEngine.cs rename to tests/neo.UnitTests/SmartContract/UT_ApplicationEngine.cs diff --git a/neo.UnitTests/SmartContract/UT_ContainerPlaceholder.cs b/tests/neo.UnitTests/SmartContract/UT_ContainerPlaceholder.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_ContainerPlaceholder.cs rename to tests/neo.UnitTests/SmartContract/UT_ContainerPlaceholder.cs diff --git a/neo.UnitTests/SmartContract/UT_Contract.cs b/tests/neo.UnitTests/SmartContract/UT_Contract.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_Contract.cs rename to tests/neo.UnitTests/SmartContract/UT_Contract.cs diff --git a/neo.UnitTests/SmartContract/UT_ContractParameter.cs b/tests/neo.UnitTests/SmartContract/UT_ContractParameter.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_ContractParameter.cs rename to tests/neo.UnitTests/SmartContract/UT_ContractParameter.cs diff --git a/neo.UnitTests/SmartContract/UT_ContractParameterContext.cs b/tests/neo.UnitTests/SmartContract/UT_ContractParameterContext.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_ContractParameterContext.cs rename to tests/neo.UnitTests/SmartContract/UT_ContractParameterContext.cs diff --git a/neo.UnitTests/SmartContract/UT_InteropDescriptor.cs b/tests/neo.UnitTests/SmartContract/UT_InteropDescriptor.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_InteropDescriptor.cs rename to tests/neo.UnitTests/SmartContract/UT_InteropDescriptor.cs diff --git a/neo.UnitTests/SmartContract/UT_InteropPrices.cs b/tests/neo.UnitTests/SmartContract/UT_InteropPrices.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_InteropPrices.cs rename to tests/neo.UnitTests/SmartContract/UT_InteropPrices.cs diff --git a/neo.UnitTests/SmartContract/UT_InteropService.NEO.cs b/tests/neo.UnitTests/SmartContract/UT_InteropService.NEO.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_InteropService.NEO.cs rename to tests/neo.UnitTests/SmartContract/UT_InteropService.NEO.cs diff --git a/neo.UnitTests/SmartContract/UT_InteropService.cs b/tests/neo.UnitTests/SmartContract/UT_InteropService.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_InteropService.cs rename to tests/neo.UnitTests/SmartContract/UT_InteropService.cs diff --git a/neo.UnitTests/SmartContract/UT_JsonSerializer.cs b/tests/neo.UnitTests/SmartContract/UT_JsonSerializer.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_JsonSerializer.cs rename to tests/neo.UnitTests/SmartContract/UT_JsonSerializer.cs diff --git a/neo.UnitTests/SmartContract/UT_LogEventArgs.cs b/tests/neo.UnitTests/SmartContract/UT_LogEventArgs.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_LogEventArgs.cs rename to tests/neo.UnitTests/SmartContract/UT_LogEventArgs.cs diff --git a/neo.UnitTests/SmartContract/UT_NefFile.cs b/tests/neo.UnitTests/SmartContract/UT_NefFile.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_NefFile.cs rename to tests/neo.UnitTests/SmartContract/UT_NefFile.cs diff --git a/neo.UnitTests/SmartContract/UT_NotifyEventArgs.cs b/tests/neo.UnitTests/SmartContract/UT_NotifyEventArgs.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_NotifyEventArgs.cs rename to tests/neo.UnitTests/SmartContract/UT_NotifyEventArgs.cs diff --git a/neo.UnitTests/SmartContract/UT_OpCodePrices.cs b/tests/neo.UnitTests/SmartContract/UT_OpCodePrices.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_OpCodePrices.cs rename to tests/neo.UnitTests/SmartContract/UT_OpCodePrices.cs diff --git a/neo.UnitTests/SmartContract/UT_SmartContractHelper.cs b/tests/neo.UnitTests/SmartContract/UT_SmartContractHelper.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_SmartContractHelper.cs rename to tests/neo.UnitTests/SmartContract/UT_SmartContractHelper.cs diff --git a/neo.UnitTests/SmartContract/UT_StorageContext.cs b/tests/neo.UnitTests/SmartContract/UT_StorageContext.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_StorageContext.cs rename to tests/neo.UnitTests/SmartContract/UT_StorageContext.cs diff --git a/neo.UnitTests/SmartContract/UT_Syscalls.cs b/tests/neo.UnitTests/SmartContract/UT_Syscalls.cs similarity index 100% rename from neo.UnitTests/SmartContract/UT_Syscalls.cs rename to tests/neo.UnitTests/SmartContract/UT_Syscalls.cs diff --git a/neo.UnitTests/TestBlockchain.cs b/tests/neo.UnitTests/TestBlockchain.cs similarity index 100% rename from neo.UnitTests/TestBlockchain.cs rename to tests/neo.UnitTests/TestBlockchain.cs diff --git a/neo.UnitTests/TestDataCache.cs b/tests/neo.UnitTests/TestDataCache.cs similarity index 100% rename from neo.UnitTests/TestDataCache.cs rename to tests/neo.UnitTests/TestDataCache.cs diff --git a/neo.UnitTests/TestMetaDataCache.cs b/tests/neo.UnitTests/TestMetaDataCache.cs similarity index 100% rename from neo.UnitTests/TestMetaDataCache.cs rename to tests/neo.UnitTests/TestMetaDataCache.cs diff --git a/neo.UnitTests/TestUtils.cs b/tests/neo.UnitTests/TestUtils.cs similarity index 100% rename from neo.UnitTests/TestUtils.cs rename to tests/neo.UnitTests/TestUtils.cs diff --git a/neo.UnitTests/TestVerifiable.cs b/tests/neo.UnitTests/TestVerifiable.cs similarity index 100% rename from neo.UnitTests/TestVerifiable.cs rename to tests/neo.UnitTests/TestVerifiable.cs diff --git a/neo.UnitTests/TestWalletAccount.cs b/tests/neo.UnitTests/TestWalletAccount.cs similarity index 100% rename from neo.UnitTests/TestWalletAccount.cs rename to tests/neo.UnitTests/TestWalletAccount.cs diff --git a/neo.UnitTests/UT_BigDecimal.cs b/tests/neo.UnitTests/UT_BigDecimal.cs similarity index 100% rename from neo.UnitTests/UT_BigDecimal.cs rename to tests/neo.UnitTests/UT_BigDecimal.cs diff --git a/neo.UnitTests/UT_Culture.cs b/tests/neo.UnitTests/UT_Culture.cs similarity index 100% rename from neo.UnitTests/UT_Culture.cs rename to tests/neo.UnitTests/UT_Culture.cs diff --git a/neo.UnitTests/UT_DataCache.cs b/tests/neo.UnitTests/UT_DataCache.cs similarity index 100% rename from neo.UnitTests/UT_DataCache.cs rename to tests/neo.UnitTests/UT_DataCache.cs diff --git a/neo.UnitTests/UT_Helper.cs b/tests/neo.UnitTests/UT_Helper.cs similarity index 100% rename from neo.UnitTests/UT_Helper.cs rename to tests/neo.UnitTests/UT_Helper.cs diff --git a/neo.UnitTests/UT_NeoSystem.cs b/tests/neo.UnitTests/UT_NeoSystem.cs similarity index 100% rename from neo.UnitTests/UT_NeoSystem.cs rename to tests/neo.UnitTests/UT_NeoSystem.cs diff --git a/neo.UnitTests/UT_ProtocolSettings.cs b/tests/neo.UnitTests/UT_ProtocolSettings.cs similarity index 100% rename from neo.UnitTests/UT_ProtocolSettings.cs rename to tests/neo.UnitTests/UT_ProtocolSettings.cs diff --git a/neo.UnitTests/UT_UInt160.cs b/tests/neo.UnitTests/UT_UInt160.cs similarity index 100% rename from neo.UnitTests/UT_UInt160.cs rename to tests/neo.UnitTests/UT_UInt160.cs diff --git a/neo.UnitTests/UT_UInt256.cs b/tests/neo.UnitTests/UT_UInt256.cs similarity index 100% rename from neo.UnitTests/UT_UInt256.cs rename to tests/neo.UnitTests/UT_UInt256.cs diff --git a/neo.UnitTests/UT_UIntBase.cs b/tests/neo.UnitTests/UT_UIntBase.cs similarity index 100% rename from neo.UnitTests/UT_UIntBase.cs rename to tests/neo.UnitTests/UT_UIntBase.cs diff --git a/neo.UnitTests/UT_UIntBenchmarks.cs b/tests/neo.UnitTests/UT_UIntBenchmarks.cs similarity index 100% rename from neo.UnitTests/UT_UIntBenchmarks.cs rename to tests/neo.UnitTests/UT_UIntBenchmarks.cs diff --git a/neo.UnitTests/UT_Utility.cs b/tests/neo.UnitTests/UT_Utility.cs similarity index 100% rename from neo.UnitTests/UT_Utility.cs rename to tests/neo.UnitTests/UT_Utility.cs diff --git a/neo.UnitTests/VM/UT_Helper.cs b/tests/neo.UnitTests/VM/UT_Helper.cs similarity index 100% rename from neo.UnitTests/VM/UT_Helper.cs rename to tests/neo.UnitTests/VM/UT_Helper.cs diff --git a/neo.UnitTests/Wallets/NEP6/UT_NEP6Account.cs b/tests/neo.UnitTests/Wallets/NEP6/UT_NEP6Account.cs similarity index 100% rename from neo.UnitTests/Wallets/NEP6/UT_NEP6Account.cs rename to tests/neo.UnitTests/Wallets/NEP6/UT_NEP6Account.cs diff --git a/neo.UnitTests/Wallets/NEP6/UT_NEP6Contract.cs b/tests/neo.UnitTests/Wallets/NEP6/UT_NEP6Contract.cs similarity index 100% rename from neo.UnitTests/Wallets/NEP6/UT_NEP6Contract.cs rename to tests/neo.UnitTests/Wallets/NEP6/UT_NEP6Contract.cs diff --git a/neo.UnitTests/Wallets/NEP6/UT_NEP6Wallet.cs b/tests/neo.UnitTests/Wallets/NEP6/UT_NEP6Wallet.cs similarity index 100% rename from neo.UnitTests/Wallets/NEP6/UT_NEP6Wallet.cs rename to tests/neo.UnitTests/Wallets/NEP6/UT_NEP6Wallet.cs diff --git a/neo.UnitTests/Wallets/NEP6/UT_ScryptParameters.cs b/tests/neo.UnitTests/Wallets/NEP6/UT_ScryptParameters.cs similarity index 100% rename from neo.UnitTests/Wallets/NEP6/UT_ScryptParameters.cs rename to tests/neo.UnitTests/Wallets/NEP6/UT_ScryptParameters.cs diff --git a/neo.UnitTests/Wallets/SQLite/UT_Account.cs b/tests/neo.UnitTests/Wallets/SQLite/UT_Account.cs similarity index 100% rename from neo.UnitTests/Wallets/SQLite/UT_Account.cs rename to tests/neo.UnitTests/Wallets/SQLite/UT_Account.cs diff --git a/neo.UnitTests/Wallets/SQLite/UT_Address.cs b/tests/neo.UnitTests/Wallets/SQLite/UT_Address.cs similarity index 100% rename from neo.UnitTests/Wallets/SQLite/UT_Address.cs rename to tests/neo.UnitTests/Wallets/SQLite/UT_Address.cs diff --git a/neo.UnitTests/Wallets/SQLite/UT_Contract.cs b/tests/neo.UnitTests/Wallets/SQLite/UT_Contract.cs similarity index 100% rename from neo.UnitTests/Wallets/SQLite/UT_Contract.cs rename to tests/neo.UnitTests/Wallets/SQLite/UT_Contract.cs diff --git a/neo.UnitTests/Wallets/SQLite/UT_Key.cs b/tests/neo.UnitTests/Wallets/SQLite/UT_Key.cs similarity index 100% rename from neo.UnitTests/Wallets/SQLite/UT_Key.cs rename to tests/neo.UnitTests/Wallets/SQLite/UT_Key.cs diff --git a/neo.UnitTests/Wallets/SQLite/UT_UserWallet.cs b/tests/neo.UnitTests/Wallets/SQLite/UT_UserWallet.cs similarity index 100% rename from neo.UnitTests/Wallets/SQLite/UT_UserWallet.cs rename to tests/neo.UnitTests/Wallets/SQLite/UT_UserWallet.cs diff --git a/neo.UnitTests/Wallets/SQLite/UT_UserWalletAccount.cs b/tests/neo.UnitTests/Wallets/SQLite/UT_UserWalletAccount.cs similarity index 100% rename from neo.UnitTests/Wallets/SQLite/UT_UserWalletAccount.cs rename to tests/neo.UnitTests/Wallets/SQLite/UT_UserWalletAccount.cs diff --git a/neo.UnitTests/Wallets/SQLite/UT_VerificationContract.cs b/tests/neo.UnitTests/Wallets/SQLite/UT_VerificationContract.cs similarity index 100% rename from neo.UnitTests/Wallets/SQLite/UT_VerificationContract.cs rename to tests/neo.UnitTests/Wallets/SQLite/UT_VerificationContract.cs diff --git a/neo.UnitTests/Wallets/UT_AssetDescriptor.cs b/tests/neo.UnitTests/Wallets/UT_AssetDescriptor.cs similarity index 100% rename from neo.UnitTests/Wallets/UT_AssetDescriptor.cs rename to tests/neo.UnitTests/Wallets/UT_AssetDescriptor.cs diff --git a/neo.UnitTests/Wallets/UT_KeyPair.cs b/tests/neo.UnitTests/Wallets/UT_KeyPair.cs similarity index 100% rename from neo.UnitTests/Wallets/UT_KeyPair.cs rename to tests/neo.UnitTests/Wallets/UT_KeyPair.cs diff --git a/neo.UnitTests/Wallets/UT_Wallet.cs b/tests/neo.UnitTests/Wallets/UT_Wallet.cs similarity index 100% rename from neo.UnitTests/Wallets/UT_Wallet.cs rename to tests/neo.UnitTests/Wallets/UT_Wallet.cs diff --git a/neo.UnitTests/Wallets/UT_WalletAccount.cs b/tests/neo.UnitTests/Wallets/UT_WalletAccount.cs similarity index 100% rename from neo.UnitTests/Wallets/UT_WalletAccount.cs rename to tests/neo.UnitTests/Wallets/UT_WalletAccount.cs diff --git a/neo.UnitTests/Wallets/UT_Wallets_Helper.cs b/tests/neo.UnitTests/Wallets/UT_Wallets_Helper.cs similarity index 100% rename from neo.UnitTests/Wallets/UT_Wallets_Helper.cs rename to tests/neo.UnitTests/Wallets/UT_Wallets_Helper.cs diff --git a/neo.UnitTests/neo.UnitTests.csproj b/tests/neo.UnitTests/neo.UnitTests.csproj similarity index 94% rename from neo.UnitTests/neo.UnitTests.csproj rename to tests/neo.UnitTests/neo.UnitTests.csproj index da3694e024..5857ea504f 100644 --- a/neo.UnitTests/neo.UnitTests.csproj +++ b/tests/neo.UnitTests/neo.UnitTests.csproj @@ -25,7 +25,7 @@ - + diff --git a/neo.UnitTests/protocol.json b/tests/neo.UnitTests/protocol.json similarity index 100% rename from neo.UnitTests/protocol.json rename to tests/neo.UnitTests/protocol.json From 54c30e1a9757dd8a99e7a620d7472e1e824a1a3e Mon Sep 17 00:00:00 2001 From: erikzhang Date: Tue, 26 Nov 2019 11:54:08 +0800 Subject: [PATCH 13/13] Remove unnecessary checks --- src/neo/Consensus/ChangeView.cs | 3 --- src/neo/Network/P2P/Message.cs | 4 ---- 2 files changed, 7 deletions(-) diff --git a/src/neo/Consensus/ChangeView.cs b/src/neo/Consensus/ChangeView.cs index 608ed9897a..607e44cfd5 100644 --- a/src/neo/Consensus/ChangeView.cs +++ b/src/neo/Consensus/ChangeView.cs @@ -1,4 +1,3 @@ -using System; using System.IO; namespace Neo.Consensus @@ -33,8 +32,6 @@ public override void Deserialize(BinaryReader reader) base.Deserialize(reader); Timestamp = reader.ReadUInt64(); Reason = (ChangeViewReason)reader.ReadByte(); - if (!Enum.IsDefined(typeof(ChangeViewReason), Reason)) - throw new FormatException(); } public override void Serialize(BinaryWriter writer) diff --git a/src/neo/Network/P2P/Message.cs b/src/neo/Network/P2P/Message.cs index 98aabcc084..578259f789 100644 --- a/src/neo/Network/P2P/Message.cs +++ b/src/neo/Network/P2P/Message.cs @@ -58,8 +58,6 @@ void ISerializable.Deserialize(BinaryReader reader) { Flags = (MessageFlags)reader.ReadByte(); Command = (MessageCommand)reader.ReadByte(); - if (!Enum.IsDefined(typeof(MessageCommand), Command)) - throw new FormatException(); _payload_compressed = reader.ReadVarBytes(PayloadMaxSize); DecompressPayload(); } @@ -110,8 +108,6 @@ internal static int TryDeserialize(ByteString data, out Message msg) Command = (MessageCommand)header[1], _payload_compressed = length <= 0 ? new byte[0] : data.Slice(payloadIndex, (int)length).ToArray() }; - if (!Enum.IsDefined(typeof(MessageCommand), msg.Command)) - throw new FormatException(); msg.DecompressPayload(); return payloadIndex + (int)length;