\documentclass[tikz,border=6pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,positioning,calc}
\definecolor{ink}{HTML}{111827}
\definecolor{violet}{HTML}{7C3AED}
\definecolor{green}{HTML}{059669}
\definecolor{paper}{HTML}{FFFDF7}
\begin{document}
\begin{tikzpicture}[>=Latex, font=\small, text=ink]
  \fill[paper] (-0.6,-1.35) rectangle (12.25,2.4);
  \node[draw=violet!60, fill=violet!8, rounded corners=3pt, align=left, minimum width=3.1cm, minimum height=1.55cm] (r1) at (1.2,0.55) {\textbf{Lock en $r_\ell$}\\ $|\mathrm{prevotes}(B_1,r_\ell)|>2n/3$\\ \scriptsize PoLC$(B_1,r_\ell)$\\ \scriptsize LastLockRound $=r_\ell$};
  \node[draw=ink!35, fill=paper, rounded corners=3pt, align=left, minimum width=3.45cm, minimum height=1.55cm] (r2) at (5.7,0.55) {\textbf{Propuesta en $R$}\\ $B_2$, PoLCRound $=r_p$\\ \scriptsize verificar PoLC$(B_2,r_p)$\\ \scriptsize $r_\ell<r_p<R$};
  \node[draw=green!60, fill=green!8, rounded corners=3pt, align=left, minimum width=3.15cm, minimum height=1.55cm] (r3) at (10.25,0.55) {\textbf{Avance seguro}\\ unlock + prevote $B_2$\\ precommit $B_2$: $>2n/3$\\ \scriptsize commit $B_2$};
  \draw[->, ink!75] (r1.east) -- node[above=6pt, fill=paper, inner sep=1pt, font=\scriptsize] {propuesta + prueba} (r2.west);
  \draw[->, green!75] (r2.east) -- node[above=6pt, fill=paper, inner sep=1pt, font=\scriptsize] {PoLC v\'alida} (r3.west);
  \node[draw=ink!30, rounded corners=3pt, fill=paper, align=center, font=\footnotesize] at (5.9,-0.92) {ValidRound no basta por s\'i solo: el validador verifica $>2/3$ prevotes\\ y el orden $\mathrm{LastLockRound}<\mathrm{PoLCRound}<R$};
\end{tikzpicture}
\end{document}
