Мы с командой сейчас разрабатываем игру типа p2e, с интеграцией блокчейна, нфт и т.д. Встала такая потребность, при входе в игру, если игрок пытается приконнектиться с кошельком, который не на определенном chain, т.е. например у игрока стоит Ethereum mainnet ,а нам надо Polygon, то мы через JSON RPC или еще каким-то бы ни было образом посылаем запрос и у него в кошельке вылезает попап с подтверждением переключения или добавления нужной сети. Это вообще возможно сделать на десктопе или мобилке? Гуглил, видел, что такое делается на вебе легко. Может тут есть JSON RPC метод какой-то, который сработает? Пробовал методы: "wallet_updateChain", "updateChain", "wallet_addEthereumChain", "addEthereumChain", "wallet_switchEthereumChain", "switchEthereumChain"
Пробовал сделать такое просто создавая провайдера -
var provider = wcProtocol.CreateProvider(new Uri("https://mainnet.infura.io/v3/69e329bc217e4d4a99c1fcf31841f36c"));
await provider.SendRequestAsync(method: "wallet_updateChain", paramList: paramss);
Также через Web3 библиотеку
var web3 = new Web3(wcProtocol.CreateProvider(new Uri("https://mainnet.infura.io/v3/69e329bc217e4d4a99c1fcf31841f36c")));
await web3.Client.SendRequestAsync(method: "wallet_updateChain", paramList: paramss);
Также добавил класс (по примеру из готового SDK Wallet Connect) и попытался через их код сделать запрос:
public class SwitchChain : JsonRpcRequest
{
public override string Method
{
get { return "addEthereumChain"; }
}
[JsonProperty("params")]
public WCSessionDataChainOperation[] parameters;
public SwitchChain(WCSessionDataChainOperation data)
{
this.parameters = new[] { data };
}
}
var request = new SwitchChain(new WCSessionDataChainOperation()
{
chainId = 1
});
await WalletConnect.ActiveSession.SendRequest(request);