Skip to content

Commit

Permalink
Add network defintions #13 (#14)
Browse files Browse the repository at this point in the history
- Add network definition for Main, Test and RegTest.
- Mine the genesis blocks for all networks.
  • Loading branch information
sondreb authored Jul 25, 2018
1 parent aab0baf commit 9352497
Show file tree
Hide file tree
Showing 14 changed files with 891 additions and 30 deletions.
10 changes: 7 additions & 3 deletions src/City.Chain.DNS/Program.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Threading.Tasks;
using NBitcoin;
using NBitcoin.Protocol;
using Stratis.Bitcoin;
using Stratis.Bitcoin.Builder;
Expand Down Expand Up @@ -30,7 +31,10 @@ public static async Task Main(string[] args)
{
try
{
var nodeSettings = new NodeSettings(protocolVersion: ProtocolVersion.ALT_PROTOCOL_VERSION, args: args);
var nodeSettings = new NodeSettings(
network: Networks.CityTest,
protocolVersion: ProtocolVersion.ALT_PROTOCOL_VERSION,
args: args);

var dnsSettings = new DnsSettings(nodeSettings);

Expand Down Expand Up @@ -60,8 +64,8 @@ public static async Task Main(string[] args)
node = new FullNodeBuilder()
.UseNodeSettings(nodeSettings)
.UsePosConsensus()
.UseApi()
.AddRPC()
//.UseApi()
//.AddRPC()
.UseDns()
.Build();
}
Expand Down
15 changes: 15 additions & 0 deletions src/City.Chain.DNS/Properties/launchSettings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"profiles": {
"City.Chain.DNS": {
"commandName": "Project"
},
"City.Chain.DNS (Test Network)": {
"commandName": "Project",
"commandLineArgs": "-testnet -dnslistenport=5399 -dnshostname=dns.city-chain.org -dnsnameserver=ns1.dns.city-chain.org -dnsmailbox=admin@city-chain.org"
},
"City.Chain.DNS (FullNode Test Network)": {
"commandName": "Project",
"commandLineArgs": "-testnet -dnsfullnode -dnslistenport=5399 -dnshostname=dns.city-chain.org -dnsnameserver=ns1.dns.city-chain.org -dnsmailbox=admin@city-chain.org"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public SimpleWalletManager(
IBlockNotification blockNotification)
{
this.logger = loggerFactory.CreateLogger(this.GetType().FullName);
this.network = Network.StratisMain;
this.network = chain.Network;
this.chain = chain;
this.blockNotification = blockNotification;
this.nodeLifetime = nodeLifetime;
Expand Down
4 changes: 2 additions & 2 deletions src/City.Chain.Features.SimpleWallet/SimpleWalletService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ public class SimpleWalletService

private readonly IServiceProvider serviceProvider;

public SimpleWalletService(ILoggerFactory loggerFactory, IServiceProvider serviceProvider)
public SimpleWalletService(ILoggerFactory loggerFactory, ConcurrentChain chain, IServiceProvider serviceProvider)
{
this.logger = loggerFactory.CreateLogger(this.GetType().FullName);

this.serviceProvider = serviceProvider;

this.network = Network.StratisMain;
this.network = chain.Network;
}

public ISimpleWalletManager Create(string name, string version, DateTimeOffset? created)
Expand Down
20 changes: 20 additions & 0 deletions src/City.Chain.Tests/City.Chain.Tests.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>

<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
<PackageReference Include="xunit" Version="2.3.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\NBitcoin\NBitcoin.csproj" />
</ItemGroup>

</Project>
286 changes: 286 additions & 0 deletions src/City.Chain.Tests/NetworkTests.cs

Large diffs are not rendered by default.

58 changes: 36 additions & 22 deletions src/City.Chain.sln
Original file line number Diff line number Diff line change
Expand Up @@ -125,13 +125,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stratis.Bitcoin.Apps.Browse
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Apps", "Apps", "{A6FF48E5-310A-4606-B435-D24B6B348F8C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "City.Chain.Features.SimpleWallet", "City.Chain.Features.SimpleWallet\City.Chain.Features.SimpleWallet.csproj", "{97355D90-6AB6-4BD9-9E16-8C65E822F3FC}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stratis.Bitcoin.Features.SmartContracts.Wallet", "Stratis.Bitcoin.Features.SmartContracts.Wallet\Stratis.Bitcoin.Features.SmartContracts.Wallet.csproj", "{3E11D03E-1244-43A8-875B-A547249F5B53}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "City.Chain.Features.SimpleWallet.Tests", "City.Chain.Features.SimpleWallet.Tests\City.Chain.Features.SimpleWallet.Tests.csproj", "{7654D5A7-8198-4F87-89EF-8E9EF0420A63}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "City.Chain.Features.SimpleWallet", "City.Chain.Features.SimpleWallet\City.Chain.Features.SimpleWallet.csproj", "{AB46BE78-1A80-45F7-ACBA-AEA4EB5F792A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "City.Chain", "City.Chain\City.Chain.csproj", "{CFBE3B07-524D-4264-8813-7F7C4EE9DF06}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "City.Chain.Features.SimpleWallet.Tests", "City.Chain.Features.SimpleWallet.Tests\City.Chain.Features.SimpleWallet.Tests.csproj", "{81865AF3-D6DD-4B0C-B3EF-7C25322A25E9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "City.Chain.DNS", "City.Chain.DNS\City.Chain.DNS.csproj", "{CEF020AC-C265-49E2-82D8-B9BFAB2806A6}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "City.Chain", "City.Chain\City.Chain.csproj", "{92EDC01A-F4CC-42F4-AAA1-F8AF98E5543C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "City.Chain.DNS", "City.Chain.DNS\City.Chain.DNS.csproj", "{823DFC41-BE0F-43E0-91EE-3675BF3D1348}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "City.Chain.Tests", "City.Chain.Tests\City.Chain.Tests.csproj", "{575C08F7-C789-4604-AB76-A53D329AF236}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -335,22 +339,30 @@ Global
{6A4C72BF-E818-45B1-9DD4-562C7C6F31C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6A4C72BF-E818-45B1-9DD4-562C7C6F31C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6A4C72BF-E818-45B1-9DD4-562C7C6F31C8}.Release|Any CPU.Build.0 = Release|Any CPU
{97355D90-6AB6-4BD9-9E16-8C65E822F3FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{97355D90-6AB6-4BD9-9E16-8C65E822F3FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{97355D90-6AB6-4BD9-9E16-8C65E822F3FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{97355D90-6AB6-4BD9-9E16-8C65E822F3FC}.Release|Any CPU.Build.0 = Release|Any CPU
{7654D5A7-8198-4F87-89EF-8E9EF0420A63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7654D5A7-8198-4F87-89EF-8E9EF0420A63}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7654D5A7-8198-4F87-89EF-8E9EF0420A63}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7654D5A7-8198-4F87-89EF-8E9EF0420A63}.Release|Any CPU.Build.0 = Release|Any CPU
{CFBE3B07-524D-4264-8813-7F7C4EE9DF06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CFBE3B07-524D-4264-8813-7F7C4EE9DF06}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CFBE3B07-524D-4264-8813-7F7C4EE9DF06}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CFBE3B07-524D-4264-8813-7F7C4EE9DF06}.Release|Any CPU.Build.0 = Release|Any CPU
{CEF020AC-C265-49E2-82D8-B9BFAB2806A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CEF020AC-C265-49E2-82D8-B9BFAB2806A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CEF020AC-C265-49E2-82D8-B9BFAB2806A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CEF020AC-C265-49E2-82D8-B9BFAB2806A6}.Release|Any CPU.Build.0 = Release|Any CPU
{3E11D03E-1244-43A8-875B-A547249F5B53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E11D03E-1244-43A8-875B-A547249F5B53}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E11D03E-1244-43A8-875B-A547249F5B53}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E11D03E-1244-43A8-875B-A547249F5B53}.Release|Any CPU.Build.0 = Release|Any CPU
{AB46BE78-1A80-45F7-ACBA-AEA4EB5F792A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AB46BE78-1A80-45F7-ACBA-AEA4EB5F792A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AB46BE78-1A80-45F7-ACBA-AEA4EB5F792A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AB46BE78-1A80-45F7-ACBA-AEA4EB5F792A}.Release|Any CPU.Build.0 = Release|Any CPU
{81865AF3-D6DD-4B0C-B3EF-7C25322A25E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{81865AF3-D6DD-4B0C-B3EF-7C25322A25E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{81865AF3-D6DD-4B0C-B3EF-7C25322A25E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{81865AF3-D6DD-4B0C-B3EF-7C25322A25E9}.Release|Any CPU.Build.0 = Release|Any CPU
{92EDC01A-F4CC-42F4-AAA1-F8AF98E5543C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{92EDC01A-F4CC-42F4-AAA1-F8AF98E5543C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{92EDC01A-F4CC-42F4-AAA1-F8AF98E5543C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{92EDC01A-F4CC-42F4-AAA1-F8AF98E5543C}.Release|Any CPU.Build.0 = Release|Any CPU
{823DFC41-BE0F-43E0-91EE-3675BF3D1348}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{823DFC41-BE0F-43E0-91EE-3675BF3D1348}.Debug|Any CPU.Build.0 = Debug|Any CPU
{823DFC41-BE0F-43E0-91EE-3675BF3D1348}.Release|Any CPU.ActiveCfg = Release|Any CPU
{823DFC41-BE0F-43E0-91EE-3675BF3D1348}.Release|Any CPU.Build.0 = Release|Any CPU
{575C08F7-C789-4604-AB76-A53D329AF236}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{575C08F7-C789-4604-AB76-A53D329AF236}.Debug|Any CPU.Build.0 = Debug|Any CPU
{575C08F7-C789-4604-AB76-A53D329AF236}.Release|Any CPU.ActiveCfg = Release|Any CPU
{575C08F7-C789-4604-AB76-A53D329AF236}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -399,8 +411,10 @@ Global
{C139889D-F480-4AEE-BA76-81C73B97AD30} = {EAE139C2-B19C-4905-9117-8A4068ABD3D2}
{FF6DDE2B-CF33-438F-BCC8-B1E109AB2472} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45}
{6A4C72BF-E818-45B1-9DD4-562C7C6F31C8} = {A6FF48E5-310A-4606-B435-D24B6B348F8C}
{97355D90-6AB6-4BD9-9E16-8C65E822F3FC} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45}
{7654D5A7-8198-4F87-89EF-8E9EF0420A63} = {EAE139C2-B19C-4905-9117-8A4068ABD3D2}
{3E11D03E-1244-43A8-875B-A547249F5B53} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45}
{AB46BE78-1A80-45F7-ACBA-AEA4EB5F792A} = {15D29FFD-6142-4DC5-AFFD-10BA0CA55C45}
{81865AF3-D6DD-4B0C-B3EF-7C25322A25E9} = {EAE139C2-B19C-4905-9117-8A4068ABD3D2}
{575C08F7-C789-4604-AB76-A53D329AF236} = {EAE139C2-B19C-4905-9117-8A4068ABD3D2}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6C780ABA-5872-4B83-AD3F-A5BD423AD907}
Expand Down
102 changes: 101 additions & 1 deletion src/City.Chain/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using City.Chain.Features.SimpleWallet;
using NBitcoin;
using NBitcoin.Protocol;
using Stratis.Bitcoin;
using Stratis.Bitcoin.Builder;
Expand All @@ -15,16 +17,63 @@
using Stratis.Bitcoin.Features.RPC;
using Stratis.Bitcoin.Features.Wallet;
using Stratis.Bitcoin.Utilities;
using System.Linq;
using System.IO;
using System.Diagnostics;
using System.Threading;

namespace City.Chain
{
public class Program
{
private static void GenerateAddressKeyPair(Network network)
{
Key privateKey;
privateKey = new Key();
var AddressString = privateKey.PubKey.GetAddress(network).ToString();
var privateKeyString = privateKey.GetWif(network).ToWif().ToString();

Console.WriteLine(AddressString);
Console.WriteLine(privateKeyString);
}

/// <summary>
/// City.Chain daemon can be launched with options to specify coin and network, using the parameters -coin and -network. It defaults to City main network.
/// </summary>
/// <example>
/// dotnet city.chain.dll -coin bitcoin -network regtest
/// dotnet city.chain.dll -coin city -network test
/// </example>
/// <param name="args"></param>
/// <returns></returns>
public static async Task Main(string[] args)
{
try
{
var nodeSettings = new NodeSettings(protocolVersion: ProtocolVersion.ALT_PROTOCOL_VERSION, args: args);
var coinIndex = Array.IndexOf(args, "-coin");
var coinValue = (coinIndex > -1) ? args[coinIndex + 1] : "city";

var networkIndex = Array.IndexOf(args, "-network");
var networkValue = (networkIndex > -1) ? args[networkIndex + 1] : "";

var network = GetNetwork(coinValue, networkValue);

if (network == null)
{
throw new ArgumentNullException($"The supplied coin ({coinValue}) and network ({networkValue}) parameters did not result in a valid network.");
}

if (args.Contains("-generate"))
{
GenerateAddressKeyPair(network);
return;
}

var nodeSettings = new NodeSettings(
args: args,
protocolVersion: ProtocolVersion.ALT_PROTOCOL_VERSION,
network: network,
agent: "CityChain");

IFullNode node = new FullNodeBuilder()
.UseNodeSettings(nodeSettings)
Expand All @@ -49,5 +98,56 @@ public static async Task Main(string[] args)
Console.WriteLine("There was a problem initializing the node. Details: '{0}'", ex.Message);
}
}

public static Network GetNetwork(string coin, string network)
{
if (coin == "city")
{
if (network == "")
{
return Networks.CityMain;
}
else if (network == "test")
{
return Networks.CityTest;
}
else if (network == "regtest")
{
return Networks.CityRegTest;
}
}
else if (coin == "bitcoin")
{
if (network == "")
{
return Networks.Main;
}
else if (network == "test")
{
return Networks.TestNet;
}
else if (network == "regtest")
{
return Networks.RegTest;
}
}
else if (coin == "stratis")
{
if (network == "")
{
return Networks.StratisMain;
}
else if (network == "test")
{
return Networks.StratisTest;
}
else if (network == "regtest")
{
return Networks.StratisRegTest;
}
}

return null;
}
}
}
19 changes: 19 additions & 0 deletions src/City.Chain/Properties/launchSettings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"profiles": {
"City.Chain": {
"commandName": "Project"
},
"City.Chain (Local Data Dir)": {
"commandName": "Project",
"commandLineArgs": "-datadir=citynode"
},
"City.Chain (Test Network)": {
"commandName": "Project",
"commandLineArgs": "-coin city -network test"
},
"City.Chain (Test Network with RPC)": {
"commandName": "Project",
"commandLineArgs": "-coin city -network test -server -rpcpassword=password -rpcuser=user"
}
}
}
Loading

0 comments on commit 9352497

Please sign in to comment.