Development Update Jan. 13th 2023

Floppie
LinxWallet
Published in
5 min readJan 13, 2023

Here we are again with another weekly development update on Linx Wallet. Unfortunately still not fully ready for a beta release, but we are so close…

Where are we

Last week we finished up everything transfer related, auto transfers, cross chains and interaction with exchanges.

As Radu mentioned in last week’s article, we changed our approach in getting balance and token prices, and managed to drop network activity by 95%! I’m also very proud that Linx now displays REAL-TIME balances and prices, no more refreshing…

Because of our ‘chainless’ approach, we also needed something special to manage and show transaction history. Making multiple transactions in 1 go and showing all these separate transactions in the activity/history tab is not a good experience. There is quite a bit going on to make this a pleasant experience. We hope to finalize this over the next couple of days and it looks like that is the last milestone before a beta release…

I can’t forget to mention that we have teamed up with KDLaunch to integrate their platform in our wallet. We will talk more about that next week. For now you can read about it in their Twitter thread, click here to read.

We also finished up the WalletConnect V2 integration, and I want to talk more about that next, on a technical level, so dApp developers, get ready:

WalletConnect V2

Our WalletConnect V2 implementation follows the approach Kaddex started in 2022, so any dApp that used the same approach can connect with Linx Wallet right now, BUT (there is always a but), we follow the full standard of WalletConnect which means dApps would need to change a minor thing.

Suggested changes to the current implementation

The current implementation for most dApps on Kadena, means the wallet shares an account with the dApp (for example a k: account). But this is not the standard WalletConnect wants you to use. Technically it doesn’t even allow you to share a k: account out of the box. WalletConnect wants you to share the public key that is used for signing the transactions, so it is up to the dApp to let the user select or enter an account that has the public key as keyset.

We are in talks already with KDSwap and Kaddex so that Linx Wallet can be used with their platforms.

WalletConnect does not know Kadena, let’s change that

A couple months ago the Kadena.JS team asked WalletConnect to add Kadena’s implementation (signing methods and approach) to their documentation/examples. Unfortunately, WalletConnect was not aware of the Kadena Blockchain and so far haven’t approved it.

For dApp and wallet developers it is really important to have good examples and documentation available, as (from my personal experience) this is barely available at the moment and lot’s of trial and error is needed to come to a proper implementation.

Please take some time to support the pull request from the Kadena.JS team and inform WalletConnect that Kadena is the only scalable POW blockchain out there and that there are big things coming…

How to implement WalletConnect V2

For a dApp, in my opinion, it is pretty straight forward to implement WalletConnect v2 if you are developing in Javascript (React, Svelte, NextJS, Angular etc).

WalletConnect has a nice step by step tutorial available:
https://docs.walletconnect.com/2.0/web3modal/about

Here are the important parts to operate on the Kadena network:

These are the signing methods available now:

  • kadena_sign
  • kadena_quicksign

And the new suggested standard by Kadena.JS Team

  • kadena_signTransaction
  • kadena_signMessage

Have a look here how to use them:
https://github.com/WalletConnect/web-examples/blob/602463d0eb420d307381740ed373ca275e2c547d/dapps/react-dapp-v2/src/contexts/JsonRpcContext.tsx#L858

What Linx Wallet Supports:

We support the following methods for signing ‘traditional’ transactions:

  • kadena_signTransaction
  • kadena_sign

If you want the user to sign something else, like for example a continuation transaction or maybe a multi-sig, you can use:

  • kadena_signMessage

You can send in a JSON object of the following structure:

{
hash: < hash > ,
sigs: [{
sig: null
pubkey: < pubkey to sign with >
}],
cmd: < command JSON >
}

Linx Wallet will extract the capabilities the user signs for and presents this to the user.

The response looks like this:

{ signedCmd : {
hash : <hash>,
sigs : [{
sig : <signed message>,
}]
cmd : <command JSON>}
}

If you are a dApp developer on Kadena and struggling with something WalletConnect related (or not), feel free to reach out, maybe we can help.

That’s it for this week

On one hand, I find these weekly articles are consuming too much time, yet we want to be open about what we are doing and about the how and why. On the other hand, every time I need to write an article it gives me time to reflect on what we have done and what we are doing, and this hypes me up. I’m really proud of what we have accomplished last months with just a tiny team and can’t wait for everyone to experience what we have build and are building.

That’s it for now, thanks for all your support!

Yours truly,

Floppie

--

--

Floppie
LinxWallet

Developer, Engineer, Problem Solver | Co-Founder @ThinEdgeLabs LLC