% using the PGF/TikZ package with pdflatex \documentclass{standalone} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} %~ \usepackage[english]{babel} \usepackage[none]{hyphenat}% prevent hyphenation \usepackage{lmodern} \renewcommand*\familydefault{\sfdefault} \usepackage{tikz} \usetikzlibrary{shapes,arrows} \tikzset{>=latex} %\pgfdeclarelayer{bg} % declare background layer %\pgfsetlayers{bg,main} % set order of layers \newcommand{\h}{\hspace{1em}} \begin{document} % \sffamily{} \tikzstyle{block_center} = [rectangle, draw=black, thick, fill=white, text width=10.5em, text centered, minimum height=1em] \tikzstyle{block_rounded} = [rectangle, draw=black, thick, fill=white, text width=8em, text centered, minimum height=5em, rounded corners] \begin{tikzpicture}[auto] % outlining the flowchart on a grid \matrix[column sep=3ex,row sep=2.5ex]{ \h & \node [block_center] (R1) {Alice, Bob and Carol wish to spend from a 2-of-3 Multisig.}; & \h \\ \h & \node [block_center] (R2) {Alice uses a full node to create a PSBT with all input UTXOs filled in.}; & \h \\ \h & \node [block_center] (R3) {PSBT distributed.}; & \h \\ \node [block_center] (R4C1) {Alice signs the PSBT with her wallet.}; & \node [block_center] (R4C2) {Bob signs the PSBT with his SPV wallet.}; & \node [block_center] (R4C3) {Carol signs the PSBT with a completely offline signing machine.}; \\ %~ \h & \node (blind) & \h \\ \h & \node [block_center] (R5) {PSBTs are returned to Alice.}; & \h \\ \h & \node [block_center] (R6) {Alices combines the PSBTs. All inputs now have 3 signatures.}; & \h \\ \h & \node [block_center] (R7) {Alice finalizes the PSBT by creating each input's final scriptSig. One signature for each input is dropped.}; & \h \\ \h & \node [block_rounded] (stop) {Alice extracts the network serialized transaction and broadcasts it to the network.}; & \h \\ };% end matrix % connecting nodes with paths % \begin{pgfonlayer}{bg} \draw[line width = 1pt, ->] (R1) edge (R2) (R2) edge (R3) (R3) -| (R4C1) (R3) edge (R4C2) (R5) edge (R6) (R6) edge (R7) (R7) edge (stop); % circumvent missing arrow \draw[line width = 1pt, ->] (R4C1) |-+(0,-2.2em)-| (R5) (R4C2) edge (R5) (R4C3) |-+(0,-2.2em)-| (R5) (R3) -| (R4C3); % \end{pgfonlayer} \end{tikzpicture} \end{document}