Browse Source

правки запуска/добавления контрактов

Rimmon 4 years ago
parent
commit
20fbbdc737
4 changed files with 25 additions and 14 deletions
  1. 1 2
      Models/Blockchain.cs
  2. 20 8
      Models/SmartContract.cs
  3. 1 1
      Pages/Blockchains.razor
  4. 3 3
      Pages/DocEdit.razor

+ 1 - 2
Models/Blockchain.cs

@@ -138,7 +138,7 @@ namespace HyperCube.Models
         public async Task<string> RunContractWrite(string contractAddress, string data)
         {
             Console.WriteLine("RunContract contractAddress " + contractAddress);
-            var answer = await RunFunction("eth_sendTransaction", $"{{\"from\":\"{address}\",\"to\":\"{contractAddress}\",\"gas\":\"0x31b2ef\", \"data\":\"{data}\", \"value\":\"0x32\"}}");
+            var answer = await RunFunction("eth_sendTransaction", $"{{\"from\":\"{address}\",\"to\":\"{contractAddress}\",\"gas\":\"0x31b2ef\", \"data\":\"{data}\", \"value\":\"0x32555\"}}");
             //$"{{ \"jsonrpc\":\"2.0\",\"method\":\"eth_sendTransaction\",\"params\":[{{\"from\":\"{address}\",\"to\":\"{contractAddress}\",\"gas\":\"0x31b2ef\", \"data\":\"{data}\"}}], \"id\":1}}";
             //var answer = await Post.PostRequestAsync(req);
             //dynamic jsonDe = JsonConvert.DeserializeObject(answer);
@@ -185,7 +185,6 @@ namespace HyperCube.Models
             SmartContract newctr = new SmartContract(id, name, code, bytecode);
             contracts.Add(id, newctr);
             contractNames.Add(name, newctr);
-            await newctr.LoadFunction();
             return new object[]{ res, newctr };
         }
 

+ 20 - 8
Models/SmartContract.cs

@@ -52,10 +52,14 @@ namespace HyperCube.Models
             if (functionId == 0)
             {
                 var ret = await MySQLConnector.Instance().SQLSelectComplex($"select * from functions where contract_id={ID} limit 1");
-                functionId = Convert.ToInt32(ret[0]["id"]);
-                functionName = ret[0]["name_with_args"].ToString();
-                functionCompiledHeader = ret[0]["compiled_header"].ToString();
-                Console.WriteLine($"{ID} LoadFunction {functionId} name {functionName} header {functionCompiledHeader}");
+                if (ret.Count > 0)
+                {
+                    functionId = Convert.ToInt32(ret[0]["id"]);
+                    functionName = ret[0]["name_with_args"].ToString();
+                    functionCompiledHeader = ret[0]["compiled_header"].ToString();
+                    functionCompiledHeader = Blockchain.zerofill(functionCompiledHeader, 32, false);
+                    Console.WriteLine($"{ID} LoadFunction {functionId} name {functionName} header {functionCompiledHeader}");
+                }
             }
         }
 
@@ -73,18 +77,26 @@ namespace HyperCube.Models
         public async Task Run(ArticleModel newArticle, string weiValue = "0x0")
         {
             var uuid = await newArticle.GetInitiatorUUID();
+            Console.WriteLine($"Current {AccountModel.Current.Email}");
             var verifier_address = AccountModel.Current.eth_address.Remove(0, 2);
+
             var initiator = AccountModel.Find(uuid);
             var initiator_address = initiator.eth_address.Remove(0, 2);
             var article_value = (int)newArticle.Rating;
+            
             var article_value_hex = article_value.ToString("X32");
+            Console.WriteLine($"article_value {article_value} hex {article_value_hex}");
             var edits = await newArticle.GetEditsCount();
             var edits_hex = edits.ToString("X32");
+
+            Console.WriteLine($"edits {edits} hex {edits_hex}");
             //function verify( address payable verifier, address payable initiator, int article_value, int verify_complexity) public returns (uint vReward, uint iReward) 
-            var paramstring = "0x" + functionCompiledHeader + verifier_address+ initiator_address+ article_value_hex+ edits_hex;
-            Console.WriteLine($"VerifyContract Run {initiator.Name}");
-            var res = Blockchain.GetMain().RunContractWrite(Address, $"{paramstring}");
-            Console.WriteLine($"VerifyContract result {res}");
+            var paramstring = "0x" + functionCompiledHeader + verifier_address + initiator_address + article_value_hex + edits_hex;
+            Console.WriteLine($"VerifyContract Run {initiator.Name} params {paramstring}");
+            var res = await Blockchain.GetMain().RunContractWrite(Address, $"{paramstring}");
+            //Console.WriteLine($"VerifyContract result {res}");
+            var receipt = await Blockchain.GetMain().GetReceipt(res);
+            Console.WriteLine("VerifyContract receipt " + receipt);
         }
     }
 }

+ 1 - 1
Pages/Blockchains.razor

@@ -114,7 +114,7 @@
         {
             @foreach (var acc in AccountModel.Loaded.Values)
             {
-                <option value="@acc.Email">
+                <option value="@acc.UUID">
                     [@acc.Email] @acc.Name
                 </option>
             }

+ 3 - 3
Pages/DocEdit.razor

@@ -257,10 +257,10 @@
         {
             var currentUser = await UserManager.GetUserAsync(user);
             account.UUID = currentUser.Id;
-            account.Name = currentUser.UserName;
-            account.Email = currentUser.Email;
+            //account.Name = currentUser.UserName;
+            //account.Email = currentUser.Email;
 
-            var acc = AccountModel.Find(account.Email);
+            var acc = AccountModel.Find(account.UUID);
             if (acc != null)
                 account = acc;
             ///tmp