1) We made the app work seamlessly through key delegation.

This is how it works: submitting links, upvotes, or comments requires an EIP712 signature.

Delegation lets Kiwi users upvote, submit, and comment on links without having to sign each action in their wallets.

We use a similar method as Warpcast (Farcaster client) does. When users mint an NFT, it triggers a Delegator2 contract.

This contract asks your browser (Chrome, Firefox, Safari, etc.) to create a new digital key for you. This key is unique to you and lets you interact with KiwiNews as if you were using the crypto address you minted the NFT with. So you don't need to Connect Wallet each time you open Kiwi.

This key is local, which means it's encrypted and stored inside your browser. It looks like a typical crypto key (a long string of numbers and letters like this: 0xfd6.), and only you can use it because - as we said - stored locally.

This delegation key is used only for KiwiNews (news.kiwistand.com), nothing else. It cannot interact with any other websites or touch any of your funds.

The whole technology is open source, and any project can use it. Here's our Delegator2 contract: https://optimistic.etherscan.io/address/0x08b7ecfac2c5754abafb789c84f8fa37c9f088b0.

2) We implemented Passkeys to smooth the login.

This means that users can log in to our app using Passkeys, the same way they use them for logging into Coinbase or Google.

We worked closely with the Coinbase Wallet team to better understand their Smart Wallet code since this was one of the first open-source implementations of Passkeys.

In a few days, we had the implementation working, and it is now available to our users.

If you’d like to learn how this implementation works on the lower level, here’s the link to the Passkeys function on our GitHub: https://github.com/attestate/kiwistand/blob/737b7b218b2472a6f84e590a5af7c6a3dee6fc84/src/web/src/Passkeys.jsx

3) We let users use Farcaster Frames to tip the writers. 