-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathglyphs-protocol-guide.html
More file actions
969 lines (843 loc) · 81.5 KB
/
glyphs-protocol-guide.html
File metadata and controls
969 lines (843 loc) · 81.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
<!doctype html>
<html lang="en">
<head>
<script>
(function() {
const savedTheme = localStorage.getItem("modeSwitch");
if (savedTheme) {
let themeName;
switch (savedTheme) {
case '0':
themeName = "default";
break;
case '1':
themeName = "light";
break;
case '2':
themeName = "system";
break;
}
document.documentElement.setAttribute("data-theme", themeName);
}
})();
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Guide to the Glyphs Protocol on the Radiant Blockchain">
<meta name="keywords" content="Radiant, Radiant Blockchain, Radiant Network, RXD, Blockchain, Photons, Onchain, Digital objects, Bitcoin, BTC, Layer 1, L1, Opcodes, Induction Proofs, Back to Genesis, POW, UTXO, Digital Asset System, Glyphs, Glyph Protocol, Photonic Wallet, Crypto, Bitcoin, $RXD">
<link rel="canonical" href="https://radiantblockchain.org/glyphs-protocol-guide.html">
<script>document.getElementsByTagName("html")[0].className += " js";</script>
<!-- google fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap" rel="stylesheet">
<!-- end google fonts -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-HL0SBNL358"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-HL0SBNL358');
</script>
<link rel="icon" href="assets/favicon/android-chrome-192x192.png" type="image/png">
<link rel="apple-touch-icon" href="assets/favicon/android-chrome-192x192.png">
<link rel="icon" href="assets/favicon/favicon.ico">
<meta name="robots" content="index,follow">
<link rel="manifest" href="manifest.webmanifest">
<link rel="android-touch-icon" sizes="72x72" href="assets/favicon/maskables/maskable_icon_x72.png">
<link rel="android-touch-icon" sizes="96x96" href="assets/favicon/maskables/maskable_icon_x96.png">
<link rel="android-touch-icon" sizes="128x128" href="assets/favicon/maskables/maskable_icon_x128.png">
<link rel="android-touch-icon" sizes="192x192" href="assets/favicon/maskables/maskable_icon_x192.png">
<link rel="android-touch-icon" sizes="384x384" href="assets/favicon/maskables/maskable_icon_x384.png">
<link rel="android-touch-icon" sizes="512x512" href="assets/favicon/maskables/maskable_icon_x512.png">
<link rel="stylesheet" href="assets/css/style.css">
<title>Radiant RXD - Glyphs Protocol Guide</title>
<!-- OpenGraph Meta Tags -->
<meta property="og:url" content="https://radiantblockchain.org/glyphs-protocol-guide.html">
<meta property="og:type" content="website">
<meta property="og:title" content="Radiant RXD - Glyphs Protocol Guide">
<meta property="og:description" content="Guide to the Glyphs Protocol on the Radiant Blockchain">
<meta property="og:image" content="https://radiantblockchain.org/radiantblockchain-guides-social.png">
<!-- Twitter Meta Tags -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@Planet_Radiant" />
<meta name="twitter:creator" content="@Planet_Radiant" />
<meta property="twitter:domain" content="radiantblockchain.org/glyphs-protocol-guide.html">
<meta property="twitter:url" content="https://radiantblockchain.org/glyphs-protocol-guide.html">
<meta name="twitter:title" content="Radiant RXD - Glyphs Protocol Guide">
<meta name="twitter:description" content="Guide to the Glyphs Protocol on the Radiant Blockchain">
<meta name="twitter:image" content="https://radiantblockchain.org/radiantblockchain-guides-twitter.png">
<!-- Schema.org markup -->
<meta itemprop="name" content="Radiant RXD - Glyphs Protocol Guide">
<meta itemprop="description" content="Guide to the Glyphs Protocol on the Radiant Blockchain">
<meta itemprop="image" content="https://radiantblockchain.org/radiantblockchain-guides-social.png">
</head>
<body>
<!-- start Progress bar -->
<progress aria-hidden="true" class="reset reading-progressbar js-reading-progressbar" max="100" value="0">
<div class="reading-progressbar__fallback js-reading-progressbar__fallback"></div>
</progress>
<!-- end Progress bar -->
<!-- start Notice
<section>
<div class="pre-header padding-y-xs js-pre-header">
<div class="container max-width-lg position-relative">
<div class="text-component text-center text-sm padding-x-lg">
<p>Join the Radiant Community on <a class="force-link-subtle" href="https://discord.gg/radiantblockchain" target="_blank">Discord</a></p>
</div>
<button class="reset pre-header__close-btn js-pre-header__close-btn js-tab-focus">
<svg class="icon" viewBox="0 0 20 20">
<title>Close header banner</title>
<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
<line x1="4" y1="4" x2="16" y2="16" />
<line x1="16" y1="4" x2="4" y2="16" />
</g>
</svg>
</button>
</div>
</div>
</section>
end Notice -->
<!-- start Navigation -->
<header class="f-header js-f-header bg hide-nav js-hide-nav js-hide-nav--main" data-nav-target-class="f-header--expanded">
<div class="f-header__mobile-content container max-width-lg"><a href="/" class="f-header__logo"><svg width="196" height="36" viewBox="0 0 196 36" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Radiant Logo</title><path fill-rule="evenodd" clip-rule="evenodd" d="M34.2161 18.1066C34.2161 27.4874 26.6114 35.0921 17.2306 35.0921C7.84978 35.0921 0.245117 27.4874 0.245117 18.1066C0.245117 8.72576 7.84978 1.12109 17.2306 1.12109C26.6114 1.12109 34.2161 8.72576 34.2161 18.1066ZM6.16236 10.2656H16.1401C16.9805 10.2656 17.821 10.2656 18.6614 10.2877C18.9268 10.2877 19.1701 10.2877 19.4355 10.3098C20.3866 10.3982 21.2934 10.6413 22.1339 11.1275C23.1734 11.7464 23.9254 12.6083 24.412 13.6913C24.6331 14.1996 24.788 14.7301 24.8764 15.2826C24.9428 15.7025 24.9649 16.1445 24.9207 16.5866C24.8543 17.7137 24.4562 18.7083 23.7705 19.6144C23.3946 20.1007 22.908 20.4764 22.3771 20.7637C22.0454 20.9405 21.6915 21.0952 21.3376 21.1615L21.3319 21.1628C21.1728 21.1961 21.0095 21.1344 20.8946 21.0195L17.9929 18.1186C17.9498 18.0756 17.9776 18.0019 18.0384 17.999C18.8651 17.9601 19.5733 17.3546 19.723 16.5424C19.9221 15.4815 19.1922 14.5974 18.3075 14.4206C18.1748 14.3985 18.0421 14.3985 17.9094 14.3985H11.1911C10.4612 14.3764 9.81977 14.1554 9.24471 13.7355C9.11201 13.6471 9.00142 13.5366 8.89083 13.4261C8.42347 12.9591 7.98305 12.4894 7.54403 12.0211C7.06251 11.5076 6.58265 10.9958 6.07069 10.4912C5.98715 10.4089 6.04507 10.2656 6.16236 10.2656ZM19.5899 28.1238C19.453 28.1238 19.3243 28.0726 19.2268 27.9764C16.5585 25.3423 12.3123 21.0352 9.73722 18.4147C8.91426 17.5773 9.51001 16.167 10.6841 16.167H14.0001C14.1382 16.167 14.2708 16.2219 14.3685 16.3195L25.9536 27.9014C26.0357 27.9834 25.9776 28.1238 25.8615 28.1238H19.5899Z" fill="var(--logo-color-invert)"/><path d="M152.521 15.1925L163.875 25.0869C164.398 25.5428 165.069 25.7939 165.763 25.7939C166.732 25.7939 167.518 25.0083 167.518 24.0391V10.3731H164.132V20.3325L153.066 10.6352C152.636 10.2585 152.084 10.0508 151.513 10.0508C150.211 10.0507 149.156 11.106 149.156 12.4078V25.4716H152.521V15.1925Z" fill="var(--logo-color-invert)"/><path d="M79.028 14.7392L72.149 25.4717H67.6904L76.5198 11.7327C77.0909 10.8553 77.8803 10.1143 79.1076 10.1143C80.2752 10.1143 81.0625 10.7897 81.6496 11.728L90.2556 25.4717H85.788L83.3007 21.6155L83.2985 21.6123C82.9564 21.1089 82.4407 20.2806 81.9968 19.5678L81.9962 19.5668L81.9852 19.5491L81.8557 19.3413L81.8552 19.3404L79.028 14.7392Z" fill="var(--logo-color-invert)"/><path d="M49.0944 21.3062V25.4715H45.3242V18.0681H57.4147C58.1466 18.0681 58.8234 17.8857 59.327 17.5333C59.8377 17.176 60.1684 16.6419 60.1684 15.9808C60.1684 15.2779 59.8992 14.7172 59.3884 14.3439C58.8933 13.982 58.2078 13.8229 57.4147 13.8229H45.3242V10.373H57.0521C58.645 10.373 60.4134 10.652 61.7722 11.4548C63.1088 12.2445 64.0665 13.5482 64.0665 15.6749C64.0665 17.9972 62.7612 19.8692 60.587 20.349L60.1153 20.4531L61.0855 21.4969C61.3557 21.7696 61.6741 22.1139 62.0833 22.5705L62.1304 22.6212L62.1295 22.6221C62.2211 22.7246 62.3173 22.8326 62.4184 22.9465L64.5835 25.4715H59.6975L55.875 21.3062H49.0944Z" fill="var(--logo-color-invert)"/><path d="M93.748 19.3819H97.5395V13.8229H104.073C106.607 13.8229 108.618 15.5603 108.618 17.9811C108.618 19.2005 108.138 20.2309 107.317 20.9529C106.5 21.6717 105.364 22.0686 104.073 22.0686H93.748V25.4715H104.073C108.863 25.4715 112.346 22.1374 112.346 17.7693C112.346 13.4388 108.921 10.373 104.073 10.373H93.748V19.3819Z" fill="var(--logo-color-invert)"/><path d="M134.822 14.7392L127.943 25.4717H123.485L132.314 11.7327L132.315 11.7316C132.886 10.8544 133.675 10.1143 134.902 10.1143C136.07 10.1143 136.857 10.7897 137.444 11.728L146.05 25.4717H141.442L139.097 21.619L139.093 21.6123C138.752 21.1097 138.237 20.2832 137.794 19.5712L137.791 19.5673L137.79 19.5665L137.649 19.3404L134.822 14.7392Z" fill="var(--logo-color-invert)"/><path d="M178.343 13.8229H170.885V10.373H189.629V13.8229H182.113V25.4715H178.343V13.8229Z" fill="var(--logo-color-invert)"/><path d="M120.079 25.4715V10.373H116.309V25.4715H120.079Z" fill="var(--logo-color-invert)"/></svg>
</a><button class="anim-menu-btn js-anim-menu-btn f-header__nav-control" aria-label="Toggle menu">
<i class="anim-menu-btn__icon anim-menu-btn__icon--close" aria-hidden="true"></i></button></div>
<div class="f-header__nav" role="navigation">
<div class="f-header__nav-grid justify-between@md container max-width-lg">
<div class="f-header__nav-logo-wrapper flex-grow flex-basis-0"><a href="/" class="f-header__logo"><svg width="196" height="36" viewBox="0 0 196 36" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Radiant Logo</title><path fill-rule="evenodd" clip-rule="evenodd" d="M34.2161 18.1066C34.2161 27.4874 26.6114 35.0921 17.2306 35.0921C7.84978 35.0921 0.245117 27.4874 0.245117 18.1066C0.245117 8.72576 7.84978 1.12109 17.2306 1.12109C26.6114 1.12109 34.2161 8.72576 34.2161 18.1066ZM6.16236 10.2656H16.1401C16.9805 10.2656 17.821 10.2656 18.6614 10.2877C18.9268 10.2877 19.1701 10.2877 19.4355 10.3098C20.3866 10.3982 21.2934 10.6413 22.1339 11.1275C23.1734 11.7464 23.9254 12.6083 24.412 13.6913C24.6331 14.1996 24.788 14.7301 24.8764 15.2826C24.9428 15.7025 24.9649 16.1445 24.9207 16.5866C24.8543 17.7137 24.4562 18.7083 23.7705 19.6144C23.3946 20.1007 22.908 20.4764 22.3771 20.7637C22.0454 20.9405 21.6915 21.0952 21.3376 21.1615L21.3319 21.1628C21.1728 21.1961 21.0095 21.1344 20.8946 21.0195L17.9929 18.1186C17.9498 18.0756 17.9776 18.0019 18.0384 17.999C18.8651 17.9601 19.5733 17.3546 19.723 16.5424C19.9221 15.4815 19.1922 14.5974 18.3075 14.4206C18.1748 14.3985 18.0421 14.3985 17.9094 14.3985H11.1911C10.4612 14.3764 9.81977 14.1554 9.24471 13.7355C9.11201 13.6471 9.00142 13.5366 8.89083 13.4261C8.42347 12.9591 7.98305 12.4894 7.54403 12.0211C7.06251 11.5076 6.58265 10.9958 6.07069 10.4912C5.98715 10.4089 6.04507 10.2656 6.16236 10.2656ZM19.5899 28.1238C19.453 28.1238 19.3243 28.0726 19.2268 27.9764C16.5585 25.3423 12.3123 21.0352 9.73722 18.4147C8.91426 17.5773 9.51001 16.167 10.6841 16.167H14.0001C14.1382 16.167 14.2708 16.2219 14.3685 16.3195L25.9536 27.9014C26.0357 27.9834 25.9776 28.1238 25.8615 28.1238H19.5899Z" fill="var(--logo-color-invert)"/><path d="M152.521 15.1925L163.875 25.0869C164.398 25.5428 165.069 25.7939 165.763 25.7939C166.732 25.7939 167.518 25.0083 167.518 24.0391V10.3731H164.132V20.3325L153.066 10.6352C152.636 10.2585 152.084 10.0508 151.513 10.0508C150.211 10.0507 149.156 11.106 149.156 12.4078V25.4716H152.521V15.1925Z" fill="var(--logo-color-invert)"/><path d="M79.028 14.7392L72.149 25.4717H67.6904L76.5198 11.7327C77.0909 10.8553 77.8803 10.1143 79.1076 10.1143C80.2752 10.1143 81.0625 10.7897 81.6496 11.728L90.2556 25.4717H85.788L83.3007 21.6155L83.2985 21.6123C82.9564 21.1089 82.4407 20.2806 81.9968 19.5678L81.9962 19.5668L81.9852 19.5491L81.8557 19.3413L81.8552 19.3404L79.028 14.7392Z" fill="var(--logo-color-invert)"/><path d="M49.0944 21.3062V25.4715H45.3242V18.0681H57.4147C58.1466 18.0681 58.8234 17.8857 59.327 17.5333C59.8377 17.176 60.1684 16.6419 60.1684 15.9808C60.1684 15.2779 59.8992 14.7172 59.3884 14.3439C58.8933 13.982 58.2078 13.8229 57.4147 13.8229H45.3242V10.373H57.0521C58.645 10.373 60.4134 10.652 61.7722 11.4548C63.1088 12.2445 64.0665 13.5482 64.0665 15.6749C64.0665 17.9972 62.7612 19.8692 60.587 20.349L60.1153 20.4531L61.0855 21.4969C61.3557 21.7696 61.6741 22.1139 62.0833 22.5705L62.1304 22.6212L62.1295 22.6221C62.2211 22.7246 62.3173 22.8326 62.4184 22.9465L64.5835 25.4715H59.6975L55.875 21.3062H49.0944Z" fill="var(--logo-color-invert)"/><path d="M93.748 19.3819H97.5395V13.8229H104.073C106.607 13.8229 108.618 15.5603 108.618 17.9811C108.618 19.2005 108.138 20.2309 107.317 20.9529C106.5 21.6717 105.364 22.0686 104.073 22.0686H93.748V25.4715H104.073C108.863 25.4715 112.346 22.1374 112.346 17.7693C112.346 13.4388 108.921 10.373 104.073 10.373H93.748V19.3819Z" fill="var(--logo-color-invert)"/><path d="M134.822 14.7392L127.943 25.4717H123.485L132.314 11.7327L132.315 11.7316C132.886 10.8544 133.675 10.1143 134.902 10.1143C136.07 10.1143 136.857 10.7897 137.444 11.728L146.05 25.4717H141.442L139.097 21.619L139.093 21.6123C138.752 21.1097 138.237 20.2832 137.794 19.5712L137.791 19.5673L137.79 19.5665L137.649 19.3404L134.822 14.7392Z" fill="var(--logo-color-invert)"/><path d="M178.343 13.8229H170.885V10.373H189.629V13.8229H182.113V25.4715H178.343V13.8229Z" fill="var(--logo-color-invert)"/><path d="M120.079 25.4715V10.373H116.309V25.4715H120.079Z" fill="var(--logo-color-invert)"/></svg>
</a></div>
<ul class="f-header__list flex-grow flex-basis-0 justify-center@md">
<li class="f-header__item"><a href="/" class="f-header__link">Home</a></li>
<li class="f-header__item"><a href="/#faqs" class="f-header__link">FAQs</a></li>
<li class="f-header__item">
<a href="/guides.html" class="f-header__link" aria-current="page"><span>Guides</span><svg class="f-header__dropdown-icon icon" aria-hidden="true" viewBox="0 0 12 12">
<path d="M9.943,4.269A.5.5,0,0,0,9.5,4h-7a.5.5,0,0,0-.41.787l3.5,5a.5.5,0,0,0,.82,0l3.5-5A.5.5,0,0,0,9.943,4.269Z"></path></svg></a>
<ul class="f-header__dropdown">
<li><a href="/glyphs-guide.html" class="f-header__dropdown-link sub-nav-gap">Glyphs User Guide</a></li>
<li><a href="/glyphs-protocol-guide.html" class="f-header__dropdown-link sub-nav-gap" aria-current="page">Glyphs Tech Guide</a></li>
<li><a href="/rxd-brand-guide.html" class="f-header__dropdown-link sub-nav-gap">Radiant Brand Guide</a></li>
<li><a href="/#programming" class="f-header__dropdown-link sub-nav-gap">Programming</a></li>
</ul>
</li>
<li class="f-header__item"><a href="/links.html" class="f-header__link">Links</a></li>
<li class="f-header__item"><a href="/node-network.html" class="f-header__link">Nodes</a></li>
<li class="f-header__item"><a href="/participate.html" class="f-header__link">Participate</a></li>
<li class="f-header__item"><a href="/initiatives.html" class="f-header__link">Initiatives</a></li>
<li class="f-header__item"><a href="/get-rxd.html" class="f-header__link">Get RXD</a></li>
</ul>
<ul class="f-header__list flex-grow flex-basis-0 justify-end@md"></ul>
<!-- start Theme Switcher -->
<div class="theme-switcher">
<button class="btn-theme btn-dark js-theme-button" aria-label="Switch to Dark Theme">
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Dark Mode</title><path d="M11.5788 19.2841C15.8343 19.2841 19.2841 15.8343 19.2841 11.5788C19.2841 10.1366 18.8879 8.78701 18.1984 7.63281C21.8342 8.63257 24.5051 11.9622 24.5051 15.9157C24.5051 20.6595 20.6595 24.5051 15.9157 24.5051C11.9622 24.5051 8.63257 21.8342 7.63281 18.1984C8.78701 18.8879 10.1366 19.2841 11.5788 19.2841Z" fill="var(--logo-color-invert)"/></svg>
</button>
<button class="btn-theme btn-light js-theme-button" aria-label="Switch to Light Theme">
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Light Mode</title><path d="M20.5278 15.9872C20.5278 18.4626 18.5211 20.4693 16.0457 20.4693C13.5703 20.4693 11.5636 18.4626 11.5636 15.9872C11.5636 13.5118 13.5703 11.5051 16.0457 11.5051C18.5211 11.5051 20.5278 13.5118 20.5278 15.9872Z" fill="var(--logo-color-invert)"/><path d="M15.0578 6.75311C15.0578 6.23228 15.48 5.81006 16.0008 5.81006C16.5217 5.81006 16.9439 6.23228 16.9439 6.75311V8.7964C16.9439 9.31724 16.5217 9.73946 16.0008 9.73946C15.48 9.73946 15.0578 9.31724 15.0578 8.7964V6.75311Z" fill="var(--logo-color-invert)"/><path d="M15.0578 23.178C15.0578 22.6572 15.48 22.235 16.0008 22.235C16.5217 22.235 16.9439 22.6572 16.9439 23.178V25.2213C16.9439 25.7421 16.5217 26.1644 16.0008 26.1644C15.48 26.1644 15.0578 25.7421 15.0578 25.2213V23.178Z" fill="var(--logo-color-invert)"/><path d="M8.81603 10.1524C8.44774 9.78408 8.44774 9.18697 8.81603 8.81868C9.18431 8.45039 9.78142 8.45039 10.1497 8.81868L11.5945 10.2635C11.9628 10.6318 11.9628 11.2289 11.5945 11.5972C11.2262 11.9655 10.6291 11.9655 10.2608 11.5972L8.81603 10.1524Z" fill="var(--logo-color-invert)"/><path d="M20.4302 21.7665C20.0619 21.3982 20.0619 20.8011 20.4302 20.4328C20.7985 20.0645 21.3956 20.0645 21.7638 20.4328L23.2087 21.8776C23.577 22.2459 23.577 22.843 23.2087 23.2113C22.8404 23.5796 22.2433 23.5796 21.875 23.2113L20.4302 21.7665Z" fill="var(--logo-color-invert)"/><path d="M6.77826 16.958C6.25743 16.958 5.83521 16.5358 5.83521 16.015C5.83521 15.4941 6.25743 15.0719 6.77826 15.0719H8.82155C9.34238 15.0719 9.7646 15.4941 9.7646 16.015C9.7646 16.5358 9.34238 16.958 8.82155 16.958H6.77826Z" fill="var(--logo-color-invert)"/><path d="M23.2031 16.958C22.6823 16.958 22.2601 16.5358 22.2601 16.015C22.2601 15.4941 22.6823 15.0719 23.2031 15.0719H25.2464C25.7673 15.0719 26.1895 15.4941 26.1895 16.015C26.1895 16.5358 25.7673 16.958 25.2464 16.958H23.2031Z" fill="var(--logo-color-invert)"/><path d="M10.1775 23.1998C9.8092 23.5681 9.21209 23.5681 8.8438 23.1998C8.47552 22.8315 8.47552 22.2344 8.8438 21.8661L10.2886 20.4213C10.6569 20.053 11.254 20.053 11.6223 20.4213C11.9906 20.7896 11.9906 21.3867 11.6223 21.755L10.1775 23.1998Z" fill="var(--logo-color-invert)"/><path d="M21.7916 11.5856C21.4233 11.9539 20.8262 11.9539 20.4579 11.5856C20.0897 11.2174 20.0897 10.6202 20.4579 10.252L21.9028 8.80714C22.2711 8.43885 22.8682 8.43885 23.2364 8.80714C23.6047 9.17543 23.6047 9.77254 23.2364 10.1408L21.7916 11.5856Z" fill="var(--logo-color-invert)"/></svg>
</button>
<button class="btn-theme btn-system js-theme-button" aria-label="Switch to System Auto Theme">
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><title>System Auto Mode</title><path d="M16 6.5C15.1334 6.5 14.2938 6.61604 13.4961 6.83344C13.4717 6.31267 13.3335 5.82166 13.1058 5.38472C14.028 5.13388 14.9984 5 16 5C22.0751 5 27 9.92487 27 16C27 22.0751 22.0751 27 16 27C9.92487 27 5 22.0751 5 16C5 13.4544 5.86467 11.1108 7.31632 9.24687C7.63925 9.63217 8.04361 9.9469 8.50293 10.1646C7.24774 11.7749 6.5 13.8001 6.5 16C6.5 21.2467 10.7533 25.5 16 25.5C21.2467 25.5 25.5 21.2467 25.5 16C25.5 10.7533 21.2467 6.5 16 6.5Z" fill="var(--logo-color-invert)"/><path d="M12 7C12 8.10457 11.1046 9 10 9C8.89543 9 8 8.10457 8 7C8 5.89543 8.89543 5 10 5C11.1046 5 12 5.89543 12 7Z" fill="var(--logo-color-invert)"/><path d="M17.0044 16.5656L16.033 13.4718H15.9648L14.9955 16.5656H17.0044Z"fill="var(--logo-color-invert)"/><path fill-rule="evenodd" clip-rule="evenodd" d="M16 23C19.866 23 23 19.866 23 16C23 12.134 19.866 9 16 9C12.134 9 9 12.134 9 16C9 19.866 12.134 23 16 23ZM11.6523 20.0002H13.9194L14.4935 18.1678H17.5074L18.0827 20.0002H20.3498L17.4052 11.2729H14.5969L11.6523 20.0002Z" fill="var(--logo-color-invert)"/></svg>
</button>
</div>
<script>
function applyTheme(theme) {
document.documentElement.setAttribute("data-theme", theme);
document.querySelectorAll('.js-theme-button').forEach(btn => btn.classList.remove('active'));
if (theme === 'default') {
document.querySelector('.btn-dark').classList.add('active');
} else if (theme === 'light') {
document.querySelector('.btn-light').classList.add('active');
} else if (theme === 'system') {
document.querySelector('.btn-system').classList.add('active');
}
}
document.querySelectorAll('.js-theme-button').forEach(button => {
button.addEventListener('click', () => {
const theme = button.classList.contains('btn-dark') ? 'default' :
button.classList.contains('btn-light') ? 'light' : 'system';
localStorage.setItem("modeSwitch", theme === 'default' ? '0' : theme === 'light' ? '1' : '2');
applyTheme(theme);
});
});
(function() {
const savedTheme = localStorage.getItem("modeSwitch");
if (savedTheme) {
let themeName;
switch (savedTheme) {
case '0':
themeName = "default";
break;
case '1':
themeName = "light";
break;
case '2':
themeName = "system";
break;
default:
themeName = "default";
}
applyTheme(themeName);
} else {
applyTheme("default");
}
})();
</script>
<!-- end Theme Switcher -->
</div>
</div>
</header>
<!-- end Navigation -->
<!-- start Guide content -->
<div class="container max-width-adaptive-lg margin-bottom-xs padding-y-md js-reading-content">
<div class="grid gap-md flex-row@md">
<div class="col-3@md">
<div class="toc toc--static@lg position-sticky@md js-toc"><button class="toc__control padding-sm no-js:hide js-toc__control" aria-controls="toc"><span class="toc__control-text"><i class="js-toc__control-label">Contents <span class="sr-only">- press button to select new section.</span></i> <i aria-hidden="true">Select</i> </span><svg class="toc__icon-arrow icon icon--xs margin-left-3xs no-js:hide" viewBox="0 0 16 16" aria-hidden="true">
<g class="icon__group" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
<path d="M3 3l10 10"></path>
<path d="M13 3L3 13"></path>
</g>
</svg></button>
<nav class="toc__nav">
<ul class="toc__list js-toc__list">
<li class="toc__label" tabindex="0">Contents</li>
<li><a class="toc__link js-smooth-scroll" href="#introduction">Introduction</a></li>
<li><a class="toc__link js-smooth-scroll" href="#overview">Overview</a>
<ul class="toc__list">
<li><a class="toc__link js-smooth-scroll" href="#minting">Minting</a></li>
<li><a class="toc__link js-smooth-scroll" href="#verifying-a-token">Verifying a token</a></li>
<li><a class="toc__link js-smooth-scroll" href="#transferring-a-token">Transferring a token</a></li>
</ul>
</li>
<li><a class="toc__link js-smooth-scroll" href="#encoding">Encoding</a>
<ul class="toc__list">
<li><a class="toc__link js-smooth-scroll" href="#payload-structure">Payload structure</a></li>
<li><a class="toc__link js-smooth-scroll" href="#protocols">Protocols</a></li>
<li><a class="toc__link js-smooth-scroll" href="#file-encoding">File encoding</a></li>
<li><a class="toc__link js-smooth-scroll" href="#hashstamp">HashStamp</a></li>
<li><a class="toc__link js-smooth-scroll" href="#types">Types</a></li>
<li><a class="toc__link js-smooth-scroll" href="#custom-fields">Custom fields</a></li>
</ul>
</li>
<li><a class="toc__link js-smooth-scroll" href="#fungible-tokens">Fungible tokens</a>
<ul class="toc__list">
<li><a class="toc__link js-smooth-scroll" href="#ft-transfer">Transfer</a></li>
<li><a class="toc__link js-smooth-scroll" href="#ft-melt">Melt</a></li>
</ul>
</li>
<li><a class="toc__link js-smooth-scroll" href="#non-fungible-tokens">Non-fungible tokens</a>
<ul class="toc__list">
<li><a class="toc__link js-smooth-scroll" href="#nft-transfer">Transfer</a></li>
<li><a class="toc__link js-smooth-scroll" href="#nft-melt">Melt</a></li>
</ul>
</li>
<li><a class="toc__link js-smooth-scroll" href="#relationships">Relationships</a>
<ul class="toc__list">
<li><a class="toc__link js-smooth-scroll" href="#delegates">Delegates</a></li>
<li><a class="toc__link js-smooth-scroll" href="#verifying-related-tokens">Verifying related tokens</a></li>
<li><a class="toc__link js-smooth-scroll" href="#custom-relationships">Custom relationships</a></li>
</ul>
</li>
<li><a class="toc__link js-smooth-scroll" href="#links">Links</a></li>
<li><a class="toc__link js-smooth-scroll" href="#mutable-tokens">Mutable tokens</a>
<ul class="toc__list">
<li><a class="toc__link js-smooth-scroll" href="#pay-to-token">Pay to token</a></li>
<li><a class="toc__link js-smooth-scroll" href="#fetching-mutable-data">Fetching mutable data</a></li>
<li><a class="toc__link js-smooth-scroll" href="#script">Script</a></li>
<li><a class="toc__link js-smooth-scroll" href="#unlocking-script">Unlocking script</a></li>
<li><a class="toc__link js-smooth-scroll" href="#authorizing-an-update">Authorizing an update</a></li>
<li><a class="toc__link js-smooth-scroll" href="#restoring-token-script">Restoring token script</a></li>
</ul>
<li><a class="toc__link js-smooth-scroll" href="#decentralized-mints">Decentralized mints</a>
<ul class="toc__list">
<li><a class="toc__link js-smooth-scroll" href="#pow-algorithm">PoW algorithm</a></li>
<li><a class="toc__link js-smooth-scroll" href="#further-information">Further information</a></li>
</ul>
</li>
<li><a class="toc__link js-smooth-scroll" href="#electrumx">ElectrumX</a>
<ul class="toc__list">
<li><a class="toc__link js-smooth-scroll" href="#querying">Querying</a></li>
<li><a class="toc__link js-smooth-scroll" href="#ref-get">Ref get</a></li>
<li><a class="toc__link js-smooth-scroll" href="#list-unspent">List unspent</a></li>
</ul>
</li>
</li>
</ul>
</nav>
</div>
</div>
<div class="col-9@md">
<div class="text-component text-component--relaxed toc-content js-toc-content">
<h1 class="article-h1">Glyphs Protocol Tech Guide</h1>
<p class="text-md color-contrast-medium">How the Glyphs Protocol works on Radiant</p>
<h2 class="toc-h2" id="introduction" class="toc-content__target">Introduction</h2>
<p>This is a guide to the Glyphs Protocol on the Radiant Blockchain.</p>
<p>Glyphs is a token standard utilizing Radiant's induction proof system and advanced scripting capabilities. Each token is identified by a Radiant reference (ref) and uses smart contracts for enforcing token transfer rules. Glyphs is a fully layer one protocol with all rules enforced by miners.</p>
<p>The Glyphs protocol operates efficiently with minimal indexing requirements, not requiring wallets or indexers to track each token transfer back to the mint. This allows wallets to efficiently verify tokens using SPV. This makes Glyphs a more secure, efficient and scalable system than layer two alternatives.</p>
<p>The protocol supports both fungible and non-fungible tokens. Fungible tokens use Radiant photons as the unit of account, with each fungible token backed by one photon. NFTs may be backed by any number of Radiant photons.</p>
<p>Token contracts are simple, concise and extensible, allowing composition with other custom contracts to support many complex use cases.</p>
<p>Glyphs is currently implemented in Photonic Wallet (Web App and Browser Extension) and Glyph Miner.</p>
<p>For support please join the Radiant community <a href="https://discord.gg/radiantblockchain" target="_blank">Discord server</a>.</p>
<h2 class="toc-h2" id="overview" class="toc-content__target">Overview</h2>
<p>Glyphs are implemented using Radiant's UTXO model and operate in a similar way to native Radiant photons. Radiant photons are "colored" with a Radiant ref which acts like a contract identifier for the token. A token is minted by creating a UTXO containing an amount of photons, a standard token contract and a Radiant ref. The contract along with the ref is carried forward with each spend. The contract and ref remain the same for the lifetime of the token, until it is melted.</p>
<p>With refs enforced by miners we can be certain a token is authentic simply by verifying block headers in the same way as native photons.</p>
<h3 class="toc-h3" id="minting" class="toc-content__target">Minting</h3>
<p>Glyphs are minted using a commit/reveal procedure with token metadata contained in the reveal transaction's unlocking script. The token's ref is created from an input to the reveal transaction. Therefore a glyph's ref will always point to a commit outpoint.</p>
<p>The token payload in the reveal transaction contains data such as name, image, ticker, relationships to other tokens etc.</p>
<p>The protocol does not dictate how the mint transaction should be created. Developers may use any locking script for the commit/reveal procedure, as long as the token payload is correctly encoded in the reveal.</p>
<p>For each ref that is required an input must be prepared. Radiant singleton refs are used for NFTs, so each NFT requires a unique ref.</p>
<h3 class="toc-h3" id="verifying-a-token" class="toc-content__target">Verifying a token</h3>
<p>When a wallet receives a token, it extracts the ref from the script and looks up the reveal transaction on the blockchain to obtain the token data.</p>
<p>For example, an NFT script:</p>
<pre class="code-snippet"><code>OP_PUSHINPUTREFSINGLETON a32f3628a967ce64cca282262e63879136f9c3f4f8e1125345a85c71d90b10b401000000 OP_DROP
OP_DUP OP_HASH160 3a23c6b9055b533db3900e4755dd58d1234c8582 OP_EQUALVERIFY OP_CHECKSIG</code></pre>
<p class="margin-top-sm">The ref <code class="break-word">a32f3628a967ce64cca282262e63879136f9c3f4f8e1125345a85c71d90b10b401000000</code> refers to an outpoint in a commit transaction.</p>
<p>The reveal will be the transaction that spent this output, with a token payload contained in the unlocking script.</p>
<p>Radiant's implementation of ElectrumX has been improved to simplify the process of finding the reveal transaction.</p>
<h3 class="toc-h3" id="transferring-a-token" class="toc-content__target">Transferring a token</h3>
<p>Transferring is done in much the same way as native Radiant photons. For NFTs, the UTXO is spent and the script is moved to a new output. Fungible tokens are similar, except since they use normal refs instead of singletons, token UTXOs may be split and merged.</p>
<p>Any number of different tokens may be provided as inputs and outputs of a transaction. Token transfer rules are all implemented in script, with token input and output values summed within script, ensuring token supply is enforced. Token UTXOs may be positioned anywhere in a transaction's inputs and outputs and there is no restriction on the number of token UTXOs. The Radiant opcodes used to sum token values operate over any number of inputs and outputs.</p>
<h2 class="toc-h2" id="encoding" class="toc-content__target">Encoding</h2>
<p>Acquiring and holding RXD coins is a fundamental way to support the Radiant ecosystem. Your participation in the coin and token economy helps drive growth and stability. More holders and Radiant ecosystem participants can strengthen the lindy effect. Here's why buying RXD matters:</p>
<h3 class="toc-h3" id="payload-structure" class="toc-content__target">Payload structure</h3>
<p>A glyph's token data is encoded in the reveal unlocking script, identified by the string "gly" followed by a CBOR encoded token payload:</p>
<pre class="code-snippet"><code>OP_PUSH "gly"
OP_PUSH <CBOR Payload></code></pre>
<h3 class="toc-h3" id="payload-structure" class="toc-content__target">Payload structure</h3>
<p>The Glyphs protocol defines standard top level fields shown below in CDDL:</p>
<pre class="code-snippet"><code>payload = {
p: [* (number / string)] ; Array of protocol identifiers
name: tstr, ; Name of the token
? type: tstr, ; Type of the token (e.g. container, user or other custom types)
? in: [*bstr], ; Array of container token refs the token is part of
? by: [*bstr], ; Array of author token refs the token is created by
? main: { ; Main file
t: tstr, ; File mime type
b: bstr ; File bytes
},
? attrs: { * tstr => any } ; Attributes as key value pairs (e.g. color, rarity, etc)
? loc: number / bytes / string ; Location for link tokens
}</code></pre>
<p class="margin-top-sm">Example CBOR payload:</p>
<pre class="code-snippet"><code>{
p: [1, 4],
name: "My token",
ticker: "XYZ",
main: {
t: "image/jpeg",
b: <bytes>
},
in: [
<containerRefBytes>
],
by: [
<authorRefBytes>
],
}</code></pre>
<h2 class="toc-h2" id="protocols" class="toc-content__target">Protocols</h2>
<p>The <code>p</code> property contains an array of protocols used by the token. Current protocol identifiers are as follows:</p>
<div class="tbl">
<table class="tbl__table text-unit-em text-sm border-bottom border-2" aria-label="Protocols">
<thead class="tbl__header border-bottom border-2">
<tr class="tbl__row">
<th class="tbl__cell text-left" scope="col"><span
class="text-sm text-uppercase letter-spacing-lg font-semibold">ID</span></th>
<th class="tbl__cell text-left" scope="col"><span
class="text-sm text-uppercase letter-spacing-lg font-semibold">Protocol</span></th>
</tr>
</thead>
<tbody class="tbl__body">
<tr class="tbl__row">
<td class="tbl__cell" role="cell">
<div class="flex items-center">
<div class="line-height-xs"><div class="flex items-center">
<p class="code-title margin-bottom-4xs">1</p>
</div>
</div>
</td>
<td class="tbl__cell" role="cell">Fungible token</td>
</tr>
<tr class="tbl__row">
<td class="tbl__cell" role="cell">
<div class="flex items-center">
<div class="line-height-xs">
<p class="code-title margin-bottom-4xs">2</p>
</div>
</div>
</td>
<td class="tbl__cell" role="cell">Non-fungible token</td>
</tr>
<tr class="tbl__row">
<td class="tbl__cell" role="cell">
<div class="flex items-center">
<div class="line-height-xs">
<p class="code-title margin-bottom-4xs">3</p>
</div>
</div>
</td>
<td class="tbl__cell" role="cell">Data storage</td>
</tr>
<tr class="tbl__row">
<td class="tbl__cell" role="cell">
<div class="flex items-center">
<div class="line-height-xs">
<p class="code-title margin-bottom-4xs">4</p>
</div>
</div>
</td>
<td class="tbl__cell" role="cell">Decentralized mint</td>
</tr>
<tr class="tbl__row">
<td class="tbl__cell" role="cell">
<div class="flex items-center">
<div class="line-height-xs">
<p class="code-title margin-bottom-4xs">5</p>
</div>
</div>
</td>
<td class="tbl__cell" role="cell">Mutable</td>
</tr>
</tbody>
</table>
</div>
<p class="margin-top-sm">Some protocols may depend on other protocols also being implemented. For example for a mineable token, a <code>p</code> value of <code>[1, 4]</code> must be used, indicating the token implements the FT and dmint contracts.</p>
<h3 class="toc-h3" id="file-encoding" class="toc-content__target">File encoding</h3>
<p>In addition to the <code>main</code> property other files can be added to the payload. These can be either embedded or remote.</p>
<p>Embed:</p>
<pre class="code-snippet"><code> embed = {
t: tstr, ; File mime type
b: bstr ; File bytes
}</code></pre>
<p class="margin-top-sm">Remote:</p>
<pre class="code-snippet"><code> remote = {
t: tstr, ; File mime type
u: tstr ; URL
? h: bstr ; File hash
? hs: bstr ; HashStamp image (low resolution copy of image)
}</code></pre>
<p class="margin-top-sm">Example:</p>
<pre class="code-snippet"><code>{
main: {
t: "image/jpeg",
b: <bytes> // File bytes embedded in transaction
},
alt: {
t: "image/jpeg",
u: "https://url/to/image.jpg", // Link to remote file
h: <hashBytes>,
hs: <hashStampBytes>
}
}</code></pre>
<p class="margin-top-sm">If a link to a remote file is used, it is recommended to include a hash so the downloaded file can be verified.</p>
<h3 class="toc-h3" id="hashstamp" class="toc-content__target">HashStamp</h3>
<p>For remote images a HashStamp may be provided in the <code>hs</code> property. This is a low resolution, highly compressed copy of the image in WebP format. This may be desirable for people who want to store data off-chain but still have some representation of the file on-chain. It is recommended to keep HashStamps within 64x64 pixels and quality 20 to keep size to a minimum.</p>
<p>HashStamps can be used by wallets to display a version of the image if downloading the file is deemed insecure, or used as a loading placeholder similar to a BlurHash.</p>
<h3 class="toc-h3" id="types" class="toc-content__target">Types</h3>
<p>The Glyphs protocol uses types <code>container</code> and <code>user</code>, for allowing the creation of collections and associating tokens to a creator. Wallets should implement these types and render the tokens accordingly.</p>
<p>Custom types are also permitted.</p>
<h3 class="toc-h3" id="custom-fields" class="toc-content__target">Custom fields</h3>
<p>Any custom fields may be added to the payload.</p>
<h2 class="toc-h2" id="fungible-tokens" class="toc-content__target">Fungible tokens</h2>
<p>Fungible tokens must be created with the protocol <code>p</code> field set to <code>1</code>. This informs wallets that the token uses a standard fungible token script.</p>
<p>The script is a P2PKH followed by a script to enforce fungible token rules:</p>
<pre class="code-snippet"><code>// P2PKH
OP_DUP OP_HASH160 <address> OP_EQUALVERIFY OP_CHECKSIG
OP_STATESEPARATOR
// Fungible token ref
OP_PUSHINPUTREF <ref>
// Get count of ref used in outputs
OP_REFOUTPUTCOUNT_OUTPUTS OP_INPUTINDEX
// Get a hash of the script after state separator
OP_CODESCRIPTBYTECODE_UTXO OP_HASH256 OP_DUP
// Sum token value for all outputs
OP_CODESCRIPTHASHVALUESUM_UTXOS
// Sum token value for all inputs
OP_OVER OP_CODESCRIPTHASHVALUESUM_OUTPUTS
// Input sum must be greater than or equal to output sum
OP_GREATERTHANOREQUAL OP_VERIFY
// To prevent supply inflation, ref must be used within this script and ref count must be equal to contract count
OP_CODESCRIPTHASHOUTPUTCOUNT_OUTPUTS OP_NUMEQUALVERIFY</code></pre>
<p class="margin-top-sm">The script after the P2PKH must be unchanged for every transfer.</p>
<p>The protocol permits locking scripts other than P2PKH, such as multisig, time locks and other more complex scripts. The only requirement is that the script after the state separator is unchanged.</p>
<h3 class="toc-h3" id="ft-transfer" class="toc-content__target">Transfer</h3>
<p>Tokens are transferred in a similar way to regular RXD photons. The contract and ref are carried forward with each spend and UTXOs can be split and merged. Tokens may be at any position in the inputs or outputs. A transaction may also contain any number of different tokens.</p>
<h3 class="toc-h3" id="ft-melt" class="toc-content__target">Melt</h3>
<p>The contract permits output value sum to be less than input value sum. Melting fungible tokens only requires making the output value less than input value. The RXD photons backing the tokens are then reclaimed.</p>
<h2 class="toc-h2" id="non-fungible-tokens" class="toc-content__target">Non-fungible tokens</h2>
<p>Non-fungible tokens must be created with the protocol <code>p</code> field set to <code>2</code>.</p>
<p>The script is simply a singleton ref followed by a P2PKH or other locking script:</p>
<pre class="code-snippet"><code>OP_PUSHINPUTREFSINGLETON <ref> OP_DROP
OP_DUP OP_HASH160 <address> OP_EQUALVERIFY OP_CHECKSIG // P2PKH</code></pre>
<p class="margin-top-sm">Radiant rules enforce that there can only ever be one instance of a singleton ref.</p>
<h3 class="toc-h3" id="nft-transfer" class="toc-content__target">Transfer</h3>
<p>NFTs are transferred in a similar way to regular RXD photons. The singleton ref is carried forward with each spend and may be at any position in the transaction inputs or outputs.</p>
<p>Similar to fungible tokens, any number of different tokens may be present in a transaction.</p>
<h3 class="toc-h3" id="nft-melt" class="toc-content__target">Melt</h3>
<p>Melting a non-fungible token can be done in two ways:</p>
<ul class="opcode-terms-list list list--ul">
<li>Omit the ref from the outputs</li>
<li>Spend the NFT to an unspendable op return script containing the ref</li>
</ul>
<h2 class="toc-h2" id="relationships" class="toc-content__target">Relationships</h2>
<p>The Glyph protocol provides <code>in</code> and <code>by</code> arrays in the token payload for defining relationships to other tokens, such as NFT collections. Relationships can also be defined in custom properties.</p>
<p>For a token to be related its ref must be present in the commit transaction. Wallets must verify this by checking each related token's ref is in an output of the commit. This prevents authorized users creating relationships, such as assigning an author or adding NFTs to a collection they don't control.</p>
<h3 class="toc-h3" id="delegates" class="toc-content__target">Delegates</h3>
<p>Having a related token in a commit is not always practical if there are many thousands of mint transactions with the same relationship. For example, minting a large NFT collection with the same container and author tokens. To solve this a token delegate may be used.</p>
<p>The delegate is a temporary normal ref that links to one or more token refs such as a user or container token.</p>
<p>A delegate is created by a transaction containing the related tokens, and one or more outputs with the following script:</p>
<pre class="code-snippet"><code>OP_PUSHINPUTREF <ref> OP_DROP
OP_DUP OP_HASH160 <address> OP_EQUALVERIFY OP_CHECKSIG // P2PKH</code></pre>
<p class="margin-top-sm">Any number of delegates may be created to simplify bulk mints.</p>
<h3 class="toc-h3" id="verifying-related-tokens" class="toc-content__target">Verifying related tokens</h3>
<p>When a wallet does not find a related token's ref in the commit transaction, it must look for delegates within the commit script. Delegate refs must be required using a <code>OP_REQUIREINPUTREF</code> opcode in the commit script.</p>
<p>If the wallet finds required refs, it fetches the delegate creation transaction and looks for related tokens in its outputs. If the refs are found in the delegate creation transaction then the relationship is valid.</p>
<h3 class="toc-h3" id="custom-relationships" class="toc-content__target">Custom relationships</h3>
<p>Developers are free to define their own relationships separate to the <code>in</code> and <code>by</code> arrays.</p>
<h2 class="toc-h2" id="links" class="toc-content__target">Links</h2>
<p>Tokens may be linked to any resource, either tokens or off-chain resources. This has many uses such as creating a record of a token mint or even building a decentralized redirect service.</p>
<p>Links are created using the <code>loc</code> field which is used by wallets in a similar way to the HTTP location header.</p>
<p>To create a link the <code>loc</code> field is set to either a number, bytes or string:</p>
<pre class="code-snippet"><code> location = number / bytes / string</code></pre>
<ul class="margin-top-sm opcode-terms-list list list--ul">
<li><code>number</code> - Link to a token with given output index and transaction ID matching the link ref</li>
<li><code>bytes</code> - Link to a token given as ref bytes</li>
<li><code>string</code> - Link to any URI</li>
</ul>
<h2 class="toc-h2" id="mutable-tokens" class="toc-content__target">Mutable tokens</h2>
<p>Token payloads can be made mutable by using a mutability contract and adding protocol <code>5</code> to the <code>p</code> array in the token payload.</p>
<p>The mutability contract must be created in the mint transaction and assigned a singleton ref with an output index one higher than the token ref (token ref + 1).</p>
<p>The contract uses a "pay to token" script which does not contain a P2PKH or any signature checking opcodes. The contract requires the token to be present in the transaction in order to modify the payload.</p>
<p>Modify <code>mod</code> and seal <code>sl</code> operation are implemented. Seal is called to make the token immutable and enforces burning of the mutability contract.</p>
<h3 class="toc-h3" id="pay-to-token" class="toc-content__target">Pay to token</h3>
<p>With a "pay to token" script, the mutability contract is always controlled by the token owner. This means every time a token is transferred to a new owner, they automatically get access to updating the token's data. The mutability output never needs to be transferred, only called to update the data.</p>
<h3 class="toc-h3" id="fetching-mutable-data" class="toc-content__target">Fetching mutable data</h3>
<p>If a wallet receives a mutable token, the most recent data can be obtained by looking up the most recent location of the mutability ref and fetching the transaction. Data is encoded similar to a token mint, with the Glyph token payload in the unlocking script.</p>
<h3 class="toc-h3" id="script" class="toc-content__target">Script</h3>
<pre class="code-snippet"><code>// SHA256 of payload must be provided
<payloadHash> OP_DROP
OP_STATESEPARATOR
// Mutable contract ref
OP_PUSHINPUTREFSINGLETON <mutableRef>
// Build token ref (mutable ref -1)
OP_DUP 20 OP_SPLIT OP_BIN2NUM OP_1SUB OP_4 OP_NUM2BIN OP_CAT
// Check token ref exists in token output at given refdatasummary index
OP_2 OP_PICK OP_REFDATASUMMARY_OUTPUT OP_4 OP_ROLL 24 OP_MUL OP_SPLIT OP_NIP 24 OP_SPLIT OP_DROP OP_EQUALVERIFY
// Compare ref + scriptsig hash in token output to this script's ref + scriptsig hash
OP_SWAP OP_STATESCRIPTBYTECODE_OUTPUT OP_ROT OP_SPLIT OP_NIP 45 OP_SPLIT OP_DROP OP_OVER 20 OP_CAT OP_INPUTINDEX OP_INPUTBYTECODE OP_SHA256 OP_CAT OP_EQUALVERIFY
// Modify operation
OP_2 OP_PICK 6d6f64 OP_EQUAL OP_IF
// Contract script must exist unchanged in output
OP_OVER OP_CODESCRIPTBYTECODE_OUTPUT OP_INPUTINDEX OP_CODESCRIPTBYTECODE_UTXO OP_EQUALVERIFY
// State script must contain payload hash
OP_OVER OP_STATESCRIPTBYTECODE_OUTPUT 20 OP_5 OP_PICK OP_HASH256 OP_CAT 75 OP_CAT OP_EQUALVERIFY OP_ELSE
// Seal operation
OP_2 OP_PICK 736c OP_EQUALVERIFY OP_OVER OP_OUTPUTBYTECODE d8 OP_2 OP_PICK OP_CAT 6a OP_CAT OP_EQUAL OP_OVER OP_REFTYPE_OUTPUT OP_0 OP_NUMEQUAL OP_BOOLOR OP_VERIFY OP_ENDIF
// Glyph header
OP_4 OP_ROLL ${glyphMagicBytesHex} OP_EQUALVERIFY OP_2DROP OP_2DROP OP_1</code></pre>
<h3 class="toc-h3" id="unlocking-script" class="toc-content__target">Unlocking script</h3>
<p>In order to use a "pay to token" contract securely, the data must be signed. Without a signature check opcode in the contract, this must be done in a different way.</p>
<p>The contract requires the token owner to provide the token as an input. In the token's output it must include a hash of the mutability contract's unlocking script. This way, the token owner signs the updated data in the token output, the contract verifies it, and the transaction is not vulnerable to malleation. In addition to the unlocking script hash, the output must have an <code>OP_REQUIREINPUTREF</code> requiring the mutability contract as an input. This ref + hash pair is checked by the mutability contract.</p>
<p>To spend the contract the following parameters must be provided in the unlocking script</p>
<pre class="code-snippet"><code>OP_PUSH gly
OP_PUSH mod // Modify operation
OP_PUSH <cbor payload> // Updated token payload
OP_PUSH <contract output index> // Location of mutability contract UTXO in outputs
OP_PUSH <ref+hash index in token output> // Index of the ref+hash in the token output, allowing multiple authorizations in a single transaction (zero for a single update)
OP_PUSH <ref index in token output data summary> // Position of token ref in OP_REFDATASUMMARY_OUTPUT (the sorted list of refs used in all outputs)
OP_PUSH <token output index> // Location of token UTXO in outputs</code></pre>
<h3 class="toc-h3" id="authorizing-an-update" class="toc-content__target">Authorizing an update</h3>
<p>To authorize this update, the token output must have the hash of the above unlocking script following an <code>OP_REQUIREINPUTREF</code>. For example:</p>
<pre class="code-snippet"><code>// Require the mutability contract (token ref + 1)
OP_REQUIREINPUTREF a32f3628a967ce64cca282262e63879136f9c3f4f8e1125345a85c71d90b10b402000000
// Hash of mutability contract's unlocking script
OP_PUSH a204a95c54bf73975256898be5f47d7844146845f9b749408b535d12e3ad85a9
// Drop ref and hash
OP_2DROP
// Following is a standard NFT contract
OP_PUSHINPUTREFSINGLETON a32f3628a967ce64cca282262e63879136f9c3f4f8e1125345a85c71d90b10b401000000 OP_DROP
OP_DUP OP_HASH160 3a23c6b9055b533db3900e4755dd58d1234c8582 OP_EQUALVERIFY OP_CHECKSIG</code></pre>
<p class="margin-top-sm">The mutability contract will verify that the hash of the provided unlocking script, along with the necessary <code>OP_REQUIREINPUTREF</code> are contained in the token UTXO.</p>
<h3 class="toc-h3" id="restoring-token-script" class="toc-content__target">Restoring token script</h3>
<p>An optional final step is for the token owner to restore the token script to a standard NFT contract that can be recognized by wallets. The <code>OP_REQUIREINPUTREF</code> and hash are no longer required.</p>
<h2 class="toc-h2" id="decentralized-mints" class="toc-content__target">Decentralized mints</h2>
<p>Decentralized mints (dmint) are mineable tokens that can be claimed by anyone using proof-of-work. These tokens are created with protocol <code>[1, 4]</code> and are locked in a layer one smart contract.</p>
<h3 class="toc-h3" id="pow-algorithm" class="toc-content__target">PoW algorithm</h3>
<p>With a "pay to token" script, the mutability contract is always controlled by the token owner. This means every time a token is transferred to a new owMineable Glyphs use the follow proof-of-work algorithm:</p>
<pre class="code-snippet"><code>hash = sha256(sha256(
sha256(currentLocationTxid + contractRef) +
sha256(anyInputHash + anyOutputHash) +
nonce
))</code></pre>
<p class="margin-top-sm">Resulting hash must be below the target.</p>
<p><code>anyInputHash</code> and <code>anyOutputHash</code> must be the hash of any input or output in the transaction. This allows work to be bound to the miner's address and prevents nonces being stolen. This will typically be a pay-to-public-key-hash but any script can be used. The contract will verify these scripts exist.</p>
<h3 class="toc-h3" id="fetching-mutable-data" class="toc-content__target">Further information</h3>
<p>For more information including code for the mining smart contract see the <a href="https://github.com/RadiantBlockchain-Community/glyph-miner" target="_blank">Glyph Miner GitHub</a>.</p>
<h2 class="toc-h2" id="electrumx" class="toc-content__target">ElectrumX</h2>
<p>Radiant's implementation of ElectrumX has modifications to support Glyphs.</p>
<h3 class="toc-h3" id="querying" class="toc-content__target">Querying</h3>
<p>ElectrumX indexes each script with the ref zeroed out. The zeroed ref acts as a wildcard meaning a wallet can fetch all transactions for an address by using a ref with 36 zero bytes in the token script.</p>
<p>For example:</p>
<pre class="code-snippet"><code>OP_PUSHINPUTREFSINGLETON 000000000000000000000000000000000000000000000000000000000000000000000000 OP_DROP OP_DUP OP_HASH160 <address> OP_EQUALVERIFY OP_CHECKSIG</code></pre>
<p class="margin-top-sm">This script is hashed and can be used with <code>listunspent</code> and script hash subscriptions. This prevents having to perform many queries for each token ref or having to know token refs in advance.</p>
<h3 class="toc-h3" id="ref-get" class="toc-content__target">Ref get</h3>
<p>A glyph ref will point to an outpoint in the commit transaction, therefore this alone cannot be used to fetch the token payload. To simplify this task, the <code>ref.get</code> method will return the first and last locations of a ref.</p>
<p>The first location will be the reveal transaction. The last location is used to track the current location of a contract.</p>
<h3 class="toc-h3" id="list-unspent" class="toc-content__target">List unspent</h3>
<p>The <code>listunspent</code> method is improved to return an array of all refs contained in the script. Since refs are zeroed when querying for tokens, the wallet does not know the token ref in the returned UTXOs and would need to query each UTXO individually to determine the token.</p>
<p>With refs returned as part of the <code>listunspent</code> response, the wallet can build scripts without the additional queries.</p>
<br>
<hr>
<p>Guide documentation sourced from <a href="https://github.com/RadiantBlockchain-Community/glyphs-handbook/blob/master/src/README.md" target="_blank">GitHub</a></p>
<p>Further documentation about Glyph Token Standards can be found at <a href="https://github.com/Radiant-Core/Glyph-Token-Standards/tree/main" target="_blank">Radiant Core GitHub</a>:</p>
<ul>
<li><a href="https://github.com/Radiant-Core/Glyph-Token-Standards/blob/main/Glyph_v1_Photonic_Implementation.md" target="_blank">Glyph v1 Token Standard - Photonic Wallet:</a> Implementation guide</li>
<li><a href="https://github.com/Radiant-Core/Glyph-Token-Standards/blob/main/Glyph_v2_Token_Standard_Whitepaper.md" target="_blank">Glyph v2 - A Unified Token Standard for the Radiant Blockchain:</a> Technical whitepaper</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<!-- end Guide content-->
</div> <!-- end Scroll progress -->
<a class="back-to-top js-back-to-top" href="#" data-offset="100">
<svg class="cd-icon" viewBox="0 0 20 20">
<polyline points="2 13 10 5 18 13" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
</svg>
</a>
<!-- start Footer -->
<section id="footer-links" class="footer-bg max-width-100\%\@lg">
<footer class="footer padding-y-lg margin-bottom-md">
<div class="container max-width-md">
<nav>
<ul class="footer__list">
<li class="footer__item">
<h4 class="footer-h4">Ecosystem</h4>
<div><a href="https://tangem.com/en/pricing/?promocode=RADIANT" target="_blank">Tangem Wallet</a></div>
<div><a href="https://chainbow.io" target="_blank">ChainBow Wallet</a></div>
<div><a href="https://github.com/Radiant-Core/Electron-Wallet/releases" target="_blank">Electron Radiant Wallet</a></div>
<div><a href="https://photonic-wallet.com" target="_blank">Photonic Wallet - Web App</a></div>
<div><a href="https://chromewebstore.google.com/detail/photonic-wallet/ldagidbelgfoonfhbggfgmlhaccfeepb?pli=1" target="_blank">Photonic Wallet - Extension</a></div>
<div><a href="https://github.com/Radiant-Core/Photonic-Wallet" target="_blank">Photonic Wallet - Source</a></div>
<div><a href="https://glyph-miner.com" target="_blank">Glyph Miner - Web App</a></div>
<div><a href="https://github.com/Radiant-Core/Glyph-miner" target="_blank">Glyph Miner - Source</a></div>
<div><a href="https://chromewebstore.google.com/detail/warwallet/ppohfcljpmdapjfidicjpnpjcgdmgmil" target="_blank">WarWallet - Extension</a></div>
<div><a href="https://wallet.glyphium.com" target="_blank">Glyphium Wallet - Web App</a></div>
<div><a href="https://faucet.radiant4people.com" target="_blank">Faucet Mainnet</a></div>
<div><a href="https://faucet-testnet.radiant4people.com" target="_blank">Faucet Testnet</a></div>
<div><a href="https://radiantcore.org" target="_blank">Radiant Core</a></div>
<div><a href="https://radiantfoundation.org" target="_blank">Radiant Foundation</a></div>
</li>
<li class="footer__item">
<h4 class="footer-h4">Explorers</h4>
<div><a href="https://explorer.radiantblockchain.org" target="_blank">Block Explorer 1</a></div>
<div><a href="https://explorer1.rxd-radiant.com" target="_blank">Block Explorer 2</a></div>
<div><a href="https://explorer2.rxd-radiant.com" target="_blank">Block Explorer 3</a></div>
<div><a href="https://radiantcore.org/explorer/" target="_blank">Radiant Explorer 4</a></div>
<div><a href="https://radiantexplorer.com" target="_blank">Block Explorer 5</a></div>
<div><a href="https://nodes.rxd-radiant.com" target="_blank">Radiant Node Crawler</a></div>
<div><a href="https://glyph-explorer.rxd-radiant.com" target="_blank">RXD Glyph Explorer</a></div>
<div><a href="https://glyphium.com" target="_blank">Glyphium</a></div>
<div><a href="https://radiantblockchain-community.github.io/electrumx-check/" target="_blank">ElectrumX Server Status</a></div>
<div><a href="https://explorer.radiantblockchain.org/mempool-summary" target="_blank">Mempool Summary</a></div>
<div><a href="https://explorer.radiantblockchain.org/block-stats" target="_blank">Block Stats</a></div>
<div><a href="https://explorer.radiantblockchain.org/tx-stats" target="_blank">Transaction Stats</a></div>
</li>
<li class="footer__item">
<h4 class="footer-h4">Exchanges</h4>
<div><a href="https://www.mexc.com/exchange/RXD_USDT" target="_blank">MEXC RXD/USDT</a></div>
<div><a href="https://www.coinex.com/en/exchange/rxd-usdt" target="_blank">CoinEx RXD/USDT</a></div>
<div><a href="https://www.coinex.com/en/exchange/rxd-btc" target="_blank">CoinEx RXD/BTC</a></div>
<div><a href="https://nonkyc.io/market/RXD_USDT" target="_blank">NonKyc RXD/USDT</a></div>
<div><a href="https://www.xt.com/en/trade/rxd_usdt" target="_blank">XT RXD/USDT</a></div>
<div><a href="https://letsexchange.io/exchange/usdt-to-rxd?ref_id=EiDWiy7xrxZTeAiy" target="_blank">LetsExchange RXD</a></div>
<div><a href="https://simpleswap.io/coins/rxd" target="_blank">SimpleSwap RXD</a></div>
</li>
<li class="footer__item">
<h4 class="footer-h4">Technicals</h4>
<div><a href="https://github.com/RadiantBlockchain/radiant-node/blob/master/doc/whitepaper/radiant.md" target="_blank">Radiant Whitepaper</a></div>
<div><a href="https://github.com/RadiantBlockchain/radiant-node/blob/master/doc/whitepaper/radiant-system-design.md" target="_blank">Radiant System Design</a></div>
<div><a href="https://radiantcore.org/docs/" target="_blank">Technical Documentation</a></div>
<div><a href="https://github.com/Radiant-Core/Radiant-Core/releases" target="_blank">Radiant-Core Node</a></div>
<div><a href="https://github.com/Radiant-Core/RXinDexer" target="_blank">RXinDexer</a></div>
<div><a href="https://github.com/Radiant-Core/ElectrumX" target="_blank">Radiant ElectrumX</a></div>
<div><a href="https://github.com/orgs/Radiant-Core" target="_blank">GitHub - Radiant-Core</a></div>
<div><a href="https://github.com/RadiantBlockchain-Community" target="_blank">GitHub - Community</a></div>
<div><a href="https://github.com/Radiant-Core/RadiantScript" target="_blank">RadiantScript</a></div>
<div><a href="https://github.com/Radiant-Core/radiantjs" target="_blank">RadiantJS</a></div>
<div><a href="https://github.com/Radiant-Core/radiant-mcp-server" target="_blank">Radiant MCP Server</a></div>
<div><a href="https://github.com/RadiantBlockchain-Community/rxd-wasm" target="_blank">RXD.WASM/RXD-RS</a></div>
<div><a href="https://github.com/Radiant-Core/MuonPaySDK" target="_blank">Muon Pay SDK</a></div>
<div><a href="https://radiantblockchain.gitbook.io/wiki" target="_blank">Radiant Community Wiki</a></div>
</li>
<li class="footer__item">
<h4 class="footer-h4">Statistics</h4>
<div><a href="https://www.coingecko.com/en/coins/radiant" target="_blank">CoinGecko</a></div>
<div><a href="https://coinmarketcap.com/currencies/radiant" target="_blank">CoinMarketCap</a></div>
<div><a href="https://coinpaprika.com/coin/rxd-radiant" target="_blank">CoinPaprika</a></div>
<div><a href="https://www.livecoinwatch.com/price/Radiant-RXD" target="_blank">Live Coin Watch</a></div>
<div><a href="https://coincodex.com/crypto/radiant/" target="_blank">CoinCodex</a></div>
<div><a href="https://cryptorank.io/price/radiant" target="_blank">CryptoRank</a></div>
<div><a href="https://www.cryptocompare.com/coins/rxd/analysis/USDT" target="_blank">CryptoCompare</a></div>
<div><a href="https://www.coincarp.com/currencies/radiant/price/" target="_blank">CoinCarp</a></div>
<div><a href="https://minerstat.com/coin/RXD" target="_blank">Minerstat</a></div>
<div><a href="https://miningpoolstats.stream/radiant" target="_blank">MiningPoolStats</a></div>
<div><a href="https://www.hashrate.no/coins/RXD" target="_blank">Hashrate</a></div>
<div><a href="https://whattomine.com/coins/356-rxd-sha512256d" target="_blank">Whattomine</a></div>
<div><a href="https://poolbay.io/crypto/5814/radiant" target="_blank">PoolBay</a></div>
</li>
<li class="footer__item">
<h4 class="footer-h4">Communication</h4>
<div><a href="https://discord.gg/radiantblockchain" target="_blank">Discord - Main</a></div>
<div><a href="https://t.me/RadiantBlockchain" target="_blank">Telegram - Main</a></div>
<div><a href="https://t.me/rxdradiantmining" target="_blank">Telegram - Miners</a></div>
<div><a href="https://t.me/radiant_glyphium" target="_blank">Telegram - Glyphium</a></div>
<div><a href="https://x.com/Planet_Radiant" target="_blank">X @Planet_Radiant</a></div>
<div><a href="https://x.com/RadiantCoreOrg" target="_blank">X @RadiantCoreOrg</a></div>
<div><a href="https://x.com/RXDFoundation" target="_blank">X @RXDFoundation</a></div>
<div><a href="https://x.com/RXD_Community" target="_blank">X @RXD_Community</a></div>
<div><a href="https://open.substack.com/pub/nocookie9107" target="_blank">Substack - Community</a></div>
<div><a href="https://radiant-community.medium.com" target="_blank">Medium - Community</a></div>
<div><a href="https://radiantfoundation.medium.com" target="_blank">Medium - Foundation</a></div>
<div><a href="https://www.instagram.com/radiant_rxd_official" target="_blank">Instagram - Community</a></div>
<div><a href="https://www.tiktok.com/@radiantrxd_official" target="_blank">TikTok - Community</a></div>
<div><a href="https://youtube.com/@theradianttube?si=BtLaz3ZoxNneVlm1" target="_blank">YouTube - Community</a></div>
<div><a href="https://www.reddit.com/r/Radiant_RXD" target="_blank">Reddit - Main</a></div>
<div><a href="https://bitcointalk.org/index.php?topic=5436028.0;all" target="_blank">Bitcointalk</a></div>
</li>
<li class="footer__item">
<h4 class="footer-h4">Mining Pools</h4>
<div><a href="https://miningpoolstats.stream/radiant" target="_blank">MiningPoolStats Rank</a></div>
<div><a href="https://humpool.com" target="_blank">HumPool</a></div>
<div><a href="https://vipor.net/mine/rxd_pplns_1" target="_blank">Vipor</a></div>
<div><a href="https://pool.rplant.xyz/#radiant" target="_blank">Rplant Pool</a></div>
<div><a href="https://pool.kryptex.com/rxd" target="_blank">Kryptex</a></div>
<div><a href="https://woolypooly.com/en/coin/rxd" target="_blank">WoolyPooly</a></div>
<div><a href="https://satopool.com/#rxd-testnet" target="_blank">RXD Testnet Pool</a></div>
<div><a href="https://rxd.solopool.org" target="_blank">RXD SoloPool</a></div>
<div><a href="https://zergpool.com" target="_blank">ZergPool</a></div>
<div><a href="https://tw-pool.com" target="_blank">TW-Pool</a></div>
<div><a href="https://hashpool.com" target="_blank">HashPool</a></div>
<div><a href="https://9kpool.com/#RadiantPool" target="_blank">9kpool</a></div>
<div><a href="https://www.whalepool.com/coin/RXD" target="_blank">WhalePool</a></div>
</li>
<li class="footer__item">
<h4 class="footer-h4">Mining Ware</h4>
<div><a href="https://www.iceriver.io/product/iceriver-rxd-rx0/" target="_blank">ICERIVER RXD RX0 ASIC</a></div>
<div><a href="https://dragonballminer.com/en/product/dragonball-miner-a11/" target="_blank">DragonBall A11 Dual ASIC</a></div>
<div><a href="https://github.com/radifier/radiator/releases" target="_blank">ccminer+hiveos (NVIDIA)</a></div>
<div><a href="https://github.com/RadiantBlockchain/rad-bfgminer/releases" target="_blank">rad-bfgminer (AMD/NVIDIA)</a></div>
<div><a href="https://www.bzminer.com/" target="_blank">BZminer (AMD/NVIDIA)</a></div>
<div><a href="https://github.com/doktor83/SRBMiner-Multi/releases" target="_blank">SRBminer (AMD/NVIDIA)</a></div>
<div><a href="https://github.com/rigelminer/rigel/releases/" target="_blank">Rigel (NVIDIA)</a></div>
<div><a href="https://github.com/andru-kun/wildrig-multi/releases" target="_blank">wildrig (AMD/NVIDIA)</a></div>
<div><a href="https://github.com/develsoftware/GMinerRelease/releases" target="_blank">Gminer (AMD/NVIDIA)</a></div>
<div><a href="https://github.com/Lolliedieb/lolMiner-releases" target="_blank">lolminer (AMD/NVIDIA)</a></div>
</li>
</ul>
</nav>
</div>
</footer>
<!-- start DYOR -->
<section class="text-center padding-bottom-lg">
<div class="container max-width-sm">
<p class="footer-notice-main">Radiant Blockchain is a decentralized network with no central authority or ownership.</p>
<p class="footer-notice">The RXD coin provides the fuel to transact and participate on the network. Feel free to explore and engage in the network with your own due diligence and research.</p>
</div>
</section>
<!-- end DYOR -->
<!-- start Radiant socials -->
<section class="socials text-center padding-bottom-lg">
<div class="container max-width-md">
<ul class="socials__btns flex flex-center gap-sm gap-md@md gap-md@lg flex-wrap">
<li>
<a href="https://discord.gg/radiantblockchain" target="_blank">
<svg class="icon icon--md" fill="none" height="34" viewBox="0 0 34 34" width="34"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Join Radiant Discord Server</title>
<clipPath id="a">
<path d="m0 0h34v34h-34z" />
</clipPath>
<g clip-path="url(#a)">
<path
d="m28.8012 5.98939c-2.2008-1.02973-4.5541-1.77811-7.0144-2.20423-.3022.54628-.6552 1.28104-.8986 1.86554-2.6153-.39332-5.2066-.39332-7.7739 0-.2433-.5845-.6043-1.31926-.9092-1.86554-2.46296.42612-4.81895 1.17724-7.01983 2.20969-4.439193 6.70825-5.642586 13.24975-5.040888 19.69845 2.944308 2.1988 5.797698 3.5344 8.602928 4.4085.69263-.9533 1.31039-1.9666 1.84249-3.0346-1.01349-.3851-1.98422-.8603-2.90145-1.4121.24334-.1803.48136-.3687.71132-.5627 5.59443 2.6167 11.67293 2.6167 17.20053 0 .2327.194.4706.3824.7113.5627-.9199.5545-1.8933 1.0297-2.9068 1.4149.5321 1.0652 1.1472 2.0813 1.8425 3.0345 2.8079-.8741 5.664-2.2097 8.6083-4.4112.706-7.4756-1.2061-13.9572-5.0543-19.70391zm-17.4492 15.73801c-1.67939 0-3.05663-1.5678-3.05663-3.477s1.34783-3.4797 3.05663-3.4797 3.086 1.5678 3.0566 3.4797c.0027 1.9092-1.3478 3.477-3.0566 3.477zm11.2959 0c-1.6794 0-3.0567-1.5678-3.0567-3.477s1.3478-3.4797 3.0567-3.4797c1.7088 0 3.086 1.5678 3.0566 3.4797 0 1.9092-1.3478 3.477-3.0566 3.477z"
fill="var(--logo-color-invert)"/>
</g>
</svg>
</a>
</li>
<li>
<a href="https://x.com/RXDFoundation" target="_blank">
<svg class="icon icon--md" width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Follow Radiant Foundation on X</title>
<path d="M25.651 3.49316H30.2335L20.222 14.9357L31.9998 30.5065H22.7778L15.5549 21.0629L7.29022 30.5065H2.70488L13.4132 18.2674L2.11475 3.49316H11.5708L18.0997 12.125L25.651 3.49316ZM24.0426 27.7636H26.5819L10.191 6.09198H7.46615L24.0426 27.7636Z" fill="var(--logo-color-invert)"/>
<path d="M33.9094 12.2725V18.9997H31.8V12.2725H33.9094Z" fill="var(--logo-color-invert)"/>
<path d="M30.6094 12.2725V18.9997H28.5V12.2725H30.6094Z" fill="var(--logo-color-invert)"/>
<path d="M27.3093 12.2725V18.9997H25.2V12.2725H27.3093Z" fill="var(--logo-color-invert)"/>
</svg>
</a>
</li>
<li>
<a href="https://x.com/Planet_Radiant" target="_blank">
<svg class="icon icon--md" width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Follow Planet Radiant on X</title>
<path d="M25.651 3.49316H30.2335L20.222 14.9357L31.9998 30.5065H22.7778L15.5549 21.0629L7.29022 30.5065H2.70488L13.4132 18.2674L2.11475 3.49316H11.5708L18.0997 12.125L25.651 3.49316ZM24.0426 27.7636H26.5819L10.191 6.09198H7.46615L24.0426 27.7636Z" fill="var(--logo-color-invert)"/>
<path d="M30.3364 12.2725V18.9997H28.2271V12.2725H30.3364Z" fill="var(--logo-color-invert)"/>
<path d="M33.77 12.2725V18.9997H31.6606V12.2725H33.77Z" fill="var(--logo-color-invert)"/>
</svg>
</a>
</li>
<li>
<a href="https://x.com/RXD_Community" target="_blank">
<svg class="icon icon--md" width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Follow Radiant Community on X</title>
<path d="M25.651 3.49316H30.2335L20.222 14.9357L31.9998 30.5065H22.7778L15.5549 21.0629L7.29022 30.5065H2.70488L13.4132 18.2674L2.11475 3.49316H11.5708L18.0997 12.125L25.651 3.49316ZM24.0426 27.7636H26.5819L10.191 6.09198H7.46615L24.0426 27.7636Z" fill="var(--logo-color-invert)"/>
<path d="M31.053 12.2725V18.9997H28.9436V12.2725H31.053Z" fill="var(--logo-color-invert)"/>
</svg>
</a>
</li>
<li>
<a href="https://t.me/RadiantBlockchain" target="_blank">
<svg class="icon icon--md" fill="none" height="34" viewBox="0 0 34 34" width="34"
xmlns="http://www.w3.org/2000/svg">
<title>Join Radiant Telegram</title>
<path clip-rule="evenodd"
d="m29.0438 5.18549c1.6813-.70791 3.4837.71377 3.1868 2.5137l-3.5064 21.25981c-.3381 2.0499-2.5895 3.2261-4.4701 2.2046-1.5737-.8548-3.9085-2.1704-6.0127-3.5454-1.0508-.6866-4.2682-2.8882-3.8727-4.4554.3381-1.34 5.7469-6.3748 8.8378-9.3691 1.214-1.1762.6611-1.8556-.7727-.7727-3.557 2.6864-9.2676 6.7708-11.156 7.9203-1.66617 1.0141-2.53611 1.1872-3.57378 1.0141-1.89488-.3158-3.65167-.8047-5.08594-1.3993-1.938523-.8036-1.844098-3.4676-.00131-4.2434z"
fill="var(--logo-color-invert)"/>
</svg>
</a>
</li>
<li>
<a href="https://radiant-community.medium.com" target="_blank">
<svg class="icon icon--md" fill="none" height="34" viewBox="0 0 34 34" width="34"
xmlns="http://www.w3.org/2000/svg">
<title>Read about Radiant on Medium</title>
<path
d="m4.94001 10.4158c.03872-.3825-.10715-.76061-.39279-1.01806l-2.90956-3.50503v-.52357h9.03414l6.983 15.31446 6.1392-15.31446h8.6123v.52357l-2.4877 2.38517c-.2145.16348-.3209.43216-.2764.6981v17.52512c-.0445.266.0619.5346.2764.6981l2.4295 2.3852v.5236h-12.2202v-.5236l2.5168-2.4434c.2473-.2472.2473-.3199.2473-.6981v-14.1655l-6.9975 17.7724h-.9456l-8.14677-17.7724v11.9113c-.06792.5008.0984 1.0049.45099 1.3671l3.27328 3.9704v.5236h-9.28153v-.5236l3.27326-3.9704c.35002-.3628.50664-.8703.42188-1.3671z"
fill="var(--logo-color-invert)"/>
</svg>
</a>
</li>
<li>
<a href="https://www.reddit.com/r/Radiant_RXD" target="_blank">
<svg class="icon icon--md" fill="none" height="34" viewBox="0 0 34 34" width="34"
xmlns="http://www.w3.org/2000/svg">
<title>Join Radiant on Reddit</title>
<path
d="m32.262 17.3443c-.0692-1.8685-1.6378-3.3276-3.5121-3.2641-.8305.0288-1.6205.3691-2.2203.94-2.6413-1.7993-5.744-2.7855-8.9332-2.8547l1.5052-7.23762 4.9655 1.04384c.1384 1.27452 1.2802 2.19724 2.5548 2.05883 1.2745-.13841 2.1972-1.28028 2.0588-2.5548-.1384-1.27451-1.2803-2.19724-2.5548-2.05883-.7324.07497-1.3899.50173-1.7532 1.13611l-5.6863-1.13611c-.3864-.08651-.7728.15571-.8593.54787v.01153l-1.7128 8.05078c-3.2295.0519-6.37259 1.0439-9.0485 2.8547-1.36102-1.2803-3.50636-1.2168-4.78664.1499-1.280288 1.3611-1.21685 3.5064.14994 4.7867.26528.248.57094.4614.91119.6113-.02307.3403-.02307.6805 0 1.0208 0 5.1961 6.0554 9.4233 13.52371 9.4233 7.4683 0 13.5237-4.2215 13.5237-9.4233.0231-.3403.0231-.6805 0-1.0208 1.165-.5825 1.8974-1.782 1.8743-3.0854zm-23.2008 2.3241c0-1.2802 1.0438-2.3241 2.3241-2.3241s2.3241 1.0439 2.3241 2.3241c0 1.2803-1.0438 2.3242-2.3241 2.3242-1.286-.0116-2.3241-1.0439-2.3241-2.3242zm13.4776 6.3784c-1.6494 1.2399-3.6679 1.8743-5.7325 1.7878-2.0646.0865-4.083-.5479-5.7324-1.7878-.2191-.2653-.1788-.6632.0865-.8824.2307-.1903.5594-.1903.7959 0 1.3956 1.0208 3.0969 1.5398 4.827 1.4591 1.7301.0923 3.4371-.4037 4.8501-1.4129.2537-.248.6689-.2422.9169.0115.248.2538.2422.5767-.0115.8247zm-.4152-3.9735c-1.2803 0-2.3242-1.0438-2.3242-2.3241s1.0439-2.3241 2.3242-2.3241c1.2802 0 2.3241 1.0438 2.3241 2.3241.0519 1.2803-.9285 2.2722-2.2088 2.3241-.0404 0-.075 0-.1153 0z"
fill="var(--logo-color-invert)"/>
</svg>
</a>
</li>
</ul>
</div>
</section>
<!-- end Radiant Socials -->
<section class="text-center padding-bottom-lg">
<div class="container max-width-md">
<p class="footer-text-last-update">Last updated 2 May 2026</p>
</div>
</section>
<!-- end Footer -->
<script src="assets/js/scripts.js"></script>
<script src="assets/js/reading-progress.js"></script>
<script src="assets/js/table-of-contents.js"></script>
</body>
</html>