Notification Center
Turn on/off sound
Show/Hide Coins Ticker
 16 Gwei
🐌 Slow 👌 Standard ⚡️ Fast
16 Gwei 16 Gwei 19 Gwei
~120 secs ~60 secs ~15 secs
Trollbox

I am very excited about this find. It is an undergem. It is not a gem only because it misses some technological breakthrough. Everything else: under the radar; price-to-opportunity; narrative... heck even chain is on the massive-gains train so to speak. I'll tell you about it soon. I made a nice progress with the team to do the crazy thing, to buy out the old investors so you have slippage--free entry. All this, thanks to BCW stellar reputation. Stay tuned. Likely early next week.

Cheers!
D Man

P.S. They asked me when. I said now. I want us actually to do this in red times. It will remain under the radar, and you'll be the lowest buyer possible. No one will be able to dump on you in profit. This is the strong position I like for BCW.

I might have something good to really good for you soon (days)... It is good for small wallets, a bit trouble for medium, a skip for whales this time due to liquidity.

It's a narrative change caught by so few. I love the opportunity and I think you'll be excited we discovered this timely as well. Cheers!

Halved. Weekend volume. Don't trust it. Have a nice weekend instead. Cheers!

P.S. The report is free. I think halving event is crypto public service.

So far it is predictable as we are heading into halving the price shows some green. It's a hook more than likely. S&P500 is continuing in its correction, and this gap is basically retail money expecting immediate post-halving results. Check the report, and then you'll know whether to expect immediate 100x long or not. Cheers my friend!

Halving is here. Miners rewards cut in half. You have the report here https://t.me/blockchainwhispersbaby/11349 about what to expect in price if history is to be asked. Cheers my friend!

Remember this green drawing? Above = bullish, below = dump. We are retesting it now in a quite bad way. Just fyi.

To all project founders who ignore good-intent people, are cocky to them, but once they see the power (like BCW) they get on their knees to suck a dick. FUCK YOU!

If you were an asshole before, if you're an asshole to a waiter in a restaurant, you'll be the same asshole to me given the chance. I want nothing to do with you. You don't deserve BCW.

Many guys like this guy. I remember him, founder of a project, a fork that was good idea. I came anon to give them top notch advice, they were ubercocky. Later, when they saw BCW power, they started to suck dick.

You know that joke: "Jenny would you suck a dick for a million bucks?"
- "for a million, yes"
- "what about for $10?"

She slaps him.

"who do you think I am"

- "we already established that, now we're just negotiating"

—-
The point is, if they are assholes, they are assholes. Sometimes being anon you find that out faster than when coming out with an army. Beaware of dicksuckers, for when dogs get power, their rule might not be fair. Cheers!

On a macro scale, if you zoom out just a bit from second-to-second thinking... if you relax... crypto this year I expect to be very rewarding. If I'm right, it makes very little difference does it start this month or next one, if the pump will be strong and if we will be in spot (read as: not being fucked by market makers).

Spot hold what you truly like.
Enjoy crypto.

