Sfoglia il codice sorgente

переключение блокчейнов

Rimmon 3 anni fa
parent
commit
17809a2d89
3 ha cambiato i file con 27 aggiunte e 20 eliminazioni
  1. 22 16
      Models/Blockchain.cs
  2. 2 2
      Pages/Blockchains.razor
  3. 3 2
      Shared/MainLayout.razor

+ 22 - 16
Models/Blockchain.cs

@@ -20,16 +20,17 @@ namespace HyperCube.Models
                 return "none";
             }            
         }
-        public static int selectedNum;
+        public static int selectedId;
         public static string URLdefault = "127.0.0.1";
         //public static int defaultPort = 8545;
         public static int defaultPort = 8666;
         public static string defaultName = "Ethereum dev network";
 
         public static bool newData = false;
-        public static Dictionary<string, Blockchain> loaded = new();
+        public static Dictionary<int, Blockchain> loaded = new();
         public Dictionary<int, SmartContract> contracts = new();
         public Dictionary<string, SmartContract> contractNames = new();
+        public int id;
         public int port;
         public string url;
         public string address = "";
@@ -38,24 +39,29 @@ namespace HyperCube.Models
 
         public static void RegisterNetworks()
         {
-            //Initialize(name, url, port)
+            var ethDev = new Blockchain(0, "Ethereum Dev Network", "127.0.0.1", 8545);            
+            var ethRinkeby = new Blockchain(1, "Ethereum Test Network", "127.0.0.1", 8666);
+            ethDev.Initialize();
+            ethRinkeby.Initialize();
         }
 
-        public static Blockchain GetInstance()
-        {
-            if (instance == null)
-                instance = new Blockchain(URLdefault, defaultPort);
-            return instance;
-        }
+        //public static Blockchain GetInstance()
+        //{
+        //    if (instance == null)
+        //        instance = new Blockchain(URLdefault, defaultPort);
+        //    return instance;
+        //}
 
-        Blockchain()
-        {
-        }
+        //Blockchain()
+        //{
+        //}
 
-        public Blockchain(string url, int port)
+        public Blockchain(int id, string name, string url, int port)
         {
+            this.id = id;
             this.url = url;
             this.port = port;
+            this.name = name;
         }
 
         public async Task<string> CreateBlockchainAccount(AccountModel account)
@@ -92,15 +98,15 @@ namespace HyperCube.Models
         public static Blockchain GetMain()
         {
             if (loaded.Count > 0)
-                return loaded.Last().Value;
+                return loaded[selectedId];
             return null;
         }
 
         public async Task<string> Initialize()
         {
             string addr = await ListAccounts();
-            if (!loaded.ContainsKey(addr))
-                loaded.Add(addr, this);
+            if (!loaded.ContainsKey(id))
+                loaded.Add(selectedId, this);
             name = defaultName;
             url = URLdefault;
             port = defaultPort;

+ 2 - 2
Pages/Blockchains.razor

@@ -56,8 +56,8 @@
         </p>
     }
 }
-<p>@Blockchain.selectedNum</p>
-<select @bind="Blockchain.selectedNum" style="color:green">
+<p>@Blockchain.selectedId</p>
+<select @bind="Blockchain.selectedId" style="color:green">
     <option value=0>Ethereum Dev Network</option>
     <option value=1>Ethereum Test Network</option>
 </select>

+ 3 - 2
Shared/MainLayout.razor

@@ -35,13 +35,14 @@
 
 @code {
     List<string> Networks = new();
-    bool connected = false;    
+    bool connected = false;
 
     protected override async Task OnInitializedAsync()
     {
         try
         {
-            await Blockchain.GetInstance().Initialize();
+            //await Blockchain.GetInstance().Initialize();
+            Blockchain.RegisterNetworks();
             if (Blockchain.Connected != "" && Blockchain.Connected != "none")
             {
                 connected = true;