@ParseMachine

Как предложить юзеру сменить chain в крипто кошельке на Unity3d Desktop + mobile?

Мы с командой сейчас разрабатываем игру типа 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);
  • Вопрос задан
  • 173 просмотра
Пригласить эксперта
Ответы на вопрос 1
kellas
@kellas
веб-разработчик
Никак. Это работает только с расширением для браузера metamask . С мобильным метамаском подключенным через walletconnect(по qr коду) уже не проходит запрос на смену сети.
Выдавайте юзеру сообщение с объяснением как ему переключить wallet на нужную сеть.
Это фишка конкретного кошелька, разработчики других кошельков могут ее поддерживать либо игнорировать

Вот на мой взгляд лучшая реализация подключения кошелька - https://reactdemo.blocknative.com/ посмотрите сами какие клиенты поддерживают запрос на смену сети.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы