|
@@ -10,7 +10,8 @@ namespace HyperCube.Models
|
|
|
public class Blockchain
|
|
|
{
|
|
|
public static bool newData = false;
|
|
|
- public static List<Blockchain> loaded = new List<Blockchain>();
|
|
|
+ public static List<Blockchain> loaded = new();
|
|
|
+ public Dictionary<int, SmartContract> contracts = new();
|
|
|
public int port;
|
|
|
public string url;
|
|
|
public string address;
|
|
@@ -35,6 +36,24 @@ namespace HyperCube.Models
|
|
|
return "0x"+hex;
|
|
|
}
|
|
|
|
|
|
+ public async Task<string> Initialize()
|
|
|
+ {
|
|
|
+ await ListAccounts();
|
|
|
+ if (!loaded.Contains(this))
|
|
|
+ loaded.Add(this);
|
|
|
+ Console.WriteLine("loaded blockchains " + loaded.Count);
|
|
|
+
|
|
|
+ LoadContracts();
|
|
|
+
|
|
|
+ return $"Blockchain connected: {url}";
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task LoadContracts()
|
|
|
+ {
|
|
|
+ MySQLConnector dbCon = MySQLConnector.Instance();
|
|
|
+ contracts = await dbCon.SQLSelectContracts();
|
|
|
+ }
|
|
|
+
|
|
|
public async Task<string> GetSHA3(string code)
|
|
|
{
|
|
|
var hex = bin2hex(code);
|
|
@@ -47,7 +66,18 @@ namespace HyperCube.Models
|
|
|
return answer;
|
|
|
}
|
|
|
|
|
|
- public async Task<string> RunContract(string contractAddress, string data)
|
|
|
+ public async void RunContractRead()
|
|
|
+ {
|
|
|
+ string answer = "no";
|
|
|
+ string req = "{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0x874c6a51e62680d4594cd2555ed8fa47b63ed253\", \"data\":\"0xa87d942c\"},\"latest\"],\"id\":1}";
|
|
|
+ //string req = "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0x0000000000000000000000000000000000000000000000000000000000000004\"}";
|
|
|
+ //Console.WriteLine($"req " + req);
|
|
|
+ await Post.PostRequestAsync(req);
|
|
|
+ //Console.WriteLine($"answer {answer} len {answer.Length}" );
|
|
|
+ address = answer;
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task<string> RunContractWrite(string contractAddress, string data)
|
|
|
{
|
|
|
Console.WriteLine("RunContract contractAddress " + contractAddress);
|
|
|
var req = $"{{ \"jsonrpc\":\"2.0\",\"method\":\"eth_sendTransaction\",\"params\":[{{\"from\":\"{address}\",\"to\":\"{contractAddress}\",\"gas\":\"0x31b2e\", \"data\":\"{data}\"}}], \"id\":1}}";
|
|
@@ -75,14 +105,7 @@ namespace HyperCube.Models
|
|
|
return contractAddress;
|
|
|
}
|
|
|
|
|
|
- public async Task<string> Initialize()
|
|
|
- {
|
|
|
- await ListAccounts();
|
|
|
- if (!loaded.Contains(this))
|
|
|
- loaded.Add(this);
|
|
|
- Console.WriteLine("loaded blockchains " + loaded.Count);
|
|
|
- return $"Blockchain connected: {url}";
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
public async void GetGas(string bytecode)
|
|
|
{
|
|
@@ -121,17 +144,6 @@ namespace HyperCube.Models
|
|
|
newData = true;
|
|
|
}
|
|
|
|
|
|
- public async void ExecuteContract()
|
|
|
- {
|
|
|
- string answer = "no";
|
|
|
- string req = "{\"jsonrpc\":\"2.0\",\"method\":\"eth_call\",\"params\":[{\"to\":\"0x874c6a51e62680d4594cd2555ed8fa47b63ed253\", \"data\":\"0xa87d942c\"},\"latest\"],\"id\":1}";
|
|
|
- //string req = "{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"0x0000000000000000000000000000000000000000000000000000000000000004\"}";
|
|
|
- //Console.WriteLine($"req " + req);
|
|
|
- await Post.PostRequestAsync(req);
|
|
|
- //Console.WriteLine($"answer {answer} len {answer.Length}" );
|
|
|
- address = answer;
|
|
|
- }
|
|
|
-
|
|
|
public string GetAddress()
|
|
|
{
|
|
|
//this.address = address;
|