Blockchains.razor 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. @page "/blockchains"
  2. <h1>Blockchain</h1>
  3. <p>
  4. @namespace HyperCube.Models
  5. @code
  6. {
  7. string hidecontr = "hidden";
  8. string hidereceipt = "hidden";
  9. string result = "";
  10. }
  11. @if (Blockchain.newData)
  12. {
  13. @foreach (var bc in Blockchain.loaded)
  14. {
  15. <p>
  16. <b>@bc.url:@bc.port
  17. </b>, address: @bc.address
  18. </p>
  19. }
  20. @bytecode;
  21. }
  22. </p>
  23. <h4>Ethereum dev network</h4>
  24. <p>
  25. Add blockchain connection:
  26. <input name="bcurl" @bind="bcURL" type="text" placeholder="URL" @bind:event="oninput">
  27. <input name="bport" @bind="bcport" type="number" placeholder="port">
  28. <button @onclick="GetBlockChain">Connect</button>
  29. </p>
  30. @*<p style="visibility:@hidecontr">
  31. Add smart contract:
  32. <button @onclick="AddContract">Add</button>
  33. <input id="bytecode" size="100" @bind="bytecode" name="bytecode" type="text" placeholder="Smart contract bytecode" @bind:event="oninput" />
  34. <p>
  35. 0x60806040526000805534801561001457600080fd5b50610101806100246000396000f3006080604052600436106053576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680635b34b966146058578063a87d942c14606c578063f5c5ad83146094575b600080fd5b348015606357600080fd5b50606a60a8565b005b348015607757600080fd5b50607e60ba565b6040518082815260200191505060405180910390f35b348015609f57600080fd5b5060a660c3565b005b60016000808282540192505081905550565b60008054905090565b600160008082825403925050819055505600a165627a7a723058207815571f5c1d82bff3c0512a4cbc7a1f1c2063fa9a0de61913b76925f041e9ed0029
  36. </p>
  37. <br />
  38. </p>*@
  39. @*<p style="visibility:@hidereceipt">
  40. Get smart contract address:
  41. <button @onclick="GetReceipt">Check transaction receipt</button>
  42. <input id="bytecode" size="100" @bind="bytecode" name="bytecode" type="text" placeholder="Transaction address" @bind:event="oninput">
  43. <br />
  44. </p>*@
  45. <p>
  46. <select>
  47. @if (Blockchain.loaded.Count > 0)
  48. {
  49. @foreach (var c in Blockchain.loaded[0].contracts.Values)
  50. {
  51. <option>
  52. ID: @c.id Name:
  53. </option>
  54. }
  55. }
  56. </select>
  57. @Blockchain.newData
  58. </p>
  59. <p>@result</p>
  60. @code
  61. {
  62. private Random r = new Random();
  63. private string bcURL = "127.0.0.1";
  64. private int bcport = 8545;
  65. private string bytecode = "";
  66. private string error = "";
  67. string lastTransAddr = "";
  68. string contractAddress = "";
  69. private async Task RunContract()
  70. {
  71. //TODO result as transaction addr
  72. //result = await Blockchain.loaded[0].GetReceipt(result);
  73. }
  74. private async Task AddContract()
  75. {
  76. if (Blockchain.loaded.Count > 0)
  77. {
  78. var taddr = await Blockchain.loaded[0].AddContract(bytecode);
  79. if (taddr != "")
  80. {
  81. result = taddr;
  82. //hidereceipt = "visible";
  83. var caddr = await Blockchain.loaded[0].GetReceipt(result);
  84. if (caddr != "")
  85. {
  86. result = "contractAddress: "+caddr;
  87. contractAddress = caddr;
  88. var run = await Blockchain.loaded[0].RunContractWrite(contractAddress, "0x11111111");
  89. result = "run: " + run;
  90. }
  91. }
  92. }
  93. //private Post post = new Post();
  94. }
  95. private async Task GetBlockChain()
  96. {
  97. var b2h = Blockchain.bin2hex("getCount()");
  98. Console.WriteLine("bin2hex "+b2h);
  99. //if (Blockchain.loaded.Count == 0)
  100. //{
  101. Blockchain bc = new HyperCube.Models.Blockchain(bcURL, bcport);
  102. result = await bc.Initialize();
  103. if (result != "")
  104. hidecontr = "visible";
  105. //bcURL = bc.GetAddress();
  106. //bc.ExecuteContract();
  107. //bcURL = bc.address;
  108. //hidecontr = "hidden";
  109. //}
  110. //private Post post = new Post();
  111. }
  112. }