diff --git a/csharp/BlockChain.Console/App.config b/csharp/BlockChain.Console/App.config
index d0feca6..089f249 100644
--- a/csharp/BlockChain.Console/App.config
+++ b/csharp/BlockChain.Console/App.config
@@ -3,4 +3,8 @@
+
+
+
+
diff --git a/csharp/BlockChain/BlockChain.cs b/csharp/BlockChain/BlockChain.cs
index 52a8f71..250d6f8 100644
--- a/csharp/BlockChain/BlockChain.cs
+++ b/csharp/BlockChain/BlockChain.cs
@@ -66,18 +66,24 @@ namespace BlockChainDemo
foreach (Node node in _nodes)
{
- var request = (HttpWebRequest)WebRequest.Create(node.Address);
+ var url = new Uri(node.Address, "/chain");
+ var request = (HttpWebRequest)WebRequest.Create(url);
var response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
- string json = new StreamReader(response.GetResponseStream()).ReadToEnd();
- List chain = JsonConvert.DeserializeObject>(json);
-
- if (chain.Count > _chain.Count && IsValidChain(chain))
+ var model = new
{
- maxLength = chain.Count;
- newChain = chain;
+ chain = new List(),
+ length = 0
+ };
+ string json = new StreamReader(response.GetResponseStream()).ReadToEnd();
+ var data = JsonConvert.DeserializeAnonymousType(json, model);
+
+ if (data.chain.Count > _chain.Count && IsValidChain(data.chain))
+ {
+ maxLength = data.chain.Count;
+ newChain = data.chain;
}
}
}
@@ -179,7 +185,7 @@ namespace BlockChainDemo
var builder = new StringBuilder();
foreach (string node in nodes)
{
- string url = $"https://{node}";
+ string url = $"http://{node}";
RegisterNode(url);
builder.Append($"{url}, ");
}
diff --git a/csharp/BlockChain/BlockChain.csproj b/csharp/BlockChain/BlockChain.csproj
index a4a176a..86681ac 100644
--- a/csharp/BlockChain/BlockChain.csproj
+++ b/csharp/BlockChain/BlockChain.csproj
@@ -39,6 +39,7 @@
..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll
+
diff --git a/csharp/BlockChain/WebServer.cs b/csharp/BlockChain/WebServer.cs
index 2e49dc7..cd7b86b 100644
--- a/csharp/BlockChain/WebServer.cs
+++ b/csharp/BlockChain/WebServer.cs
@@ -1,4 +1,5 @@
using Newtonsoft.Json;
+using System.Configuration;
using System.IO;
using System.Net;
using System.Net.Http;
@@ -9,6 +10,10 @@ namespace BlockChainDemo
{
public WebServer(BlockChain chain)
{
+ var settings = ConfigurationManager.AppSettings;
+ string host = settings["host"]?.Length > 1 ? settings["host"] : "localhost";
+ string port = settings["port"]?.Length > 1 ? settings["port"] : "12345";
+
var server = new TinyWebServer.WebServer(request =>
{
string path = request.Url.PathAndQuery.ToLower();
@@ -53,18 +58,18 @@ namespace BlockChainDemo
var obj = JsonConvert.DeserializeAnonymousType(json, urlList);
return chain.RegisterNodes(obj.Urls);
- //GET: http://localhost:12345/nodes/register
+ //GET: http://localhost:12345/nodes/resolve
case "/nodes/resolve":
return chain.Consensus();
}
return "";
},
- "http://localhost:12345/mine/",
- "http://localhost:12345/transactions/new/",
- "http://localhost:12345/chain/",
- "http://localhost:12345/nodes/register/",
- "http://localhost:12345/nodes/resolve/"
+ $"http://{host}:{port}/mine/",
+ $"http://{host}:{port}/transactions/new/",
+ $"http://{host}:{port}/chain/",
+ $"http://{host}:{port}/nodes/register/",
+ $"http://{host}:{port}/nodes/resolve/"
);
server.Run();