What is Plutonication
Examples in Javascript
Plutonication allows users to connect PlutoWallet to other dApps seamlessly on any platforms, accross multiple codebases. DApp just generates a QR code and once it is scanned in the wallet, they will pair and the wallet will be able to receive transaction requests from the dApp. It works on the same principle as WalletConnect protocol.
How to connect
import io from 'socket.io-client';
// Change the URL, if you want to use your own endpoint.
const socket = io("wss://plutonication.com/");
Plutonication uses Socket.IO.
To connect your to PlutonicationServer, just connect to
wss://plutonication.com/
.
Plutonication is fully open-sourced. One of the benefits this brings is that you can deploy your own Plutonication Server. You do not have to rely on our infrastructure.
On connect
// Wait for the client to connect
await new Promise((resolve) => {
socket.on("connect", () => {
console.log("Connected")
resolve()
})
})
Event handler that is fired whenever someone connects.
Useful for debugging.
It is fired on the client as well and it is useful getting to know that the client connected successfully to the server.
On connect_dapp
await socket.emit("connect_dapp", {
Room: accessCredentials.key
});
The first event emitted by dApp.
Joins the given room.
Learn more about the concept of rooms: https://socket.io/docs/v3/rooms/
connect_wallet
await walletSocket.emit("connect_wallet", {
Data: pubkey,
Room: accessCredentials.key,
})
The first event emitted by wallet.
Joins the given room. Submits the pubkey/address to all other clients connected in the same room.
Learn more about the concept of rooms: https://socket.io/docs/v3/rooms/
On pubkey
socket.on("pubkey", (pubkey /* string type */) => {
console.log("Wallet public key: " + pubkey)
})
This event handler confirms that the wallet has successfully connected.
It also receives information about the connected wallet, including it's pubkey/address.
On dapp_connected
walletSocket.on("dapp_connected", async () => {
await walletSocket.emit("pubkey", { Data: pubkey, Room: room })
})
Handles edge case when dapp connects later than the wallet.
Is also useful for handling multiple dApp connections simultaneously.
On confirm_dapp_connection
walletSocket.on("confirm_dapp_connection", () => {
// dApp confirmed connection
})
await socket.emit("confirm_dapp_connection", { Room: room })
Confirms that the dApp is connected to the server and that it has received the pubkey from the wallet.
On sing_payload
await socket.emit("sign_payload", {
Data: payloadJson, // SignerPayloadJSON type
Room: accessCredentials.key
})
Event handler used by dApps. Used when requesting signature from wallet.
You can expect the wallet to emit either payload_signature
event or
payload_signature_rejected
event.
On payload_signature
socket.on("payload_signature", (data /* SignerResult type */) => {
const signature = data.signature
console.log("Payload signature: " + signature)
})
Event handler used by wallet, when wallet decides to sign given payload.
On update
socket.on("update", (id: number, status: H256 | ISubmittableResult) => {
// Handle the update logic
})
Receives an update for the extrinsic signed by a signer.sign
On payload_signature_rejected
socket.on("payload_signature_rejected", () => {
// react to the rejection
})
Event handler used by wallet, when wallet decides to reject the signing of given payload.
On sign_raw
await socket.emit("sign_raw", {
Data: rawMessage, // SignerPayloadRaw type
Room: accessCredentials.key
})
Event handler used by dApps. Used when requesting signature from wallet.
You can expect the wallet to emit either raw_signature
event or raw_signature_rejected
event.
On raw_signature
socket.on("raw_signature", (data /* SignerResult type */) => {
const signature = data.signature
console.log("Raw signature: " + signature)
})
Event handler used by wallet, when wallet decides to sign given raw message.
On raw_signature_rejected
socket.on("raw_signature_rejected", () => {
// react to the rejection
})
Event handler used by wallet, when wallet decides to reject the signing of given raw message.
On disconnect
socket.on("disconnect", () => {
// react to the disconnection
})
Event handler that is fired whenever someone disconnects.