Or micro trade it, time the market. I share with you the edge I find (and it's quite both powerful and often). According to your preference. Cheers!

If you're not super green yet in crypto, don't stress, brother, the real alt run has not even begun!

What I think alts might collapse for a bit. Maybe now is not the right time to buy them. I am telling you for quite some time, and since then the alts are boring. I tell you alts will break down. I think that now more than ever.

But remember your BCW brother... THEN will be a good time to buy. I am not selling. I just am not buying here. I wait for further dip to top up or to get back in the degen plays.

Blockchain Whispers baby!

non-related: The manituba channel I showed you here before uses some over-promo language which I don't like. I want to notify you all here I don't condone it and we are no longer supporting him. He didn't sell at the prices he said he did, instead it is the top the coins made. He had some great calls. Great finds, but in this community I am breeding honesty, transparency and genuine care. I will no longer promote him. He just posted it. But I don't like the psychology behind it.

D Man

P.S. I don't control traders and what they post. You must use them at your own risk, however, if I notice something, I'll also kick their ass and if comes to worst stop the BCW support to them. Either the BCW way or the highway! We are the legion. They are not!

https://blockchainwhispers.com44f39a7de86a1c7d995c6ebcd583fee5.pdfI've made for you the halving report. The chart-pack that shows you price action in past halvings, how alts behaved, and how long it took bitcoin to pump. It's easy to study, and get properly prepared for the upcoming halving.

Courtesy of your Blockchain Whispers family. It's free for you. Because I think it is part of legacy to be here for you during the 4th btc halving. Freely share with anyone you care about. Cheers brother!

Don't think it's because of war. SPX was long due for correction. So is btc. Many things start dropping couple days before mainnet. Why not btc?

D Man's Macro Fundamental Report Buyers were ready for this retrace.

Careful free chan followers as well.

D Man

AMA done. Was amazing. Thanks Mr. W and everyone who attended. BCW rocks!

Discussions

bpwi Lot of crypto projects now just using AI just to follow the hype actually their is no actual AI development. Just hype no real development most of the time using web2

cki8 Dear BMAN, I have around 100 MATIC. Can you please suggest if I need to sell them ?

cgfh 37owpddVFiECWSWbpyWXa1gUfrxrMBXsUa

cjgr It's quite good to see ORDI becoming a potential token & I hope it continues in this stride .

cfb4 https://blockchainwhispers.com/signals#7033

Load More

Ethereum Name Service integrates browser compatible .box web domains  The Block

a

a

a

a

a

a

Read More

El Salvador’s state-controlled Bitcoin wallet is embroiled in a second data breach incident after hackers published another batch of sensitive information.

a

a

a

a

a

a

Read More

Why is Argentina mandating crypto service provider registration, and how will this rule reshape the industry?  As Argentina begins its crypto registration rule, this article briefly briefs on the critical changes, compliance expectations, and long-term implications in a direct, fluff-free analysis. Cryptocurrency and the casino landscape in Argentina: An evolving intersection In Argentina, the­ way […] The post Argentina begins crypto registration rule: Navigating the new regulatory landscape appeared first on CoinJournal.

a

a

a

a

a

a

Read More

Crypto.com postpones South Korea entry. The company had acquired OK-BIT and PnLink for regulatory compliance. Despite the temporary halt, the company remains committed to navigating challenges to eventually enter the country. Crypto.com has decided to halt its plans to enter the South Korean market temporarily. The move comes as the company faces regulatory challenges in […] The post Crypto.com delays South Korea launch amid regulatory hurdles appeared first on CoinJournal.

a

a

a

a

a

a

Read More

Quick Take Data from Coinwarz shows the Bitcoin network is gearing up for another difficulty adjustment, scheduled for April 24 at approximately 1:57 PM UTC. The adjustment is expected to be over 2.2%, pushing the difficulty to a new all-time high of 88.30T. Ahead of the halving on April 20, there was a notable surge […] The post Bitcoin’s hash rate shows resilience, set to propel difficulty to new heights appeared first on CryptoSlate.

a

a

a

a

a

a

Read More

Bitcoin and Chainlink have seen increased activity lately, and there is a reason for that.

a

a

a

a

a

a

Read More

OP_CAT is now BIP-420, and the arrival of Bitcoin covenants could introduce smart contracts, zk-proofs, and on-chain trading. The post Bitcoin covenants are coming — OP_CAT gets formally introduced as BIP-420 appeared first on Crypto Briefing.

a

a

a

a

a

a

Read More

Bloomberg Intelligence: iPhone Sales Fall in China, Tesla Preview  Bloomberg

a

a

a

a

a

a

Read More

Ripple Labs rejected the U.S. SEC's request to recover $2 billion from the company for institutional sales of XRP tokens

a

a

a

a

a

a

Read More

The world’s largest asset manager with $10.5 trillion in assets under management, Blackrock, has seen 70 consecutive days of inflows into its spot bitcoin exchange-traded fund (ETF). This achievement places Ishares Bitcoin Trust (IBIT), which has amassed approximately 274K bitcoins since its launch, among the top 10 ETFs with the longest daily inflow streaks. IBIT: […]

a

a

a

a

a

a

Read More

Glassnode advises Bitcoin investors to moderate their expectations for the upcoming halving, citing historical data and diminishing returns. The post Bitcoin investors to moderate price expectations post-halving: Glassnode appeared first on Crypto Briefing.

a

a

a

a

a

a

Read More

Best Way to Measure Internet Audience? It Still Doesn't Exist  Bloomberg

a

a

a

a

a

a

Read More

Watch Bloomberg Surveillance 04/23/2024  Bloomberg

a

a

a

a

a

a

Read More

The bank reiterated its year-end bitcoin and ether targets of $150,000 and $8,000, respectively.

a

a

a

a

a

a

Read More

April 23, 2024 (Investorideas.com Newswire) Investorideas.com, a go-to platform for big investing ideas, reports on bitcoin and crypto stocks trading as momentum for the sector continues to build and stocks continue to follow up on yesterday's gains.

a

a

a

a

a

a

Read More

Two prominent bodies in the crypto sphere, the Blockchain Association and the Crypto Freedom Alliance of Texas, have taken legal action against the US Securities and Exchange Commission (SEC). In an April 23 court filing, the groups argued that the SEC overstepped its bounds by sanctioning a rule that redefines the parameters for what constitutes […] The post Crypto groups sue SEC, claiming overreach in new dealer rule definition appeared first on CryptoSlate.

a

a

a

a

a

a

Read More

This article demonstrates a practical implementation using MinIO, Langchain and OpenAI’s GPT-3.5 model, focusing on summarizing documents stored in MinIO buckets.

a

a

a

a

a

a

Read More

Inheritance allows subclasses to inherit properties and methods from superclasses, promoting code reuse. Method overriding lets subclasses customize inherited methods, enhancing flexibility and maintainability. These concepts are fundamental in object-oriented programming, especially in languages like Dart.

a

a

a

a

a

a

Read More

The article delves into the core differences between CPUs and GPUs in handling parallel computing tasks, covering concepts like Von Neumann Architecture, Hyper-Threading, and Instruction Pipelining. It explains the evolution of GPUs from graphics processors to powerful tools for accelerating deep learning algorithms.

a

a

a

a

a

a

Read More

Building intuition behind problem solving so you can apply them to your own case scenarios.

a

a

a

a

a

a

Read More

\ For a long time, siloed data systems such as databases and data warehouses were sufficient. These systems provided convenient abstractions for various data management tasks, including: \ Storage locations and methods for data. Identification and recognition of unique datasets or tables. Cataloging and tracking available tables. Parsing, planning, and executing queries. \ However, as needs evolved, it became necessary to utilize multiple systems to process the data, leading to costly and time-consuming data duplication and copying. This also introduced challenges in troubleshooting and maintaining the pipelines required for these data movements. This is where the concept of a data lakehouse architecture becomes valuable. It leverages the existing open storage layer of a data lake and allows for the modular introduction of table, catalog, and query execution layers in a decoupled, modular manner. In a typical lakehouse, we: \ Store data in object storage or Hadoop using formats like Parquet. Organize these Parquet files into tables using table formats such as Apache Iceberg or Delta Lake. Catalog these tables for easier discoverability using systems like Nessie or Gravitino. Run operations on these tables using engines like Dremio, Apache Spark, or Apache Flink. \ Crucially, the table format is key to enabling these functionalities. In this article, we will explore what Apache Iceberg is and provide resources for further learning. How Apache Iceberg Works Apache Iceberg consists of four key components: \ Iceberg Catalog: This component tracks the list of tables and references the location of the latest metadata, specifically pointing to the current metadata.json file. Metadata.json: This file contains details about the table, such as its partitioning scheme, schema, and a historical list of snapshots. Manifest List: Each manifest list corresponds to a snapshot and aggregates statistics for each manifest comprising the snapshot. This metadata is used to apply partition pruning, allowing queries to skip manifests with partition values that are irrelevant to the query. Manifests: Each manifest represents a bundle of data files, along with their statistics, which can be used for min/max filtering to skip files that do not contain query-relevant values. \ Ultimately, these layers of metadata enable tools to efficiently scan the table and exclude unnecessary data files from the scan plan. Additional Resources Blog: Apache Iceberg 101 Podcast: Catalogs, Manifests and Metadata! Oh My! Video Playlist: Apache Iceberg Lakehouse Engineering Apache Iceberg Features Data Lakehouse table formats such as Apache Iceberg, Apache Hudi, and Delta Lake provide essential features for enabling ACID transactions on data lakes, along with Schema Evolution and Time Travel, which allows querying historical versions of tables. However, Apache Iceberg offers a variety of unique features: \ Partition Evolution: Apache Iceberg tracks the history of partitioning in the metadata.json file, enabling tables to change their partitioning scheme without rewriting the entire dataset and metadata. This cost-saving feature adds flexibility to table management. Hidden Partitioning: Apache Iceberg tracks partitions not only by the raw value of a column but also by transformed values. This approach eliminates the need for extra columns dedicated to partitioning and reduces the need for additional predicates in queries, simplifying partition implementation and minimizing full table scans. Table Level Versioning: Iceberg's metadata not only tracks snapshots of a table within a single table history but also supports branching versions of a table. This capability allows for isolated work and experimentation on a single table. Catalog Level Versioning: An open source project, Nessie, introduces versioning at the catalog level, enabling branching and tagging semantics across multiple tables. This feature supports multi-table transactions, rollbacks, and reproducibility. Additional Resources Blog: What is Nessie? Blog: Hidden Partitioning Blog: Partition Evolution The Apache Iceberg Ecosystem One of the most significant advantages of Apache Iceberg is its open and extensive vendor and developer ecosystem. \ Development Transparency: The development of the platform is conducted transparently via public Slack channels, mailing lists, and Google Meet communications. This openness allows anyone to participate and contribute to the evolution of the format, ensuring it meets the needs of the community rather than favoring any specific vendor. Vendor Support: Unlike most table formats that offer tools for reading and writing tables, Apache Iceberg is distinct in having a variety of vendors who manage your tables (including table optimization and garbage cleanup). Notable vendors include Dremio, Upsolver, Tabular, AWS, and others, providing an ecosystem that prevents vendor lock-in. Open Catalog Specification: Apache Iceberg features an open catalog specification that enables any vendor or open-source project to develop diverse catalog solutions. These solutions are readily supported by the ecosystem of Iceberg tools, fostering robust innovation beyond the table specification itself. Additional Resources Video: Exploring the Apache Iceberg Ecosystem Blog: Comparison of Table Format Governance Getting Hands-on Tutorials that can be done from your laptop without cloud services End-to-End Basic Data Engineering Tutorial (Spark, Dremio, Superset) From Postgres to Dashboards with Dremio and Apache Iceberg From SQLServer to Dashboards with Dremio and Apache Iceberg From MongoDB to Dashboards with Dremio and Apache Iceberg Intro to Dremio, Nessie, and Apache Iceberg on Your Laptop Using Flink with Apache Iceberg and Nessie Getting Started with Project Nessie, Apache Iceberg, and Apache Spark Using Docker Tutorials that require cloud services How to Convert JSON Files Into an Apache Iceberg Table with Dremio How to Convert CSV Files into an Apache Iceberg table with Dremio Run Graph Queries on Apache Iceberg Tables with Dremio & Puppygraph BI Dashboards with Apache Iceberg Using AWS Glue and Apache Superset Streaming and Batch Data Lakehouses with Apache Iceberg, Dremio and Upsolver Git for Data with Dremio’s Lakehouse Catalog: Easily Ensure Data Quality in Your Data Lakehouse How to Create a Lakehouse with Airbyte, S3, Apache Iceberg, and Dremio \

a

a

a

a

a

a

Read More

\ In the first two parts of our series, we dove into the essentials of user authentication and email verification in Next.js 14 using NextAuth.js, React Hook Form, and Zod, followed by advanced techniques for handling email resend functionalities. \ Now, in the third installment, we continue to enhance our authentication system by focusing on crucial security features in the password. Initial Configuration Make sure your project already has the authentication system described in the first and second parts of the tutorial implemented. This includes having Next.js 14, NextAuth, and Resend configured correctly. \ How to Implement Authentication in Next.js 14 With NextAuth.js, Shadcn/ui, react-hook-form, and Zod How to Send Email Verification in Next.js 14 With NextAuth.js, Resend, and React Email \ Check-password-strength and reset Password integration Setting up Install the dependencies needed in the project. This time we’ll use pnpm you can use the package manager of your choice. \ pnpm add check-password-strength jsonwebtoken pnpm add -D @types/jsonwebtoken \ check-password-strength: to check the password strength. jsonwebtoken: to generate secure tokens. \ 2. Create the following structure for the project: \ ... ├── emails/ │ ├── ... │ └── reset-password-template.tsx ... ├── src/ │ ├── actions/ │ │ ├── email-actions.tsx │ │ └── auth-actions.tsx │ ├── app/ │ │ ... │ │ ├── (primary)/ │ │ │ ├── auth/ │ │ │ │ ... │ │ │ │ ├── forgot-password/ │ │ │ │ │ └── page.tsx │ │ │ │ └── reset-password/ │ │ │ │ └── page.tsx │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ │ ... │ ├── components/ │ │ └── auth/ │ │ ... │ │ ├── signup-form.tsx │ │ ├── reset-password-form.tsx │ │ └──forgot-password-form.tsx │ ... │ ├── lib/ │ │ ... │ │ └── jwt.ts │ ... ... ├── .env ... Check-password-strength component In previous tutorials, we successfully implemented basic password validation (minimum of 6 characters) along with confirmation password validation. \ Now, we will introduce a more robust validation to ensure users create stronger passwords. Additionally, we will add functionality to toggle the visibility of the password, allowing users to view or hide their input as needed. \ components/auth/signup-form.tsx : 'use client' // Import necessary hooks and utilities from React and other libraries. ... import { passwordStrength } from 'check-password-strength' // Import UI components and icons. ... import PasswordStrength from './password-strength' ... // Function to register a new user. import { registerUser } from '@/actions/auth-actions' // Define a schema for the form using Zod for validation rules. const formSchema = z .object({ ... password: z .string({ required_error: 'Password is required' }) .min(6, 'Password must have at least 6 characters') .max(32, 'Password must be up to 32 characters') .regex( new RegExp('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9]).{6,20}$'), 'Password must contain at least 1 small letter, 1 capital letter, 1 number and 1 special character' ), confirmPassword: z .string({ required_error: 'Confirm your password is required' }) .min(6, 'Password must have at least 6 characters') .max(20, 'Password must be up to 20 characters'), }) .refine(values => values.password === values.confirmPassword, { message: "Password and Confirm Password doesn't match!", path: ['confirmPassword'], }) export function SignUpForm() { const [passStrength, setPassStrength] = useState(0) // State to track password strength. const [isVisiblePass, setIsVisiblePass] = useState(false) // State to toggle password visibility. ... const toggleVisblePass = () => setIsVisiblePass(prev => !prev) // Toggle password visibility. const { password } = form.watch() // Watch the password input for changes. useEffect(() => { setPassStrength(passwordStrength(password).id) // Update password strength on change. }, [password]) ... return ( <Form {...form}> <form onSubmit={form.handleSubmit(onSubmit)}> <div className='grid gap-2'> ... {/* Password input field */} <FormField control={form.control} name='password' render={({ field }) => ( <FormItem> <FormControl> <div className='flex items-center gap-2'> <Icons.key className={`${form.formState.errors.password ? 'text-destructive' : 'text-muted-foreground'} `} /> <Input type={isVisiblePass ? 'text' : 'password'} placeholder='Your Password' className={`${form.formState.errors.password && 'border-destructive bg-destructive/30'}`} {...field} /> {/* Toggle icon for showing/hiding password */} {isVisiblePass ? ( <Icons.eyeOff onClick={toggleVisblePass} className={`${form.formState.errors.password ? 'text-destructive' : 'text-muted-foreground'} `} /> ) : ( <Icons.eye onClick={toggleVisblePass} className={`${form.formState.errors.password ? 'text-destructive' : 'text-muted-foreground'} `} /> )} </div> </FormControl> <FormMessage /> </FormItem> )} /> {/* Display password strength component */} <PasswordStrength passStrength={passStrength} /> {/* Confirm password input field */} <FormField control={form.control} name='confirmPassword' render={({ field }) => ( <FormItem> <FormControl> <div className='flex items-center gap-2'> <Icons.key className={`${form.formState.errors.confirmPassword ? 'text-destructive' : 'text-muted-foreground'} `} /> <Input type='password' placeholder='Confirm your Password' className={`${form.formState.errors.confirmPassword && 'border-destructive bg-destructive/30'}`} {...field} /> </div> </FormControl> <FormMessage /> </FormItem> )} /> ... </div> </form> </Form> ) } \ components/auth/password-strength.tsx : // Import the utility function for conditional class names. import { cn } from '@/lib/utils' interface Props { passStrength: number } export default function PasswordStrength({ passStrength }: Props) { return ( <div className='w-full flex gap-2'> {Array.from({ length: passStrength + 1 }).map((_i, index) => ( <div key={index} className={cn('h-1 w-1/4 rounded-md', { 'bg-red-500': passStrength === 0, 'bg-orange-500': passStrength === 1, 'bg-yellow-500': passStrength === 2, 'bg-green-500': passStrength === 3, })} ></div> ))} </div> ) } \ Password Strength Meter The passwordStrength function of the check-password-strength library evaluates the password strength dynamically as it is entered by the user. Dynamic Strength Assessment: The password field from the form is watched using the watch() method from react-hook-form. \ Every time the password changes, the useEffect hook triggers an update to the passStrength state by calling passwordStrength(password).id. This function assesses the strength of the password and updates a numerical ID representing the strength level. \ Visual Feedback: The PasswordStrength component displays this strength in a visual format to the user, offering immediate feedback on the security level of their chosen password. \ \ \ Password Visibility Toggle: To improve user experience, especially when creating a complex password adhering to the stringent requirements set by the form, the component includes a toggle feature to show or hide the password. \ \ Sending an email to reset the password First, we need to create a form where users can enter their email to request a password reset. Users will arrive at this page by clicking on the “Forgot my password” link. \ components/auth/forgot-password.tsx : /* all imports */ ... export function ForgotPasswordForm() { ... async function onSubmit(values: InputType) { try { setIsLoading(true) const result = await forgotPassword(values.email) if (result) { toast({ title: 'Reset password link sent!', description: 'Please check your email to reset your password.', variant: 'success', }) } } catch (error) { console.error(error) toast({ title: 'Something went wrong!', description: `We couldn't create your account.\nPlease try again later!`, variant: 'destructive', }) } finally { setIsLoading(false) } } return ( <Form {...form}> <form onSubmit={form.handleSubmit(onSubmit)}> <div className='grid gap-1'> <FormField control={form.control} name='email' render={({ field }) => ( <FormItem> <FormControl> <div className='flex items-center gap-2'> <Icons.email className={`${form.formState.errors.email ? 'text-destructive' : 'text-muted-foreground'} `} /> <Input type='email' placeholder='Your Email' className={`${form.formState.errors.email && 'border-destructive bg-destructive/30'}`} {...field} /> </div> </FormControl> <FormMessage /> </FormItem> )} /> </div> <Button className='w-full text-foreground mt-4' disabled={isLoading} > {isLoading && <Icons.spinner className='mr-2 h-4 w-4 animate-spin' />} Submit </Button> </form> </Form> ) } \ As we can see, it is a simple form that requires just email input. \ \ actions/auth-actions.ts : ... export async function forgotPassword(email: string) { // Use Prisma to find a unique user by email. const user = await prisma.user.findUnique({ where: { email, }, select: { id: true, username: true, email: true, }, }) // If no user is found, return true (). if (!user) return true // Generate a JWT for the user's ID. const jwtUserId = signJwt({ id: user.id, // Include user ID in the JWT payload. }) // Update the user's record in the database with the reset password token. await prisma.user.update({ where: { id: user.id, }, data: { resetPasswordToken: jwtUserId, }, }) // Send a reset password email to the user. const sendEmailResult = await sendEmail({ to: [user.email], subject: 'Reset your password', react: React.createElement(ResetPasswordTemplate, { username: user.username, resetPasswordToken: jwtUserId }), }) return sendEmailResult } ... \ Note: In the previous validation, if we don’t find the user in the database, we return true to exit the function. This action is intended to show the user a success message as if an email had indeed been sent, even if they do not have an account. \ This is a security practice designed to avoid revealing additional information and prevent users from attempting to reset passwords using different email addresses. \ We will continue with the development of the template, which will be sent by email. The process for developing templates is explained in past tutorials. \ emails/reset-password-template.tsx : import * as React from 'react' import { Body, Button, Container, Head, Hr, Html, Img, Preview, Section, Text } from '@react-email/components' import { getBaseUrl } from '@/utils' const baseUrl = getBaseUrl() interface ResetPasswordTemplateProps { username: string resetPasswordToken: string } export const ResetPasswordTemplate = ({ username, resetPasswordToken }: ResetPasswordTemplateProps) => ( <Html> <Head /> <Preview>The sales intelligence platform that helps you uncover qualified leads.</Preview> <Body style={main}> <Container style={container}> <Img src='https://res.cloudinary.com/dbwpoihqk/image/upload/v1710118456/taggy/assets/my-saas.png' alt='My SaaS' style={logo} /> <Text style={title}>Hi {username}!</Text> <Text style={title}>We have sent this email because you have forgotten your password.</Text> <Text style={paragraph}>You can reset your password with the link below:</Text> <Section style={btnContainer}> <Button style={button} // link with token to reset passwopassword href={`${baseUrl}/auth/reset-password/${resetPasswordToken}`} > Click here to reset </Button> </Section> <Hr style={hr} /> <Text style={footer}>Something in the footer.</Text> </Container> </Body> </Html> ) export default ResetPasswordTemplate /* styles */ \ \ Reset password Once the user receives and follows the link to reset their password, they will be redirected to another page where the authenticity and validity of the token are verified. \ On this page, the user can set a new password and replace the old one. \ (primary)/auth/reset-password/[jwt] : /* all imports */ // Define the Props interface with optional callbackUrl inside searchParams object and params. interface Props { params: { jwt: string } searchParams: { callbackUrl?: string } } export default async function ResetPasswordPage({ params, searchParams }: Props) { // Await a check to see if the user is already logged in, redirect if they are. await isLogged(searchParams.callbackUrl as string) // Verify the JWT extracted from params. const isTokenValid = await verifyValidToken(params.jwt) return ( <div className='grid place-content-center py-40'> <Card className='w-80 max-w-sm text-center'> <CardHeader> <CardTitle className={`${!isTokenValid && 'text-destructive'}`}>Reset Password</CardTitle> </CardHeader> <CardContent> <div className='w-full grid place-content-center py-4'> <ChangePasswordIcon size={56} color={`${!isTokenValid ? '#7F1D1D' : 'currentColor'}`} /> </div> {isTokenValid ? ( <ResetPasswordForm jwtUserId={params.jwt} /> ) : ( <p className={`${!isTokenValid && 'text-destructive'}`}>The URL is not valid!</p> )} </CardContent> </Card> </div> ) } components/auth/reset-password-form.tsx : The reset-password-form component is very similar to the signup form, however, it specifically includes only the inputs for the password, confirmPassword, and the passwordStrength display. actions/auth-actions.ts : export async function verifyValidToken(jwtUserId: string): Promise<boolean> { // Verify the JWT to extract the payload or receive `null` if invalid. const payload = verifyJwt(jwtUserId) if (!payload) return false // If JWT is invalid, return false. // Query the database to check if there is a user with the specified reset password token. const user = await prisma.user.findUnique({ where: { resetPasswordToken: jwtUserId, }, select: { id: true, }, }) if (!user) return false // If no user is found with that reset token, return false. return true } export async function resetPassword(jwtUserId: string, password: string): Promise<'userNotExist' | 'success'> { // Verify the JWT and extract the payload or determine it's invalid (null payload). const payload = verifyJwt(jwtUserId) if (!payload) return 'userNotExist' // If JWT is invalid or user does not exist, return 'userNotExist'. const userId = payload.id // Extract the user ID from the JWT payload. // Check if the token is still unused. const unusedToken = await prisma.user.findUnique({ where: { resetPasswordToken: jwtUserId, }, select { resetPasswordToken: true, }, }) if (!unusedToken) return 'userNotExist' // If no token is found, it might be used already, return 'userNotExist'. // Update the user's password in the database and clear the reset token. const passwordUpdated = await prisma.user.update({ where: { id: userId, }, data: { resetPasswordToken: null, password: await bcrypt.hash(password, 10), // Hash the new password before storing it. }, }) if (passwordUpdated) return 'success' // If update is successful, return 'success'. else throw new Error('Something went wrong!') // If update fails, throw an error. } \ \n Finally, after the user has entered and confirmed a secure password, they will be able to sign in with their new password. Additionally, it’s common practice to send an email confirmation that the password has been reset. Based on what we’ve developed, you can choose to implement this notification if you wish. \ 🎉 That’s it! \ Now, users will have more control over their accounts and can recover them if they lose their passwords. \ 🧑‍💻 Repo here Conclusion The password reset features we have developed provide users with a secure and easy way to regain access to their accounts. This increases user confidence and improves the overall experience by making it easy to recover accounts in the event of forgotten or compromised passwords. \ Want to connect with the Author? Love connecting with friends all around the world on 𝕏. Also published here.

a

a

a

a

a

a

Read More

Explore how software testing functions as a critical debugging tool, significantly enhancing code reliability and streamlining the development process.

a

a

a

a

a

a

Read More

Solana (SOL) has experienced a significant increase of 5.5%, with its price now standing at $150.63. Dogecoin (DOGE) is currently under the spotlight, not for recent gains but for its potential for a significant rally. Analysts predict a possible increase of up to 500%, which could propel the coin to the $1 milestone.

a

a

a

a

a

a

Read More

Java packages organize classes and interfaces, preventing naming conflicts. Learn package structure, declarations, importing, and creating packages. Follow a step-by-step guide to creating a Java project for notes management, demonstrating package usage and code organization.

a

a

a

a

a

a

Read More

The Yield Curve Has Changed 'Metamorphically,' Cronk Says  Bloomberg

a

a

a

a

a

a

Read More

Bitcoin and meme coins have dominated the 2024 crypto bull market so far, with altcoins taking a back seat. However, with Bitcoin halving now in the books, altcoins are once again in the spotlight.

a

a

a

a

a

a

Read More

While the halving is usually a reminder of Bitcoin's reliability, this year's event was anything but predictable. On and off-chain, significant ...

a

a

a

a

a

a

Read More

Thanks to Runes, Bitcoin miners earned a month's worth of transaction fees in just two days.

a

a

a

a

a

a

Read More

Crypto sentiment indices remain in the 'greed' territory, scoring 71 points, compared to 73 points the day before. Bitcoin added about a quarter of a ...

a

a

a

a

a

a

Read More

Bitcoin whales have been instrumental in shaping the direction of the market, which is why their moves are closely monitored by the cryptocurrency ...

a

a

a

a

a

a

Read More

On April 20 Bitcoin underwent its fourth successful halving, the programmed slashing of the amount of new bitcoin {{BTC}} that enters into ...

a

a

a

a

a

a

Read More

In a dramatic turn of events, the SEC’s two lawyers Michael Welsh and Joseph Watkins, resigned under pressure after a federal judge rebuked the regulator of “gross abuse” of power in its lawsuit against the DeFi firm DEBT Box. Welsh and Watkins were part of the team that filed suit against the digital asset company […]

a

a

a

a

a

a

Read More

London, United Kingdom, April 23rd, 2024, Chainwire The crypto market is buzzing with the arrival of Hipposol, a new memecoin launching on the secure and swift Solana blockchain. Hipposol is not just aiming for the stars but is on a mission to the moon. A Journey Beyond the Stars Born in the vast savanna of [...] The post Solana-Based Memecoin Hipposol is Set on a Moonbound Mission appeared first on Blockonomi.

a

a

a

a

a

a

Read More

Solana topped the ranks in the first quarter of 2024, propelled by increased activities in Decentralized Exchange (DEX) and (DeFi).

a

a

a

a

a

a

Read More

Top 100 Coins By Market Cap

NEXT BTC MOVE:

I think Bitcoin goes UP because

Name Price Marketcap 24h
Bitcoin Bitcoin (BTC) $66,699.98 $1.31 T 0.92%
Ethereum Ethereum (ETH) $3,234.70 $394.78 B 1.90%
Tether USDt Tether USDt (USDT) $1.00 $109.86 B -0.02%
BNB BNB (BNB) $606.57 $90.70 B 2.04%
Solana Solana (SOL) $158.08 $70.67 B 3.30%
USDC USDC (USDC) $0.99992610 $33.85 B 0.00%
XRP XRP (XRP) $0.54956870 $30.30 B 1.43%
Dogecoin Dogecoin (DOGE) $0.16177582 $23.30 B 2.15%
Toncoin Toncoin (TON) $5.69 $19.75 B -5.34%
Cardano Cardano (ADA) $0.50668023 $18.05 B -1.35%
Shiba Inu Shiba Inu (SHIB) $0.00002741 $16.15 B 3.36%
Avalanche Avalanche (AVAX) $39.01 $14.73 B 0.34%
Polkadot Polkadot (DOT) $7.40 $10.65 B 0.11%
Bitcoin Cash Bitcoin Cash (BCH) $510.60 $10.05 B 0.60%
TRON TRON (TRX) $0.11285000 $9.88 B 1.13%
Chainlink Chainlink (LINK) $15.23 $8.94 B -0.05%
NEAR Protocol NEAR Protocol (NEAR) $7.02 $7.50 B 0.73%
Polygon Polygon (MATIC) $0.73470000 $7.27 B 0.13%
Internet Computer Internet Computer (ICP) $14.68 $6.80 B -2.20%
Litecoin Litecoin (LTC) $84.96 $6.33 B 0.46%
Dai Dai (DAI) $1.00 $5.35 B -0.01%
UNUS SED LEO UNUS SED LEO (LEO) $5.76 $5.34 B 0.17%
Uniswap Uniswap (UNI) $8.06 $4.83 B 0.89%
Stacks Stacks (STX) $2.97 $4.31 B 3.11%
Aptos Aptos (APT) $9.90 $4.22 B -1.69%
Ethereum Classic Ethereum Classic (ETC) $28.22 $4.14 B 0.62%
First Digital USD First Digital USD (FDUSD) $1.00 $3.89 B 0.22%
Mantle Mantle (MNT) $1.18 $3.86 B -2.64%
Hedera Hedera (HBAR) $0.10509203 $3.76 B 17.72%
Filecoin Filecoin (FIL) $6.51 $3.53 B 0.81%
Render Render (RNDR) $9.17 $3.53 B 0.14%
Cronos Cronos (CRO) $0.13121446 $3.49 B 0.22%
Immutable Immutable (IMX) $2.39 $3.49 B 5.37%
Cosmos Cosmos (ATOM) $8.75 $3.42 B -1.15%
Bittensor Bittensor (TAO) $509.69 $3.38 B 5.13%
Stellar Stellar (XLM) $0.11640000 $3.37 B 0.23%
Hedera Hashgraph Hedera Hashgraph (HBAR) $0.10420000 $3.78 B 17.53%
OKB OKB (OKB) $55.69 $3.34 B 1.79%
Pepe Pepe (PEPE) $0.00000775 $3.26 B 18.68%
Arbitrum Arbitrum (ARB) $1.19 $3.16 B -0.80%
VeChain VeChain (VET) $0.04227000 $3.08 B 1.03%
dogwifhat dogwifhat (WIF) $3.07 $3.06 B 9.50%
Kaspa Kaspa (KAS) $0.12899589 $3.02 B 6.28%
The Graph The Graph (GRT) $0.29933632 $2.84 B 0.79%
Injective Injective (INJ) $28.56 $2.67 B 1.08%
Maker Maker (MKR) $2,870.00 $2.66 B -0.69%
Optimism Optimism (OP) $2.53 $2.64 B -1.05%
Theta Network Theta Network (THETA) $2.42 $2.42 B 4.95%
Monero Monero (XMR) $122.25 $2.25 B 0.32%
Core Core (CORE) $2.51 $2.22 B -5.51%
Arweave Arweave (AR) $33.70 $2.21 B -0.09%
Fetch.ai Fetch.ai (FET) $2.46 $2.09 B 2.72%
Fantom Fantom (FTM) $0.74591482 $2.09 B -2.43%
Celestia Celestia (TIA) $11.57 $2.08 B 0.17%
FLOKI FLOKI (FLOKI) $0.00020284 $1.94 B 19.03%
THORChain THORChain (RUNE) $5.70 $1.91 B -0.09%
Lido DAO Lido DAO (LDO) $2.13 $1.90 B 0.56%
Sei Sei (SEI) $0.65510000 $1.84 B 2.00%
Sui Sui (SUI) $1.37 $1.77 B -1.82%
Bitget Token Bitget Token (BGB) $1.26 $1.76 B -1.72%
Beam Beam (BEAM) $0.03081369 $1.63 B -2.21%
Jupiter Jupiter (JUP) $1.19 $1.60 B 2.46%
Render Token Render Token (RNDR) $9.17 $3.52 B -0.08%
Pendle Pendle (PENDLE) $6.57 $1.57 B 0.04%
Algorand Algorand (ALGO) $0.19310000 $1.57 B 1.04%
Gala Gala (GALA) $0.05046000 $1.53 B 1.75%
Bonk Bonk (BONK) $0.00002288 $1.49 B 14.54%
Flow Flow (FLOW) $0.96100000 $1.44 B 1.11%
Bitcoin SV Bitcoin SV (BSV) $71.98 $1.42 B 0.39%
Aave Aave (AAVE) $96.08 $1.42 B 0.69%
Ethena Ethena (ENA) $0.98500000 $1.40 B -4.92%
Neo Neo (NEO) $19.41 $1.37 B -0.15%
Quant Quant (QNT) $108.30 $1.31 B 1.29%
SingularityNET SingularityNET (AGIX) $1.01 $1.30 B 2.37%
BitTorrent (New) BitTorrent (New) (BTT) $0.00000133 $1.28 B -0.03%
Flare Flare (FLR) $0.03274230 $1.26 B -0.24%
Akash Network Akash Network (AKT) $5.25 $1.23 B 30.93%
MultiversX MultiversX (EGLD) $44.42 $1.19 B 0.25%
Huobi Token Huobi Token (HT) $0.57217000 $91.98 M -0.89%
Axie Infinity Axie Infinity (AXS) $7.72 $1.11 B 0.54%
The Sandbox The Sandbox (SAND) $0.49030000 $1.11 B 0.95%
dYdX (Native) dYdX (Native) (DYDX) $2.37 $1.10 B 0.26%
Wormhole Wormhole (W) $0.60873267 $1.10 B -2.30%
eCash eCash (XEC) $0.00005505 $1.09 B 0.75%
Ronin Ronin (RON) $3.40 $1.07 B 0.25%
Worldcoin Worldcoin (WLD) $5.55 $1.07 B 0.11%
dYdX dYdX (DYDX) $2.37 $737.56 M 0.26%
Chiliz Chiliz (CHZ) $0.11760000 $1.04 B 0.28%
Gnosis Gnosis (GNO) $399.70 $1.04 B 5.34%
Tezos Tezos (XTZ) $1.06 $1.04 B 1.53%
ORDI ORDI (ORDI) $48.75 $1.02 B 0.64%
JasmyCoin JasmyCoin (JASMY) $0.02065800 $1.02 B 0.06%
Pyth Network Pyth Network (PYTH) $0.68030000 $1.02 B -0.80%
Conflux Conflux (CFX) $0.25340000 $999.88 M 0.43%
Synthetix Synthetix (SNX) $3.03 $994.30 M -3.06%
Mina Mina (MINA) $0.90536370 $988.16 M 3.27%
Starknet Starknet (STRK) $1.34 $978.20 M 1.65%
KuCoin Token KuCoin Token (KCS) $9.82 $943.64 M 0.02%
EOS EOS (EOS) $0.83790000 $941.33 M 0.00%
Decentraland Decentraland (MANA) $0.47849765 $913.13 M 0.07%
Oops... No coins found!

Try to search another coin

no-coins
Signals Portfolio Coins
Menu