v0.0.11walletconnect_dart
一種開放協議,透過QR碼掃描或深度連結將去中心化應用連接到行動錢包。
用於將 dApp 與行動錢包透過 QR 碼掃描或深度連結連接的開放協定。
^2.1.0^3.0.5^2.0.5^3.0.1^4.4.0^1.10.0^1.20.1^6.1.4^2.1.7以下為英文專案原文快照,最新內容請造訪 GitHub。
https://eidoohelp.zendesk.com/hc/article_attachments/360071262952/mceclip0.png
pub.dev Effective Dart Stars Issues MIT License
WalletConnect is an open source protocol for connecting decentralised applications to mobile wallets with QR code scanning or deep linking. A user can interact securely with any Dapp from their mobile phone, making WalletConnect wallets a safer choice compared to desktop or browser extension wallets.
WalletConnect connects mobile & web applications to supported mobile wallets. The WalletConnect session is started by scanning a QR code (desktop) or by clicking an application deep link (mobile).
WalletConnect-Dart-SDK is a community SDK and port of the official WalletConnect-monorepo.
WalletConnect-Dart currently supports:
You can easily add your own network by extending from WalletConnectProvider and implementing the required methods using sendCustomRequest.
An example from Binance Smart Chain can be found here.
For more information regarding the implementation, check out EthereumWalletConnectProvider and AlgorandWalletConnectProvider.
WalletConnect lets you build:
Once installed, you can simply connect your application to a wallet.
// Create a connector
final connector = WalletConnect(
bridge: 'https://bridge.walletconnect.org',
clientMeta: PeerMeta(
name: 'WalletConnect',
description: 'WalletConnect Developer App',
url: 'https://walletconnect.org',
icons: [
'https://gblobscdn.gitbook.com/spaces%2F-LJJeCjcLrr53DcT1Ml7%2Favatar.png?alt=media'
],
),
);
Initiate connection
// Create a connector
final connector = WalletConnect(
bridge: 'https://bridge.walletconnect.org',
clientMeta: PeerMeta(
name: 'WalletConnect',
description: 'WalletConnect Developer App',
url: 'https://walletconnect.org',
icons: [
'https://gblobscdn.gitbook.com/spaces%2F-LJJeCjcLrr53DcT1Ml7%2Favatar.png?alt=media'
],
),
);
// Subscribe to events
connector.on('connect', (session) => print(session));
connector.on('session_update', (payload) => print(payload));
connector.on('disconnect', (session) => print(session));
// Create a new session
if (!connector.connected) {
final session = await connector.createSession(
chainId: 4160,
onDisplayUri: (uri) => print(uri),
);
}
Sign transaction
final sender = Address.fromAlgorandAddress(address: session.accounts[0]);
// Fetch the suggested transaction params
final params = await algorand.getSuggestedTransactionParams();
// Build the transaction
final tx = await (PaymentTransactionBuilder()
..sender = sender
..noteText = 'Signed with WalletConnect'
..amount = Algo.toMicroAlgos(0.0001)
..receiver = sender
..suggestedParams = params)
.build();
// Sign the transaction
final signedBytes = await provider.signTransaction(
tx.toBytes(),
params: {
'message': 'Optional description message',
},
);
// Broadcast the transaction
final txId = await algorand.sendRawTransactions(
signedBytes,
waitForConfirmation: true,
);
// Kill the session
connector.killSession();
Initiate connection
// Create a connector
final connector = WalletConnect(
uri: 'wc:8a5e5bdc-a0e4-47...TJRNmhWJmoxdFo6UDk2WlhaOyQ5N0U=',
clientMeta: PeerMeta(
name: 'WalletConnect',
description: 'WalletConnect Developer App',
url: 'https://walletconnect.org',
icons: [
'https://gblobscdn.gitbook.com/spaces%2F-LJJeCjcLrr53DcT1Ml7%2Favatar.png?alt=media'
],
),
);
// Subscribe to events
connector.on('connect', (session) => print(session));
connector.on('session_request', (payload) => print(payload));
connector.on('disconnect', (session) => print(session));
Manage connection
// Approve session
await connector.approveSession(chainId: 4160, accounts: ['0x4292...931B3']);
// Reject session
await connector.rejectSession(message: 'Optional error message');
// Update session
await connector.updateSession(SessionStatus(chainId: 4000, accounts: ['0x4292...931B3']));
Kill session
await connector.killSession();
Please see CHANGELOG for more information on what has changed recently.
Feel free to send pull requests.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.