Bladeren bron

Verify - transactionId

Rimmon 3 jaren geleden
bovenliggende
commit
151b1b5bbb
4 gewijzigde bestanden met toevoegingen van 25 en 8 verwijderingen
  1. 5 2
      Models/Blockchain.cs
  2. 9 2
      Models/SmartContract.cs
  3. 1 1
      Pages/Blockchains.razor
  4. 10 3
      Pages/DocEdit.razor

+ 5 - 2
Models/Blockchain.cs

@@ -175,7 +175,7 @@ namespace HyperCube.Models
             return answer;
         }
 
-        public async Task<string> GetReceipt(string transactionAddress)
+        public async Task<string> GetReceipt(string transactionAddress, bool returnAddress = false)
         {
             Console.WriteLine("transactionAddress " + transactionAddress);
             var req = $"{{ \"jsonrpc\":\"2.0\",\"method\":\"eth_getTransactionReceipt\",\"params\":[\"{transactionAddress}\"], \"id\":1}}";
@@ -188,7 +188,10 @@ namespace HyperCube.Models
             var contractAddress = jsonDe.result.contractAddress;
             MySQLConnector.Instance().SQLInsert($"insert into transactions (result, name) values ('{Convert.ToString(jsonDe.result)}', 'eth_getTransactionReceipt')");
             Console.WriteLine("result " + answer);
-            return contractAddress;
+            if (returnAddress)
+                return contractAddress;
+            else
+                return Convert.ToString(jsonDe.result);
         }
 
 

+ 9 - 2
Models/SmartContract.cs

@@ -73,7 +73,13 @@ namespace HyperCube.Models
         public VerifyContract() : base() { }
         public VerifyContract(int id, string name, string code, string bytecode) : base(id, name, code, bytecode) { }        
 
-        public async Task Run(ArticleModel newArticle, string weiValue = "0x0")
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="newArticle"></param>
+        /// <param name="weiValue"></param>
+        /// <returns>ID транзакции</returns>
+        public async Task<string> Run(ArticleModel newArticle, string weiValue = "0x0")
         {
             var uuid = await newArticle.GetInitiatorUUID();
             var verifier_address = AccountModel.Current.eth_address;
@@ -94,9 +100,10 @@ namespace HyperCube.Models
             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}");
+            Console.WriteLine($"VerifyContract transactionId res {res}");
             var receipt = await Blockchain.GetMain().GetReceipt(res);
             Console.WriteLine("VerifyContract receipt " + receipt);
+            return res;
         }
     }
 }

+ 1 - 1
Pages/Blockchains.razor

@@ -309,7 +309,7 @@
             {
                 result = taddr[0].ToString();
                 //hidereceipt = "visible";
-                var caddr = await Blockchain.GetMain().GetReceipt(result);
+                var caddr = await Blockchain.GetMain().GetReceipt(result, true);
                 if (caddr != "")
                 {
                     result = "contractAddress: " + caddr;

+ 10 - 3
Pages/DocEdit.razor

@@ -74,6 +74,10 @@
                 <p>
                     Вознаграждение системы: овердофига <b>ETH</b>.
                 </p>
+                <p>
+                    ID транзакции: @transactionId
+                </p>
+                
             </Body>
             <Footer>
                 @*<button type="button" class="btn btn-primary">Save changes</button>*@
@@ -91,6 +95,7 @@
     const string FOLDER_NAME = "articles_storage";
     const long MAX_FILE_SIZE = 5120000; //bytes
 
+    string transactionId;
     ArticleModel articleModelClone = new();
     ArticleModel articleModel = new();
     AccountModel currentAcc = new();
@@ -102,7 +107,7 @@
     Modal modal { get; set; }
     int editsCount;
 
-    async Task Verify()
+    async Task<string> Verify()
     {
         ///tmp
         editsCount = await articleModel.GetEditsCount(currentAcc.UUID);
@@ -114,7 +119,7 @@
             if (verifyContract != null)
             {
                 Console.WriteLine($"VerifyContract found");
-                await verifyContract.Run(articleModel);
+                return await verifyContract.Run(articleModel);
             }
             else
                 Console.WriteLine($"VerifyContract null");
@@ -124,6 +129,7 @@
         {
             Console.WriteLine(e.Message + "stack trace" + e.StackTrace);
         }
+        return "Verify failed";
     }
 
     protected override async Task OnInitializedAsync()
@@ -209,7 +215,8 @@
         if (docID > 0)
         {
             status = propDict.Count > 0 ? "All changes saved, article has veryfied." : "Article verifyed without any changes.";
-            await Verify();
+            transactionId = await Verify();
+            Console.WriteLine("transactionId found "+ transactionId);
         }
         else
         {