WalletConnect integration

Bring Web3 connectivity to the Zenon ecosystem.

Integrate the WalletConnect protocol into Syrius:

11 Likes

I am supportive of your suggestion for utilising WalletConnect.

I’ve read through the reasoning presented by both sides and I think this is the way to go. I don’t mind if this means more time to implement it; if it needs to be done it needs to be done.

3 Likes

Thank you for your support, I’ll start with an in-depth research of the WalletConnect protocol and after that see what dependencies are required for the integration.

2 Likes

Its workflow hasn’t been validated for marketing/analytics needs sought, so I wouldn’t say it’s the way to go just yet. There may be simpler paths available, though I’m sure such integration may be useful nonetheless for other reasons than marketing.

Regarding the WalletConnect integration:

  • Web3Modal demo for Web
  • Updating the znn.ts SDK
  • Updating the ZNN Dart SDK to work on Web (harder to do given the ffi dependency)
  • Syrius desktop deep linking / copy-paste WC link / upload QR with detection / scan QR using screen recorder (check out this wallet to see how WC should work - it only lacks basic copy-paste support)
1 Like

I have some questions:

  • Would deeplinks work if the wallet is closed/unauthenticated?
  • Is the connection made with the entire wallet (meaning all of its addresses?), or is it on an address basis?
  • If by address, can multiple connections be made from the web for each address?
  • I assume a new view will be added in syrius desktop to confirm/reject the transaction. Upon confirmation.
  • Can the web button deeplink into the syrius wallet to enable the connection in the first place, bypassing the need for a WalletConnect modal? Otherwise I guess users need to go in the “Desktop” section of the modal and find syrius? If yes, how do we get listed here:

Yes, it will literally open the wallet (if it’s unauthenticated, you’ll need to unlock it first). Even better, it will also work if Syrius is not installed yet: check how Infinity wallet works (clicking on Go to wallet will open https://infinitywallet.io/wc/?uri where you can hook your tracking analytics).

Just one address per connection (Syrius works this way).

Yes

Yes and I also see that v2 has the auto-signing feature.

We can get listed here → Submit project

2 Likes

How does the connection know which address to connect-to? Will it ask in syrius, or it assume that the currently selected address is the one to connect? If it can ask which address to connect, or even give options to connect to multiple (or all), would be great but I understand it may not be possible due to the way syrius is built.

Could be great to develop a web-based syrius, though even though it can auto-sign, it would still open syrius to trigger the tx signing automatically after the user authenticated into his wallet right?

It will assume the currently selected address. It cannot connect to multiple addresses (and it shouldn’t).

Flutter for Web is in beta, but I saw that the Syrius browser extension is already in development. I don’t know how the auto-signing works, but I saw that Infinity wallet has this feature implemented and it works in production.

3 Likes

We’ll add the ability to connect-to multiple addresses (one by one) from the web. If someone attempts to transact from an unselected address within syrius, can there be a method via deeplink to change the address profile for syrius, and then trigger the transaction? (note: which would be required regardless)

Address profile switching in Syrius is not required to sign transactions for alternate addresses that are part of the same keystore.

2 Likes

Thanks @sol_sanctum, that simplifies the UX

Also in that case, I wonder if a web-based dApp can serialize reward claiming for all connected addresses… something missing in syrius atm as you have to switch between profiles to claim for each address.

That may or may not have been intentional.

1 Like

I think it’s intentional. I think mixing addresses together can hurt on-chain privacy. I personally wouldn’t use this feature.

1 Like

I see, so the idea of intentional delays between transactions of different addresses (part of a keystore), invites more privacy as one can assume less potential links between addresses?

What delays?

Currently, there aren’t any explicit delays in the wallet. The process of requiring users to manually switch to a different address introduces a delay.

Mehowz might be inquiring about his service inserting an artificial delay between transactions that originate from the same keystore.

1 Like

Yes this is what I meant.

If something like that was built, and if we can manage to serialize transactions one after another to claim all connected wallet rewards.

Started working on WalletConnect v2 integration.

WebApp ← → WalletConnect SDK ← → Syrius

How does it work?

  • Step 1: The user opens the WebApp and clicks “Connect Wallet”
  • Step 2: The user has 3 options:
    Option A: He scans the QR code (containing the WC link encoded as a QR)
    Option B: He copies the WC link
    Option C: He clicks on Desktop → Syrius (deep linking)
  • Step 3: Session approval: he confirms the connection from the Syrius wallet
  • Step 4: Sign message: When a transaction is initiated by the WebApp, the user signs it in Syrius
  • Step 4: Session disconnect: The user can manage his active connections and terminate the connection with a particular WebApp

There are 2 requirements to finish this project:

  1. Syrius WalletConnect support
  • WalletConnect Tab
  • Deep linking support
  • WalletConnect link support
  • QR code scanning
  1. WalletConnect SDK
  • Dart language support
  • Zenon cryptography integration
2 Likes