浏览代码

Blockchain init

Rimmon 3 年之前
父节点
当前提交
9113bd1609
共有 5 个文件被更改,包括 58 次插入17 次删除
  1. 9 0
      Models/AccountModel.cs
  2. 26 3
      Models/Blockchain.cs
  3. 8 1
      Pages/Account.razor
  4. 7 13
      Pages/Blockchains.razor
  5. 8 0
      Shared/MainLayout.razor

+ 9 - 0
Models/AccountModel.cs

@@ -56,6 +56,15 @@ namespace HyperCube.Models
         public async Task GetEthAddress()
         {
             var addr = await Blockchain.GetMain().CreateBlockchainAccount(this);
+        }
+
+        public async Task<string> GetBalance()
+        {
+            var res = await Blockchain.GetMain().GetBalance(eth_address);
+            var balanceInt = ConvertBalance(res);
+            string balance = balanceInt.ToString();
+            //Console.WriteLine($"GetBalance {balance}");
+            return balance;
         }
     }
 }

+ 26 - 3
Models/Blockchain.cs

@@ -9,6 +9,19 @@ namespace HyperCube.Models
 {
     public class Blockchain
     {
+        public static string Connected
+        {
+            get {
+                var bc = GetMain();
+                if (bc != null)
+                    return $"{bc.name}";
+                return "none";
+            }            
+        }
+        public static string URLdefault = "127.0.0.1";
+        public static int defaultPort = 8545;
+        public static string defaultName = "Ethereum dev network";
+
         public static bool newData = false;
         public static Dictionary<string, Blockchain> loaded = new();
         public Dictionary<int, SmartContract> contracts = new();
@@ -17,6 +30,14 @@ namespace HyperCube.Models
         public string url;
         public string address;
         public string name;
+        static Blockchain instance;
+
+        public static Blockchain GetInstance()
+        {
+            if (instance == null)
+                instance = new Blockchain(URLdefault, defaultPort);
+            return instance;
+        }
 
         Blockchain()
         {
@@ -61,7 +82,9 @@ namespace HyperCube.Models
 
         public static Blockchain GetMain()
         {
-            return loaded.Last().Value;
+            if (loaded.Count > 0)
+                return loaded.Last().Value;
+            return null;
         }
 
         public async Task<string> Initialize()
@@ -71,9 +94,9 @@ namespace HyperCube.Models
                 loaded.Add(addr, this);
             Console.WriteLine("loaded blockchains " + loaded.Count);
 
-            LoadContracts();
+            await LoadContracts();
             Console.WriteLine("LoadContracts count " + contracts.Count);
-            return $"Blockchain connected: {url}";
+            return $"{name} {url}:{port}";
         }
 
         public async Task LoadContracts()

+ 8 - 1
Pages/Account.razor

@@ -27,16 +27,23 @@
                 <td>ETH Address:</td>
                 <td>@account.eth_address</td>
             </tr>
+            <tr>
+                <td>Balance:</td>
+                <td>@myBalance</td>
+            </tr>
         </tbody>
     </table>
 </EditForm>
 
 @code {
     private AccountModel account = new();
+    string myBalance = "";
 
     protected override async Task OnInitializedAsync()
     {
-        account = await GetCurrentAcc();
+        account = await GetCurrentAcc();
+        if (Blockchain.GetMain() != null)
+            myBalance = await account.GetBalance();
     }
 
     private async Task<AccountModel> GetCurrentAcc()

文件差异内容过多而无法显示
+ 7 - 13
Pages/Blockchains.razor


+ 8 - 0
Shared/MainLayout.razor

@@ -17,3 +17,11 @@
         </div>
     </div>
 </div>
+@using HyperCube.Models;
+@code {
+    bool connected;
+    protected override async Task OnInitializedAsync()
+    {
+        await Blockchain.GetInstance().Initialize();
+    }
+}