# ETHBerlin04 Workshop: Pedro Gomes - Re-inventing login with Sign-in-with-Ethereum

- Channel: [ETHBerlin](https://streameth.org/ethberlin)
- Date: 2024-09-04
- Duration: 33:06
- Topics: cryptocurrency, ethereum, web3, authentication, blockchain
- Watch: https://streameth.org/watch/66d8963835d51347e0a379e1

## Description

ETHBerlin04
May 24-26, 2024, CIC Innovation Campus
Technical Workshop: Pedro Gomes - Re-inventing login with Sign-in-with-Ethereum

We will learn how powerful SIWE can be used as a tool for building different use-cases such as identity, attestations, permissions and messaging.

ETHBerlin04 - https://ethberlin.org
A Department of Decentralization event - https://dod.ngo Pedro Gomez, founder of WallConnect, presents a video on "Reinventing Login with SignWithEthereum" and aims to demonstrate live coding. He begins by simplifying the concept of authentication in Web3, emphasizing the transition from traditional login methods to wallet connections and the importance of user convenience with fewer clicks. Pedro explains that Web3 differs from Web2 by empowering users with self-sovereignty through wallets instead of server-based authentication modules.

He introduces SignWithEthereum as a standard that ensures proper user verification by signing a simple text message. Pedro delves into the technical specifics of SignWithEthereum, highlighting the need for certain parameters such as domain, address, URI, version, chain ID, nonce, and timestamps.

Pedro also discusses the challenges of nonce generation and recommends using open-source libraries like NextAuth for Next.js applications to handle this. He further showcases WalletConnect's Web3Modal library for an improved user experience.

The video includes a practical coding session where Pedro builds a private image upload feature using SignWithEthereum for authentication. He guides viewers through setting up a project with Next.js and integrating NextAuth for server-side authentication management. The tutorial covers adding session providers to maintain user state across server-rendered pages and demonstrates how
