Co je WalletConnect?

Úvod

Vznik decentralizovaného aplikačního ekosystému vyvolal značné obavy. V posledních letech došlo k prudkému nárůstu zájmu veřejnosti o technologie. Softwarový průmysl se stále více posouvá směrem k decentralizovaným programům (Dapps), aby odstranil jediný bod selhání, a v důsledku toho se blockchain rychle stal populárním problémem. Existuje však mnoho různých druhů decentralizovaných aplikací as tolika různými typy blockchainu může být obtížné pochopit, jak všechny tyto aplikace fungují, na koho jsou zaměřeny a jak je všechny oslovit.

Mnoho konvenčních bank a fintech firem přechází z jednosměrných interakcí na obousměrné, decentralizované klientské služby. Nové způsoby připojení a využití těchto decentralizovaných systémů zahrnují propojení vaší peněženky s těmito Dapps, abyste měli přístup k jejich službám. V tomto článku si projdeme, co je WalletConnect, jeho funkce, integrace a jak komunikovat s komunitou.

Co je WalletConnect?

WalletConnect je otevřený protokol, který umožňuje Dapps a peněženkám vzájemně bezpečně komunikovat. Klienti mohou existovat na jednom nebo dvou různých zařízeních a vyměňovat si zprávy pomocí funkcí protokolu JSON-RPC.

Požadavky WalletConnect jsou směrovány přes síť Waku gossip, která přenáší veškerou komunikaci vyměňovanou klienty ekosystému. Aby bylo možné nabídnout šifrování typu end-to-end, klienti si nejprve vymění klíče prostřednictvím protokolu Diffie-Hellman. Později jsou doručovány symetricky zašifrované zprávy s odpovídajícími kódy HMAC, aby byla zajištěna autenticita zpráv a integrita dat.

WalletConnect je vytvořen pro vývojáře, WalletConnect SDK je k dispozici pro Android, iOS a web.

Funkce WalletConnect

WallecConnect se opravdu zajímá o to, aby uživatelům poskytovalo jen to nejlepší. Funkce WalletConnect v2.0 jsou bezkonkurenční, protože se jedná o špičkovou technologii pro další generaci blockchainových aplikací.

Mezi tyto funkce patří:

  1. Agnostik řetězce: Komunikujte s jakýmkoli blockchainem. Okamžitá podpora pro nové blockchainy a rollupy.
  2. Víceřetězcové: Připojte se k peněžence s jedním nebo více řetězci současně a převádějte transakce do různých řetězců. Tato nová funkce připraví cestu programům k interakci s peněženkami v několika řetězcích bez nutnosti jakékoli synchronizace pro přepínání kontextů, ať už automaticky nebo ručně peněženkou nebo uživatelem. Už nebude žádná výměna řetězu.
  3. Více relací: Spravujte tolik relací, kolik potřebujete. Pro vytvoření požadovaného uživatelského rozhraní se nabízí flexibilní API.
  4. Decentralizované zasílání zpráv: Předávání zpráv nyní využívá síť Waku k rozesílání zpráv kolem všech uzlů. Již se nebude spoléhat na centralizované servery.
  5. Jednorázové párování: Z jednoho párování lze vytvořit více relací. Pro neomezený počet relací je vyžadováno pouze jedno připojení.
  6. Snížená šířka pásma: Správa webových soketů efektivně znovu využívá zdroje, aby bez přerušení multiplexovala veškerou komunikaci přes jediný soket.

Integrace WalletConnect

Pomocí několika řádků kódu můžete integrovat WalletConnect. V současné době jsou k dispozici sady SDK pro Javascript, iOS/Swift a Android/Kotlin.

WalletConnect je vytvořen pro práci s různými řetězci, např.:Ethereum, Cosmos, Celo, Near, Solana a Polkadot. Existují stovky Dapp, které používají WalletConnect ke spojení s peněženkami, např.:Etherscan, Uniswap, Opensea, Zapper, Aave, Unstoppable domén atd. Některé z integrovaných peněženek od WalletConnect zahrnují Trust Wallet, Metamask, Rainbow, Argent, Crypto.com Peněženka Defi, MathWallet atd.

Rychlá integrace Dapps (klient Node.js)

