diff --git a/AntSharesCore/Core/Blockchain.cs b/AntSharesCore/Core/Blockchain.cs index b09886a5c9..6d39ea2560 100644 --- a/AntSharesCore/Core/Blockchain.cs +++ b/AntSharesCore/Core/Blockchain.cs @@ -66,17 +66,17 @@ public abstract class Blockchain : IDisposable { AssetType = AssetType.AntShare, #if TESTNET - Name = "[{\"lang\":\"zh-CN\",\"name\":\"小蚁股(测试)\"},{\"lang\":\"en\",\"name\":\"AntShare(TestNet)\"}]", + Name = "[{'lang':'zh-CN','name':'小蚁股(测试)'},{'lang':'en','name':'AntShare(TestNet)'}]", #else - Name = "[{\"lang\":\"zh-CN\",\"name\":\"小蚁股\"},{\"lang\":\"en\",\"name\":\"AntShare\"}]", + Name = "[{'lang':'zh-CN','name':'小蚁股'},{'lang':'en','name':'AntShare'}]", #endif Amount = Fixed8.FromDecimal(100000000), - Precision = 0, - Issuer = ECCurve.Secp256r1.Infinity, + Issuer = ECPoint.DecodePoint((new[] { (byte)0x02 }).Concat(ECCurve.Secp256r1.G.EncodePoint(false).Skip(1).Sha256().Sha256()).ToArray(), ECCurve.Secp256r1), Admin = (new[] { (byte)ScriptOp.OP_TRUE }).ToScriptHash(), Attributes = new TransactionAttribute[0], Inputs = new TransactionInput[0], - Outputs = new TransactionOutput[0] + Outputs = new TransactionOutput[0], + Scripts = new Script[0] }; /// @@ -86,17 +86,17 @@ public abstract class Blockchain : IDisposable { AssetType = AssetType.AntCoin, #if TESTNET - Name = "[{\"lang\":\"zh-CN\",\"name\":\"小蚁币(测试)\"},{\"lang\":\"en\",\"name\":\"AntCoin(TestNet)\"}]", + Name = "[{'lang':'zh-CN','name':'小蚁币(测试)'},{'lang':'en','name':'AntCoin(TestNet)'}]", #else - Name = "[{\"lang\":\"zh-CN\",\"name\":\"小蚁币\"},{\"lang\":\"en\",\"name\":\"AntCoin\"}]", + Name = "[{'lang':'zh-CN','name':'小蚁币'},{'lang':'en','name':'AntCoin'}]", #endif Amount = Fixed8.FromDecimal(MintingAmount.Sum(p => p * DecrementInterval)), - Precision = 8, - Issuer = ECCurve.Secp256r1.Infinity, + Issuer = ECPoint.DecodePoint((new[] { (byte)0x02 }).Concat(ECCurve.Secp256r1.G.EncodePoint(false).Skip(1).Sha256().Sha256()).ToArray(), ECCurve.Secp256r1), Admin = (new[] { (byte)ScriptOp.OP_FALSE }).ToScriptHash(), Attributes = new TransactionAttribute[0], Inputs = new TransactionInput[0], - Outputs = new TransactionOutput[0] + Outputs = new TransactionOutput[0], + Scripts = new Script[0] }; /// @@ -128,6 +128,7 @@ public abstract class Blockchain : IDisposable AntCoin, new IssueTransaction { + Nonce = 2083236893, Attributes = new TransactionAttribute[0], Inputs = new TransactionInput[0], Outputs = new[] @@ -182,18 +183,6 @@ public abstract class Blockchain : IDisposable static Blockchain() { - AntShare.Scripts = new[] { new Script { RedeemScript = Contract.CreateSignatureRedeemScript(AntShare.Issuer) } }; - using (ScriptBuilder sb = new ScriptBuilder()) - { - sb.Push(ECCurve.Secp256r1.G.EncodePoint(true).Skip(1).Concat(AntShare.GetHashForSigning()).ToArray()); - AntShare.Scripts[0].StackScript = sb.ToArray(); - } - AntCoin.Scripts = new[] { new Script { RedeemScript = Contract.CreateSignatureRedeemScript(AntCoin.Issuer) } }; - using (ScriptBuilder sb = new ScriptBuilder()) - { - sb.Push(ECCurve.Secp256r1.G.EncodePoint(true).Skip(1).Concat(AntCoin.GetHashForSigning()).ToArray()); - AntCoin.Scripts[0].StackScript = sb.ToArray(); - } GenesisBlock.RebuildMerkleRoot(); } @@ -349,7 +338,7 @@ public virtual IEnumerable GetMiners(IEnumerable others) Dictionary enrollments = GetEnrollments(others).ToDictionary(p => p.Hash, p => p.PublicKey); foreach (var vote in votes) { - foreach (UInt256 hash in vote.Enrollments.Take(miner_count)) + foreach (UInt256 hash in vote.Enrollments) { if (!enrollments.ContainsKey(hash)) continue; ECPoint pubkey = enrollments[hash]; diff --git a/AntSharesCore/Core/IssueTransaction.cs b/AntSharesCore/Core/IssueTransaction.cs index d8a1759e71..975813945a 100644 --- a/AntSharesCore/Core/IssueTransaction.cs +++ b/AntSharesCore/Core/IssueTransaction.cs @@ -1,6 +1,7 @@ using AntShares.Network; using System; using System.Collections.Generic; +using System.IO; using System.Linq; namespace AntShares.Core @@ -10,6 +11,11 @@ namespace AntShares.Core /// public class IssueTransaction : Transaction { + /// + /// 随机数 + /// + public uint Nonce; + /// /// 系统费用 /// @@ -32,6 +38,15 @@ public IssueTransaction() { } + /// + /// 反序列化交易中的额外数据 + /// + /// 数据来源 + protected override void DeserializeExclusiveData(BinaryReader reader) + { + this.Nonce = reader.ReadUInt32(); + } + /// /// 获取需要校验的脚本散列值 /// @@ -48,6 +63,15 @@ public override UInt160[] GetScriptHashesForVerifying() return hashes.OrderBy(p => p).ToArray(); } + /// + /// 序列化交易中的额外数据 + /// + /// 存放序列化后的结果 + protected override void SerializeExclusiveData(BinaryWriter writer) + { + writer.Write(Nonce); + } + /// /// 验证交易 /// diff --git a/AntSharesCore/Core/RegisterTransaction.cs b/AntSharesCore/Core/RegisterTransaction.cs index 28c0339da7..3e87310e6c 100644 --- a/AntSharesCore/Core/RegisterTransaction.cs +++ b/AntSharesCore/Core/RegisterTransaction.cs @@ -30,7 +30,6 @@ public class RegisterTransaction : Transaction /// 2. 不限量模式:当Amount等于-1时,表示当前资产可以由创建者无限量发行。这种模式的自由度最大,但是公信力最低,不建议使用。 /// public Fixed8 Amount; - public byte Precision; /// /// 发行者的公钥 /// @@ -40,7 +39,7 @@ public class RegisterTransaction : Transaction /// public UInt160 Admin; - private static readonly string ShareName = "[{\"lang\":\"zh-CN\",\"name\":\"股权\"},{\"lang\":\"en\",\"name\":\"Share\"}]"; + private static readonly string ShareName = "[{'lang':'zh-CN','name':'股权'},{'lang':'en','name':'Share'}]"; /// /// 系统费用 @@ -70,20 +69,18 @@ public RegisterTransaction() /// 数据来源 protected override void DeserializeExclusiveData(BinaryReader reader) { - AssetType = (AssetType)reader.ReadByte(); + this.AssetType = (AssetType)reader.ReadByte(); if (!Enum.IsDefined(typeof(AssetType), AssetType) || AssetType == AssetType.CreditFlag || AssetType == AssetType.DutyFlag) throw new FormatException(); - Name = reader.ReadVarString(); - Amount = reader.ReadSerializable(); + this.Name = reader.ReadVarString(); + this.Amount = reader.ReadSerializable(); if (Amount == Fixed8.Zero || Amount < -Fixed8.Satoshi) throw new FormatException(); if (AssetType == AssetType.Share && Amount <= Fixed8.Zero) throw new FormatException(); if (AssetType == AssetType.Invoice && Amount != -Fixed8.Satoshi) throw new FormatException(); - Precision = reader.ReadByte(); - if (Precision > 8) throw new FormatException(); - Issuer = ECPoint.DeserializeFrom(reader, ECCurve.Secp256r1); - Admin = reader.ReadSerializable(); + this.Issuer = ECPoint.DeserializeFrom(reader, ECCurve.Secp256r1); + this.Admin = reader.ReadSerializable(); } private Dictionary _names; @@ -125,7 +122,7 @@ public string GetName(CultureInfo culture = null) public override UInt160[] GetScriptHashesForVerifying() { UInt160 issuer = Contract.CreateSignatureRedeemScript(Issuer).ToScriptHash(); - return base.GetScriptHashesForVerifying().Union(new[] { issuer }).OrderBy(p => p).ToArray(); + return base.GetScriptHashesForVerifying().Union(new UInt160[] { issuer, Admin }).OrderBy(p => p).ToArray(); } protected override void OnDeserialized() @@ -146,7 +143,6 @@ protected override void SerializeExclusiveData(BinaryWriter writer) writer.Write((byte)AssetType); writer.WriteVarString(Name); writer.Write(Amount); - writer.Write(Precision); writer.Write(Issuer); writer.Write(Admin); } @@ -169,7 +165,6 @@ public override JObject ToJson() json["asset"]["name"] = Name; } json["asset"]["amount"] = Amount.ToString(); - json["asset"]["precision"] = Precision; json["asset"]["high"] = Amount.GetData() >> 32; json["asset"]["low"] = Amount.GetData() & 0xffffffff; json["asset"]["issuer"] = Issuer.ToString(); diff --git a/AntSharesCore/Core/Transaction.cs b/AntSharesCore/Core/Transaction.cs index 6fd6b003d3..d65cd6f0ec 100644 --- a/AntSharesCore/Core/Transaction.cs +++ b/AntSharesCore/Core/Transaction.cs @@ -22,10 +22,6 @@ public abstract class Transaction : IInventory /// public readonly TransactionType Type; /// - /// 版本 - /// - public const byte Version = 0; - /// /// 该交易所具备的额外特性 /// public TransactionAttribute[] Attributes; @@ -164,8 +160,6 @@ void ISignable.DeserializeUnsigned(BinaryReader reader) private void DeserializeUnsignedWithoutType(BinaryReader reader) { - if (reader.ReadByte() != Version) - throw new FormatException(); DeserializeExclusiveData(reader); Attributes = reader.ReadSerializableArray(); if (Attributes.Select(p => p.Usage).Distinct().Count() != Attributes.Length) @@ -179,6 +173,10 @@ private void DeserializeUnsignedWithoutType(BinaryReader reader) Outputs = reader.ReadSerializableArray(); if (Outputs.Length > ushort.MaxValue + 1) throw new FormatException(); + if (Blockchain.AntShare != null) + foreach (TransactionOutput output in Outputs.Where(p => p.AssetId == Blockchain.AntShare.Hash)) + if (output.Value.GetData() % 100000000 != 0) + throw new FormatException(); } public bool Equals(Transaction other) @@ -277,7 +275,6 @@ protected virtual void SerializeExclusiveData(BinaryWriter writer) void ISignable.SerializeUnsigned(BinaryWriter writer) { writer.Write((byte)Type); - writer.Write(Version); SerializeExclusiveData(writer); writer.Write(Attributes); writer.Write(Inputs); @@ -315,9 +312,6 @@ public virtual bool Verify() { RegisterTransaction asset = Blockchain.Default.GetTransaction(group.Key) as RegisterTransaction; if (asset == null) return false; - foreach (TransactionOutput output in group) - if (output.Value.GetData() % (long)Math.Pow(10, 8 - asset.Precision) != 0) - return false; } TransactionResult[] results = GetTransactionResults()?.ToArray(); if (results == null) return false; diff --git a/AntSharesCore/Network/InventoryType.cs b/AntSharesCore/Network/InventoryType.cs index fe9fe0b08e..f24db414c2 100644 --- a/AntSharesCore/Network/InventoryType.cs +++ b/AntSharesCore/Network/InventoryType.cs @@ -3,7 +3,7 @@ /// /// 定义清单中的对象类型 /// - public enum InventoryType : byte + public enum InventoryType : uint { /// /// 交易 diff --git a/AntSharesCore/Network/Payloads/InvPayload.cs b/AntSharesCore/Network/Payloads/InvPayload.cs index fd3f1a540f..6e9a82623b 100644 --- a/AntSharesCore/Network/Payloads/InvPayload.cs +++ b/AntSharesCore/Network/Payloads/InvPayload.cs @@ -1,35 +1,37 @@ using AntShares.IO; -using System; using System.IO; +using System.Linq; namespace AntShares.Network.Payloads { internal class InvPayload : ISerializable { - public InventoryType Type; - public UInt256[] Hashes; + public InventoryVector[] Inventories; + + public static InvPayload Create(InventoryVector[] vectors) + { + return new InvPayload + { + Inventories = vectors + }; + } public static InvPayload Create(InventoryType type, params UInt256[] hashes) { return new InvPayload { - Type = type, - Hashes = hashes + Inventories = hashes.Select(p => new InventoryVector { Type = type, Hash = p }).ToArray() }; } void ISerializable.Deserialize(BinaryReader reader) { - Type = (InventoryType)reader.ReadByte(); - if (!Enum.IsDefined(typeof(InventoryType), Type)) - throw new FormatException(); - Hashes = reader.ReadSerializableArray(); + Inventories = reader.ReadSerializableArray(); } void ISerializable.Serialize(BinaryWriter writer) { - writer.Write((byte)Type); - writer.Write(Hashes); + writer.Write(Inventories); } } } diff --git a/AntSharesCore/Network/Payloads/InventoryVector.cs b/AntSharesCore/Network/Payloads/InventoryVector.cs new file mode 100644 index 0000000000..3f68d82e42 --- /dev/null +++ b/AntSharesCore/Network/Payloads/InventoryVector.cs @@ -0,0 +1,44 @@ +using AntShares.IO; +using System; +using System.IO; + +namespace AntShares.Network.Payloads +{ + internal class InventoryVector : IEquatable, ISerializable + { + public InventoryType Type; + public UInt256 Hash; + + void ISerializable.Deserialize(BinaryReader reader) + { + Type = (InventoryType)reader.ReadUInt32(); + if (!Enum.IsDefined(typeof(InventoryType), Type)) + throw new FormatException(); + Hash = reader.ReadSerializable(); + } + + public override bool Equals(object obj) + { + if (!(obj is InventoryVector)) return false; + return Equals((InventoryVector)obj); + } + + public bool Equals(InventoryVector other) + { + if (ReferenceEquals(other, null)) return false; + if (ReferenceEquals(this, other)) return true; + return Hash == other.Hash; + } + + public override int GetHashCode() + { + return Hash.GetHashCode(); + } + + void ISerializable.Serialize(BinaryWriter writer) + { + writer.Write((uint)Type); + writer.Write(Hash); + } + } +} diff --git a/AntSharesCore/Network/Payloads/VersionPayload.cs b/AntSharesCore/Network/Payloads/VersionPayload.cs index 6a44658b28..ecff16cc7b 100644 --- a/AntSharesCore/Network/Payloads/VersionPayload.cs +++ b/AntSharesCore/Network/Payloads/VersionPayload.cs @@ -14,7 +14,6 @@ internal class VersionPayload : ISerializable public uint Nonce; public string UserAgent; public uint StartHeight; - public bool Relay; public static VersionPayload Create(int port, uint nonce, string userAgent) { @@ -26,8 +25,7 @@ public static VersionPayload Create(int port, uint nonce, string userAgent) Port = (ushort)port, Nonce = nonce, UserAgent = userAgent, - StartHeight = Blockchain.Default?.Height ?? 0, - Relay = true + StartHeight = Blockchain.Default?.Height ?? 0 }; } diff --git a/AntSharesCore/Network/RemoteNode.cs b/AntSharesCore/Network/RemoteNode.cs index 4279a30b97..7b25d12bf5 100644 --- a/AntSharesCore/Network/RemoteNode.cs +++ b/AntSharesCore/Network/RemoteNode.cs @@ -179,22 +179,22 @@ private void OnGetBlocksMessageReceived(GetBlocksPayload payload) private void OnGetDataMessageReceived(InvPayload payload) { - foreach (UInt256 hash in payload.Hashes.Distinct()) + foreach (InventoryVector vector in payload.Inventories.Distinct()) { IInventory inventory; - if (!localNode.RelayCache.TryGet(hash, out inventory) && !localNode.ServiceEnabled) + if (!localNode.RelayCache.TryGet(vector.Hash, out inventory) && !localNode.ServiceEnabled) continue; - switch (payload.Type) + switch (vector.Type) { case InventoryType.TX: if (inventory == null && Blockchain.Default != null) - inventory = Blockchain.Default.GetTransaction(hash); + inventory = Blockchain.Default.GetTransaction(vector.Hash); if (inventory != null) EnqueueMessage("tx", inventory); break; case InventoryType.Block: if (inventory == null && Blockchain.Default != null) - inventory = Blockchain.Default.GetBlock(hash); + inventory = Blockchain.Default.GetBlock(vector.Hash); if (inventory != null) { BloomFilter filter = bloom_filter; @@ -258,26 +258,24 @@ private void OnInventoryReceived(IInventory inventory) private void OnInvMessageReceived(InvPayload payload) { - if (payload.Type != InventoryType.TX && payload.Type != InventoryType.Block && payload.Type != InventoryType.Consensus) - return; - UInt256[] hashes = payload.Hashes.Distinct().ToArray(); + InventoryVector[] vectors = payload.Inventories.Distinct().Where(p => Enum.IsDefined(typeof(InventoryType), p.Type)).ToArray(); lock (LocalNode.KnownHashes) { - hashes = hashes.Where(p => !LocalNode.KnownHashes.Contains(p)).ToArray(); + vectors = vectors.Where(p => !LocalNode.KnownHashes.Contains(p.Hash)).ToArray(); } - if (hashes.Length == 0) return; + if (vectors.Length == 0) return; lock (missions_global) { if (localNode.GlobalMissionsEnabled) - hashes = hashes.Where(p => !missions_global.Contains(p)).ToArray(); - foreach (UInt256 hash in hashes) + vectors = vectors.Where(p => !missions_global.Contains(p.Hash)).ToArray(); + foreach (InventoryVector vector in vectors) { - missions_global.Add(hash); - missions.Add(hash); + missions_global.Add(vector.Hash); + missions.Add(vector.Hash); } } - if (hashes.Length == 0) return; - EnqueueMessage("getdata", InvPayload.Create(payload.Type, hashes)); + if (vectors.Length == 0) return; + EnqueueMessage("getdata", InvPayload.Create(vectors)); } private void OnMemPoolMessageReceived() @@ -376,7 +374,6 @@ private Message ReceiveMessage(TimeSpan timeout) internal bool Relay(IInventory data) { - if (!Version.Relay) return false; if (data.InventoryType == InventoryType.TX) { BloomFilter filter = bloom_filter; diff --git a/AntSharesCore/project.json b/AntSharesCore/project.json index cd7ee945f5..588c22b5d8 100644 --- a/AntSharesCore/project.json +++ b/AntSharesCore/project.json @@ -1,8 +1,11 @@ { "copyright": "? AntShares Project 2015 Released under the MIT license", "title": "AntShares", - "version": "1.0-coreclr", - "buildOptions": { "allowUnsafe": true }, + "version": "0.7.1-coreclr", + "buildOptions": { + "allowUnsafe": true, + "define": [ "TESTNET" ] + }, "dependencies": { "Microsoft.EntityFrameworkCore.Sqlite": "1.0.0", diff --git a/AntSharesDaemon/project.json b/AntSharesDaemon/project.json index dcd34235ac..a14afc4cc2 100644 --- a/AntSharesDaemon/project.json +++ b/AntSharesDaemon/project.json @@ -1,14 +1,14 @@ { "copyright": "© AntShares Project 2016 Released under the MIT license", "title": "AntShares", - "version": "1.0-coreclr", + "version": "0.7.1-coreclr", "buildOptions": { "emitEntryPoint": true, - "define": [ "DEBUG" ] + "define": [ "DEBUG", "TESTNET" ] }, "dependencies": { - "AntSharesCore": "1.0-coreclr", + "AntSharesCore": "0.7.1-coreclr", "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", "Microsoft.NETCore.App": { "type": "platform", diff --git a/AntSharesDaemon/project.lock.json b/AntSharesDaemon/project.lock.json index d452e857e3..b8b5097dcf 100644 --- a/AntSharesDaemon/project.lock.json +++ b/AntSharesDaemon/project.lock.json @@ -2835,7 +2835,7 @@ "lib/netstandard1.3/System.Xml.XPath.XmlDocument.dll": {} } }, - "AntSharesCore/1.0.0-coreclr": { + "AntSharesCore/0.7.1-coreclr": { "type": "project", "framework": ".NETStandard,Version=v1.6", "dependencies": { @@ -8180,7 +8180,7 @@ "ref/xamarinwatchos10/_._" ] }, - "AntSharesCore/1.0.0-coreclr": { + "AntSharesCore/0.7.1-coreclr": { "type": "project", "path": "../AntSharesCore/project.json", "msbuildProject": "../AntSharesCore/AntSharesCore.xproj" @@ -8188,7 +8188,7 @@ }, "projectFileDependencyGroups": { "": [ - "AntSharesCore >= 1.0.0-coreclr", + "AntSharesCore >= 0.7.1-coreclr", "Microsoft.AspNetCore.Server.Kestrel >= 1.0.0", "Microsoft.NETCore.App >= 1.0.1" ], diff --git a/AntSharesUI/AntSharesUI.csproj b/AntSharesUI/AntSharesUI.csproj index 2d71bc4aaf..27aa5aa6d3 100644 --- a/AntSharesUI/AntSharesUI.csproj +++ b/AntSharesUI/AntSharesUI.csproj @@ -39,7 +39,7 @@ true bin\Debug\ - TRACE;DEBUG + TRACE;DEBUG;TESTNET full AnyCPU prompt @@ -54,6 +54,7 @@ prompt MinimumRecommendedRules.ruleset false + TESTNET diff --git a/AntSharesUI/Properties/AssemblyInfo.cs b/AntSharesUI/Properties/AssemblyInfo.cs index 5d5d08056b..0de6ea6fcb 100644 --- a/AntSharesUI/Properties/AssemblyInfo.cs +++ b/AntSharesUI/Properties/AssemblyInfo.cs @@ -30,6 +30,6 @@ // // 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, // 方法是按如下所示使用“*”: -[assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("0.6.*")] //[assembly: AssemblyVersion("1.0.0.0")] //[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/AntSharesUI/UI/AssetRegisterDialog.cs b/AntSharesUI/UI/AssetRegisterDialog.cs index 743aa5fb81..11ba2b0f99 100644 --- a/AntSharesUI/UI/AssetRegisterDialog.cs +++ b/AntSharesUI/UI/AssetRegisterDialog.cs @@ -21,7 +21,6 @@ public RegisterTransaction GetTransaction() AssetType = (AssetType)comboBox1.SelectedItem, Name = (AssetType)comboBox1.SelectedItem == AssetType.Share ? string.Empty : $"[{{'lang':'zh-CN','name':'{textBox1.Text}'}}]", Amount = checkBox1.Checked ? Fixed8.Parse(textBox2.Text) : -Fixed8.Satoshi, - Precision = 8, Issuer = (ECPoint)comboBox2.SelectedItem, Admin = Wallet.ToScriptHash(comboBox3.Text), Outputs = new TransactionOutput[0] diff --git a/AntSharesUI/UI/IssueDialog.cs b/AntSharesUI/UI/IssueDialog.cs index 0d763fe112..87ae4a6031 100644 --- a/AntSharesUI/UI/IssueDialog.cs +++ b/AntSharesUI/UI/IssueDialog.cs @@ -24,8 +24,10 @@ public IssueDialog(RegisterTransaction asset = null) public IssueTransaction GetTransaction() { if (txOutListBox1.Asset == null) return null; + Random rand = new Random(); return Program.CurrentWallet.MakeTransaction(new IssueTransaction { + Nonce = (uint)rand.Next(), Outputs = txOutListBox1.Items.GroupBy(p => p.Output.ScriptHash).Select(g => new TransactionOutput { AssetId = txOutListBox1.Asset.Hash, diff --git a/Miner/project.json b/Miner/project.json index d14e7d09b0..57f74720d5 100644 --- a/Miner/project.json +++ b/Miner/project.json @@ -1,14 +1,14 @@ { "copyright": "© AntShares Project 2015 Released under the MIT license", "title": "AntShares", - "version": "1.0-coreclr", + "version": "0.7.1-coreclr", "buildOptions": { "emitEntryPoint": true }, "dependencies": { - "AntSharesCore": "1.0-coreclr", - "AntSharesDaemon": "1.0-coreclr", + "AntSharesCore": "0.7.1-coreclr", + "AntSharesDaemon": "0.7.1-coreclr", "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.1" diff --git a/Miner/project.lock.json b/Miner/project.lock.json index c628b8fbbb..5bb1e29964 100644 --- a/Miner/project.lock.json +++ b/Miner/project.lock.json @@ -2835,7 +2835,7 @@ "lib/netstandard1.3/System.Xml.XPath.XmlDocument.dll": {} } }, - "AntSharesCore/1.0.0-coreclr": { + "AntSharesCore/0.7.1-coreclr": { "type": "project", "framework": ".NETStandard,Version=v1.6", "dependencies": { @@ -2860,11 +2860,11 @@ "netstandard1.6/AntSharesCore.dll": {} } }, - "AntSharesDaemon/1.0.0-coreclr": { + "AntSharesDaemon/0.7.1-coreclr": { "type": "project", "framework": ".NETCoreApp,Version=v1.0", "dependencies": { - "AntSharesCore": "1.0.0-coreclr", + "AntSharesCore": "0.7.1-coreclr", "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", "Microsoft.NETCore.App": "1.0.1" }, @@ -8195,12 +8195,12 @@ "ref/xamarinwatchos10/_._" ] }, - "AntSharesCore/1.0.0-coreclr": { + "AntSharesCore/0.7.1-coreclr": { "type": "project", "path": "../AntSharesCore/project.json", "msbuildProject": "../AntSharesCore/AntSharesCore.xproj" }, - "AntSharesDaemon/1.0.0-coreclr": { + "AntSharesDaemon/0.7.1-coreclr": { "type": "project", "path": "../AntSharesDaemon/project.json", "msbuildProject": "../AntSharesDaemon/AntSharesDaemon.xproj" @@ -8208,8 +8208,8 @@ }, "projectFileDependencyGroups": { "": [ - "AntSharesCore >= 1.0.0-coreclr", - "AntSharesDaemon >= 1.0.0-coreclr", + "AntSharesCore >= 0.7.1-coreclr", + "AntSharesDaemon >= 0.7.1-coreclr", "Microsoft.NETCore.App >= 1.0.1" ], ".NETCoreApp,Version=v1.0": []