Browse Source

запуск контракта с параметрами

Rimmon 4 years ago
parent
commit
8ef148caaf
2 changed files with 33 additions and 9 deletions
  1. 9 0
      Models/Blockchain.cs
  2. 24 9
      Pages/Blockchains.razor

+ 9 - 0
Models/Blockchain.cs

@@ -49,6 +49,15 @@ namespace HyperCube.Models
             return "0x" + hex;
         }
 
+        public static string zerofill(string hex, int byteCount, bool hexPrefix0x)
+        {
+            if (hexPrefix0x)
+                hex = hex.Remove(0, 2);
+            var res = hex.PadRight(byteCount, '0');
+            Console.WriteLine($"zerofill input {hex} out {res}");
+            return res;
+        }
+
         public static Blockchain GetMain()
         {
             return loaded.Last().Value;

+ 24 - 9
Pages/Blockchains.razor

@@ -3,7 +3,7 @@
 <h1>Blockchain</h1>
 @namespace HyperCube.Models
 @code
-        {
+{
     string hidecontr = "hidden";
     string hidereceipt = "hidden";
     string result = "";
@@ -50,7 +50,6 @@
     </p>
 }
 
-
 <h4>Ethereum dev network</h4>
 <p>
     Add blockchain connection:
@@ -143,16 +142,35 @@
 
     protected async Task TransferContract()
     {
+        var ttt = "123";
+        Console.WriteLine($"len  {ttt.Length}");
         try
         {
             var myacc = AccountModel.Current;
+            Console.WriteLine($"TransferContract run");
             Console.WriteLine($"TransferContract {myacc.Name}");
 
-            if (Blockchain.GetMain().contractNames.ContainsKey("Transfer"))
+            var recipient = AccountModel.Find(accountSelected);
+            if (recipient != null)
             {
-                var contr = Blockchain.GetMain().contractNames["Transfer"];
-                var res = Blockchain.GetMain().RunContractWrite(contr.Address, $"\"{sha3}\"");
-                Console.WriteLine("TransferContract " + res);
+                //var b2h = Blockchain.bin2hex("getCount()");
+                //Console.WriteLine("bin2hex " + b2h);
+                var part1 = await Blockchain.GetSHA3("myTransfer(address)");
+                //var part2 = await Blockchain.GetSHA3(recipient.eth_address);
+                var zerofill = Blockchain.zerofill(part1.Substring(0, 10), 32, true);
+                //var zerofill2 = Blockchain.zerofill(part2, 32, true);
+                var paramstring = "0x" + zerofill + recipient.eth_address.Remove(0, 2);
+                Console.WriteLine($"paramstring {paramstring}");
+
+                //todo pack myTransfer(address)
+                //todo pack contr.Address
+
+                if (Blockchain.GetMain().contractNames.ContainsKey("Transfer"))
+                {
+                    var contr = Blockchain.GetMain().contractNames["Transfer"];
+                    var res = Blockchain.GetMain().RunContractWrite(contr.Address, $"{paramstring}");
+                    Console.WriteLine("TransferContract " + res);
+                }
             }
             //TODO run smart contract with verifier wallet
         }
@@ -246,9 +264,6 @@
 
     private async Task GetBlockChain()
     {
-        var b2h = Blockchain.bin2hex("getCount()");
-        Console.WriteLine("bin2hex " + b2h);
-
         //if (Blockchain.loaded.Count == 0)
         //{
         Blockchain bc = new HyperCube.Models.Blockchain(bcURL, bcport);