Tato rychlá integrace Dapps je specifická pro klienta Node.js, ujistěte se, že používáte Test Wallet pro integraci na test.walletconnect.org a neposílejte do této peněženky prostředky, protože není bezpečná. Další věc, kterou je třeba poznamenat, je, že kód v syntaxi Javascript ES6 je zobrazen níže, což vyžaduje svázání a transpilaci pro spuštění ve webových prohlížečích. Probereme instalaci, spouštění, odesílání transakcí a podepisování transakcí.

  • Instalace.
yarn add @walletconnect/node @walletconnect/qrcode-modal
npm install --save @walletconnect/node @walletconnect/qrcode-modal
  • Iniciujte připojení.
import NodeWalletConnect from "@walletconnect/node";
import WalletConnectQRCodeModal from "@walletconnect/qrcode-modal";

// Create connector
const walletConnector = new NodeWalletConnect(
  {
    bridge: "https://bridge.walletconnect.org", // Required
  },
  {
    clientMeta: {
      description: "WalletConnect NodeJS Client",
      url: "https://nodejs.org/en/",
      icons: ["https://nodejs.org/static/images/logo.svg"],
      name: "WalletConnect",
    },
  }
);

// Check if connection is already established
if (!walletConnector.connected) {
  // create new session
  walletConnector.createSession().then(() => {
    // get uri for QR Code modal
    const uri = walletConnector.uri;
    // display QR Code modal
    WalletConnectQRCodeModal.open(
      uri,
      () => {
        console.log("QR Code Modal closed");
      },
      true // isNode = true
    );
  });
}

// Subscribe to connection events
walletConnector.on("connect", (error, payload) => {
  if (error) {
    throw error;
  }

  // Close QR Code Modal
  WalletConnectQRCodeModal.close(
    true // isNode = true
  );

// Get provided accounts and chainId
  const { accounts, chainId } = payload.params[0];
});

walletConnector.on("session_update", (error, payload) => {
  if (error) {
    throw error;
  }

  // Get updated accounts and chainId
  const { accounts, chainId } = payload.params[0];
});

walletConnector.on("disconnect", (error, payload) => {
  if (error) {
    throw error;
  }

  // Delete walletConnector
});

  • Odeslat transakci
// Draft transaction
const tx = {
  from: "0xbc28Ea04101F03aA7a94C1379bc3AB32E65e62d3", // Required
  to: "0x89D24A7b4cCB1b6fAA2625Fe562bDd9A23260359", // Required (for non contract deployments)
  data: "0x", // Required
  gasPrice: "0x02540be400", // Optional
  gas: "0x9c40", // Optional
  value: "0x00", // Optional
  nonce: "0x0114", // Optional
};

// Send transaction
walletConnector
  .sendTransaction(tx)
  .then((result) => {
    // Returns transaction id (hash)
    console.log(result);
  })
  .catch((error) => {
    // Error returned when rejected
    console.error(error);
  });

  • Podepsat transakci
// Draft transaction
const tx = {
  from: "0xbc28Ea04101F03aA7a94C1379bc3AB32E65e62d3", // Required
  to: "0x89D24A7b4cCB1b6fAA2625Fe562bDd9A23260359", // Required (for non contract deployments)
  data: "0x", // Required
  gasPrice: "0x02540be400", // Optional
  gas: "0x9c40", // Optional
  value: "0x00", // Optional
  nonce: "0x0114", // Optional
};

// Sign transaction
walletConnector
  .signTransaction(tx)
  .then((result) => {
    // Returns signed transaction
    console.log(result);
  })
  .catch((error) => {
    // Error returned when rejected
    console.error(error);
  });

Závěr

Doposud jsme byli schopni poskytnout podrobný popis toho, co je WalletConnect, jeho funkčnost a integraci. Napsali jsme nějaký kód pro integraci Dapp pomocí klienta Node.js, instalaci, inicializaci připojení, odesílání transakcí a podepisování transakcí. Toto jsou základní integrace potřebné k zahájení integrace WalletConnect do vašeho Dapp. Díky solidní dokumentaci a vysoce aktivní komunitě je Walletconnect mnohem víc a dokáže mnohem víc, než byste si mysleli.

Připojte se ke komunitě WalletConnect

Web:https://walletconnect.com

Twitter:https://twitter.com/walletconnect

Discord:https://discord.walletconnect.org

GitHub:https://github.com/walletconnect

Dokumentace:https://docs.walletconnect.com