-
Notifications
You must be signed in to change notification settings - Fork 6
/
whitepaper.html
420 lines (402 loc) · 112 KB
/
whitepaper.html
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="mobile-web-app-capable" content="yes">
<title>
RChain Whitepaper (2021 draft 0.1) - HackMD
</title>
<link rel="icon" type="image/png" href="assets/favicon-red.png">
<link rel="apple-touch-icon" href="https://hackmd.io/apple-touch-icon.png">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha256-eZrrJcwDc/3uDhsdt61sL2oOBY362qM3lon1gyExkL0=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css" integrity="sha256-3iu9jgsy9TpTwXKb7bNQzqWekRX7pPK+2OLj3R922fo=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/octicons/3.5.0/octicons.min.css" integrity="sha256-QiWfLIsCT02Sdwkogf6YMiQlj4NE84MKkzEMkZnMGdg=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/themes/prism.min.css" integrity="sha256-vtR0hSWRc3Tb26iuN2oZHt3KRUomwTufNIf5/4oeCyg=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/css/basic/emojify.min.css" integrity="sha256-UOrvMOsSDSrW6szVLe8ZDZezBxh5IoIfgTwdNDgTjiU=" crossorigin="anonymous" />
<style>
<link rel="canonical" href="https://rchain.coop"></link>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script
async
src="https://www.googletagmanager.com/gtag/js?id=G-6B7FD7W88H"
></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag("js", new Date());
gtag("config", "G-6B7FD7W88H");
</script>
<script>
/**
* Function that captures a click on an outbound link in Analytics.
* This function takes a valid URL string as an argument, and uses that URL string
* as the event label. Setting the transport method to 'beacon' lets the hit be sent
* using 'navigator.sendBeacon' in browser that support it.
*/
var captureOutboundLink = function(url) {
ga('send', 'event', 'outbound', 'click', url, {
'transport': 'beacon',
'hitCallback': function(){document.location = url;}
});
}
</script>
<script src="/js/jquery-3.3.1.min.js"></script>
@charset "UTF-8";@import url(https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,500,500i|Source+Code+Pro:300,400,500|Source+Sans+Pro:300,300i,400,400i,600,600i|Source+Serif+Pro&subset=latin-ext);.hljs{display:block;background:#fff;padding:.5em;color:#333;overflow-x:auto}.hljs-comment,.hljs-meta{color:#969896}.hljs-emphasis,.hljs-quote,.hljs-string,.hljs-strong,.hljs-template-variable,.hljs-variable{color:#df5000}.hljs-keyword,.hljs-selector-tag,.hljs-type{color:#a71d5d}.hljs-attribute,.hljs-bullet,.hljs-literal,.hljs-number,.hljs-symbol{color:#0086b3}.hljs-built_in,.hljs-builtin-name{color:#005cc5}.hljs-name,.hljs-section{color:#63a35c}.hljs-tag{color:#333}.hljs-attr,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-title{color:#795da3}.hljs-addition{color:#55a532;background-color:#eaffea}.hljs-deletion{color:#bd2c00;background-color:#ffecec}.hljs-link{text-decoration:underline}.markdown-body{font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body:after,.markdown-body:before{display:table;content:""}.markdown-body:after{clear:both}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:#c00}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e7e7e7;border:0}.markdown-body blockquote{font-size:16px;padding:0 1em;color:#777;border-left:.25em solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd,.popover kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;color:#555;vertical-align:middle;background-color:#fcfcfc;border:1px solid #ccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb}.markdown-body .loweralpha{list-style-type:lower-alpha}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 code,.markdown-body h1 tt,.markdown-body h2 code,.markdown-body h2 tt,.markdown-body h3 code,.markdown-body h3 tt,.markdown-body h4 code,.markdown-body h4 tt,.markdown-body h5 code,.markdown-body h5 tt,.markdown-body h6 code,.markdown-body h6 tt{font-size:inherit}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#777}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol.no-list,.markdown-body ul.no-list{padding:0;list-style-type:none}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{padding-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.markdown-body table th{font-weight:700}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{max-width:none;vertical-align:text-top;background-color:transparent}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{display:block;float:left;width:auto;padding:7px;margin:13px 0 0;overflow:hidden;border:1px solid #ddd}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{display:block;padding:5px 0 0;clear:both;color:#333}.markdown-body span.align-center{display:block;overflow:hidden;clear:both}.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{display:block;overflow:hidden;clear:both}.markdown-body span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.markdown-body code,.markdown-body tt{padding:0;padding-top:.2em;padding-bottom:.2em;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before,.markdown-body tt:after,.markdown-body tt:before{letter-spacing:-.2em;content:"\00a0"}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code,.markdown-body pre tt{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code:after,.markdown-body pre code:before,.markdown-body pre tt:after,.markdown-body pre tt:before{content:normal}.markdown-body .csv-data td,.markdown-body .csv-data th{padding:5px;overflow:hidden;font-size:12px;line-height:1;text-align:left;white-space:nowrap}.markdown-body .csv-data .blob-line-num{padding:10px 8px 9px;text-align:right;background:#fff;border:0}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{font-weight:700;background:#f8f8f8;border-top:0}.news .alert .markdown-body blockquote{padding:0 0 0 40px;border:0 none}.activity-tab .news .alert .commits,.activity-tab .news .markdown-body blockquote{padding-left:0}.task-list-item{list-style-type:none}.task-list-item label{font-weight:400}.task-list-item.enabled label{cursor:pointer}.task-list-item+.task-list-item{margin-top:3px}.task-list-item-checkbox{float:left;margin:.31em 0 .2em -1.3em!important;vertical-align:middle;cursor:default!important}.markdown-body{padding-top:40px;padding-bottom:40px;max-width:758px;overflow:visible!important;position:relative}.markdown-body .emoji{vertical-align:top}.markdown-body pre{border:inherit!important}.markdown-body code{color:inherit!important}.markdown-body pre code .wrapper{display:-moz-inline-flex;display:-ms-inline-flex;display:-o-inline-flex;display:inline-flex}.markdown-body pre code .gutter{float:left;overflow:hidden;-webkit-user-select:none;user-select:none}.markdown-body pre code .gutter.linenumber{text-align:right;position:relative;display:inline-block;cursor:default;z-index:4;padding:0 8px 0 0;min-width:20px;box-sizing:content-box;color:#afafaf!important;border-right:3px solid #6ce26c!important}.markdown-body pre code .gutter.linenumber>span:before{content:attr(data-linenumber)}.markdown-body pre code .code{float:left;margin:0 0 0 16px}.markdown-body .gist .line-numbers{border-left:none;border-top:none;border-bottom:none}.markdown-body .gist .line-data{border:none}.markdown-body .gist table{border-spacing:0;border-collapse:inherit!important}.markdown-body code[data-gist-id]{background:none;padding:0}.markdown-body code[data-gist-id]:after,.markdown-body code[data-gist-id]:before{content:""}.markdown-body code[data-gist-id] .blob-num{border:unset}.markdown-body code[data-gist-id] table{overflow:unset;margin-bottom:unset}.markdown-body code[data-gist-id] table tr{background:unset}.markdown-body[dir=rtl] pre{direction:ltr}.markdown-body[dir=rtl] code{direction:ltr;unicode-bidi:embed}.markdown-body .alert>p{margin-bottom:0}.markdown-body pre.abc,.markdown-body pre.flow-chart,.markdown-body pre.graphviz,.markdown-body pre.mermaid,.markdown-body pre.sequence-diagram,.markdown-body pre.vega{text-align:center;background-color:inherit;border-radius:0;white-space:inherit;overflow:visible}.markdown-body pre.abc>code,.markdown-body pre.flow-chart>code,.markdown-body pre.graphviz>code,.markdown-body pre.mermaid>code,.markdown-body pre.sequence-diagram>code,.markdown-body pre.vega>code{text-align:left}.markdown-body pre.abc>svg,.markdown-body pre.flow-chart>svg,.markdown-body pre.graphviz>svg,.markdown-body pre.mermaid>svg,.markdown-body pre.sequence-diagram>svg,.markdown-body pre.vega>svg{max-width:100%;height:100%}.markdown-body pre>code.wrap{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.markdown-body .alert>p,.markdown-body .alert>ul{margin-bottom:0}.markdown-body summary{display:list-item}.markdown-body summary:focus{outline:none}.markdown-body details summary{cursor:pointer}.markdown-body details:not([open])>:not(summary){display:none}.markdown-body figure{margin:1em 40px}.markdown-body .mark,.markdown-body mark{background-color:#fff1a7}.vimeo,.youtube{cursor:pointer;display:table;text-align:center;background-position:50%;background-repeat:no-repeat;background-size:contain;background-color:#000;overflow:hidden}.vimeo,.youtube{position:relative;width:100%}.youtube{padding-bottom:56.25%}.vimeo img{width:100%;object-fit:contain;z-index:0}.youtube img{object-fit:cover;z-index:0}.vimeo iframe,.youtube iframe,.youtube img{width:100%;height:100%;position:absolute;top:0;left:0}.vimeo iframe,.youtube iframe{vertical-align:middle;z-index:1}.vimeo .icon,.youtube .icon{position:absolute;height:auto;width:auto;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;opacity:.3;transition:opacity .2s;z-index:0}.vimeo:hover .icon,.youtube:hover .icon{opacity:.6;transition:opacity .2s}.slideshare .inner,.speakerdeck .inner{position:relative;width:100%}.slideshare .inner iframe,.speakerdeck .inner iframe{position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:100%}.MJX_Assistive_MathML{display:none}#MathJax_Message{z-index:1000!important}.ui-infobar{position:relative;z-index:2;max-width:760px;margin:25px auto -25px;color:#777}.toc .invisable-node{list-style-type:none}.ui-toc{position:fixed;bottom:20px;z-index:998}.ui-toc.both-mode{margin-left:8px}.ui-toc.both-mode .ui-toc-label{height:40px;padding:10px 4px;border-top-left-radius:0;border-bottom-left-radius:0}.ui-toc-label{background-color:#e6e6e6;border:none;color:#868686;transition:opacity .2s}.ui-toc .open .ui-toc-label{opacity:1;color:#fff;transition:opacity .2s}.ui-toc-label:focus{opacity:.3;background-color:#ccc;color:#000}.ui-toc-label:hover{opacity:1;background-color:#ccc;transition:opacity .2s}.ui-toc-dropdown{margin-top:20px;margin-bottom:20px;padding-left:10px;padding-right:10px;max-width:45vw;width:25vw;max-height:70vh;overflow:auto;text-align:inherit}.ui-toc-dropdown>.toc{max-height:calc(70vh - 100px);overflow:auto}.ui-toc-dropdown[dir=rtl] .nav{padding-right:0;letter-spacing:.0029em}.ui-toc-dropdown a{overflow:hidden;text-overflow:ellipsis;white-space:pre}.ui-toc-dropdown .nav>li>a{display:block;padding:4px 20px;font-size:13px;font-weight:500;color:#767676}.ui-toc-dropdown .nav>li:first-child:last-child > ul,.ui-toc-dropdown .toc.expand ul{display:block}.ui-toc-dropdown .nav>li>a:focus,.ui-toc-dropdown .nav>li>a:hover{padding-left:19px;color:#000;text-decoration:none;background-color:transparent;border-left:1px solid #000}.ui-toc-dropdown[dir=rtl] .nav>li>a:focus,.ui-toc-dropdown[dir=rtl] .nav>li>a:hover{padding-right:19px;border-left:none;border-right:1px solid #000}.ui-toc-dropdown .nav>.active:focus>a,.ui-toc-dropdown .nav>.active:hover>a,.ui-toc-dropdown .nav>.active>a{padding-left:18px;font-weight:700;color:#000;background-color:transparent;border-left:2px solid #000}.ui-toc-dropdown[dir=rtl] .nav>.active:focus>a,.ui-toc-dropdown[dir=rtl] .nav>.active:hover>a,.ui-toc-dropdown[dir=rtl] .nav>.active>a{padding-right:18px;border-left:none;border-right:2px solid #000}.ui-toc-dropdown .nav .nav{display:none;padding-bottom:10px}.ui-toc-dropdown .nav>.active>ul{display:block}.ui-toc-dropdown .nav .nav>li>a{padding-top:1px;padding-bottom:1px;padding-left:30px;font-size:12px;font-weight:400}.ui-toc-dropdown[dir=rtl] .nav .nav>li>a{padding-right:30px}.ui-toc-dropdown .nav .nav>li>ul>li>a{padding-top:1px;padding-bottom:1px;padding-left:40px;font-size:12px;font-weight:400}.ui-toc-dropdown[dir=rtl] .nav .nav>li>ul>li>a{padding-right:40px}.ui-toc-dropdown .nav .nav>li>a:focus,.ui-toc-dropdown .nav .nav>li>a:hover{padding-left:29px}.ui-toc-dropdown[dir=rtl] .nav .nav>li>a:focus,.ui-toc-dropdown[dir=rtl] .nav .nav>li>a:hover{padding-right:29px}.ui-toc-dropdown .nav .nav>li>ul>li>a:focus,.ui-toc-dropdown .nav .nav>li>ul>li>a:hover{padding-left:39px}.ui-toc-dropdown[dir=rtl] .nav .nav>li>ul>li>a:focus,.ui-toc-dropdown[dir=rtl] .nav .nav>li>ul>li>a:hover{padding-right:39px}.ui-toc-dropdown .nav .nav>.active:focus>a,.ui-toc-dropdown .nav .nav>.active:hover>a,.ui-toc-dropdown .nav .nav>.active>a{padding-left:28px;font-weight:500}.ui-toc-dropdown[dir=rtl] .nav .nav>.active:focus>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active:hover>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active>a{padding-right:28px}.ui-toc-dropdown .nav .nav>.active>.nav>.active:focus>a,.ui-toc-dropdown .nav .nav>.active>.nav>.active:hover>a,.ui-toc-dropdown .nav .nav>.active>.nav>.active>a{padding-left:38px;font-weight:500}.ui-toc-dropdown[dir=rtl] .nav .nav>.active>.nav>.active:focus>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active>.nav>.active:hover>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active>.nav>.active>a{padding-right:38px}.markdown-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,sans-serif}html[lang^=ja] .markdown-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,Osaka,Meiryo,メイリオ,MS Gothic,MS\ ゴシック,sans-serif}html[lang=zh-tw] .markdown-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,PingFang TC,Microsoft JhengHei,微軟正黑,sans-serif}html[lang=zh-cn] .markdown-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,PingFang SC,Microsoft YaHei,微软雅黑,sans-serif}html .markdown-body[lang^=ja]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,Osaka,Meiryo,メイリオ,MS Gothic,MS\ ゴシック,sans-serif}html .markdown-body[lang=zh-tw]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,PingFang TC,Microsoft JhengHei,微軟正黑,sans-serif}html .markdown-body[lang=zh-cn]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,PingFang SC,Microsoft YaHei,微软雅黑,sans-serif}html[lang^=ja] .ui-toc-dropdown{font-family:Source Sans Pro,Helvetica,Arial,Meiryo UI,MS PGothic,MS\ Pゴシック,sans-serif}html[lang=zh-tw] .ui-toc-dropdown{font-family:Source Sans Pro,Helvetica,Arial,Microsoft JhengHei UI,微軟正黑UI,sans-serif}html[lang=zh-cn] .ui-toc-dropdown{font-family:Source Sans Pro,Helvetica,Arial,Microsoft YaHei UI,微软雅黑UI,sans-serif}html .ui-toc-dropdown[lang^=ja]{font-family:Source Sans Pro,Helvetica,Arial,Meiryo UI,MS PGothic,MS\ Pゴシック,sans-serif}html .ui-toc-dropdown[lang=zh-tw]{font-family:Source Sans Pro,Helvetica,Arial,Microsoft JhengHei UI,微軟正黑UI,sans-serif}html .ui-toc-dropdown[lang=zh-cn]{font-family:Source Sans Pro,Helvetica,Arial,Microsoft YaHei UI,微软雅黑UI,sans-serif}.ui-affix-toc{position:fixed;top:0;max-width:15vw;max-height:70vh;overflow:auto}.back-to-top,.expand-toggle,.go-to-bottom{display:block;padding:4px 10px;margin-top:10px;margin-left:10px;font-size:12px;font-weight:500;color:#999}.back-to-top:focus,.back-to-top:hover,.expand-toggle:focus,.expand-toggle:hover,.go-to-bottom:focus,.go-to-bottom:hover{color:#563d7c;text-decoration:none}.back-to-top,.go-to-bottom{margin-top:0}.ui-user-icon{width:20px;height:20px;display:block;border-radius:50%;margin-top:2px;margin-bottom:2px;margin-right:5px;background-position:50%;background-repeat:no-repeat;background-size:cover}.ui-user-icon.small{width:18px;height:18px;display:inline-block;vertical-align:middle;margin:0 0 .2em}.ui-infobar>small>span{line-height:22px}.ui-infobar>small .dropdown{display:inline-block}.ui-infobar>small .dropdown a:focus,.ui-infobar>small .dropdown a:hover{text-decoration:none}.ui-more-info{color:#888;cursor:pointer;vertical-align:middle}.ui-more-info .fa{font-size:16px}.ui-connectedGithub,.ui-published-note{color:#888}.ui-connectedGithub{line-height:23px;white-space:nowrap}.ui-connectedGithub a.file-path{color:#888;text-decoration:none;padding-left:22px}.ui-connectedGithub a.file-path:active,.ui-connectedGithub a.file-path:hover{color:#888;text-decoration:underline}.ui-connectedGithub .fa{font-size:20px}.ui-published-note .fa{font-size:20px;vertical-align:top}.unselectable{-webkit-user-select:none;-o-user-select:none;user-select:none}.selectable{-webkit-user-select:text;-o-user-select:text;user-select:text}@media print{blockquote,div,img,pre,table{page-break-inside:avoid!important}a[href]:after{font-size:12px!important}}.markdown-body.slides{position:relative;z-index:1;color:#222}.markdown-body.slides:before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;background-color:currentColor;box-shadow:0 0 0 50vw}.markdown-body.slides section[data-markdown]{position:relative;margin-bottom:1.5em;background-color:#fff;text-align:center}.markdown-body.slides section[data-markdown] code{text-align:left}.markdown-body.slides section[data-markdown]:before{content:"";display:block;padding-bottom:56.23%}.markdown-body.slides section[data-markdown]>div:first-child{position:absolute;top:50%;left:1em;right:1em;transform:translateY(-50%);max-height:100%;overflow:hidden}.markdown-body.slides section[data-markdown]>ul{display:inline-block}.markdown-body.slides>section>section+section:after{content:"";position:absolute;top:-1.5em;right:1em;height:1.5em;border:3px solid #777}.site-ui-font{font-family:Source Sans Pro,Helvetica,Arial,sans-serif}html[lang^=ja] .site-ui-font{font-family:Source Sans Pro,Helvetica,Arial,Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,Osaka,Meiryo,メイリオ,MS Gothic,MS\ ゴシック,sans-serif}html[lang=zh-tw] .site-ui-font{font-family:Source Sans Pro,Helvetica,Arial,PingFang TC,Microsoft JhengHei,微軟正黑,sans-serif}html[lang=zh-cn] .site-ui-font{font-family:Source Sans Pro,Helvetica,Arial,PingFang SC,Microsoft YaHei,微软雅黑,sans-serif}body{font-smoothing:subpixel-antialiased!important;-webkit-font-smoothing:subpixel-antialiased!important;-moz-osx-font-smoothing:auto!important;text-shadow:0 0 1em transparent,1px 1px 1.2px rgba(0,0,0,.004);-webkit-overflow-scrolling:touch;letter-spacing:.025em;font-family:Source Sans Pro,Helvetica,Arial,sans-serif}html[lang^=ja] body{font-family:Source Sans Pro,Helvetica,Arial,Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,Osaka,Meiryo,メイリオ,MS Gothic,MS\ ゴシック,sans-serif}html[lang=zh-tw] body{font-family:Source Sans Pro,Helvetica,Arial,PingFang TC,Microsoft JhengHei,微軟正黑,sans-serif}html[lang=zh-cn] body{font-family:Source Sans Pro,Helvetica,Arial,PingFang SC,Microsoft YaHei,微软雅黑,sans-serif}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}abbr[data-original-title],abbr[title]{cursor:help}body.modal-open{overflow-y:auto;padding-right:0!important}
</style>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js" integrity="sha256-3Jy/GbSLrg0o9y5Z5n1uw0qxZECH7C6OQpVBgNFYa0g=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js" integrity="sha256-g6iAfvZp+nDQ2TdTR/VVKJf3bGro4ub5fvWSWVRi2NE=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.9/es5-shim.min.js" integrity="sha256-8E4Is26QH0bD52WoQpcB+R/tcWQtpzlCojrybUd7Mxo=" crossorigin="anonymous"></script>
<![endif]-->
</head>
<body>
<div id="doc" class="markdown-body container-fluid comment-inner comment-enabled" data-hard-breaks="true" style=""><div style="text-align:center"><img src="https://blog.rchain.coop/wp-content/uploads/2021/03/Logo_Vertical.png"></div><p style="font-size: 55px ; text-align: center">Whitepaper 2021 (Ver 0.1)</p><br><br><br><br><h2 id="Abstract" data-id="Abstract" style=""><a class="anchor hidden-xs" href="#Abstract" title="Abstract"><span class="octicon octicon-link"></span></a><span>Abstract</span></h2><p><span>Based on the revolutionary Rho calculus, RChain solves a series of problems preventing blockchain platforms from realizing mainstream adoption.</span></p><p><span>Its fast and scalable conflict detection algorithm accompanied with Casper CBC Proof of Stake consensus allows:</span></p><p><span>⇨ all nodes to produce and verify blocks concurrently without global epochs so it becomes the first smart contract platform to achieve single-shard scalability; and</span></p><p><span>⇨ large data to be stored directly on chain, removing the dependency on other data storage solutions such as IPFS.</span></p><p><span>Built on Rholang, RChain’s native programming language, RChain is the first chain to allow any complicated cross-shard transactions to be verified and finalized atomically and concurrently by all involved shards. This means the cross shard transactions can be done seamlessly and safely just as within a single shard. It will also be equipped with a Rho calculus based behavioural type system.</span></p><p><span>This allows smart contracts to be formally verified quickly in a concurrent and sharded setting, which makes possible the orchestration of large quantities of smart contracts. Its unique reactive smart contract system is more suitable than other chains’ active systems for time sensitive applications such as Defi. RChain’s unique technology makes it the best candidate to build a functional world computer.</span></p><h2 id="Introduction-and-Motivation" data-id="Introduction-and-Motivation" style=""><a class="anchor hidden-xs" href="#Introduction-and-Motivation" title="Introduction-and-Motivation"><span class="octicon octicon-link"></span></a><span>Introduction and Motivation</span></h2><p><span>How difficult are these times? By many estimates we have lost over </span><a href="https://en.wikipedia.org/wiki/Decline_in_insect_populations" target="_blank" rel="noopener"><span>70% of insects</span></a><span> (by biomass) globally. Stop and let that sink in. How many different ecosystems depend on insects? We are not just talking about pollinators like bees, which would be devastating enough; we are talking about the full range of insects. The correct response to this is for your mouth to get dry and a very sick feeling to arise in your gut. This is the harbinger of the 6th mass extinction on planet Earth.</span></p><p><span>Even Goldman Sachs</span><a href="https://www.goldmansachs.com/insights/pages/gs-research/taking-the-heat/report.pdf" target="_blank" rel="noopener"><span> is acknowledging</span></a><span> the global scale of climate change. Their cheery notion of how to profit from it might be adorable if it weren’t so misguided. Neil deGrasse Tyson is not wrong </span><a href="https://www.cnn.com/2017/09/17/us/neil-degrasse-tyson-on-climate-change-cnntv/index.html" target="_blank" rel="noopener"><span>when mentioning on CNN</span></a><span> that we don’t have the technology to move our coastal cities inland by 20 miles in the next 20 years, but don’t let this view lull you into thinking climate change is all about sea-level rise. Look no further than the </span><a href="https://www.latimes.com/local/california/la-me-southern-california-wildfires-live-updates-htmlstory.html" target="_blank" rel="noopener"><span>LA fires</span></a><span> (such as the current one on the Warner Bros lot). Fires will come with the floods.</span></p><p><span>Our drinking water is also in peril. The major aquifer under India is </span><a href="https://india.mongabay.com/2018/06/indias-groundwater-crisis-fueled-by-intense-pumping-needs-urgent-management/" target="_blank" rel="noopener"><span>down to one-quarter</span></a><span> of what it was. Due to glacier melt, it will not be refreshed. Think about what this means for farmable land in the region, then extrapolate. Arable land tomorrow will be very different from what it is today. This will have massive impacts on supply chain management.</span></p><p><span>Lest you get the wrong idea, this document is not all doom and gloom. This document is about hope—the kind of hope that is beyond reason and opens the way for the transformative power of love. Still, everything presented here will be grounded in reason with a sound mathematical basis. In fact, we are going to need both reason and love, head and heart, and maybe even a third force, working in concert to find our way out of the mess we have created for ourselves.</span></p><h3 id="Coordination-Technology" data-id="Coordination-Technology" style=""><a class="anchor hidden-xs" href="#Coordination-Technology" title="Coordination-Technology"><span class="octicon octicon-link"></span></a><span>Coordination Technology</span></h3><p><span>If we are going to get through the upcoming decades and build a world based not on a sustainable culture, but a </span><em><span>regenerative</span></em><span> culture, we are going to have to coordinate in a manner that we have never coordinated before in the history of humanity. Fortunately, coordination is </span><em><span>Homo sapiens’</span></em><span> </span><a href="https://www.ynharari.com/book/sapiens/" target="_blank" rel="noopener"><span>superpower</span></a><span>. One hairless biped couldn’t stand a chance against a woolly mammoth. By working together in groups early hunters brought them to extinction.</span></p><p><span>In the modern era, we have amplified our superpower with three major tools: capital, governance, and social telecommunications. Unfortunately, all three of these have become badly in need of a reboot. Capital, whose original purpose is to help us take care of each other and the planet, is now stuck in the hands of a few. Regardless of your politics, you must acknowledge that this dramatically reduces the number of coordination models we can explore using capital at a time when we are in need of expanding our modes of coordination.</span></p><p><span>Governance is already under transformative pressure because of Internet technologies. These technologies, which can bring fact-checking and video records of political behavior to the fingertips of virtually every citizen, make transparency and accountability so imminent that resistance to them must attack truth itself. The fake news epidemic is a symptom of the deathrows of dictatorial impulses. World governments are </span><a href="https://www.theguardian.com/environment/2019/dec/14/un-climate-talks-drag-on-as-rifts-scupper-hopes-of-breakthrough" target="_blank" rel="noopener"><span>moving too slowly</span></a><span> to address the problem, and many, such as the US, are actually in </span><a href="https://insideclimatenews.org/news/19122019/trump-climate-policy-record-rollback-fossil-energy-history-candidate-profile" target="_blank" rel="noopener"><span>denial</span></a><span> of the existential crisis we are facing despite the overwhelming scientific consensus, turning a blind eye to the flooding, fires, and famine already in progress. This inability to act in a timely manner on behalf of their citizens is due to the majority of them being corrupted to the core.</span></p><p><span>Likewise, the </span><a href="https://intelligence.house.gov/social-media-content/" target="_blank" rel="noopener"><span>centralized social media</span></a><span> have reached the point where, like Facebook, they can be weaponized by foreign powers to influence the outcomes of elections in major democratic countries. Further, the draconian responses to these abuses (such as Facebook’s frequent flirtations with censorship) are just as worrisome. Democracy vitally depends on unrestricted access to public information.</span></p><h3 id="Self-sovereign-identity-data-privacy-and-decentralization" data-id="Self-sovereign-identity-data-privacy-and-decentralization" style=""><a class="anchor hidden-xs" href="#Self-sovereign-identity-data-privacy-and-decentralization" title="Self-sovereign-identity-data-privacy-and-decentralization"><span class="octicon octicon-link"></span></a><span>Self-sovereign identity, data privacy, and decentralization</span></h3><p><span>This last point has been a concern of both the market and the public sector alike. The market has responded to the dominance by a few centralized companies of the digital asset management platform capabilities by pursuing key alternatives: self-sovereign identity, data privacy, and decentralization. These pursuits have all converged on the technology known as blockchain.</span></p><h4 id="Self-sovereign-identity" data-id="Self-sovereign-identity" style=""><a class="anchor hidden-xs" href="#Self-sovereign-identity" title="Self-sovereign-identity"><span class="octicon octicon-link"></span></a><span>Self-sovereign identity</span></h4><p><span>The market has experienced increasing concern over Facebook and Google’s dominance of online identity. Virtually every online service offers (in fact, prefers) registration and login via Facebook or Google. This means just two companies control the online identities of hundreds of millions of people on the Internet. The response to this serious threat to online independence and personal privacy is the development of </span><a href="https://medium.com/metadium/introduction-to-self-sovereign-identity-and-its-10-guiding-principles-97c1ba603872" target="_blank" rel="noopener"><span>self-sovereign identity</span></a><span>—a term referring to the idea that people should identify themselves and reveal just what they want to reveal in any particular communications context</span><a href="https://medium.com/metadium/introduction-to-self-sovereign-identity-and-its-10-guiding-principles-97c1ba603872" target="_blank" rel="noopener"><span>.</span></a><span> The data they reveal should be verified via a combination of cryptographic services and a web of trusted parties rather than any single provider.</span></p><h4 id="Data-privacy" data-id="Data-privacy" style=""><a class="anchor hidden-xs" href="#Data-privacy" title="Data-privacy"><span class="octicon octicon-link"></span></a><span>Data privacy</span></h4><p><span>As with self-sovereign identity, the market has grown increasingly anxious over the hoarding of personal information by the large online companies, especially in the wake of the number of security breaches these companies have experienced in the past several years. Many terms have entered the common parlance describing the growing public anxiety. One example, </span><a href="https://en.wikipedia.org/wiki/Surveillance_capitalism" target="_blank" rel="noopener"><span>surveillance capitalism</span></a><span>, describes the fact that the consumer (and their personal data) has become the product which these major online providers sell to advertisers, as well as more nefarious agencies, such as </span><a href="https://www.nytimes.com/2018/03/19/technology/facebook-cambridge-analytica-explained.html" target="_blank" rel="noopener"><span>Cambridge Analytica</span></a><span>, the company largely acknowledged to be the architect of Britain’s Brexit vote and involved in the election of Donald Trump.</span></p><p><a href="https://solid.mit.edu/" target="_blank" rel="noopener"><span>Solutions</span></a><span> for personal data vaults have come from many sectors, including the World Wide Web’s inventor, Sir Tim Berners-Lee. Simultaneously, the public sector has responded with fairly strong regulations, such as the European Union’s GDPR.</span></p><h4 id="Decentralization-and-the-blockchain" data-id="Decentralization-and-the-blockchain" style=""><a class="anchor hidden-xs" href="#Decentralization-and-the-blockchain" title="Decentralization-and-the-blockchain"><span class="octicon octicon-link"></span></a><span>Decentralization and the blockchain</span></h4><p><span>More generally, the market has been exploring </span><a href="https://en.wikipedia.org/wiki/Decentralization" target="_blank" rel="noopener"><span>decentralized alternatives</span></a><span> to building the kinds of online services that have sprung up and insinuated themselves into modern life up over the last few decades. None is more prominent than the blockchain.</span></p><p><span>At the core of every blockchain (at least those that deserve the name) is an economically-secured, leaderless consensus algorithm. Essentially, algorithms of this type—be they proof of work, proof of stake, or some other kind—allow computer programs that do not trust one another to come to agreement on a value. Since they agree on the value they can store a local copy for easy access and only run the algorithm if there is a change to that value. Such a capacity, if it were scalable enough, makes it possible to deploy a global decentralized data network.</span></p><p><span>The importance of such a breakthrough needs to be called out. The last 15 years of development of online services have all been about digital asset management platforms, such as GitHub, Spotify, Facebook, Instagram, Twitter, Dropbox, GMail, Google Maps, etc. They help billions of people upload, disseminate, and manage zettabytes of data. Even the second wave of Internet services, including PayPal, AirBnB, and Uber (sometimes called the sharing economy) is also filled with digital asset management platforms that just happen to connect to physical and other kinds of assets.</span></p><p><span>The fact that it’s all about the data has consequences for our need to coordinate in the face of climate change. In just the same way that concentration of capital in the hands of a few limits the number of coordination models available to us to implement via capital, the concentration of data in the hands of a few has the potential to limit the coordination models available to us to implement via data and social telecommunications. While many of the online digital asset management platforms began with more open models, they are becoming less open everyday. Google no longer has the motto “Don’t be evil.” Facebook has gone through several waves of censorship. When Microsoft acquired GitHub, developers from several geopolitical regions were disenfranchised from their code.</span></p><p><span>The emergence of a decentralized global data network represents a major shift, yet the potential of the blockchain to completely upend the market doesn’t stop there. Having developed the consensus algorithm known as proof-of-work, the Bitcoin network chose to use it to store a ledger recording the balances at Bitcoin holder’s addresses. This choice has obvious but limited utility. A more sophisticated choice for what to store with your consensus algorithm is the state of the virtual machine. This choice, originally conceived and developed by Ethereum, turns the global data store into a global computer. This computer runs everywhere and nowhere. Any time a local instance of the computer is killed, two more can take its place somewhere else on Earth.</span></p><h3 id="Blockchain-and-scalability" data-id="Blockchain-and-scalability" style=""><a class="anchor hidden-xs" href="#Blockchain-and-scalability" title="Blockchain-and-scalability"><span class="octicon octicon-link"></span></a><span>Blockchain and scalability</span></h3><p><span>Of course, the promise of a real shift towards decentralization of these services built on blockchain technology is predicated on scalability. If we are to base our analysis of this question on the proof-of-work blockchains like Bitcoin and Ethereum, we might reach a resounding “no, it cannot scale” as our conclusion. Proof-of-work is inherently wasteful, spending inordinate compute cycles. Essentially, the protocol trades heat for security, and only a tenuous security at that.</span></p><p><span>Further, even if the proof-of-work consensus algorithm could scale, Ethereum’s choice of virtual machine is a </span><em><span>sequential</span></em><span> machine, meaning that all transactions must be processed sequentially through the machine. However, most transactions are isolated, and are processed concurrently. Someone buying an empanada in Chile is touching different financial resources than someone else buying grilled tofu on the streets of Shanghai. They can and do proceed independently. To understand what the introduction of a sequential virtual machine would do, think of an eight-lane freeway. What happens when all of those lanes get funneled down to one? Worse still, because it is sequential, as you add more server nodes to the network, it has more contention and as a result, adds more computational resources causing the network to slow down.</span></p><p><span>Finally, even if it were possible to scale such a virtual machine, this kind of platform, one that enables developers to write programs on the global computer, exposes itself to a massive security risk, namely those very user-defined smart contracts. The core protocol could be delivered from heaven on high, perfect in every way, yet because pesky human developers are writing programs on top of this global computer, they will have errors. The DAO bug, in which $50M was drained from a $150M pool, was a problem in user-level code, not core protocol code. The fact that these incredibly damaging errors have been relatively sparse is only because no one is building serious applications on Ethereum because it doesn’t scale. In fact, the DAO bug itself was recoverable precisely because Ethereum doesn’t scale. Imagine what would have happened to the network if Ethereum had been running at Visa speeds of 40K transactions per second instead of the 10 transactions/sec it was clocking at the time.</span></p><p><span>To recap, the blockchain comes along at a time when we really need it, and we need it not just because there is a global concern for the centralization of capital and data assets, but because we need to reboot our coordination infrastructure to address the consequences of climate change, which poses an existential threat to humanity. RChain was developed in this context: to answer these questions in a timeframe that will matter.</span></p><h2 id="RChain" data-id="RChain" style=""><a class="anchor hidden-xs" href="#RChain" title="RChain"><span class="octicon octicon-link"></span></a><span>RChain</span></h2><p><span>RChain brings together five major technological components in delivering its RNode software:</span></p><ul>
<li><span>RSpace, a new kind of key-value store;</span></li>
<li><span>Rholang, a new kind of programming language;</span></li>
<li><span>Casper, a new kind of consensus algorithm;</span></li>
<li><span>Behavioral types, a new kind of type system, along with</span>
<ul>
<li><span>the OSLF algorithm for </span><em><span>generating</span></em><span> type systems of this kind for a wide variety of programming languages and computational models;</span></li>
</ul>
</li>
<li><span>and a Scala implementation of the Kademlia communications and node discovery protocols.</span></li>
</ul><p><span>Each of these components and the innovations they realize is designed to meet specific market needs. In general, RChain would much rather follow state of the art practice and engineering where it makes sense to do so, rather than spend on costly R&D. At the same time, RChain recognizes that if we are going to build a platform sound enough to rebuild the world’s data and financial networks on it, it needs to be of a completely different kind of quality than we find in most Internet software.</span></p><p><span>Taking this recognition seriously, RChain uses a radically different development methodology, sometimes called correct-by-construction. This method extracts programs from proofs of their correctness. The aim of this approach is that ultimately the running, production code has been formally verified, and proven correct. This is the level of software quality and reliability necessary for a platform with the aims and goals described above.</span></p><p><span>Note that correct-by-construction does not harken back to waterfall models of software development. That is, it doesn’t wait for either the math or the software to be perfect. A mathematical model may be internally consistent and proven correct, yet not be applicable in a production setting because there are new or subtly different requirements in production. Seasoned mathematicians, as well as seasoned software developers know that both proofs and programs only work to the extent that they accurately model and encode their requirements. In a developing market a deep understanding of requirements happens iteratively, much in the same way that viable adaptation in Nature happens iteratively. As such, correct-by-construction fits perfectly well with agile development methods – which are all about managing the iterative nature of software development.</span></p><h3 id="Technology" data-id="Technology" style=""><a class="anchor hidden-xs" href="#Technology" title="Technology"><span class="octicon octicon-link"></span></a><span>Technology</span></h3><h4 id="RSpace-a-new-kind-of-store" data-id="RSpace-a-new-kind-of-store" style=""><a class="anchor hidden-xs" href="#RSpace-a-new-kind-of-store" title="RSpace-a-new-kind-of-store"><span class="octicon octicon-link"></span></a><span>RSpace: a new kind of store</span></h4><p><span>In the last decade the technical communities, especially those involved in big data, have seen a rethinking of storage and retrieval. In particular, a </span><a href="https://en.wikipedia.org/wiki/NoSQL" target="_blank" rel="noopener"><span>dialectic</span></a><span> around the no-SQL alternative to relational data stores has developed. First, a wave of storage systems based on the key-value, together with the map-reduce paradigm emerged. A backlash followed this, levying critiques of the key-value store paradigm in terms of the semantics of both query and transactions. RSpace threads the needle, offering a no-SQL store, but with a clear query semantics and a clear transactional semantics. It goes beyond this by offering a critical feature necessary to support user-controlled concurrency in queries; the ability to store code and data. In fact, putting code and data on equal footing in the storage layer actually derives from a consistency constraint coming from one of the oldest rules of logic, the law of the excluded middle.</span></p><p><span>Lest this seem too heavily slanted toward the theoretical, it is important to understand that this is third generation technology. Meredith devised a version of this for </span><a href="https://en.wikipedia.org/wiki/Microsoft_BizTalk_Server" target="_blank" rel="noopener"><span>Microsoft’s BizTalk process orchestration</span></a><span>, a business process automation platform, then updated the idea to use so-called delimited continuation in SpecialK, and finally proposed the RSpace design as a further refinement to allow RChain to scale. To learn more about this we invite you to explore RSpace on RChain’s GitHub </span><a href="https://github.com/rchain/rchain/tree/dev/rspace" target="_blank" rel="noopener"><span>repository</span></a><span>, which like all of RChain’s software is open source.</span></p><p><span>In the context of our previous discussion, in which we identified the need to organize and handle the world’s data in a decentralized way, beginning with a store that builds and improves upon what we have learned from the last decade of big data makes sense. Essentially, a component like this is sitting as a private asset inside all the major digital asset management platforms, from Google to Facebook. One key difference, however, is that our store is open source, and fits into a decentralized, public infrastructure, and its features and functions are derived from a specific concurrency semantics, embodied in rholang.</span></p><h4 id="Rholang-a-new-kind-of-programming-language" data-id="Rholang-a-new-kind-of-programming-language" style=""><a class="anchor hidden-xs" href="#Rholang-a-new-kind-of-programming-language" title="Rholang-a-new-kind-of-programming-language"><span class="octicon octicon-link"></span></a><span>Rholang: a new kind of programming language</span></h4><p><span>Rholang speaks directly to the requirement identified above that the virtual machine, i.e. the model of computation, whose state is stored on the blockchain, must be fundamentally concurrent, rather than sequential. A careful analysis of the various models of computation, from </span><a href="https://en.wikipedia.org/wiki/Turing_machine" target="_blank" rel="noopener"><span>Turing machines</span></a><span> to </span><a href="https://en.wikipedia.org/wiki/Lambda_calculus" target="_blank" rel="noopener"><span>lambda calculus</span></a><span>, from </span><a href="https://en.wikipedia.org/wiki/Petri_net" target="_blank" rel="noopener"><span>Petri nets</span></a><span> to the </span><a href="https://en.wikipedia.org/wiki/%CE%A0-calculus" target="_blank" rel="noopener"><span>π-calculus</span></a><span>, shows that there are four properties we are interested in relative to this market’s requirements. Specifically,</span></p><ul>
<li><span>Completeness - can we say everything we need to say?</span></li>
<li><span>Compositionality - can we build more complex programs out of simpler ones?</span></li>
<li><span>Concurrency - can we build programs that have parts that run simultaneously?</span></li>
<li><span>Complexity - can we measure the cost of computational resources?</span></li>
</ul><table>
<tbody><tr>
<td>
</td>
<td>
Completeness
</td>
<td>Compositionality
</td>
<td>Concurrency
</td>
<td>Complexity
</td>
</tr>
<tr>
<td>Turing machines
</td>
<td>✔︎
</td>
<td><strong>X</strong>
</td>
<td><strong>X</strong>
</td>
<td>✔︎
</td>
</tr>
<tr>
<td>lambda calculus
</td>
<td>✔︎
</td>
<td>✔︎
</td>
<td><strong>X</strong>
</td>
<td><strong>X</strong>
</td>
</tr>
<tr>
<td>Petri nets
</td>
<td>✔︎
</td>
<td><strong>X</strong>
</td>
<td>✔︎
</td>
<td>✔︎
</td>
</tr>
<tr>
<td>CCS
</td>
<td>✔︎
</td>
<td>✔︎
</td>
<td>✔︎
</td>
<td><strong>X</strong>
</td>
</tr>
<tr>
<td>π-calculus
</td>
<td>✔︎
</td>
<td>✔︎
</td>
<td>✔︎
</td>
<td>✔︎
</td>
</tr>
</tbody></table><p><span>A quick glance at the table shows that the π-calculus, and more generally, the family of models of computation known as the mobile process calculi, is the only one that has all four features. Likewise, using this table makes it possible for a quick glance at most blockchain projects on the market to be essentially all one needs to see which projects have what it takes to scale. If they are not based on a model that has all four features, they will not scale.</span></p><p><span>We could add other lines to this table: has already been used as the basis of enterprise-grade products built to support the previous generation of smart contract; and, has been used as the basis of Internet standards specifying the previous generation of smart contract. Again, the π-calculus is the only one that meets these requirements, as well. Specifically, the author of this prospectus, Greg Meredith, was the principal architect of Microsoft’s BizTalk Process Orchestration, as well as the language XLang, which was not only the basis for enterprise and Internet scale business process automation, but also as the basis for a number of W3C standards, including </span><a href="https://en.wikipedia.org/wiki/Business_Process_Execution_Language" target="_blank" rel="noopener"><span>BEPL</span></a><span> and </span><a href="https://en.wikipedia.org/wiki/Business_Process_Modeling_Language" target="_blank" rel="noopener"><span>BPML</span></a><span>, as well as informing the </span><a href="https://www.w3.org/TR/ws-chor-model/" target="_blank" rel="noopener"><span>WS-Choreography standard</span></a><span>. All this is a way of saying that making a choice to go with a model like the π-calculus is not just theoretically sound, but also practically sound, and in alignment with industry standards.</span></p><p><span>We cannot leave this topic without also mentioning that it’s not just the blockchain that demands concurrency as the model of computation. The programming model for Internet-scale programs has been under considerable pressure to move to a concurrent model of computation for quite some time. For the last two decades two trends have been putting pressure on the programming model from below, as well as from above. From below, </span><a href="https://interestingengineering.com/no-more-transistors-the-end-of-moores-law" target="_blank" rel="noopener"><span>we see that Moore’s law ended in the early 2000’s</span></a><span>. In the previous era a developer could write some C code, sit on their hands for a year, and their code’s performance would double because of advances in processor speed. This trend ended when limits to sequential processing speeds were hit in the early 2000’s and the predominant way computation sped up has been to put more cores per die, more chips per box, more boxes per rack, more racks per data center. Code that doesn’t take advantage of this concurrency doesn’t scale. Likewise, from above, the commercialization of the Internet has resulted in user demand for programs that are globally accessible by millions of concurrent users, 24x7. Again, code that isn’t essentially concurrent will fail to be responsive.</span></p><p><span>This means that the programming model used for programming the Internet scale applications, whether they are blockchain savvy or not, must evolve to be concurrent. The mobile process calculi form the basis for that evolution not only because they represent significant advances in language design, but because a sound basis for static analysis of programs. The importance of this feature is hard to state. Concurrent programming is many times harder than sequential programming. Without significant support from static program analysis, the bugs in concurrent code will become overwhelming as the numbers of programmers writing concurrent code increases.</span></p><h4 id="Rho-calculus-vs-π-calculus" data-id="Rho-calculus-vs-π-calculus" style=""><a class="anchor hidden-xs" href="#Rho-calculus-vs-π-calculus" title="Rho-calculus-vs-π-calculus"><span class="octicon octicon-link"></span></a><span>Rho-calculus vs π-calculus</span></h4><p><span>As mentioned, the π-calculus is just one example of a family of models enjoying all of the features necessary to address this market. Since Turing award winner Robin Milner put forward the model, several models of computation sharing many of the π-calculus’ features have been identified and studied, including the join calculus, the blue calculus, and the ambient calculus. Each of these has interesting properties, but ultimately fails in one way or another to map as well to programming the Internet as the π-calculus. There is one model, however, that derives from the π-calculus, but fixes a small lacuna and at the same time adds some powerful features that are quite common in programming the Internet, namely </span><a href="https://www.sciencedirect.com/science/article/pii/S1571066105051893" target="_blank" rel="noopener"><span>Meredith and Radestock’s rho-calculus</span></a><span>.</span></p><p><span>The rho-calculus plugs a hole in the π-calculus by making names first class elements of the model. The π-calculus is parametric in a theory of names; that is, given a theory of names, the π-calculus will produce a theory of processes that get computation done in terms of communications that use those names as channels. The π-calculus is agnostic as to whether names are telephone numbers, email addresses, blockchain addresses, or all of the above. However, the pure π-calculus can only exchange names between processes. It’s like people getting work done entirely by exchanging phone numbers. It turns out it is possible, in theory, to do just that, but it’s a lot of work! What happens on the Internet, however, is that not only data, but code gets shipped around from process to process, and the rho-calculus supports this feature.</span></p><h4 id="Namespaces-and-sharding" data-id="Namespaces-and-sharding" style=""><a class="anchor hidden-xs" href="#Namespaces-and-sharding" title="Namespaces-and-sharding"><span class="octicon octicon-link"></span></a><span>Namespaces and sharding</span></h4><p><span>The rho-calculus achieves this ability to ship processes by making names be the codes of processes. Once names are code, it is possible to encode all of the different kinds of common telecommunications notions of addresses into the rho-calculus setting, everything from email to blockchain addresses embed nicely, and thus it is straightforward to embed the most common addressing scheme on the Internet: URI’s and URL’s. This latter is important not just because it is the way the entire world wide web is organized, but also because it identifies a very powerful feature that the rho-calculus refines: namespaces. URI’s organize the web into a tree of resources (a forest actually, but trees will suffice for our discussion). Each URI is a path from the root of the tree along the branches to the leaf, or endpoint that holds the resource. Because of this path structure, you can indicate entire groups or spaces of resources using only partial paths. This allows us to organize and search spaces of resources in terms of the tree and path structure. The rho-calculus kicks this paradigm up a notch by identifying these spaces programmatically.</span></p><p><span>The reason this feature is so critical in this market is again because most transactions are isolated. We need a programmatic way to segment, organize, and reorganize transactions so that they are grouped in terms of the resources they have in common. This is commonly called sharding in the blockchain space. The rho-calculus namespace capability provides an extremely powerful approach to sharding. Specifically, the same approach can be used to rejoin forks, interoperate with other networks, as well as give speed ups on transactions that are isolated.</span></p><h4 id="Operational-semantics-and-correct-by-construction-language-design" data-id="Operational-semantics-and-correct-by-construction-language-design" style=""><a class="anchor hidden-xs" href="#Operational-semantics-and-correct-by-construction-language-design" title="Operational-semantics-and-correct-by-construction-language-design"><span class="octicon octicon-link"></span></a><span>Operational semantics and correct-by-construction language design</span></h4><p><span>This discussion wouldn’t be complete without mentioning the interplay between the correct-by-construction methodology and the typing system for rholang. The semantics of rholang the programming language is grounded in best practices. The rho-calculus provides a Turing complete operational semantics of rholang’s core features. Each of rholang’s additional features are defined in terms of a mapping back to the core calculus. This means that the language is correct-by-construction. Contrasting it with </span><a href="https://en.wikipedia.org/wiki/Solidity" target="_blank" rel="noopener"><span>Ethereum’s Solidity</span></a><span> and </span><a href="https://medium.com/mycrypto/the-ethereum-virtual-machine-how-does-it-work-9abac2b7c9e" target="_blank" rel="noopener"><span>the EVM</span></a><span>, Solidity doesn’t yet have a formal semantics. When it does eventually achieve one, there will be a proof obligation that any compiler in production compiles Solidity to EVM byte codes in a way that preserves the semantics. </span><a href="https://people.cs.kuleuven.be/~stijn.volckaert/papers/2018_DIMVA_Interpreters.pdf" target="_blank" rel="noopener"><span>Without such a proof what safeguard prevents against bytecode injection attacks</span></a><span>? Who is to be able to tell that an attacker’s compiler doesn’t emit bytecode that syphons off small bits of Ether to their account?</span></p><p><span>Rholang cannot suffer such an attack because the language and the execution mechanism (which is simply RSpace!) are both derived directly from the rho-calculus. These are the kind of benefits that come from the correct-by-construction methodology. Also note how we can reap the benefits of these results without having to know about the wider market requirements related to distribution and consensus. This reflects the point made earlier that correct-by-construction fits with iterative and agile requirements gathering and development processes.</span></p><p><span>It is also worth noting that a clean operational semantics is necessary to identify when one program is substitutable for another, in other words, when is it safe to put a different program in place of another in a wider execution context. This notion goes all the way back to Liskov’s substitutability principle, and in the practical terms of the maintenance of a system long term, this is a critical feature. You need to know when you can swap out upgrades or fixes for old or failing components. In software this is predicated upon having a semantics of the programming language, and operational semantics are by far the most widely used form of programming language semantics in theory and practice.</span></p><p><span>This principle of substitutability is closely connected to static analysis and especially the form of static analysis commonly called type checking. All programs inhabiting a given type are substitutable in any context requiring that type. This is the basis of correct plug-n-play software and is used in all serious production setting s. However, the type systems for most popular modern languages are relatively weak, only ensuring that data structure supplied matches the data structure expected. They say nothing about </span><em><span>program</span></em><span> structure, let alone program </span><em><span>behavior</span></em><span>. Over the last two decades a new class of type systems has emerged, but have yet to find their way into a mainstream programming language. Rholang’s behavioral types are designed to change that.</span></p><h4 id="Behavioral-types" data-id="Behavioral-types" style=""><a class="anchor hidden-xs" href="#Behavioral-types" title="Behavioral-types"><span class="octicon octicon-link"></span></a><span>Behavioral types</span></h4><p><span>The 2005 paper </span><a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.95.9601" target="_blank" rel="noopener"><span>“Namespace logic”</span></a><span> describes both a logic and a type system for programs in the rho-calculus. These types can be used to describe an incredibly wide range of phenomena from a compile-time firewall, ensuring that a process can and will only communicate on a specific range of channels, to deadlock-freedom, ensuring that a process doesn’t get stuck, to encodings of common data formats, such as XML schema. The logic is part of a development that goes all the way back to </span><a href="https://en.wikipedia.org/wiki/Intuitionism" target="_blank" rel="noopener"><span>Brouwer’s Intuitionistic mathematics programme</span></a><span>, which insisted that the proof of the existence of a mathematical object needed to construct it, rather than infer it by reductio ad absurdum arguments.</span></p><p><span>Other highlights along the way include Curry and Howards </span><a href="https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence" target="_blank" rel="noopener"><span>correspondence</span></a><span> between types in the simply typed lambda calculus, and formulae in intuitionistic logic; </span><a href="https://www.sciencedirect.com/science/article/pii/016800729190065T" target="_blank" rel="noopener"><span>Abramsky’s</span></a><span> domain theory in logical form; Robin Milner and Matthew Hennessey’s </span><a href="https://en.wikipedia.org/wiki/Hennessy%E2%80%93Milner_logic" target="_blank" rel="noopener"><span>modal logics</span></a><span> for process calculi; Caires’ </span><a href="https://link.springer.com/chapter/10.1007/978-3-540-24727-2_7" target="_blank" rel="noopener"><span>spatial-behavioral logics</span></a><span>; </span><a href="https://en.wikipedia.org/wiki/Linear_logic" target="_blank" rel="noopener"><span>Girard’s linear logic</span></a><span>; and, </span><a href="https://homepages.inf.ed.ac.uk/wadler/papers/propositions-as-sessions/propositions-as-sessions.pdf" target="_blank" rel="noopener"><span>Wadler’s session types</span></a><span>. It’s a long and illustrious development that has only been partially mined by programming language designers.</span></p><p><span>Rholang completely embraces the approach and for good reason. In 2015, Meredith warned Vitalik Buterin and anyone in the Ethereum community that would listen that the major security exposure for their platform – any smart contract platform – was in the user-defined contracts. Shortly after articulating this warning, Ethereum was hit with a bug in the DAO contract. The DAO smart contract implemented a kind of decentralized kickstarter. The idea was so popular, $150M worth of ETH was sent to the contract. Then an attacker found an exploit and drained $50M from the contract. Fortunately, Ethereum was only running at about 10tps, otherwise all $150M would have been gone in a few seconds.</span></p><p><span>As soon as the bug was reported, Meredith and Pettersson showed that when the buggy contract was translated in rholang and typed, </span><a href="https://docs.google.com/document/d/1sGlObhGhoEizBXC30Ww4h1KHKGkmcy4NiCKitIBqiUg/edit?usp=sharing" target="_blank" rel="noopener"><span>it wouldn’t type check</span></a><span>. As a result, the problematic code would never have compiled, let alone been checked in and deployed. In rholang the bug shows up as a race between updating the contract’s state and serving the next client request. The exploit amounts to being able to access stale state. The types coming from namespace logic catch race conditions. The value loss and community upheaval for Ethereum could have paid for the development of such a type system for Ethereum’s smart contracting language, Solidity, more than 10 times over. This is why RChain begins with such a type system on our roadmap.</span></p><h5 id="Operational-Semantics-in-Logical-Form-OSLF" data-id="Operational-Semantics-in-Logical-Form-OSLF"><a class="anchor hidden-xs" href="#Operational-Semantics-in-Logical-Form-OSLF" title="Operational-Semantics-in-Logical-Form-OSLF"><span class="octicon octicon-link"></span></a><span>Operational Semantics in Logical Form (OSLF)</span></h5><p><span>What is hinted at by the many developments along the way to behavioral types is the existence of an algorithm that </span><em><span>generates</span></em><span> type systems. The OSLF algorithm, developed by Meredith and Stay, is such an algorithm. Given</span></p><ul>
<li><span>a notion of computation, such as one might find in the specification of the JVM, or the semantics of Standard ML, or the rho-calculus, and</span></li>
<li><span>a notion of a set-like collection, and</span></li>
<li><span>a distributive law, which shows how to term with a hole in it into a collection of terms made by filling the hole</span></li>
</ul><p><span>OSLF generates a type system. This type system is much richer than the type systems found in Java, or Haskell, or Scala. It can see things about program structure and program behavior that the older type systems cannot. Yet, it is decidable for an interesting subset of programs.</span></p><p><span>Because of this richness, the types can also be thought of as a _query language. _If digital asset management is the cornerstone of the Internet as a global coordination technology, then there is one digital asset that is both vitally important and vastly underserved: code. Code is the dark matter of the Internet. It accounts for most of the function, is stored and managed as a data asset, and yet is opaque to the standard query mechanisms for structured data. Yet, behavioral types allow us to filter code, i.e. select code on the basis of how it is structured and what it does. This capability not only revolutionizes services like GitHub, it also prepares the way for a smart contracting platform successful enough to host billions of smart contracts because it makes it possible to find what one is looking for amongst billions of possibilities.</span></p><h4 id="Casper-a-new-kind-of-consensus-algorithm" data-id="Casper-a-new-kind-of-consensus-algorithm" style=""><a class="anchor hidden-xs" href="#Casper-a-new-kind-of-consensus-algorithm" title="Casper-a-new-kind-of-consensus-algorithm"><span class="octicon octicon-link"></span></a><span>Casper: a new kind of consensus algorithm</span></h4><p><span>Prior to blockchain, and specifically </span><a href="https://en.wikipedia.org/wiki/Proof_of_work" target="_blank" rel="noopener"><span>proof-of-work</span></a><span>, distributed consensus algorithms like </span><a href="https://en.wikipedia.org/wiki/Paxos_(computer_science)" target="_blank" rel="noopener"><span>PAXOS</span></a><span> favored lockstep consistency over availability. At scale this choice is unworkable, and almost all global platforms, such as Facebook and Twitter, use some form of </span><a href="https://en.wikipedia.org/wiki/Eventual_consistency" target="_blank" rel="noopener"><span>eventual consistency</span></a><span>. The blockchain takes this idea much further, and tethers it to an even more radical idea: securing the protocol economically. The trick is to make it too costly to attack the network. While the famously “impossible” 51% attack against proof-of-work based networks has long been shown not only to be possible, but to have happened to prominent proof-of-work networks, the idea of making it too costly to attack is still quite valid. What is less tenable is wasting cycles on guessing numbers as a means of demonstration of work.</span></p><p><span>Instead, one can continue with the correct-by-construction methodology, and follow logic’s lead. In the late 80’s and early 90’s Girard’s linear logic was revolutionizing our notion of what both logic and proof are. Specifically, linear logic is resource sensitive. Unlike either classical or intuitionistic logic, where the proposition A & A is the same as the proposition A, linear logic takes into account the resources necessary to establish a proposition. One might think of it in terms of establishing properties of chemical compounds. Many assays to establish that a compound has a given property require modifying or even destroying a quantity of the compound. More prosaically, in classical logic, saying “I have a dollar” & “I have a dollar” isn’t sensitive to the possibility that this could mean “I have two dollars.” In point of fact, valid linear proofs are balanced in the sense that all resources must be carefully accounted for, and linear proofs prevent double-spend. Needless to say, it seems natural to look to linear logic for clues about consensus, especially economically secured consensus.</span></p><p><span>Among the different semantics for linear logic, games semantics stands out as both intuitive and pluripotent, with many variations illuminating a wide variety of features of linear logic. Hyland and Ong’s games semantics provides an extremely faithful interpretation of the logic. In Hyland-Ong </span><a href="https://www.sciencedirect.com/science/article/pii/S0890540100929171" target="_blank" rel="noopener"><span>games semantics</span></a><span> each move of player and opponent must be justified by previous moves, and it is this justification structure that their semantics uses to establish single threadedness of strategies. In 2009, Meredith proposed using this kind of structure to secure network protocols in the communication between instances of an earlier version of RSpace known as SpecialK. Following these insights, CBC-Casper imposes and exploits a justification structure on blocks to detect equivocation, provide liveness constraints, and fairness constraints. These properties are typically ensured by imposing certain patterns of communication, and the justification structure gives a view into just enough of the history of communication that these properties, or their violations can be detected.</span></p><p><span>Armed with a means to detect violations reliably, proof-of-stake can be economically secured. Participants put up stake in the token used to prevent denial of service and have their stake </span><em><span>slashed</span></em><span>, i.e. partially depleted or entirely forfeit, if they commit a violation. In the long run, only participants that play by the rules are able to stay in the game. This is considerably more efficient than wasting cycles guessing numbers.</span></p><h3 id="Governance" data-id="Governance" style=""><a class="anchor hidden-xs" href="#Governance" title="Governance"><span class="octicon octicon-link"></span></a><span>Governance</span></h3><p><span>If we are talking about a global, economically secured, decentralized compute and data storage network, there are critical questions about how the network is governed that are inescapable. First and foremost, RChain follows nature, quantum mechanics, and the emergent practices of software development in open source projects. Just as </span><a href="https://press.princeton.edu/books/hardcover/9780691147215/honeybee-democracy" target="_blank" rel="noopener"><span>beehives fork</span></a><span> when there is a new queen, or the wave function splits in the many worlds </span><a href="https://www.sciencenews.org/article/sean-carroll-something-deeply-hidden-quantum-physics-many-worlds" target="_blank" rel="noopener"><span>interpretation</span></a><span> of quantum mechanics, or open source projects branch where there is sufficient technical disagreement, forks are natural. The question is how to relate those forks to each other in such a way that a healthy ecosystem of speciation and integration emerges.</span></p><p><span>Again, the idea is to follow natural tendencies. We already have evidence from existing blockchains that communities will hedge on both sides of a fork. It’s the safest thing to do, and it allows both sides to access the network effects of the other. It’s also what happens in beehives. Hives that fork are </span><em><span>genetically</span></em><span> rejoined during the summer flights of the queens. In RChain, the simplest thing to do is to treat forks as shards. Sharding, as mentioned above, is an elegant mechanism for establishing the economic bridge between the two networks,</span></p><h4 id="Cooperation" data-id="Cooperation" style=""><a class="anchor hidden-xs" href="#Cooperation" title="Cooperation"><span class="octicon octicon-link"></span></a><span>Cooperation</span></h4><p><span>Beyond technological and market driven solutions, there are still matters that require socially organized governance. RChain proposes the long standing </span><a href="https://en.wikipedia.org/wiki/Cooperative" target="_blank" rel="noopener"><span>tradition</span></a><span> of cooperatives. In the US, Europe, China, and all over the world cooperatives have provided a natural, grass roots means of governance of common resources. In North America, famous instances include REI, Tillamook Dairy Co-op, and many utility companies. At the heart of the cooperative movement are democratic principles, not the least of which is one member, one vote. In RChain the membership votes directly on items of business and elects the board, which in turn appoints the officers of the company to handle day-to-day affairs.</span></p><p><span>As such, RChain Cooperative is not yet a direct democracy, but a representative democracy that allows for natural differentials in levels of engagement.</span></p><ul>
<li><span>Token holders who are not members influence the price of the token and hence the capacity of the Cooperative to do things, but do not have direct say in the operations of the Cooperative or the decisions it makes about common resources such as the treasury, or features of the code.</span></li>
<li><span>Cooperative members enjoy both decision making privileges as well as dividends. At the end of each fiscal year members are paid a percentage of the tokens they have spent on running smart contracts on the platform.</span></li>
<li><span>Board members have an overview, framing items of business for membership vote and directing the officers.</span></li>
<li><span>Officers have day-to-day roles in engineering, community management, marketing, and other operations.</span></li>
</ul><p><span>We hypothesize that this model can be made to scale in much the same way REI has scaled, or Puget Sound Community Cooperative has scaled, or … the beehive scales. When there is a significant division of interests, even if that division is not rooted in conflict, but in differences in language, or time zones, it makes sense to split up the governance into local Cooperatives. As an example, RChain is actively exploring with the Chinese community the establishment of RChain China.</span></p><h4 id="Impact-on-token-status" data-id="Impact-on-token-status" style=""><a class="anchor hidden-xs" href="#Impact-on-token-status" title="Impact-on-token-status"><span class="octicon octicon-link"></span></a><span>Impact on token status</span></h4><p><span>One of the most important features the Cooperative structure has is its relationship to securities laws, especially US securities laws. The Cooperative structure allows members voting control over the code, the treasury, and the board. As long as tokens are sold only to members, even if the token has no established utility, it still passes the major checks of the Howie test. In the case of RChains RHOC/REV tokens, utility is evident. RHOC/REV is both the DoS prevention mechanism, and is also the means to effect computation and storage on the network.</span></p><h4 id="Which-jurisdictions" data-id="Which-jurisdictions" style=""><a class="anchor hidden-xs" href="#Which-jurisdictions" title="Which-jurisdictions"><span class="octicon octicon-link"></span></a><span>Which jurisdictions?</span></h4><p><span>One absolutely critical reason to explore these more scalable governance structures is because blockchain technology cuts across jurisdictions. In the same way that the commercialization of the Internet brought about global commerce and global markets, the blockchain goes further. Consider, even in a single shard node can be running in the US, Europe, and Asia. It is perfectly possible to write a smart contract that cryptographically locks up a digital asset in a manner that all parties to the contract agree is unfair or undesirable. In which jurisdiction is it reasonable to address any conflict about how to resolve the situation? Further, even if this were possible to decide, an adjudicator might render a decision, but there is no actual remedy because the code doesn’t admit it.</span></p><p><span>Geopolitically based jurisdictional boundaries are of no practical use in these situations. Communities sharing common interests and common goals, despite being geographically, culturally, and even politically diverse are more aligned with the basic organizational components of the blockchain. Make no mistake, blockchain will provide fundamental challenges to global jurisprudence. In light of the crises we are facing, this development seems timely: Climate change also cuts across jurisdictional boundaries. We must work together across municipal, provincial, and national boundaries. The Earth is humanity’s commons. We cannot afford to destroy entire global ecosystems because we will all suffer the consequences, regardless of any particular geopolitical allegiances.</span></p><h3 id="Opportunities" data-id="Opportunities" style=""><a class="anchor hidden-xs" href="#Opportunities" title="Opportunities"><span class="octicon octicon-link"></span></a><span>Opportunities</span></h3><p><span>RChain Cooperative is set up to accept all kinds of engagement. We value all forms, whether it is work on community development, business development, or software development; whether it is financial guidance, business partnership, or acquiring tokens, we value all of it. You will find that the RChain community is one of energy and diversity, inspiration, commitment and hard work. If you find these ideas are speaking to you and want to get involved, in the section below we identify the opportunities and speak to ways different communities and stakeholders can get involved.</span></p><h4 id="dApps" data-id="dApps" style=""><a class="anchor hidden-xs" href="#dApps" title="dApps"><span class="octicon octicon-link"></span></a><span>dApps</span></h4><p><span>The single biggest factor in driving network adoption is the total volume of transactions on the network, and the single biggest factor in driving the volume of network transactions is decentralized apps, or dApps. As with any adoption strategy, part of it is magical mystery, what narrative will capture the imagination of the market, and part of it is hard core analytics. In the section below we want to speak to both, but emphasize the analytics.</span></p><h4 id="Developer-engagement" data-id="Developer-engagement" style=""><a class="anchor hidden-xs" href="#Developer-engagement" title="Developer-engagement"><span class="octicon octicon-link"></span></a><span>Developer engagement</span></h4><p><span>Developers are the thought leaders in technology driven markets, like the blockchain. Creating buzz within the technical communities attracts the attention of the business community, as well as the public sector. Among the many factors, the combination of economic opportunity and technological innovation is a powerful attractor for the developer community. The initial blockchain combination of a new insight into distributed consensus, together with the potential to reinvent money was irresistible for many developers and we witnessed a gold rush. Now, however, with the inability of proof-of-work to scale widely accepted and the exposure of many projects as scams, the ICO rush is over.</span></p><p><span>RChain offers a very different, and more grounded combination of technical innovation and economic opportunity. Despite the field being decades old, and the end of Moore’s law for over 15 years, concurrency theory has not yet penetrated mainstream programming language design, though we do see signs such as the growing popularity of Go and Rust. Likewise, neither the benefits nor the brain candy of behavioral types have penetrated mainstream programming language design, nor the mainstream developer’s mindset. With the current emphasis in standard practice on microservices, Internet scale applications, and blockchain’s revelations about distributed consensus, a shift toward protocol oriented programming (POP) is a high likelihood.</span></p><p><span>The mobile process calculi have simply dominated the fields of protocol design and protocol analysis for decades. RChain’s rho-calculus based language, rholang, and correct-by-construction methodology offer developers a chance to come into the modern world where programming language semantics meets protocol design. Yet, it goes much further than that. Rather than stopping at a data-network-scale blockchain, RChain recognizes that data acquisition and management is more subtle than simply storing blobs on disk. Data comes with meta-data and rights management.</span></p><h5 id="RCat" data-id="RCat"><a class="anchor hidden-xs" href="#RCat" title="RCat"><span class="octicon octicon-link"></span></a><span>RCat</span></h5><p><span>RChain has built a next layer tool, RCat, short for RChain Asset Tracker. RCat allows developers to package large data blobs with metadata assets, such as audio or video files with information about the creators and rights holders of the audio or video data. The metadata is vital to provide search capabilities for data blobs that do not enjoy semantic search functions, as one finds in relational data.</span></p><p><span>RChain has also run experiments building both in-house and third party dApps. The in-house developed dApp, RSong, factored into the RCat backend and a RSong player front end to allow artists to offer songs to their audiences. The audio data is stored on-chain and delivered from chain. The payments for audience access to the audio data go directly to the artist on the basis of use and the rights management data in the associated data. The 3rd party dApp, Proof, provided a crowd sourced verification of news stories, again with the data stored on-chain and delivered from chain.</span></p><p><span>One of the most important measures in the development of these two dApps is the time to MVP (or minimum viable product) and how many resources were needed to get there. In both cases, we saw on the order of two months and two engineers. This means that for roughly the same resource investment it was costing a project to get all the assets together to offer an ICO, startups could have already put together an early stage working product. These are the kind of metrics that developers and the business community pay attention to, as they represent demonstrable, measurable economic opportunity, while at the same time weeding out the scams.</span></p><p><span>Stepping back to consider the wider view, RChain offers a more solid and stable way to reinvigorate the developer interest in blockchain by creating a dApp factory. Decentralizing digital asset platforms was the impulse that had developers exploring technologies like blockchain in the first place. RChain reminds us of that objective and shows that it is in reach. This brings our aim of building a new coordination infrastructure, one capable of global, grass roots coordination around the problems of climate change, much closer into view by attracting the developers with the drive and incentives to make it happen.</span></p><h5 id="Mainstream-adoption" data-id="Mainstream-adoption"><a class="anchor hidden-xs" href="#Mainstream-adoption" title="Mainstream-adoption"><span class="octicon octicon-link"></span></a><span>Mainstream adoption</span></h5><p><span>Keeping an eye on the main point of this section, the real adoption of the network is going to come from high transaction volume. This comes in turn from network effects associated with wider adoption of dApps running on the network. If developer engagement is the spark, what is the oxygen than fans the flames of mainstream adoption? Again, the Internet has been very clear: Its social use of digital assets. Look no further than TikTok, YouTube, Instagram, or WeChat. This phenomenon is incredibly fortuitous because it means dApps can focus on high volume, low risk transaction markets. There are trillions of Facebook posts, the loss of any 10,000 of which has virtually no impact on market perception of the robustness or utility of the network.</span></p><p><span>By contrast, in the high volume financial markets, the loss of 10,000 trades would be immediately noticed and cause for serious concern. The loss or corruption of a single high value transaction would bring immediate repercussions in terms of the market perception of the viability of the network. The angst of the Ethereum community around the DAO bug would be nothing by comparison to Wall St or Beijing’s reaction to the loss of 100’s millions in foreign exchange trades. But, even with correct-by-construction methodology we must acknowledge that all blockchain technologies are in their infancy. There will be bugs. Again, look at the history of software. Whether we are talking about Microsoft products or organically grown Internet projects, such as Python, it’s typically not until the 4th iteration of a project that we see the kind of maturity and robustness that we can deploy it on mission-critical applications involving human lives or high dollar value transactions.</span></p><p><span>So, dreams of deploying blockchain on supply chain management infrastructure, or manufacturing, or financial markets must wait a good decade before the technology is robust enough to meet those standards. Ironically, while the fate of the ecosystems of the entire planet should by all rights be considered mission critical, the application of blockchain technologies to these problems is not direct. Instead it’s all about the communication and coordination of humans who are focused on these problems. In short it’s about the social use of digital assets. That’s what makes blockchain a critical component in our urgent need to coordinate our global response to Climate Change.</span></p><h5 id="Entertainment" data-id="Entertainment"><a class="anchor hidden-xs" href="#Entertainment" title="Entertainment"><span class="octicon octicon-link"></span></a><span>Entertainment</span></h5><p><span>More ironically, the fair treatment of the creative classes, especially artists in the entertainment sectors, may be the shortest and cheapest path to mainstream adoption. In much the same way that developers end up being the thought leaders for the technically oriented markets, artists in the entertainment sectors are often the thought leaders for mainstream adoption of certain platforms. None of these market sectors is more organized like this than music. By way of example, when Taylor Swift tweeted her sentiments regarding engagement in the political process in November of 2018, 65,000 people registered to vote that day.</span></p><p><span>This observation leads to some very basic arithmetic. Take 100 artists with a million followers each, if there is not too much cross-over between audiences, then those 100 artists together command an audience of 100M followers. If there were a dApp allowing those artists to share their music with their audience, and those followers listened, quite conservatively, to 10 songs / month, that would be a minimum of 1B transactions / month on the network, generated by that one dApp. By contrast, Ethereum and Bitcoin together generate about 1M transactions / day. That’s 30M / month, a tiny fraction of what would be generated by a single music dApp.</span></p><p><span>Further noting that the cost of user acquisition is much smaller in the entertainment sector than in social media, WhatsApp spent roughly $20/user, while Facebook spent more than twice that for user acquisition. This means the acquisition of a million users costs between $20M - $50M. In music, the artist sells to their followers. So, if the artist adopts the platform, they bring their followers, especially if content is released exclusively to the platform. This means that one could spend $100K / artist on the top 100 artists and still cut the user acquisition spend anywhere between ½ and ⅕.</span></p><p><span>Of course, RChain’s aim is not a cynical reduction of market dynamics to numbers. This discussion primarily serves to illustrate the point that careful consideration of how to support the creative classes will bring about a massive shift in platform adoption; and this fits very well with an aim to accelerate global coordination around climate change. The artists and creative classes more generally are going to be people who are most likely to spearhead the change that must take place. Helping them find their way to an autonomous, self-directed engagement with their audience and supporters and helping them find their own regenerative economy provides a high profile example of how a community can self-organize and move away from co-dependence on a corrupt industry to something healthier and more lucrative.</span></p><p><span>In general, a movement toward a decentralized, green economy will have these kinds of benefits across the board, not just in the arts and entertainment sector. Leading with the arts and entertainment sectors provides an approach to the wider markets that is organized to minimize risk. The reader who feels compelled to build decentralized apps should look to the arts and entertainment as the first wave of blockchain. Just like the development of the Internet, begin with dApps that appeal to mainstream audiences but don’t risk everything on a single failure.</span></p><h4 id="Validators" data-id="Validators" style=""><a class="anchor hidden-xs" href="#Validators" title="Validators"><span class="octicon octicon-link"></span></a><span>Validators</span></h4><p><span>As with the gold rush to become a Bitcoin miner, the market is already seeing a surge to put together staking services for proof-of-stake nodes. RChain’s CBC-Casper is proof-of-stake and we are seeing a tremendous grass-roots interest in running RChain Validator nodes. Initially, the Cooperative will run the majority of the nodes in the root shard, but eventually, this should shift to a more decentralized distribution of nodes. However, to get the contemplated transaction throughput, the hardware for the backbone of the root shard is very high-end.</span></p><p><span>As with all offerings built around network effects, there is a cyclic dependency that is both an initial source of resistance and later becomes an engine of economic regeneration: to be economically attractive to validators the network needs high transaction volume; this means dApps, plain and simple. Yet, to be economically attractive to dApps the network needs a critical mass of validators. Of course, once critical mass is achieved, validators will flock to the network because they can make 10X what they were making on mining Ethereum while only charging users 1/100 of the transaction fees. Likewise, dApps will flock to the network because it’s the only network offering this transaction throughput with a trust model similar to Bitcoin’s that also addresses user-level smart contract security.</span></p><p><span>We believe the first wave of validators will be a mix of people who understand the wider mission, to build a coordination infrastructure that will support the global coordination necessary to deal with climate change, as well as people who see the real economic potential. This is one place where RChain and Goldman Sachs agree. Moving to a regenerative economy will create enormous wealth. It doesn’t matter which camp you see yourself belonging to, and you can certainly belong to both. If you want to engage by running validator nodes, don’t hesitate to </span><a href="https://discord.com/invite/NWkQnfH" target="_blank" rel="noopener"><span>contact</span></a><span> the Cooperative. We are ready to support you.</span></p><h4 id="Tokens" data-id="Tokens" style=""><a class="anchor hidden-xs" href="#Tokens" title="Tokens"><span class="octicon octicon-link"></span></a><span>Tokens</span></h4><p><span>When RChain achieves critical mass network effects, the REV token will be needed by every dApp on the network, and those dApps will constitute a vibrant ecosystem of users services, from decentralized maps and location services to decentralized payments to decentralized Uber and AirBnB. We want to work with those who understand that the management of this resource is a virtualization of managing similarly precious resources in the natural world. Every living organism on this planet respires. Oxygen is a critical resource for all life. Likewise water is essential to all life. Practicing on a resource that is essential for all compute-enabling key user services becomes a laboratory for learning how to work with more precious resources.</span></p><p><span>As mentioned several times, responsible management of such a resource is not at odds with wealth creation and abundance. Quite the contrary; learning how to manage critical resources responsibly is at the very heart of the regeneration of life on planet Earth.</span></p><h3 id="Summary-of-opportunities" data-id="Summary-of-opportunities" style=""><a class="anchor hidden-xs" href="#Summary-of-opportunities" title="Summary-of-opportunities"><span class="octicon octicon-link"></span></a><span>Summary of opportunities</span></h3><p><span>If you want to be involved with RChain, the first thing to do is to</span><a href="https://rchain.coop/community.html" target="_blank" rel="noopener"><span> join</span></a><span> the Cooperative. As a member, you are able to participate in the governance of the protocol, get rebates on use of the REV token to run smart contracts, and participate in member sales of tokens. Additionally, you can run validator nodes to help secure the network, and earn transaction fees. Finally, you can build dApps that offer key user services and bring transactions to the network.</span></p><p><span>None of these are mutually exclusive. Every dApp will want to run its own validator nodes to ensure delivery of transactions to the network and earn transaction fees to recoup some of the cost of running them. Every validator will need tokens for staking, and every dApp will need tokens to run their smart contracts. All of these roles in the ecosystem benefit from being a member of the Cooperative, and taking an active role in the governance of the protocol.</span></p><h2 id="Technical-Status" data-id="Technical-Status" style=""><a class="anchor hidden-xs" href="#Technical-Status" title="Technical-Status"><span class="octicon octicon-link"></span></a><span>Technical Status</span></h2><p><span>RChain main net is live and has been in operation since February 2020. Network statistics are available at </span><a href="https://revdefine.io" target="_blank" rel="noopener"><span>https://revdefine.io</span></a></p><p><span>We are continuously improving the network with new features and performance improvements. You can join the weekly tech updates and community debriefs on Wednesdays.</span></p><p><span>All of RChain’s code is open source and is available on Github </span><a href="https://github.com/rchain/rchain" target="_blank" rel="noopener"><span>here</span></a><span>. The websites </span><a href="http://www.rchain.coop" target="_blank" rel="noopener"><span>www.rchain.coop</span></a><span> , </span><a href="https://developer.rchain.coop/" target="_blank" rel="noopener"><span>https://developer.rchain.coop/</span></a><span> and </span><a href="http://blog.rchain.coop/" target="_blank" rel="noopener"><span>http://blog.rchain.coop/</span></a><span> contain more information.</span></p><h3 id="Team" data-id="Team" style=""><a class="anchor hidden-xs" href="#Team" title="Team"><span class="octicon octicon-link"></span></a><span>Team</span></h3><p><a href="https://rchain.coop/team.html" target="_blank" rel="noopener"><span>https://rchain.coop/team.html</span></a><span> contains details about the current management, board, and dev leadership.</span></p><h2 id="Conclusion" data-id="Conclusion" style=""><a class="anchor hidden-xs" href="#Conclusion" title="Conclusion"><span class="octicon octicon-link"></span></a><span>Conclusion</span></h2><p><span>“In strange and uncertain times, sometimes a reasonable person might despair. But Hope is unreasonable. And Love is greater even than this.” Robert Fripp</span></p><p><span>Without a doubt we are facing catastrophic collapse of ecosystems. We will not get through this unscathed. We cannot continue doing business as usual. Blockchain, as with other key technologies, shows up at just the time we need technological support for massive global coordination. All the ingredients we need to transition to a better world are available in our present moment. It’s up to us to recognize them and put them to use.</span></p><p><span>RChain is not just a network of computers and innovative software. RChain is a network of people, people who understand the situation and rather than succumbing to despair are willing to work together to find solutions. Please join us, not because it’s reasonable, but because you also feel that unreasonable, uncontainable sense of Hope and the warmth of Love beyond it.</span></p><hr><p>copyright © 2022 RChain Cooperative, All rights reserved <br>
RChain and REV are registered trademarks of RChain Cooperative <br><a href="https://github.com/rchain/legaldocs/blob/master/Form%20of%20Privacy%20Policy.pdf" target="_blank" rel="noopener">Privacy terms and conditions</a></p></div>
<div class="ui-toc dropup unselectable hidden-print" style="display:none;">
<div class="pull-right dropdown">
<a id="tocLabel" class="ui-toc-label btn btn-default" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false" title="Table of content">
<i class="fa fa-bars"></i>
</a>
<ul id="ui-toc" class="ui-toc-dropdown dropdown-menu" aria-labelledby="tocLabel">
<div class="toc"><ul class="nav">
<li class=""><a href="#Abstract" title="Abstract">Abstract</a></li>
<li><a href="#Introduction-and-Motivation" title="Introduction and Motivation">Introduction and Motivation</a><ul class="nav">
<li><a href="#Coordination-Technology" title="Coordination Technology">Coordination Technology</a></li>
<li><a href="#Self-sovereign-identity-data-privacy-and-decentralization" title="Self-sovereign identity, data privacy, and decentralization">Self-sovereign identity, data privacy, and decentralization</a><ul class="nav">
<li><a href="#Self-sovereign-identity" title="Self-sovereign identity">Self-sovereign identity</a></li>
<li><a href="#Data-privacy" title="Data privacy">Data privacy</a></li>
<li><a href="#Decentralization-and-the-blockchain" title="Decentralization and the blockchain">Decentralization and the blockchain</a></li>
</ul>
</li>
<li><a href="#Blockchain-and-scalability" title="Blockchain and scalability">Blockchain and scalability</a></li>
</ul>
</li>
<li><a href="#RChain" title="RChain">RChain</a><ul class="nav">
<li><a href="#Technology" title="Technology">Technology</a><ul class="nav">
<li><a href="#RSpace-a-new-kind-of-store" title="RSpace: a new kind of store">RSpace: a new kind of store</a></li>
<li><a href="#Rholang-a-new-kind-of-programming-language" title="Rholang: a new kind of programming language">Rholang: a new kind of programming language</a></li>
<li><a href="#Rho-calculus-vs-π-calculus" title="Rho-calculus vs π-calculus">Rho-calculus vs π-calculus</a></li>
<li><a href="#Namespaces-and-sharding" title="Namespaces and sharding">Namespaces and sharding</a></li>
<li><a href="#Operational-semantics-and-correct-by-construction-language-design" title="Operational semantics and correct-by-construction language design">Operational semantics and correct-by-construction language design</a></li>
<li><a href="#Behavioral-types" title="Behavioral types">Behavioral types</a></li>
<li><a href="#Casper-a-new-kind-of-consensus-algorithm" title="Casper: a new kind of consensus algorithm">Casper: a new kind of consensus algorithm</a></li>
</ul>
</li>
<li><a href="#Governance" title="Governance">Governance</a><ul class="nav">
<li><a href="#Cooperation" title="Cooperation">Cooperation</a></li>
<li><a href="#Impact-on-token-status" title="Impact on token status">Impact on token status</a></li>
<li><a href="#Which-jurisdictions" title="Which jurisdictions?">Which jurisdictions?</a></li>
</ul>
</li>
<li><a href="#Opportunities" title="Opportunities">Opportunities</a><ul class="nav">
<li><a href="#dApps" title="dApps">dApps</a></li>
<li><a href="#Developer-engagement" title="Developer engagement">Developer engagement</a></li>
<li><a href="#Validators" title="Validators">Validators</a></li>
<li><a href="#Tokens" title="Tokens">Tokens</a></li>
</ul>
</li>
<li><a href="#Summary-of-opportunities" title="Summary of opportunities">Summary of opportunities</a></li>
</ul>
</li>
<li><a href="#Technical-Status" title="Technical Status">Technical Status</a><ul class="nav">
<li><a href="#Team" title="Team">Team</a></li>
</ul>
</li>
<li><a href="#Conclusion" title="Conclusion">Conclusion</a></li>
</ul>
</div><div class="toc-menu"><a class="expand-toggle" href="#">Expand all</a><a class="back-to-top" href="#">Back to top</a><a class="go-to-bottom" href="#">Go to bottom</a></div>
</ul>
</div>
</div>
<div id="ui-toc-affix" class="ui-affix-toc ui-toc-dropdown unselectable hidden-print" data-spy="affix" style="top:17px;display:none;" null null>
<div class="toc"><ul class="nav">
<li class=""><a href="#Abstract" title="Abstract">Abstract</a></li>
<li><a href="#Introduction-and-Motivation" title="Introduction and Motivation">Introduction and Motivation</a><ul class="nav">
<li><a href="#Coordination-Technology" title="Coordination Technology">Coordination Technology</a></li>
<li><a href="#Self-sovereign-identity-data-privacy-and-decentralization" title="Self-sovereign identity, data privacy, and decentralization">Self-sovereign identity, data privacy, and decentralization</a><ul class="nav">
<li><a href="#Self-sovereign-identity" title="Self-sovereign identity">Self-sovereign identity</a></li>
<li><a href="#Data-privacy" title="Data privacy">Data privacy</a></li>
<li><a href="#Decentralization-and-the-blockchain" title="Decentralization and the blockchain">Decentralization and the blockchain</a></li>
</ul>
</li>
<li><a href="#Blockchain-and-scalability" title="Blockchain and scalability">Blockchain and scalability</a></li>
</ul>
</li>
<li><a href="#RChain" title="RChain">RChain</a><ul class="nav">
<li><a href="#Technology" title="Technology">Technology</a><ul class="nav">
<li><a href="#RSpace-a-new-kind-of-store" title="RSpace: a new kind of store">RSpace: a new kind of store</a></li>
<li><a href="#Rholang-a-new-kind-of-programming-language" title="Rholang: a new kind of programming language">Rholang: a new kind of programming language</a></li>
<li><a href="#Rho-calculus-vs-π-calculus" title="Rho-calculus vs π-calculus">Rho-calculus vs π-calculus</a></li>
<li><a href="#Namespaces-and-sharding" title="Namespaces and sharding">Namespaces and sharding</a></li>
<li><a href="#Operational-semantics-and-correct-by-construction-language-design" title="Operational semantics and correct-by-construction language design">Operational semantics and correct-by-construction language design</a></li>
<li><a href="#Behavioral-types" title="Behavioral types">Behavioral types</a></li>
<li><a href="#Casper-a-new-kind-of-consensus-algorithm" title="Casper: a new kind of consensus algorithm">Casper: a new kind of consensus algorithm</a></li>
</ul>
</li>
<li><a href="#Governance" title="Governance">Governance</a><ul class="nav">
<li><a href="#Cooperation" title="Cooperation">Cooperation</a></li>
<li><a href="#Impact-on-token-status" title="Impact on token status">Impact on token status</a></li>
<li><a href="#Which-jurisdictions" title="Which jurisdictions?">Which jurisdictions?</a></li>
</ul>
</li>
<li><a href="#Opportunities" title="Opportunities">Opportunities</a><ul class="nav">
<li><a href="#dApps" title="dApps">dApps</a></li>
<li><a href="#Developer-engagement" title="Developer engagement">Developer engagement</a></li>
<li><a href="#Validators" title="Validators">Validators</a></li>
<li><a href="#Tokens" title="Tokens">Tokens</a></li>
</ul>
</li>
<li><a href="#Summary-of-opportunities" title="Summary of opportunities">Summary of opportunities</a></li>
</ul>
</li>
<li><a href="#Technical-Status" title="Technical Status">Technical Status</a><ul class="nav">
<li><a href="#Team" title="Team">Team</a></li>
</ul>
</li>
<li><a href="#Conclusion" title="Conclusion">Conclusion</a></li>
</ul>
</div><div class="toc-menu"><a class="expand-toggle" href="#">Expand all</a><a class="back-to-top" href="#">Back to top</a><a class="go-to-bottom" href="#">Go to bottom</a></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gist-embed/2.6.0/gist-embed.min.js" integrity="sha256-KyF2D6xPIJUW5sUDSs93vWyZm+1RzIpKCexxElmxl8g=" crossorigin="anonymous" defer></script>
<script>
var markdown = $(".markdown-body");
//smooth all hash trigger scrolling
function smoothHashScroll() {
var hashElements = $("a[href^='#']").toArray();
for (var i = 0; i < hashElements.length; i++) {
var element = hashElements[i];
var $element = $(element);
var hash = element.hash;
if (hash) {
$element.on('click', function (e) {
// store hash
var hash = this.hash;
if ($(hash).length <= 0) return;
// prevent default anchor click behavior
e.preventDefault();
// animate
$('body, html').stop(true, true).animate({
scrollTop: $(hash).offset().top
}, 100, "linear", function () {
// when done, add hash to url
// (default click behaviour)
window.location.hash = hash;
});
});
}
}
}
smoothHashScroll();
var toc = $('.ui-toc');
var tocAffix = $('.ui-affix-toc');
var tocDropdown = $('.ui-toc-dropdown');
//toc
tocDropdown.click(function (e) {
e.stopPropagation();
});
var enoughForAffixToc = true;
function generateScrollspy() {
$(document.body).scrollspy({
target: ''
});
$(document.body).scrollspy('refresh');
if (enoughForAffixToc) {
toc.hide();
tocAffix.show();
} else {
tocAffix.hide();
toc.show();
}
$(document.body).scroll();
}
function windowResize() {
//toc right
var paddingRight = parseFloat(markdown.css('padding-right'));
var right = ($(window).width() - (markdown.offset().left + markdown.outerWidth() - paddingRight));
toc.css('right', right + 'px');
//affix toc left
var newbool;
var rightMargin = (markdown.parent().outerWidth() - markdown.outerWidth()) / 2;
//for ipad or wider device
if (rightMargin >= 133) {
newbool = true;
var affixLeftMargin = (tocAffix.outerWidth() - tocAffix.width()) / 2;
var left = markdown.offset().left + markdown.outerWidth() - affixLeftMargin;
tocAffix.css('left', left + 'px');
} else {
newbool = false;
}
if (newbool != enoughForAffixToc) {
enoughForAffixToc = newbool;
generateScrollspy();
}
}
$(window).resize(function () {
windowResize();
});
$(document).ready(function () {
windowResize();
generateScrollspy();
});
//remove hash
function removeHash() {
window.location.hash = '';
}
var backtotop = $('.back-to-top');
var gotobottom = $('.go-to-bottom');
backtotop.click(function (e) {
e.preventDefault();
e.stopPropagation();
if (scrollToTop)
scrollToTop();
removeHash();
});
gotobottom.click(function (e) {
e.preventDefault();
e.stopPropagation();
if (scrollToBottom)
scrollToBottom();
removeHash();
});
var toggle = $('.expand-toggle');
var tocExpand = false;
checkExpandToggle();
toggle.click(function (e) {
e.preventDefault();
e.stopPropagation();
tocExpand = !tocExpand;
checkExpandToggle();
})
function checkExpandToggle () {
var toc = $('.ui-toc-dropdown .toc');
var toggle = $('.expand-toggle');
if (!tocExpand) {
toc.removeClass('expand');
toggle.text('Expand all');
} else {
toc.addClass('expand');
toggle.text('Collapse all');
}
}
function scrollToTop() {
$('body, html').stop(true, true).animate({
scrollTop: 0
}, 100, "linear");
}
function scrollToBottom() {
$('body, html').stop(true, true).animate({
scrollTop: $(document.body)[0].scrollHeight
}, 100, "linear");
}
</script>
</body>
</html>