Ú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ří:
- Agnostik řetězce: Komunikujte s jakýmkoli blockchainem. Okamžitá podpora pro nové blockchainy a rollupy.
- 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.
- Více relací: Spravujte tolik relací, kolik potřebujete. Pro vytvoření požadovaného uživatelského rozhraní se nabízí flexibilní API.
- 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.
- 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í.
- 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