hosted/ifttt/assets/iftrace-diagram.svg

73 lines
3.3 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="900" viewBox="0 0 1600 900" fill="none" role="img" aria-label="IF.Trace verification flow diagram">
<defs>
<linearGradient id="g" x1="240" y1="180" x2="1360" y2="720" gradientUnits="userSpaceOnUse">
<stop stop-color="#60A5FA" stop-opacity="0.95" />
<stop offset="0.5" stop-color="#34D399" stop-opacity="0.85" />
<stop offset="1" stop-color="#F472B6" stop-opacity="0.85" />
</linearGradient>
<filter id="glow" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur stdDeviation="10" result="b" />
<feColorMatrix
in="b"
type="matrix"
values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.35 0"
/>
<feMerge>
<feMergeNode />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<style>
.card { fill: rgba(2,6,23,0.35); stroke: rgba(255,255,255,0.10); }
.title { fill: rgba(255,255,255,0.92); font: 600 28px ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji"; }
.sub { fill: rgba(255,255,255,0.70); font: 500 18px ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial; }
.mono { fill: rgba(255,255,255,0.75); font: 500 16px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; }
.stroke { stroke: rgba(226,232,240,0.70); stroke-width: 2.5; }
</style>
</defs>
<rect x="0" y="0" width="1600" height="900" rx="36" fill="rgba(2,6,23,0.08)" />
<path
d="M250 740 C 520 560, 740 600, 920 420 C 1080 260, 1240 260, 1360 180"
stroke="url(#g)"
stroke-width="10"
stroke-linecap="round"
stroke-opacity="0.35"
filter="url(#glow)"
/>
<g>
<rect class="card" x="190" y="160" width="360" height="170" rx="22" />
<text class="title" x="230" y="218">1) Keep it private</text>
<text class="sub" x="230" y="254">You hold the source.</text>
<text class="mono" x="230" y="292">source_sha256</text>
</g>
<g>
<rect class="card" x="620" y="220" width="360" height="170" rx="22" />
<text class="title" x="660" y="278">2) Hash the output</text>
<text class="sub" x="660" y="314">What you will share.</text>
<text class="mono" x="660" y="352">output_sha256</text>
</g>
<g>
<rect class="card" x="1040" y="160" width="390" height="170" rx="22" />
<text class="title" x="1080" y="218">3) Publish a receipt</text>
<text class="sub" x="1080" y="254">No login required.</text>
<text class="mono" x="1080" y="292">/trace/…</text>
</g>
<g>
<rect class="card" x="900" y="540" width="530" height="190" rx="22" />
<text class="title" x="940" y="602">4) Third party verifies</text>
<text class="sub" x="940" y="638">They download bytes and compare hashes.</text>
<text class="mono" x="940" y="676">verified == (hashes match)</text>
</g>
<path class="stroke" d="M550 245 C 610 245, 600 260, 620 270" />
<path class="stroke" d="M980 270 C 1025 260, 1005 245, 1040 245" />
<path class="stroke" d="M1235 330 C 1235 400, 1170 450, 1100 540" />
<path class="stroke" d="M800 390 C 800 460, 880 500, 980 540" />
<text class="sub" x="190" y="800">Integrity claims only: byte-level verification, not interpretation.</text>
</svg>