mirror of
https://github.com/tendermint/tendermint.git
synced 2026-02-03 10:32:05 +00:00
130 lines
92 KiB
HTML
130 lines
92 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-US">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>RFC 021: The Future of the Socket Protocol | Tendermint Core</title>
|
||
<meta name="generator" content="VuePress 1.9.7">
|
||
|
||
<meta name="description" content="">
|
||
|
||
<link rel="preload" href="/master/assets/css/0.styles.3ed5e0a6.css" as="style"><link rel="preload" href="/master/assets/js/app.d8230444.js" as="script"><link rel="preload" href="/master/assets/js/24.7da7f2cf.js" as="script"><link rel="preload" href="/master/assets/js/21.92fb7737.js" as="script"><link rel="preload" href="/master/assets/js/44.a966f787.js" as="script"><link rel="preload" href="/master/assets/js/19.a758649d.js" as="script"><link rel="preload" href="/master/assets/js/66.1a996a52.js" as="script"><link rel="preload" href="/master/assets/js/64.602a26f4.js" as="script"><link rel="preload" href="/master/assets/js/65.224ad1ec.js" as="script"><link rel="preload" href="/master/assets/js/25.c1f919e6.js" as="script"><link rel="preload" href="/master/assets/js/56.714e246c.js" as="script"><link rel="preload" href="/master/assets/js/62.c200562d.js" as="script"><link rel="preload" href="/master/assets/js/40.bbfd2b95.js" as="script"><link rel="preload" href="/master/assets/js/10.3cf8ba3a.js" as="script"><link rel="preload" href="/master/assets/js/7.c795f92d.js" as="script"><link rel="preload" href="/master/assets/js/169.53785d6d.js" as="script"><link rel="preload" href="/master/assets/js/5.4af69dfc.js" as="script"><link rel="preload" href="/master/assets/js/38.933ad5bd.js" as="script"><link rel="preload" href="/master/assets/js/13.cd4f8d8e.js" as="script"><link rel="preload" href="/master/assets/js/12.cf95ee24.js" as="script"><link rel="preload" href="/master/assets/js/16.e0a6886e.js" as="script"><link rel="preload" href="/master/assets/js/45.1110ab59.js" as="script"><link rel="preload" href="/master/assets/js/20.c6a2fb05.js" as="script"><link rel="prefetch" href="/master/assets/js/100.5cc5b1c5.js"><link rel="prefetch" href="/master/assets/js/101.b1686c25.js"><link rel="prefetch" href="/master/assets/js/102.a77f09ff.js"><link rel="prefetch" href="/master/assets/js/103.628a973b.js"><link rel="prefetch" href="/master/assets/js/104.adff3890.js"><link rel="prefetch" href="/master/assets/js/105.5ce65b7f.js"><link rel="prefetch" href="/master/assets/js/106.4eea6346.js"><link rel="prefetch" href="/master/assets/js/107.b576d87a.js"><link rel="prefetch" href="/master/assets/js/108.104f5ed5.js"><link rel="prefetch" href="/master/assets/js/109.b15e9151.js"><link rel="prefetch" href="/master/assets/js/11.00f01e88.js"><link rel="prefetch" href="/master/assets/js/110.0934a099.js"><link rel="prefetch" href="/master/assets/js/111.47e9b185.js"><link rel="prefetch" href="/master/assets/js/112.97ab0e05.js"><link rel="prefetch" href="/master/assets/js/113.55b9e637.js"><link rel="prefetch" href="/master/assets/js/114.e6d24a0b.js"><link rel="prefetch" href="/master/assets/js/115.ae115651.js"><link rel="prefetch" href="/master/assets/js/116.dc5b6048.js"><link rel="prefetch" href="/master/assets/js/117.eb7f1121.js"><link rel="prefetch" href="/master/assets/js/118.3c73b8f0.js"><link rel="prefetch" href="/master/assets/js/119.e78eaee1.js"><link rel="prefetch" href="/master/assets/js/120.3e622c8d.js"><link rel="prefetch" href="/master/assets/js/121.e9172ca7.js"><link rel="prefetch" href="/master/assets/js/122.2477faff.js"><link rel="prefetch" href="/master/assets/js/123.3858ea7c.js"><link rel="prefetch" href="/master/assets/js/124.ae4bf284.js"><link rel="prefetch" href="/master/assets/js/125.f19a08b1.js"><link rel="prefetch" href="/master/assets/js/126.dbab3f37.js"><link rel="prefetch" href="/master/assets/js/127.49556a1a.js"><link rel="prefetch" href="/master/assets/js/128.56bf99ca.js"><link rel="prefetch" href="/master/assets/js/129.ee765751.js"><link rel="prefetch" href="/master/assets/js/130.e5c849d4.js"><link rel="prefetch" href="/master/assets/js/131.a480108f.js"><link rel="prefetch" href="/master/assets/js/132.7eb3a84d.js"><link rel="prefetch" href="/master/assets/js/133.15232f8a.js"><link rel="prefetch" href="/master/assets/js/134.a91c8722.js"><link rel="prefetch" href="/master/assets/js/135.616bb5ec.js"><link rel="prefetch" href="/master/assets/js/136.ea8b592e.js"><link rel="prefetch" href="/master/assets/js/137.4cd52167.js"><link rel="prefetch" href="/master/assets/js/138.a78dd2df.js"><link rel="prefetch" href="/master/assets/js/139.920add1b.js"><link rel="prefetch" href="/master/assets/js/14.54477264.js"><link rel="prefetch" href="/master/assets/js/140.a5b807fb.js"><link rel="prefetch" href="/master/assets/js/141.723d107b.js"><link rel="prefetch" href="/master/assets/js/142.476214d4.js"><link rel="prefetch" href="/master/assets/js/143.686ce60b.js"><link rel="prefetch" href="/master/assets/js/144.c0d5b563.js"><link rel="prefetch" href="/master/assets/js/145.6612f3a3.js"><link rel="prefetch" href="/master/assets/js/146.2d5b17d6.js"><link rel="prefetch" href="/master/assets/js/147.acbb86d8.js"><link rel="prefetch" href="/master/assets/js/148.0cbee9ba.js"><link rel="prefetch" href="/master/assets/js/149.b6267cfe.js"><link rel="prefetch" href="/master/assets/js/15.fd025618.js"><link rel="prefetch" href="/master/assets/js/150.d31241cd.js"><link rel="prefetch" href="/master/assets/js/151.c495db3c.js"><link rel="prefetch" href="/master/assets/js/152.dc828f50.js"><link rel="prefetch" href="/master/assets/js/153.c771569c.js"><link rel="prefetch" href="/master/assets/js/154.abd87751.js"><link rel="prefetch" href="/master/assets/js/155.30665cc5.js"><link rel="prefetch" href="/master/assets/js/156.9f90939a.js"><link rel="prefetch" href="/master/assets/js/157.c8770fc9.js"><link rel="prefetch" href="/master/assets/js/158.bfcecfc8.js"><link rel="prefetch" href="/master/assets/js/159.a60c2f65.js"><link rel="prefetch" href="/master/assets/js/160.a2bdf37d.js"><link rel="prefetch" href="/master/assets/js/161.3034a0ff.js"><link rel="prefetch" href="/master/assets/js/162.27ac6ca6.js"><link rel="prefetch" href="/master/assets/js/163.d9cd6b68.js"><link rel="prefetch" href="/master/assets/js/164.ce8d8e42.js"><link rel="prefetch" href="/master/assets/js/165.eeca2c68.js"><link rel="prefetch" href="/master/assets/js/166.6a7f0cc2.js"><link rel="prefetch" href="/master/assets/js/167.29e50517.js"><link rel="prefetch" href="/master/assets/js/168.ad3e026b.js"><link rel="prefetch" href="/master/assets/js/17.60b16410.js"><link rel="prefetch" href="/master/assets/js/170.b6a4a563.js"><link rel="prefetch" href="/master/assets/js/171.7526d6a5.js"><link rel="prefetch" href="/master/assets/js/172.cd0d0c49.js"><link rel="prefetch" href="/master/assets/js/173.35504fc2.js"><link rel="prefetch" href="/master/assets/js/174.cc976f2e.js"><link rel="prefetch" href="/master/assets/js/175.0b4facea.js"><link rel="prefetch" href="/master/assets/js/176.12a12fc4.js"><link rel="prefetch" href="/master/assets/js/177.630fd5cd.js"><link rel="prefetch" href="/master/assets/js/178.ba8a329b.js"><link rel="prefetch" href="/master/assets/js/179.7fb5d9b0.js"><link rel="prefetch" href="/master/assets/js/18.70b108cc.js"><link rel="prefetch" href="/master/assets/js/180.0d724be1.js"><link rel="prefetch" href="/master/assets/js/181.0e208788.js"><link rel="prefetch" href="/master/assets/js/182.553ee2b1.js"><link rel="prefetch" href="/master/assets/js/183.a6f8527e.js"><link rel="prefetch" href="/master/assets/js/184.681becb1.js"><link rel="prefetch" href="/master/assets/js/185.2d4a9a49.js"><link rel="prefetch" href="/master/assets/js/186.0497565b.js"><link rel="prefetch" href="/master/assets/js/187.baf6f121.js"><link rel="prefetch" href="/master/assets/js/188.5a222747.js"><link rel="prefetch" href="/master/assets/js/189.a7c824fa.js"><link rel="prefetch" href="/master/assets/js/190.2642eb15.js"><link rel="prefetch" href="/master/assets/js/191.8db84f5e.js"><link rel="prefetch" href="/master/assets/js/192.10e6303a.js"><link rel="prefetch" href="/master/assets/js/193.fbdff6d5.js"><link rel="prefetch" href="/master/assets/js/194.d473ffb9.js"><link rel="prefetch" href="/master/assets/js/195.943bf237.js"><link rel="prefetch" href="/master/assets/js/196.78f88461.js"><link rel="prefetch" href="/master/assets/js/197.04fb062d.js"><link rel="prefetch" href="/master/assets/js/198.4b7bd369.js"><link rel="prefetch" href="/master/assets/js/199.2fc4251b.js"><link rel="prefetch" href="/master/assets/js/2.21a3b73d.js"><link rel="prefetch" href="/master/assets/js/200.e8092982.js"><link rel="prefetch" href="/master/assets/js/201.ad0ca234.js"><link rel="prefetch" href="/master/assets/js/202.ba982f85.js"><link rel="prefetch" href="/master/assets/js/203.58278d59.js"><link rel="prefetch" href="/master/assets/js/204.530c01f4.js"><link rel="prefetch" href="/master/assets/js/205.92a67f57.js"><link rel="prefetch" href="/master/assets/js/206.c5965b0c.js"><link rel="prefetch" href="/master/assets/js/207.6ecd36d8.js"><link rel="prefetch" href="/master/assets/js/208.1fda83e3.js"><link rel="prefetch" href="/master/assets/js/209.97336016.js"><link rel="prefetch" href="/master/assets/js/210.6987519a.js"><link rel="prefetch" href="/master/assets/js/211.a33323ae.js"><link rel="prefetch" href="/master/assets/js/212.c604bd63.js"><link rel="prefetch" href="/master/assets/js/213.5587058c.js"><link rel="prefetch" href="/master/assets/js/214.fa9254c0.js"><link rel="prefetch" href="/master/assets/js/215.f0fce597.js"><link rel="prefetch" href="/master/assets/js/216.d7f22820.js"><link rel="prefetch" href="/master/assets/js/217.758018af.js"><link rel="prefetch" href="/master/assets/js/218.01e70259.js"><link rel="prefetch" href="/master/assets/js/219.b84360b6.js"><link rel="prefetch" href="/master/assets/js/22.f2a7721b.js"><link rel="prefetch" href="/master/assets/js/220.5c0d86a5.js"><link rel="prefetch" href="/master/assets/js/221.cdd41b1d.js"><link rel="prefetch" href="/master/assets/js/222.93860dc0.js"><link rel="prefetch" href="/master/assets/js/223.e657a453.js"><link rel="prefetch" href="/master/assets/js/224.a2b3a252.js"><link rel="prefetch" href="/master/assets/js/225.b6cd6c3c.js"><link rel="prefetch" href="/master/assets/js/226.80cc67c6.js"><link rel="prefetch" href="/master/assets/js/227.c4aa2938.js"><link rel="prefetch" href="/master/assets/js/228.aacbe57c.js"><link rel="prefetch" href="/master/assets/js/229.272ca3bb.js"><link rel="prefetch" href="/master/assets/js/23.3585792b.js"><link rel="prefetch" href="/master/assets/js/230.ac763afc.js"><link rel="prefetch" href="/master/assets/js/231.149f56b4.js"><link rel="prefetch" href="/master/assets/js/232.15826ff6.js"><link rel="prefetch" href="/master/assets/js/233.9fbd25cc.js"><link rel="prefetch" href="/master/assets/js/234.aae0d1d4.js"><link rel="prefetch" href="/master/assets/js/235.8158d914.js"><link rel="prefetch" href="/master/assets/js/236.578d0ba4.js"><link rel="prefetch" href="/master/assets/js/237.576b607d.js"><link rel="prefetch" href="/master/assets/js/238.83492fa9.js"><link rel="prefetch" href="/master/assets/js/239.f3344236.js"><link rel="prefetch" href="/master/assets/js/240.f30a632c.js"><link rel="prefetch" href="/master/assets/js/241.244c1e08.js"><link rel="prefetch" href="/master/assets/js/242.8c617355.js"><link rel="prefetch" href="/master/assets/js/243.cbbbed8a.js"><link rel="prefetch" href="/master/assets/js/244.fe594f7c.js"><link rel="prefetch" href="/master/assets/js/245.bbcf1378.js"><link rel="prefetch" href="/master/assets/js/246.62527ea7.js"><link rel="prefetch" href="/master/assets/js/247.aa90a132.js"><link rel="prefetch" href="/master/assets/js/248.3098aa52.js"><link rel="prefetch" href="/master/assets/js/249.afad9084.js"><link rel="prefetch" href="/master/assets/js/250.b15fdc90.js"><link rel="prefetch" href="/master/assets/js/251.5646fcc2.js"><link rel="prefetch" href="/master/assets/js/252.ecf07444.js"><link rel="prefetch" href="/master/assets/js/253.0bd7f622.js"><link rel="prefetch" href="/master/assets/js/254.d492ac3e.js"><link rel="prefetch" href="/master/assets/js/255.8bd41455.js"><link rel="prefetch" href="/master/assets/js/256.d4462e7d.js"><link rel="prefetch" href="/master/assets/js/257.797cc72d.js"><link rel="prefetch" href="/master/assets/js/258.27f39f23.js"><link rel="prefetch" href="/master/assets/js/259.ad3448ab.js"><link rel="prefetch" href="/master/assets/js/26.922fc32d.js"><link rel="prefetch" href="/master/assets/js/260.0294a586.js"><link rel="prefetch" href="/master/assets/js/261.0eaa0b9f.js"><link rel="prefetch" href="/master/assets/js/262.06819323.js"><link rel="prefetch" href="/master/assets/js/263.05690e0f.js"><link rel="prefetch" href="/master/assets/js/264.8a841edd.js"><link rel="prefetch" href="/master/assets/js/265.7308bbfb.js"><link rel="prefetch" href="/master/assets/js/266.d10b567b.js"><link rel="prefetch" href="/master/assets/js/267.2a830a94.js"><link rel="prefetch" href="/master/assets/js/268.cf9b6e9a.js"><link rel="prefetch" href="/master/assets/js/269.a56e873a.js"><link rel="prefetch" href="/master/assets/js/27.a195c036.js"><link rel="prefetch" href="/master/assets/js/270.ac696056.js"><link rel="prefetch" href="/master/assets/js/271.a56f1c15.js"><link rel="prefetch" href="/master/assets/js/272.23c07599.js"><link rel="prefetch" href="/master/assets/js/273.fbe68aeb.js"><link rel="prefetch" href="/master/assets/js/274.fe2386ad.js"><link rel="prefetch" href="/master/assets/js/275.69282bce.js"><link rel="prefetch" href="/master/assets/js/276.240d659c.js"><link rel="prefetch" href="/master/assets/js/28.384b9a99.js"><link rel="prefetch" href="/master/assets/js/29.e9daa0bc.js"><link rel="prefetch" href="/master/assets/js/3.1cd0e33c.js"><link rel="prefetch" href="/master/assets/js/30.5ab7786b.js"><link rel="prefetch" href="/master/assets/js/31.1e453d18.js"><link rel="prefetch" href="/master/assets/js/32.35268055.js"><link rel="prefetch" href="/master/assets/js/33.30a50a02.js"><link rel="prefetch" href="/master/assets/js/34.9c4a443a.js"><link rel="prefetch" href="/master/assets/js/35.db83baae.js"><link rel="prefetch" href="/master/assets/js/36.da1c5d51.js"><link rel="prefetch" href="/master/assets/js/37.50e455e2.js"><link rel="prefetch" href="/master/assets/js/39.d3b31824.js"><link rel="prefetch" href="/master/assets/js/4.e6373162.js"><link rel="prefetch" href="/master/assets/js/41.88458af2.js"><link rel="prefetch" href="/master/assets/js/42.aef6ffe8.js"><link rel="prefetch" href="/master/assets/js/43.59e6430f.js"><link rel="prefetch" href="/master/assets/js/46.2eee78b0.js"><link rel="prefetch" href="/master/assets/js/47.2d2c9c61.js"><link rel="prefetch" href="/master/assets/js/48.888652e0.js"><link rel="prefetch" href="/master/assets/js/49.7518a020.js"><link rel="prefetch" href="/master/assets/js/50.cb1c2ceb.js"><link rel="prefetch" href="/master/assets/js/51.559ef27c.js"><link rel="prefetch" href="/master/assets/js/52.bb739ede.js"><link rel="prefetch" href="/master/assets/js/53.4603f16f.js"><link rel="prefetch" href="/master/assets/js/54.ca6c6483.js"><link rel="prefetch" href="/master/assets/js/55.3b3a1e0a.js"><link rel="prefetch" href="/master/assets/js/57.53889f56.js"><link rel="prefetch" href="/master/assets/js/58.bc13479f.js"><link rel="prefetch" href="/master/assets/js/59.9025c9ef.js"><link rel="prefetch" href="/master/assets/js/6.f7acf8d3.js"><link rel="prefetch" href="/master/assets/js/60.16551eff.js"><link rel="prefetch" href="/master/assets/js/61.46f5ed80.js"><link rel="prefetch" href="/master/assets/js/63.b20bf942.js"><link rel="prefetch" href="/master/assets/js/67.38659a6f.js"><link rel="prefetch" href="/master/assets/js/68.66aa10ef.js"><link rel="prefetch" href="/master/assets/js/69.2163ef0b.js"><link rel="prefetch" href="/master/assets/js/70.ad5dd2d2.js"><link rel="prefetch" href="/master/assets/js/71.a8b1be45.js"><link rel="prefetch" href="/master/assets/js/72.6e1a24bb.js"><link rel="prefetch" href="/master/assets/js/73.6f5020f1.js"><link rel="prefetch" href="/master/assets/js/74.c3531406.js"><link rel="prefetch" href="/master/assets/js/75.ba272559.js"><link rel="prefetch" href="/master/assets/js/76.54fa3332.js"><link rel="prefetch" href="/master/assets/js/77.20562058.js"><link rel="prefetch" href="/master/assets/js/78.fb2118d8.js"><link rel="prefetch" href="/master/assets/js/79.37c1c8cc.js"><link rel="prefetch" href="/master/assets/js/8.f830f562.js"><link rel="prefetch" href="/master/assets/js/80.abd6c897.js"><link rel="prefetch" href="/master/assets/js/81.28f9ddd9.js"><link rel="prefetch" href="/master/assets/js/82.28920985.js"><link rel="prefetch" href="/master/assets/js/83.6bdc0ed7.js"><link rel="prefetch" href="/master/assets/js/84.67c01fe3.js"><link rel="prefetch" href="/master/assets/js/85.2b3eae25.js"><link rel="prefetch" href="/master/assets/js/86.a7bdae44.js"><link rel="prefetch" href="/master/assets/js/87.b456d7ab.js"><link rel="prefetch" href="/master/assets/js/88.f8ce81fe.js"><link rel="prefetch" href="/master/assets/js/89.f80c82a5.js"><link rel="prefetch" href="/master/assets/js/9.98e56c96.js"><link rel="prefetch" href="/master/assets/js/90.100c678c.js"><link rel="prefetch" href="/master/assets/js/91.9e0eb885.js"><link rel="prefetch" href="/master/assets/js/92.068d4a86.js"><link rel="prefetch" href="/master/assets/js/93.7fbc83f0.js"><link rel="prefetch" href="/master/assets/js/94.182ccb66.js"><link rel="prefetch" href="/master/assets/js/95.c1e6c57d.js"><link rel="prefetch" href="/master/assets/js/96.40381e38.js"><link rel="prefetch" href="/master/assets/js/97.7aaeced9.js"><link rel="prefetch" href="/master/assets/js/98.dae4dd3e.js"><link rel="prefetch" href="/master/assets/js/99.91817ca7.js">
|
||
<link rel="stylesheet" href="/master/assets/css/0.styles.3ed5e0a6.css">
|
||
</head>
|
||
<body>
|
||
<div id="app" data-server-rendered="true"><div data-v-58560e81><div data-v-40401285 data-v-58560e81><div class="banner-wrapper" data-v-40401285 data-v-40401285><div class="wrapper" data-v-40401285><div class="message" data-v-40401285>By using this website, you agree to our <a href="https://www.cookiesandyou.com" target="_blank" rel="noopener" style="color:#505FFF;" data-v-40401285>Cookie Policy</a>.</div> <div class="box" data-v-40401285><span class="icon-cross" data-v-40401285><svg width="16" height="16" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg" data-v-40401285><path d="M1.66669 1.66669L12.3334 12.3334M12.3334 1.66669L1.66664 12.3334" stroke="#A2A3AD" stroke-width="1.5" stroke-linecap="round" data-v-40401285></path></svg></span></div></div></div></div><!----><div class="layout" data-v-58560e81><div class="layout__sidebar" data-v-58560e81><div style="height:100%;position:relative;" data-v-25cba946 data-v-58560e81><div class="container" data-v-25cba946><a href="/master/" class="logo__container router-link-active" data-v-25cba946><div class="logo" data-v-25cba946><div class="logo__img" data-v-25cba946><svg width="100%" height="100%" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg" data-v-25cba946><path fill-rule="evenodd" clip-rule="evenodd" d="M100 6.9282L19.3975 53.4641V146.536L100 193.072L180.603 146.536V53.4641L100 6.9282ZM186.603 50L100 0L13.3975 50V150L100 200L186.603 150V50Z" fill="#00BB00"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M118.521 80.989C112.693 78.6912 106.416 77.4911 100.076 77.4911C86.7528 77.4911 74.2205 82.7219 64.7884 92.2196C55.3971 101.676 50.1795 114.236 50.0956 127.588L50.0845 129.381L51.6424 130.267C59.151 134.539 67.6423 136.787 76.2468 136.787C76.4834 136.787 76.7219 136.785 76.9591 136.782C84.4596 136.674 91.8801 134.87 98.6072 131.541C96.486 130.355 94.4533 129.019 92.5209 127.546C80.7952 132.165 67.5061 131.595 56.2598 125.81C57.3537 102.38 76.6441 83.6116 100.076 83.6116C106.594 83.6116 113.031 85.0533 118.845 87.7928C118.92 85.5246 118.812 83.2511 118.521 80.989Z" fill="#00BB00"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M150.057 127.172C149.879 110.572 141.795 95.4272 128.321 86.2016C128.331 88.6306 128.169 91.0582 127.835 93.4714C137.41 101.289 143.247 112.801 143.885 125.413C123.232 136.055 97.4756 128.602 85.743 108.266C82.574 102.772 80.6311 96.6307 80.0601 90.3552C78.0668 91.4421 76.163 92.6927 74.3657 94.0948C75.3134 100.134 77.3729 105.999 80.4462 111.326C87.1202 122.894 97.85 131.188 110.658 134.678C115.004 135.863 119.422 136.449 123.816 136.449C132.377 136.449 140.847 134.224 148.51 129.866L150.076 128.975L150.057 127.172Z" fill="#00BB00"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M101.843 42.9061L100.298 42L98.7531 42.9047C91.1194 47.3722 84.7773 53.7773 80.4121 61.4272C76.6426 68.0338 74.413 75.4344 73.8901 82.9885C75.9799 81.7463 78.1569 80.6541 80.4079 79.7207C82.347 67.2679 89.5887 56.0133 100.295 49.1357C119.96 61.7797 126.427 87.9954 114.615 108.469C111.416 114.013 107.043 118.807 101.861 122.488C103.796 123.668 105.829 124.693 107.94 125.549C112.731 121.666 116.809 116.908 119.912 111.529C133.703 87.6254 125.597 56.8415 101.843 42.9061Z" fill="#00BB00"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M100.268 95.1374C97.4504 95.1374 95.1588 97.431 95.1588 100.25C95.1588 103.069 97.4504 105.363 100.268 105.363C103.085 105.363 105.377 103.069 105.377 100.25C105.377 97.431 103.085 95.1374 100.268 95.1374ZM100.268 111.483C94.0779 111.483 89.0427 106.444 89.0427 100.25C89.0427 94.056 94.0779 89.0169 100.268 89.0169C106.457 89.0169 111.493 94.056 111.493 100.25C111.493 106.444 106.457 111.483 100.268 111.483Z" fill="#00BB00"></path></svg></div><div class="logo__text" data-v-25cba946>Tendermint Core</div></div></a><div class="items footer__compact__false" data-v-25cba946><div class="sidebar" style="display:block;" data-v-25cba946><div class="title" data-v-25cba946></div><!----></div><div class="sidebar" style="display:block;" data-v-25cba946><div class="title" data-v-25cba946>Resources</div><!----></div><div class="sidebar version" data-v-25cba946><div data-v-08503e1b data-v-25cba946><div class="container" data-v-08503e1b><span class="sr-only" data-v-08503e1b>Docs Version Switcher</span><div class="select" data-v-08503e1b><select data-v-08503e1b><option value="" disabled="disabled" data-v-08503e1b>Version</option><option value="v0.33" data-v-08503e1b>v0.33</option><option value="v0.34" data-v-08503e1b>v0.34</option><option value="v0.35" data-v-08503e1b>v0.35</option></select></div></div></div></div></div><div class="footer footer__compact__false" data-v-25cba946><a href="https://docs.cosmos.network/" target="_blank" rel="noreferrer noopener" class="footer__item" style="--color:#5064FB;" data-v-25cba946><div class="footer__item__icon" data-v-25cba946><svg width="100%" height="100%" viewBox="0 0 29 33" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M14.5249 1.86771L1.62846 9.31346V24.2049L14.5249 31.6507L27.4213 24.2049V9.31346L14.5249 1.86771ZM28.3813 8.7592L14.5249 0.759201L0.668463 8.7592V24.7592L14.5249 32.7592L28.3813 24.7592V8.7592Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M14.5249 14.6144L12.7136 15.6602V17.7516L14.5249 18.7974L16.3362 17.7516V15.6602L14.5249 14.6144ZM17.2962 15.1059L14.5249 13.5059L11.7536 15.1059V18.3059L14.5249 19.9059L17.2962 18.3059V15.1059Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M17.6182 20.0011L15.8069 21.0468V23.1383L17.6182 24.1841L19.4295 23.1383V21.0468L17.6182 20.0011ZM20.3895 20.4926L17.6182 18.8926L14.8469 20.4926V23.6926L17.6182 25.2926L20.3895 23.6926V20.4926Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M20.7115 14.6144L18.9003 15.6602V17.7516L20.7115 18.7974L22.5228 17.7516V15.6602L20.7115 14.6144ZM23.4828 15.1059L20.7115 13.5059L17.9403 15.1059V18.3059L20.7115 19.9059L23.4828 18.3059V15.1059Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M8.33821 14.6144L6.52693 15.6602V17.7516L8.33821 18.7974L10.1495 17.7516V15.6602L8.33821 14.6144ZM11.1095 15.1059L8.33821 13.5059L5.56693 15.1059V18.3059L8.33821 19.9059L11.1095 18.3059V15.1059Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M11.4315 20.0011L9.62026 21.0468V23.1383L11.4315 24.1841L13.2428 23.1383V21.0468L11.4315 20.0011ZM14.2028 20.4926L11.4315 18.8926L8.66026 20.4926V23.6926L11.4315 25.2926L14.2028 23.6926V20.4926Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M17.6182 9.33442L15.8069 10.3802V12.4716L17.6182 13.5174L19.4295 12.4716V10.3802L17.6182 9.33442ZM20.3895 9.82591L17.6182 8.22591L14.8469 9.82591V13.0259L17.6182 14.6259L20.3895 13.0259V9.82591Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M11.4315 9.33442L9.62026 10.3802V12.4716L11.4315 13.5174L13.2428 12.4716V10.3802L11.4315 9.33442ZM14.2028 9.82591L11.4315 8.22591L8.66026 9.82591V13.0259L11.4315 14.6259L14.2028 13.0259V9.82591Z"></path></svg></div><div class="footer__item__title" data-v-25cba946><div>Cosmos<br>SDK</div></div></a><a href="https://hub.cosmos.network/" target="_blank" rel="noreferrer noopener" class="footer__item" style="--color:#BA3FD9;" data-v-25cba946><div class="footer__item__icon" data-v-25cba946><svg width="100%" height="100%" viewBox="0 0 29 33" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M14.7074 1.86771L1.81101 9.31346V24.2049L14.7074 31.6507L27.6038 24.2049V9.31346L14.7074 1.86771ZM28.5638 8.7592L14.7074 0.759201L0.851009 8.7592V24.7592L14.7074 32.7592L28.5638 24.7592V8.7592Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M14.702 11.0209C13.7115 11.0209 12.9058 10.2146 12.9058 9.22341C12.9058 8.23228 13.7115 7.42595 14.702 7.42595C15.6924 7.42595 16.4982 8.23228 16.4982 9.22341C16.4982 10.2146 15.6924 11.0209 14.702 11.0209ZM14.702 8.40532C14.2512 8.40532 13.8845 8.77232 13.8845 9.22341C13.8845 9.6745 14.2512 10.0415 14.702 10.0415C15.1528 10.0415 15.5195 9.6745 15.5195 9.22341C15.5195 8.77232 15.1528 8.40532 14.702 8.40532Z"></path> <path d="M14.2392 11.3182C14.3935 11.3538 14.5541 11.3726 14.7191 11.3726C14.8841 11.3726 15.0448 11.3538 15.1992 11.3182V14.6804C15.0448 14.6448 14.8841 14.626 14.7191 14.626C14.5541 14.626 14.3935 14.6448 14.2392 14.6804V11.3182Z"></path> <path d="M13.1599 15.3048L10.247 13.623C10.2007 13.7745 10.1366 13.9231 10.0541 14.066C9.97165 14.2089 9.87502 14.3386 9.76702 14.4544L12.6788 16.1355C12.7749 15.8219 12.9414 15.5388 13.1599 15.3048Z"></path> <path d="M12.6788 17.383L9.767 19.0642C9.87503 19.18 9.97168 19.3098 10.0542 19.4527C10.1367 19.5955 10.2007 19.7441 10.247 19.8955L13.1598 18.2138C12.9414 17.9798 12.7749 17.6967 12.6788 17.383Z"></path> <path d="M14.2392 18.8382V22.2004C14.3935 22.1648 14.5542 22.146 14.7192 22.146C14.8842 22.146 15.0448 22.1648 15.1992 22.2004V18.8382C15.0448 18.8738 14.8841 18.8926 14.7191 18.8926C14.5541 18.8926 14.3935 18.8738 14.2392 18.8382Z"></path> <path d="M16.2784 18.2138L19.1913 19.8955C19.2376 19.7441 19.3017 19.5955 19.3842 19.4526C19.4667 19.3097 19.5633 19.18 19.6713 19.0641L16.7595 17.383C16.6634 17.6966 16.4969 17.9797 16.2784 18.2138Z"></path> <path d="M16.7595 16.1356L19.6713 14.4544C19.5633 14.3386 19.4666 14.2088 19.3841 14.0659C19.3016 13.923 19.2376 13.7745 19.1913 13.623L16.2784 15.3048C16.4969 15.5388 16.6634 15.8219 16.7595 16.1356Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M9.74094 13.905C9.24572 14.7627 8.1446 15.0573 7.28623 14.5617C6.42789 14.0662 6.13243 12.9653 6.62765 12.1075C7.12287 11.2498 8.22408 10.9551 9.08241 11.4506C9.94079 11.9462 10.2362 13.0472 9.74094 13.905ZM7.47581 12.5972C7.25041 12.9876 7.3849 13.4887 7.77555 13.7142C8.16621 13.9397 8.66738 13.8057 8.89278 13.4153C9.11818 13.0249 8.98374 12.5237 8.59309 12.2982C8.20243 12.0726 7.70122 12.2068 7.47581 12.5972Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M9.75813 19.6434C10.2534 20.5011 9.95794 21.602 9.09956 22.0976C8.24122 22.5932 7.14006 22.2986 6.64484 21.4408C6.14962 20.5831 6.44503 19.4821 7.30337 18.9865C8.16175 18.4909 9.26291 18.7856 9.75813 19.6434ZM7.493 20.9512C7.71841 21.3416 8.21958 21.4756 8.61023 21.2501C9.00089 21.0245 9.13537 20.5235 8.90997 20.1331C8.68457 19.7427 8.18336 19.6085 7.7927 19.8341C7.40204 20.0596 7.2676 20.5607 7.493 20.9512Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M14.7363 22.4977C15.7268 22.4977 16.5325 23.304 16.5325 24.2952C16.5325 25.2863 15.7268 26.0926 14.7363 26.0926C13.7459 26.0926 12.9401 25.2863 12.9401 24.2952C12.9401 23.304 13.7459 22.4977 14.7363 22.4977ZM14.7363 25.1133C15.1871 25.1133 15.5538 24.7463 15.5538 24.2952C15.5538 23.8441 15.1871 23.4771 14.7363 23.4771C14.2855 23.4771 13.9188 23.8441 13.9188 24.2952C13.9188 24.7463 14.2855 25.1133 14.7363 25.1133Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M19.6974 19.6136C20.1926 18.7559 21.2937 18.4613 22.1521 18.9568C23.0104 19.4524 23.3059 20.5533 22.8107 21.4111C22.3154 22.2688 21.2142 22.5635 20.3559 22.0679C19.4975 21.5723 19.2021 20.4714 19.6974 19.6136ZM21.9625 20.9214C22.1879 20.531 22.0534 20.0299 21.6628 19.8044C21.2721 19.5788 20.7709 19.7129 20.5455 20.1033C20.3201 20.4937 20.4546 20.9948 20.8452 21.2204C21.2359 21.4459 21.7371 21.3118 21.9625 20.9214Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M19.6802 13.8752C19.185 13.0174 19.4804 11.9165 20.3387 11.421C21.1971 10.9254 22.2982 11.22 22.7935 12.0777C23.2887 12.9355 22.9933 14.0365 22.1349 14.532C21.2766 15.0276 20.1754 14.7329 19.6802 13.8752ZM21.9453 12.5674C21.7199 12.177 21.2187 12.043 20.8281 12.2685C20.4374 12.494 20.3029 12.9951 20.5283 13.3855C20.7537 13.7759 21.2549 13.9101 21.6456 13.6845C22.0363 13.459 22.1707 12.9578 21.9453 12.5674Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M14.702 15.9253C14.2512 15.9253 13.8845 16.2923 13.8845 16.7434C13.8845 17.1945 14.2512 17.5615 14.702 17.5615C15.1528 17.5615 15.5195 17.1945 15.5195 16.7434C15.5195 16.2923 15.1528 15.9253 14.702 15.9253ZM14.702 18.5409C13.7115 18.5409 12.9058 17.7346 12.9058 16.7434C12.9058 15.7523 13.7115 14.946 14.702 14.946C15.6924 14.946 16.4982 15.7523 16.4982 16.7434C16.4982 17.7346 15.6924 18.5409 14.702 18.5409Z"></path></svg></div><div class="footer__item__title" data-v-25cba946><div>Cosmos<br>Hub</div></div></a><a href="https://ibc.cosmos.network" target="_blank" rel="noreferrer noopener" class="footer__item" style="--color:#E6900A;" data-v-25cba946><div class="footer__item__icon" data-v-25cba946><svg width="100%" height="100%" viewBox="0 0 28 33" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M14 1.53446L1.10359 8.98021V23.8717L14 31.3174L26.8964 23.8717V8.98021L14 1.53446ZM27.8564 8.42595L14 0.425949L0.143593 8.42595V24.4259L14 32.4259L27.8564 24.4259V8.42595Z"></path> <path d="M13.4305 11.2288C13.1139 11.141 12.8267 10.9819 12.5873 10.7699L8.35975 18.4481C8.67187 18.5487 8.95282 18.7194 9.18397 18.9416L13.4305 11.2288Z"></path> <path d="M9.79716 20.0526C9.82527 20.1905 9.84002 20.3332 9.84002 20.4792C9.84002 20.6633 9.81659 20.8421 9.77254 21.0126H18.2808C18.2368 20.8421 18.2134 20.6633 18.2134 20.4792C18.2134 20.3332 18.2281 20.1905 18.2562 20.0526L9.79716 20.0526Z"></path> <path d="M15.4184 10.7648L19.6862 18.4505C19.3745 18.5522 19.0942 18.7239 18.8638 18.9469L14.5768 11.2267C14.893 11.1378 15.1797 10.9777 15.4184 10.7648Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M20.3295 19.6453C19.8787 19.6453 19.512 20.0123 19.512 20.4634C19.512 20.9145 19.8787 21.2815 20.3295 21.2815C20.7803 21.2815 21.1471 20.9145 21.1471 20.4634C21.1471 20.0123 20.7803 19.6453 20.3295 19.6453ZM20.3295 22.2608C19.3391 22.2608 18.5334 21.4545 18.5334 20.4634C18.5334 19.4722 19.3391 18.6659 20.3295 18.6659C21.3199 18.6659 22.1257 19.4722 22.1257 20.4634C22.1257 21.4545 21.3199 22.2608 20.3295 22.2608Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M13.9828 8.33862C13.532 8.33862 13.1653 8.70561 13.1653 9.1567C13.1653 9.60779 13.532 9.97479 13.9828 9.97479C14.4336 9.97479 14.8004 9.60779 14.8004 9.1567C14.8004 8.70561 14.4336 8.33862 13.9828 8.33862ZM13.9828 10.9542C12.9924 10.9542 12.1867 10.1479 12.1867 9.1567C12.1867 8.16558 12.9924 7.35925 13.9828 7.35925C14.9733 7.35925 15.7791 8.16558 15.7791 9.1567C15.7791 10.1479 14.9733 10.9542 13.9828 10.9542Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M7.6895 19.6453C7.2387 19.6453 6.87201 20.0123 6.87201 20.4634C6.87201 20.9145 7.2387 21.2815 7.6895 21.2815C8.1403 21.2815 8.50708 20.9145 8.50708 20.4634C8.50708 20.0123 8.1403 19.6453 7.6895 19.6453ZM7.6895 22.2608C6.69906 22.2608 5.89336 21.4545 5.89336 20.4634C5.89336 19.4722 6.69906 18.6659 7.6895 18.6659C8.67994 18.6659 9.48573 19.4722 9.48573 20.4634C9.48573 21.4545 8.67994 22.2608 7.6895 22.2608Z"></path></svg></div><div class="footer__item__title" data-v-25cba946><div>IBC<br>Go</div></div></a><!----></div></div></div></div><div class="layout__main" data-v-58560e81><div class="layout__main__navbar" data-v-58560e81><div data-v-19189c02 data-v-58560e81><div class="container" data-v-19189c02><div class="menu" data-v-19189c02><div class="menu__icon" data-v-19189c02><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" stroke="#888" data-v-19189c02><path d="M2 5H22M2 12H22M2 19H22" stroke-width="1.5" stroke-linecap="round"></path></svg></div></div><div class="logo" data-v-19189c02><div class="logo__wrapper router-link-active" data-v-19189c02><div class="logo__image" data-v-19189c02><div data-v-19189c02><svg width="100%" height="100%" viewBox="0 0 29 33" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M14.3333 1.20113L1.43693 8.64688V23.5383L14.3333 30.9841L27.2297 23.5383V8.64688L14.3333 1.20113ZM28.1897 8.09262L14.3333 0.0926208L0.476929 8.09262V24.0926L14.3333 32.0926L28.1897 24.0926V8.09262Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M17.2967 13.0508C16.3642 12.6832 15.3599 12.4911 14.3456 12.4911C12.2139 12.4911 10.2087 13.3281 8.6995 14.8477C7.19695 16.3607 6.36214 18.3704 6.3487 20.5067L6.34692 20.7935L6.59619 20.9353C7.79757 21.6189 9.1562 21.9785 10.5329 21.9785C10.5708 21.9785 10.6089 21.9782 10.6469 21.9776C11.8469 21.9604 13.0342 21.6718 14.1106 21.1392C13.7712 20.9493 13.4459 20.7355 13.1367 20.4998C11.2606 21.2389 9.1344 21.1478 7.33497 20.2221C7.51 16.4733 10.5965 13.4704 14.3456 13.4704C15.3884 13.4704 16.4184 13.7011 17.3486 14.1394C17.3606 13.7765 17.3434 13.4127 17.2967 13.0508Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M22.3425 20.4401C22.314 17.7841 21.0207 15.3609 18.8648 13.8848C18.8664 14.2735 18.8404 14.6619 18.787 15.048C20.3189 16.2988 21.2529 18.1407 21.355 20.1586C18.0506 21.8613 13.9295 20.6688 12.0523 17.4151C11.5453 16.5362 11.2344 15.5535 11.143 14.5494C10.8241 14.7233 10.5195 14.9234 10.2319 15.1477C10.3836 16.114 10.7131 17.0524 11.2048 17.9047C12.2726 19.7556 13.9894 21.0826 16.0387 21.6411C16.734 21.8306 17.4409 21.9244 18.1439 21.9244C19.5137 21.9244 20.8689 21.5684 22.095 20.8711L22.3456 20.7285L22.3425 20.4401Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M14.6283 6.95757L14.3811 6.81259L14.1339 6.95735C12.9125 7.67214 11.8978 8.69696 11.1993 9.92094C10.5962 10.978 10.2395 12.1621 10.1558 13.3707C10.4902 13.172 10.8385 12.9972 11.1987 12.8479C11.5089 10.8554 12.6676 9.05472 14.3807 7.95431C17.527 9.97734 18.5617 14.1718 16.6718 17.4476C16.16 18.3347 15.4602 19.1017 14.6311 19.6906C14.9408 19.8794 15.266 20.0434 15.6038 20.1805C16.3703 19.5591 17.0228 18.7979 17.5193 17.9372C19.7259 14.1126 18.4289 9.18723 14.6283 6.95757Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M14.3762 15.3146C13.9255 15.3146 13.5588 15.6815 13.5588 16.1326C13.5588 16.5836 13.9255 16.9506 14.3762 16.9506C14.827 16.9506 15.1937 16.5836 15.1937 16.1326C15.1937 15.6815 14.827 15.3146 14.3762 15.3146ZM14.3762 17.9299C13.3859 17.9299 12.5802 17.1237 12.5802 16.1326C12.5802 15.1415 13.3859 14.3353 14.3762 14.3353C15.3666 14.3353 16.1723 15.1415 16.1723 16.1326C16.1723 17.1237 15.3666 17.9299 14.3762 17.9299Z"></path></svg></div></div><div class="logo__text" data-v-19189c02>Tendermint Core</div></div></div><div class="toolbar" data-v-19189c02><div class="toolbar__item" data-v-19189c02><div class="toolbar__item__icon" data-v-19189c02><svg width="100%" height="100%" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="#888" data-v-19189c02><path fill-rule="evenodd" clip-rule="evenodd" d="M11.5 2.75C6.66751 2.75 2.75 6.66751 2.75 11.5C2.75 16.3325 6.66751 20.25 11.5 20.25C13.6462 20.25 15.612 19.4773 17.1342 18.1949L22.6697 23.7303C22.9626 24.0232 23.4374 24.0232 23.7303 23.7303C24.0232 23.4374 24.0232 22.9626 23.7303 22.6697L18.1949 17.1342C19.4773 15.612 20.25 13.6462 20.25 11.5C20.25 6.66751 16.3325 2.75 11.5 2.75ZM16.6923 16.5599C17.9656 15.2535 18.75 13.4684 18.75 11.5C18.75 7.49594 15.5041 4.25 11.5 4.25C7.49594 4.25 4.25 7.49594 4.25 11.5C4.25 15.5041 7.49594 18.75 11.5 18.75C13.4684 18.75 15.2535 17.9656 16.5599 16.6923C16.5789 16.6679 16.5996 16.6444 16.622 16.622C16.6444 16.5996 16.6679 16.5789 16.6923 16.5599Z"></path></svg></div></div></div></div></div></div><div class="layout__main__content aside__true" data-v-58560e81><div id="content-scroll" class="layout__main__content__body" data-v-58560e81><div class="layout__main__content__body__breadcrumbs" data-v-58560e81><div data-v-48fb2d7a data-v-58560e81><div class="container" data-v-48fb2d7a><div class="crumbs" data-v-48fb2d7a><a href="/master/" class="crumbs__item router-link-active" data-v-48fb2d7a>Tendermint Core</a><a href="/master/rfc/" class="crumbs__item router-link-active" data-v-48fb2d7a>Requests for Comments</a><a href="/master/rfc/rfc-021-socket-protocol.html" aria-current="page" class="crumbs__item router-link-exact-active router-link-active" data-v-48fb2d7a>RFC 021: The Future of the Socket Protocol</a></div><div class="menu" data-v-48fb2d7a><div class="menu__item" style="visibility:visible;" data-v-48fb2d7a><svg width="100%" height="100%" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" class="menu__item__icon menu__item__icon__active__false" data-v-48fb2d7a><path fill-rule="evenodd" clip-rule="evenodd" d="M0.25 2C0.25 1.58579 0.585786 1.25 1 1.25H6C6.41421 1.25 6.75 1.58579 6.75 2C6.75 2.41421 6.41421 2.75 6 2.75H1C0.585786 2.75 0.25 2.41421 0.25 2ZM17.53 22.7803L16.9997 22.25L17.53 22.7803L17.5301 22.7802L17.5305 22.7798L17.5322 22.7781L17.5388 22.7715L17.5647 22.7456L17.6647 22.6456L18.0367 22.2737L19.2978 21.0126L22.53 17.7803C22.8229 17.4874 22.8229 17.0126 22.53 16.7197C22.2371 16.4268 21.7622 16.4268 21.4693 16.7197L18.2371 19.9519L17.7497 20.4393V8.5C17.7497 6.34186 17.0721 4.51182 15.7802 3.21983C14.4882 1.92783 12.6581 1.25031 10.5 1.25031C10.0858 1.25031 9.75 1.5861 9.75 2.00031C9.75 2.41453 10.0858 2.75031 10.5 2.75031C12.3419 2.75031 13.7617 3.32264 14.7195 4.28049C15.6773 5.23834 16.2497 6.65814 16.2497 8.5L16.2497 20.4393L12.53 16.7197C12.2371 16.4268 11.7622 16.4268 11.4693 16.7197C11.1764 17.0126 11.1764 17.4874 11.4693 17.7803L16.4693 22.7803L16.9997 23.3107L17.53 22.7803ZM1 6.25C0.585786 6.25 0.25 6.58579 0.25 7C0.25 7.41421 0.585786 7.75 1 7.75H10C10.4142 7.75 10.75 7.41421 10.75 7C10.75 6.58579 10.4142 6.25 10 6.25H1ZM0.25 12C0.25 11.5858 0.585786 11.25 1 11.25H12C12.4142 11.25 12.75 11.5858 12.75 12C12.75 12.4142 12.4142 12.75 12 12.75H1C0.585786 12.75 0.25 12.4142 0.25 12ZM1 16.25C0.585786 16.25 0.25 16.5858 0.25 17C0.25 17.4142 0.585786 17.75 1 17.75H8C8.41421 17.75 8.75 17.4142 8.75 17C8.75 16.5858 8.41421 16.25 8 16.25H1Z" data-v-48fb2d7a></path></svg><!----></div></div></div></div></div><div class="layout__main__content__body__wrapper" data-v-58560e81><div style="width:100%;" data-v-c85ed208 data-v-58560e81><div class="search__container" data-v-c85ed208><div class="search" data-v-c85ed208><div class="search__icon" data-v-c85ed208><svg width="100%" height="100%" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" data-v-c85ed208><path fill-rule="evenodd" clip-rule="evenodd" d="M11.5 2.75C6.66751 2.75 2.75 6.66751 2.75 11.5C2.75 16.3325 6.66751 20.25 11.5 20.25C13.6462 20.25 15.612 19.4773 17.1342 18.1949L22.6697 23.7303C22.9626 24.0232 23.4374 24.0232 23.7303 23.7303C24.0232 23.4374 24.0232 22.9626 23.7303 22.6697L18.1949 17.1342C19.4773 15.612 20.25 13.6462 20.25 11.5C20.25 6.66751 16.3325 2.75 11.5 2.75ZM16.6923 16.5599C17.9656 15.2535 18.75 13.4684 18.75 11.5C18.75 7.49594 15.5041 4.25 11.5 4.25C7.49594 4.25 4.25 7.49594 4.25 11.5C4.25 15.5041 7.49594 18.75 11.5 18.75C13.4684 18.75 15.2535 17.9656 16.5599 16.6923C16.5789 16.6679 16.5996 16.6444 16.622 16.622C16.6444 16.5996 16.6679 16.5789 16.6923 16.5599Z"></path></svg></div><div class="search__text" data-v-c85ed208>Search</div></div></div><div class="container" data-v-c85ed208><div class="content__default" data-v-58560e81><h1 id="rfc-021-the-future-of-the-socket-protocol"><a href="#rfc-021-the-future-of-the-socket-protocol" class="header-anchor">#</a> RFC 021: The Future of the Socket Protocol</h1> <h2 id="changelog"><a href="#changelog" class="header-anchor">#</a> Changelog</h2> <ul><li>19-May-2022: Initial draft (@creachadair)</li> <li>19-Jul-2022: Converted from ADR to RFC (@creachadair)</li></ul> <h2 id="abstract"><a href="#abstract" class="header-anchor">#</a> Abstract</h2> <p>This RFC captures some technical discussion about the ABCI socket protocol that
|
||
was originally documented to solicit an architectural decision. This topic was
|
||
not high-enough priority as of this writing to justify making a final decision.</p> <p>For that reason, the text of this RFC has the general structure of an ADR, but
|
||
should be viewed primarily as a record of the issue for future reference.</p> <h2 id="background"><a href="#background" class="header-anchor">#</a> Background</h2> <p>The <a href="https://github.com/tendermint/spec/tree/master/spec/abci" target="_blank" rel="noopener noreferrer">Application Blockchain Interface (ABCI)<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> is a client-server protocol
|
||
used by the Tendermint consensus engine to communicate with the application on
|
||
whose behalf it performs state replication. There are currently three transport
|
||
options available for ABCI applications:</p> <ol><li><p><strong>In-process</strong>: Applications written in Go can be linked directly into the
|
||
same binary as the consensus node. Such applications use a "local" ABCI
|
||
connection, which exposes application methods to the node as direct function
|
||
calls.</p></li> <li><p><strong>Socket protocol</strong>: Out-of-process applications may export the ABCI service
|
||
via a custom socket protocol that sends requests and responses over a
|
||
Unix-domain or TCP socket connection as length-prefixed protocol buffers.
|
||
In Tendermint, this is handled by the <a href="https://github.com/tendermint/tendermint/blob/master/abci/client/socket_client.go" target="_blank" rel="noopener noreferrer">socket client<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</p></li> <li><p><strong>gRPC</strong>: Out-of-process applications may export the ABCI service via gRPC.
|
||
In Tendermint, this is handled by the <a href="https://github.com/tendermint/tendermint/blob/master/abci/client/grpc_client.go" target="_blank" rel="noopener noreferrer">gRPC client<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</p></li></ol> <p>Both the out-of-process options (2) and (3) have a long history in Tendermint.
|
||
The beginnings of the gRPC client were added in <a href="https://github.com/tendermint/abci/commit/1ab3c747182aaa38418258679c667090c2bb1e0d" target="_blank" rel="noopener noreferrer">May 2016<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> when
|
||
ABCI was still hosted in a separate repository, and the socket client (formerly
|
||
called the "remote client") was part of ABCI from its inception in November
|
||
2015.</p> <p>At that time when ABCI was first being developed, the gRPC project was very new
|
||
(it launched Q4 2015) and it was not an obvious choice for use in Tendermint.
|
||
It took a while before the language coverage and quality of gRPC reached a
|
||
point where it could be a viable solution for out-of-process applications. For
|
||
that reason, it made sense for the initial design of ABCI to focus on a custom
|
||
protocol for out-of-process applications.</p> <h2 id="problem-statement"><a href="#problem-statement" class="header-anchor">#</a> Problem Statement</h2> <p>For practical reasons, ABCI needs an interprocess communication option to
|
||
support applications not written in Go. The two practical options are RPC and
|
||
FFI, and for operational reasons an RPC mechanism makes more sense.</p> <p>The socket protocol has not changed all that substantially since its original
|
||
design, and has the advantage of being simple to implement in almost any
|
||
reasonable language. However, its simplicity includes some limitations that
|
||
have had a negative impact on the stability and performance of out-of-process
|
||
applications using it. In particular:</p> <ul><li><p>The protocol lacks request identifiers, so the client and server must return
|
||
responses in strict FIFO order. Even if the client issues requests that have
|
||
no dependency on each other, the protocol has no way except order of issue to
|
||
map responses to requests.</p> <p>This reduces (in some cases substantially) the concurrency an application can
|
||
exploit, since the parallelism of requests in flight is gated by the slowest
|
||
active request at any moment. There have been complaints from some network
|
||
operators on that basis.</p></li> <li><p>The protocol lacks method identifiers, so the only way for the client and
|
||
server to understand which operation is requested is to dispatch on the type
|
||
of the request and response payloads. For responses, this means that <a href="https://github.com/tendermint/tendermint/blob/master/abci/client/socket_client.go#L149" target="_blank" rel="noopener noreferrer">any
|
||
error condition is terminal not only to the request, but to the entire ABCI
|
||
client<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</p> <p>The historical intent of terminating for any error seems to have been that
|
||
all ABCI errors are unrecoverable and hence protocol fatal
|
||
(see <a href="#note1">Note 1</a>). In practice, however, this greatly complicates
|
||
debugging a faulty node, since the only way to respond to errors is to panic
|
||
the node which loses valuable context that could have been logged.</p></li> <li><p>There are subtle concurrency management dependencies between the client and
|
||
the server that are not clearly documented anywhere, and it is very easy for
|
||
small changes in both the client and the server to lead to tricky deadlocks,
|
||
panics, race conditions, and slowdowns. As a recent example of this, see
|
||
https://github.com/tendermint/tendermint/pull/8581.</p></li></ul> <p>These limitations are fixable, but one important question is whether it is
|
||
worthwhile to fix them. We can add request and method identifiers, for
|
||
example, but doing so would be a breaking change to the protocol requiring
|
||
every application using it to update. If applications have to migrate anyway,
|
||
the stability and language coverage of gRPC have improved a lot, and today it
|
||
is probably simpler to set up and maintain an application using gRPC transport
|
||
than to reimplement the Tendermint socket protocol.</p> <p>Moreover, gRPC addresses all the above issues out-of-the-box, and requires
|
||
(much) less custom code for both the server (i.e., the application) and the
|
||
client. The project is well-funded and widely-used, which makes it a safe bet
|
||
for a dependency.</p> <h2 id="decision"><a href="#decision" class="header-anchor">#</a> Decision</h2> <p>There is a set of related alternatives to consider:</p> <ul><li><p>Question 1: Designate a single IPC standard for out-of-process applications?</p> <p>Claim: We should converge on one (and only one) IPC option for out-of-process
|
||
applications. We should choose an option that, after a suitable period of
|
||
deprecation for alternatives, will address most or all the highest-impact
|
||
uses of Tendermint. Maintaining multiple options increases the surface area
|
||
for bugs and vulnerabilities, and we should not have multiple options for
|
||
basic interfaces without a clear and well-documented reason.</p></li> <li><p>Question 2a: Choose gRPC and deprecate/remove the socket protocol?</p> <p>Claim: Maintaining and improving a custom RPC protocol is a substantial
|
||
project and not directly relevant to the requirements of consensus. We would
|
||
be better served by depending on a well-maintained open-source library like
|
||
gRPC.</p></li> <li><p>Question 2b: Improve the socket protocol and deprecate/remove gRPC?</p> <p>Claim: If we find meaningful advantages to maintaining our own custom RPC
|
||
protocol in Tendermint, we should treat it as a first-class project within
|
||
the core and invest in making it good enough that we do not require other
|
||
options.</p></li></ul> <p><strong>One important consideration</strong> when discussing these questions is that <em>any
|
||
outcome which includes keeping the socket protocol will have eventual migration
|
||
impacts for out-of-process applications</em> regardless. To fix the limitations of
|
||
the socket protocol as it is currently designed will require making <em>breaking
|
||
changes</em> to the protocol. So, while we may put off a migration cost for
|
||
out-of-process applications by retaining the socket protocol in the short term,
|
||
we will eventually have to pay those costs to fix the problems in its current
|
||
design.</p> <h2 id="detailed-design"><a href="#detailed-design" class="header-anchor">#</a> Detailed Design</h2> <ol><li><p>If we choose to standardize on gRPC, the main work in Tendermint core will
|
||
be removing and cleaning up the code for the socket client and server.</p> <p>Besides the code cleanup, we will also need to clearly document a
|
||
deprecation schedule, and invest time in making the migration easier for
|
||
applications currently using the socket protocol.</p> <blockquote><p><strong>Point for discussion:</strong> Migrating from the socket protocol to gRPC
|
||
should mostly be a plumbing change, as long as we do it during a release
|
||
in which we are not making other breaking changes to ABCI. However, the
|
||
effort may be more or less depending on how gRPC integration works in the
|
||
application's implementation language, and would have to be sure networks
|
||
have plenty of time not only to make the change but to verify that it
|
||
preserves the function of the network.</p> <p>What questions should we be asking node operators and application
|
||
developers to understand the migration costs better?</p></blockquote></li> <li><p>If we choose to keep only the socket protocol, we will need to follow up
|
||
with a more detailed design for extending and upgrading the protocol to fix
|
||
the existing performance and operational issues with the protocol.</p> <p>Moreover, since the gRPC interface has been around for a long time we will
|
||
also need a deprecation plan for it.</p></li> <li><p>If we choose to keep both options, we will still need to do all the work of
|
||
(2), but the gRPC implementation should not require any immediate changes.</p></li></ol> <h2 id="alternatives-considered"><a href="#alternatives-considered" class="header-anchor">#</a> Alternatives Considered</h2> <ul><li><p><strong>FFI</strong>. Another approach we could take is to use a C-based FFI interface so
|
||
that applications written in other languages are linked directly with the
|
||
consensus node, an option currently only available for Go applications.</p> <p>An FFI interface is possible for a lot of languages, but FFI support varies
|
||
widely in coverage and quality across languages and the points of friction
|
||
can be tricky to work around. Moreover, it's much harder to add FFI support
|
||
to a language where it's missing after-the-fact for an application developer.</p> <p>Although a basic FFI interface is not too difficult on the Go side, the C
|
||
shims for an FFI can get complicated if there's a lot of variability in the
|
||
runtime environment on the other end.</p> <p>If we want to have one answer for non-Go applications, we are better off
|
||
picking an IPC-based solution (whether that's gRPC or an extension of our
|
||
custom socket protocol or something else).</p></li></ul> <h2 id="consequences"><a href="#consequences" class="header-anchor">#</a> Consequences</h2> <ul><li><p><strong>Standardize on gRPC</strong></p> <ul><li>✅ Addresses existing performance and operational issues.</li> <li>✅ Replaces custom code with a well-maintained widely-used library.</li> <li>✅ Aligns with Cosmos SDK, which already uses gRPC extensively.</li> <li>✅ Aligns with priv validator interface, for which the socket protocol is already deprecated for gRPC.</li> <li>❓ Applications will be hard to implement in a language without gRPC support.</li> <li>⛔ All users of the socket protocol have to migrate to gRPC, and we believe most current out-of-process applications use the socket protocol.</li></ul></li> <li><p><strong>Standardize on socket protocol</strong></p> <ul><li>✅ Less immediate impact for existing users (but see below).</li> <li>✅ Simplifies ABCI API surface by removing gRPC.</li> <li>❓ Users of the socket protocol will have a (smaller) migration.</li> <li>❓ Potentially easier to implement for languages that do not have support.</li> <li>⛔ Need to do all the work to fix the socket protocol (which will require existing users to update anyway later).</li> <li>⛔ Ongoing maintenance burden for per-language server implementations.</li></ul></li> <li><p><strong>Keep both options</strong></p> <ul><li>✅ Less immediate impact for existing users (but see below).</li> <li>❓ Users of the socket protocol will have a (smaller) migration.</li> <li>⛔ Still need to do all the work to fix the socket protocol (which will require existing users to update anyway later).</li> <li>⛔ Requires ongoing maintenance and support of both gRPC and socket protocol integrations.</li></ul></li></ul> <h2 id="references"><a href="#references" class="header-anchor">#</a> References</h2> <ul><li><a href="https://github.com/tendermint/spec/tree/master/spec/abci" target="_blank" rel="noopener noreferrer">Application Blockchain Interface (ABCI)<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://github.com/tendermint/tendermint/blob/master/abci/client/socket_client.go" target="_blank" rel="noopener noreferrer">Tendermint ABCI socket client<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://github.com/tendermint/tendermint/blob/master/abci/client/grpc_client.go" target="_blank" rel="noopener noreferrer">Tendermint ABCI gRPC client<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://github.com/tendermint/abci/commit/1ab3c747182aaa38418258679c667090c2bb1e0d" target="_blank" rel="noopener noreferrer">Initial commit of gRPC client<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul> <h2 id="notes"><a href="#notes" class="header-anchor">#</a> Notes</h2> <ul><li><p><a id="note1"></a><strong>Note 1</strong>: The choice to make all ABCI errors protocol-fatal
|
||
was intended to avoid the risk that recovering an application error could
|
||
cause application state to diverge. Divergence can break consensus, so it's
|
||
essential to avoid it.</p> <p>This is a sound principle, but conflates protocol errors with "mechanical"
|
||
errors such as timeouts, resoures exhaustion, failed connections, and so on.
|
||
Because the protocol has no way to distinguish these conditions, the only way
|
||
for an application to report an error is to panic or crash.</p> <p>Whether a node is running in the same process as the application or as a
|
||
separate process, application errors should not be suppressed or hidden.
|
||
However, it's important to ensure that errors are handled at a consistent and
|
||
well-defined point in the protocol: Having the application panic or crash
|
||
rather than reporting an error means the node sees different results
|
||
depending on whether the application runs in-process or out-of-process, even
|
||
if the application logic is otherwise identical.</p></li></ul> <h2 id="appendix-known-implementations-of-abci-socket-protocol"><a href="#appendix-known-implementations-of-abci-socket-protocol" class="header-anchor">#</a> Appendix: Known Implementations of ABCI Socket Protocol</h2> <p>This is a list of known implementations of the Tendermint custom socket
|
||
protocol. Note that in most cases I have not checked how complete or correct
|
||
these implementations are; these are based on search results and a cursory
|
||
visual inspection.</p> <ul><li>Tendermint Core (Go): <a href="https://github.com/tendermint/tendermint/blob/master/abci/client/socket_client.go" target="_blank" rel="noopener noreferrer">client<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>, <a href="https://github.com/tendermint/tendermint/blob/master/abci/server/socket_server.go" target="_blank" rel="noopener noreferrer">server<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li>Informal Systems <a href="https://github.com/informalsystems/tendermint-rs" target="_blank" rel="noopener noreferrer">tendermint-rs<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> (Rust): <a href="https://github.com/informalsystems/tendermint-rs/blob/master/abci/src/client.rs" target="_blank" rel="noopener noreferrer">client<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>, <a href="https://github.com/informalsystems/tendermint-rs/blob/master/abci/src/server.rs" target="_blank" rel="noopener noreferrer">server<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li>Tendermint <a href="https://github.com/tendermint/js-abci" target="_blank" rel="noopener noreferrer">js-abci<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> (JS): <a href="https://github.com/tendermint/js-abci/blob/master/src/server.js" target="_blank" rel="noopener noreferrer">server<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://github.com/Hotmoka/hotmoka" target="_blank" rel="noopener noreferrer">Hotmoka<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> ABCI (Java): <a href="https://github.com/Hotmoka/hotmoka/blob/master/io-hotmoka-tendermint-abci/src/main/java/io/hotmoka/tendermint_abci/Server.java" target="_blank" rel="noopener noreferrer">server<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://github.com/penumbra-zone/tower-abci" target="_blank" rel="noopener noreferrer">Tower ABCI<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> (Rust): <a href="https://github.com/penumbra-zone/tower-abci/blob/main/src/server.rs" target="_blank" rel="noopener noreferrer">server<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://github.com/datopia/abci-host" target="_blank" rel="noopener noreferrer">abci-host<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> (Clojure): <a href="https://github.com/datopia/abci-host/blob/master/src/abci/host.clj" target="_blank" rel="noopener noreferrer">server<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://github.com/KrzysiekJ/abci_server" target="_blank" rel="noopener noreferrer">abci_server<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> (Erlang): <a href="https://github.com/KrzysiekJ/abci_server/blob/master/src/abci_server.erl" target="_blank" rel="noopener noreferrer">server<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://github.com/davebryson/py-abci" target="_blank" rel="noopener noreferrer">py-abci<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> (Python): <a href="https://github.com/davebryson/py-abci/blob/master/src/abci/server.py" target="_blank" rel="noopener noreferrer">server<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://github.com/intechsa/scala-tendermint-server" target="_blank" rel="noopener noreferrer">scala-tendermint-server<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> (Scala): <a href="https://github.com/InTechSA/scala-tendermint-server/blob/master/src/main/scala/lu/intech/tendermint/Server.scala" target="_blank" rel="noopener noreferrer">server<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://github.com/f-o-a-m/kepler" target="_blank" rel="noopener noreferrer">kepler<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> (Rust): <a href="https://github.com/f-o-a-m/kepler/blob/master/hs-abci-server/src/Network/ABCI/Server.hs" target="_blank" rel="noopener noreferrer">server<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div><!----></div></div></div></div><div class="layout__main__content__aside__container" style="--height-banners:nullpx;" data-v-58560e81><div class="layout__main__content__aside aside__bottom__false" data-v-58560e81><!----></div><div class="layout__main__content__aside__banners" data-v-58560e81><a href="https://github.com/tendermint/tendermint/issues" target="_blank" data-v-58560e81><div data-v-31935645 data-v-58560e81><div class="container" data-v-31935645><svg width="100%" height="100%" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" class="icon" data-v-31935645><path d="M0.836491 13.7697C0.543598 14.0626 0.543598 14.5374 0.836492 14.8303C1.12939 15.1232 1.60426 15.1232 1.89715 14.8303L0.836491 13.7697ZM14.7729 1.95457C15.0658 1.66168 15.0658 1.1868 14.7729 0.893912C14.48 0.601019 14.0051 0.601019 13.7122 0.893913L14.7729 1.95457ZM14.6668 1H15.4168V0.25H14.6668V1ZM4.48498 0.25C4.07077 0.25 3.73498 0.585786 3.73498 1C3.73498 1.41421 4.07077 1.75 4.48498 1.75V0.25ZM13.9168 11.1818C13.9168 11.596 14.2526 11.9318 14.6668 11.9318C15.081 11.9318 15.4168 11.596 15.4168 11.1818H13.9168ZM1.89715 14.8303L14.7729 1.95457L13.7122 0.893913L0.836491 13.7697L1.89715 14.8303ZM14.6668 0.25H4.48498V1.75H14.6668V0.25ZM15.4168 11.1818V1H13.9168V11.1818H15.4168Z"></path></svg><div class="image" data-v-31935645><svg width="41" height="44" viewBox="0 0 41 44" fill="none" xmlns="http://www.w3.org/2000/svg" data-v-31935645><path fill-rule="evenodd" clip-rule="evenodd" d="M4 1.8999H32C33.3807 1.8999 34.5 3.01919 34.5 4.3999V10.997L36 9.497V4.3999C36 2.19076 34.2091 0.399902 32 0.399902H4C1.79086 0.399902 0 2.19077 0 4.39991V39.5999C0 41.809 1.79086 43.5999 4 43.5999H32C34.2091 43.5999 36 41.809 36 39.5999V20.2096L34.5 21.7096V39.5999C34.5 40.9806 33.3807 42.0999 32 42.0999H4C2.61929 42.0999 1.5 40.9806 1.5 39.5999V4.39991C1.5 3.01919 2.61929 1.8999 4 1.8999ZM7.2 19.1999H26.2971L24.2971 21.1999H7.2V19.1999ZM7.2 15.7999H28.8V13.7999H7.2V15.7999ZM7.2 26.5999H16.2V24.5999H7.2V26.5999ZM20.8638 25.7372L20.7386 25.8624L20.6826 26.0303L18.9855 31.1215L18.4792 32.6406L19.9704 32.0571L24.8494 30.1479L24.9955 30.0908L25.1064 29.9798L37.9799 17.1063L39.7831 15.3032C40.9546 14.1316 40.9546 12.2321 39.7831 11.0606C38.6115 9.88898 36.712 9.88898 35.5404 11.0606L20.8638 25.7372ZM20.9149 30.0767L22.0496 26.6726L36.6011 12.1212C37.1869 11.5354 38.1366 11.5354 38.7224 12.1212C39.3082 12.707 39.3082 13.6567 38.7224 14.2425L37.4496 15.5153L36.2465 14.3122C35.9536 14.0193 35.4787 14.0193 35.1858 14.3122C34.8929 14.6051 34.8929 15.08 35.1858 15.3729L36.3889 16.576L24.5761 28.3888L23.6215 27.4342C23.3286 27.1413 22.8537 27.1413 22.5608 27.4342C22.2679 27.7271 22.2679 28.202 22.5608 28.4949L23.2349 29.1689L20.9149 30.0767Z" fill="var(--color-primary, blue)" data-v-31935645></path></svg></div><div class="h1" data-v-31935645>Found an Issue?</div><div class="h2" data-v-31935645>Help us improve this page by suggesting edits on GitHub.</div></div></div></a></div></div></div><div class="layout__main__gutter" data-v-58560e81><div data-v-15325c0d data-v-58560e81><div class="links" data-v-15325c0d><div class="links__wrapper" data-v-15325c0d><div class="links__container" data-v-15325c0d><a href="/master/rfc/rfc-018-bls-agg-exploration.html" class="links__item links__item__left" data-v-15325c0d><div class="links__item__icon" data-v-15325c0d><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 64 64" data-v-15325c0d><title data-v-15325c0d>arrow-right</title><g stroke-linecap="square" stroke-linejoin="miter" stroke-width="2" data-v-15325c0d><line fill="none" stroke-miterlimit="10" x1="61" y1="32" x2="3" y2="32" stroke-linecap="butt" data-v-15325c0d></line><polyline fill="none" stroke-miterlimit="10" points="21,14 3,32 21,50 " data-v-15325c0d></polyline></g></svg></div><div data-v-15325c0d><div class="links__label" data-v-15325c0d>Previous</div><div class="links__item__title" data-v-15325c0d>RFC 018: BLS Signature Aggregation Exploration</div><!----></div></a></div></div><div class="links__wrapper" data-v-15325c0d><div class="links__container" data-v-15325c0d><a href="/master/rfc/rfc-template.html" class="links__item links__item__right" data-v-15325c0d><div data-v-15325c0d><div class="links__label" data-v-15325c0d>Next</div><div class="links__item__title" data-v-15325c0d>RFC {RFC-NUMBER}: {TITLE}</div><!----></div><div class="links__item__icon" data-v-15325c0d><svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 64 64" data-v-15325c0d><title data-v-15325c0d>arrow-right</title><g stroke-linecap="square" stroke-linejoin="miter" stroke-width="2" data-v-15325c0d><line fill="none" stroke-miterlimit="10" x1="3" y1="32" x2="61" y2="32" stroke-linecap="butt" data-v-15325c0d></line><polyline fill="none" stroke-miterlimit="10" points="43,14 61,32 43,50 " data-v-15325c0d></polyline></g></svg></div></a></div></div></div></div></div><div class="layout__main__footer" data-v-58560e81><div data-v-732a47ec data-v-58560e81><div class="wrapper" data-v-732a47ec><div class="container" data-v-732a47ec><div class="footer__wrapper" data-v-732a47ec><div class="questions" data-v-732a47ec><div class="questions__wrapper" data-v-732a47ec><div class="questions__h1" data-v-732a47ec>Questions?</div><div class="questions__p" data-v-732a47ec><div>Chat with Tendermint developers in <a href='https://discord.gg/cosmosnetwork' target='_blank'>Discord</a> or reach out on the <a href='https://forum.cosmos.network/c/tendermint' target='_blank'>Tendermint Forum</a> to learn more.</div></div></div><form action="https://app.mailerlite.com/webforms/submit/u7o3l7" data-code="u7o3l7" method="POST" target="_blank" rel="noreferrer noopener" class="newsletter__form__component__internal" data-v-fd618d74 data-v-732a47ec><div class="newsletter__desc" data-v-fd618d74><div class="newsletter__desc__h1" data-v-fd618d74><label for="newsletter-email-input" data-v-fd618d74>Get Cosmos updates</label></div><div class="newsletter__desc__p" data-v-fd618d74>You’ll be notified with Cosmos updates, news and announcements.</div></div><div class="newsletter__input" data-v-fd618d74><div class="newsletter__input__input" data-v-fd618d74><input type="email" required="required" name="fields[email]" id="newsletter-email-input" placeholder="Your email" class="newsletter__input__input__el" data-v-fd618d74><button type="submit" class="newsletter__input__input__button" data-v-fd618d74>Sign up</button><input type="hidden" name="ml-submit" value="1" data-v-fd618d74></div><div class="newsletter__input__p" data-v-fd618d74>You can unsubscribe at any time.</div></div></form></div><!----><div class="logo" data-v-732a47ec><div class="logo__item" data-v-732a47ec><a href="https://tendermint.com" target="_blank" rel="noreferrer noopener" tag="div" class="logo__image" data-v-732a47ec><svg width="100%" height="100%" viewBox="0 0 142 20" fill="black" xmlns="http://www.w3.org/2000/svg" data-v-732a47ec><path d="M33.5369 19.2904H35.9969V7.57038H40.4569V5.29038H29.0769V7.57038H33.5369V19.2904ZM45.3214 19.5304C47.2614 19.5304 48.6414 18.7504 49.6414 17.5504L48.2214 16.2904C47.3814 17.1104 46.5414 17.5504 45.3614 17.5504C43.8014 17.5504 42.5814 16.5904 42.3214 14.8704H50.0814C50.1014 14.6304 50.1214 14.4104 50.1214 14.1904C50.1214 11.1504 48.4214 8.51038 45.0614 8.51038C42.0414 8.51038 39.9014 10.9904 39.9014 14.0104V14.0504C39.9014 17.3104 42.2614 19.5304 45.3214 19.5304ZM42.3014 13.2704C42.5214 11.6304 43.5614 10.4904 45.0414 10.4904C46.6414 10.4904 47.5614 11.7104 47.7214 13.2704H42.3014ZM52.5317 19.2904H54.9717V13.3304C54.9717 11.6904 55.9517 10.7104 57.3517 10.7104C58.7917 10.7104 59.6117 11.6504 59.6117 13.2904V19.2904H62.0317V12.5504C62.0317 10.1104 60.6517 8.51038 58.2717 8.51038C56.6317 8.51038 55.6517 9.37038 54.9717 10.3504V8.73038H52.5317V19.2904ZM69.3141 19.5104C71.0341 19.5104 72.1341 18.6304 72.9141 17.5304V19.2904H75.3341V4.69038H72.9141V10.3704C72.1541 9.37038 71.0541 8.51038 69.3141 8.51038C66.7941 8.51038 64.4141 10.4904 64.4141 13.9904V14.0304C64.4141 17.5304 66.8341 19.5104 69.3141 19.5104ZM69.8941 17.4104C68.2541 17.4104 66.8541 16.0704 66.8541 14.0304V13.9904C66.8541 11.9104 68.2341 10.6104 69.8941 10.6104C71.5141 10.6104 72.9541 11.9504 72.9541 13.9904V14.0304C72.9541 16.0504 71.5141 17.4104 69.8941 17.4104ZM83.212 19.5304C85.152 19.5304 86.532 18.7504 87.532 17.5504L86.112 16.2904C85.272 17.1104 84.432 17.5504 83.252 17.5504C81.692 17.5504 80.472 16.5904 80.212 14.8704H87.972C87.992 14.6304 88.012 14.4104 88.012 14.1904C88.012 11.1504 86.312 8.51038 82.952 8.51038C79.932 8.51038 77.792 10.9904 77.792 14.0104V14.0504C77.792 17.3104 80.152 19.5304 83.212 19.5304ZM80.192 13.2704C80.412 11.6304 81.452 10.4904 82.932 10.4904C84.532 10.4904 85.452 11.7104 85.612 13.2704H80.192ZM90.4223 19.2904H92.8623V15.2704C92.8623 12.4704 94.3423 11.0904 96.4623 11.0904H96.6023V8.53038C94.7423 8.45038 93.5223 9.53038 92.8623 11.1104V8.73038H90.4223V19.2904ZM98.6841 19.2904H101.124V13.3304C101.124 11.7104 102.044 10.7104 103.384 10.7104C104.724 10.7104 105.524 11.6304 105.524 13.2704V19.2904H107.944V13.3304C107.944 11.6304 108.884 10.7104 110.204 10.7104C111.564 10.7104 112.344 11.6104 112.344 13.2904V19.2904H114.764V12.5504C114.764 9.97038 113.364 8.51038 111.064 8.51038C109.464 8.51038 108.344 9.25038 107.504 10.3704C106.944 9.25038 105.864 8.51038 104.344 8.51038C102.724 8.51038 101.804 9.39038 101.124 10.3304V8.73038H98.6841V19.2904ZM117.728 7.11038H120.328V4.81038H117.728V7.11038ZM117.808 19.2904H120.248V8.73038H117.808V19.2904ZM123.391 19.2904H125.831V13.3304C125.831 11.6904 126.811 10.7104 128.211 10.7104C129.651 10.7104 130.471 11.6504 130.471 13.2904V19.2904H132.891V12.5504C132.891 10.1104 131.511 8.51038 129.131 8.51038C127.491 8.51038 126.511 9.37038 125.831 10.3504V8.73038H123.391V19.2904ZM139.353 19.4704C140.273 19.4704 140.933 19.2704 141.533 18.9304V16.9504C141.053 17.1904 140.573 17.3104 140.033 17.3104C139.213 17.3104 138.733 16.9304 138.733 15.9904V10.8104H141.573V8.73038H138.733V5.83038H136.313V8.73038H134.973V10.8104H136.313V16.3704C136.313 18.6904 137.573 19.4704 139.353 19.4704Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M14.8359 8.62449C13.6297 8.17373 12.3308 7.93828 11.0189 7.93828C8.26156 7.93828 5.66799 8.96445 3.71603 10.8277C1.77253 12.6827 0.692757 15.1469 0.675382 17.7662L0.67308 18.1179L0.995493 18.2917C2.54939 19.1298 4.30666 19.5708 6.08735 19.5708C6.13631 19.5708 6.18567 19.5704 6.23475 19.5697C7.78697 19.5486 9.32263 19.1947 10.7148 18.5417C10.2758 18.3089 9.85515 18.0468 9.45524 17.7578C7.02864 18.664 4.27847 18.5523 1.95105 17.4173C2.17744 12.8209 6.16956 9.13899 11.0189 9.13899C12.3676 9.13899 13.6998 9.42181 14.903 9.95924C14.9185 9.51427 14.8962 9.06826 14.8359 8.62449"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M21.3623 17.6846C21.3253 14.4281 19.6525 11.4569 16.864 9.64708C16.8661 10.1236 16.8325 10.5998 16.7635 11.0733C18.7449 12.6069 19.9528 14.8652 20.085 17.3394C15.8109 19.4271 10.4806 17.965 8.05257 13.9755C7.39676 12.8979 6.99466 11.693 6.87649 10.4619C6.46399 10.6752 6.07001 10.9205 5.69806 11.1956C5.89419 12.3803 6.32039 13.5309 6.95641 14.5759C8.33758 16.8453 10.5581 18.4723 13.2087 19.1571C14.108 19.3895 15.0224 19.5045 15.9317 19.5045C17.7034 19.5045 19.4562 19.068 21.0421 18.213L21.3662 18.0382L21.3623 17.6846Z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M11.3845 1.1535L11.0648 0.975742L10.745 1.15323C9.16521 2.02964 7.85272 3.28619 6.94934 4.78692C6.16925 6.08298 5.70784 7.5348 5.59962 9.01676C6.0321 8.77307 6.48263 8.55879 6.94848 8.37569C7.34977 5.93272 8.84843 3.72483 11.0642 2.37561C15.1338 4.85607 16.4721 9.999 14.0276 14.0154C13.3657 15.1031 12.4605 16.0436 11.3882 16.7656C11.7887 16.9971 12.2093 17.1981 12.6463 17.3662C13.6376 16.6043 14.4816 15.671 15.1238 14.6157C17.9778 9.92641 16.3003 3.88731 11.3845 1.1535"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M11.0584 11.4001C10.4754 11.4001 10.0012 11.85 10.0012 12.4031C10.0012 12.9561 10.4754 13.4061 11.0584 13.4061C11.6415 13.4061 12.1158 12.9561 12.1158 12.4031C12.1158 11.85 11.6415 11.4001 11.0584 11.4001M11.0584 14.6068C9.77747 14.6068 8.73544 13.6183 8.73544 12.4031C8.73544 11.188 9.77747 10.1994 11.0584 10.1994C12.3394 10.1994 13.3815 11.188 13.3815 12.4031C13.3815 13.6183 12.3394 14.6068 11.0584 14.6068"></path></svg></a></div><div class="logo__item logo__link" data-v-732a47ec><a href="https://medium.com/@tendermint" target="_blank" title="medium" rel="noreferrer noopener" class="smallprint__item__links__item" data-v-732a47ec><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" fill="#aaa" data-v-732a47ec><path d="M24 24h-24v-24h24v24zm-4.03-5.649v-.269l-1.247-1.224c-.11-.084-.165-.222-.142-.359v-8.998c-.023-.137.032-.275.142-.359l1.277-1.224v-.269h-4.422l-3.152 7.863-3.586-7.863h-4.638v.269l1.494 1.799c.146.133.221.327.201.523v7.072c.044.255-.037.516-.216.702l-1.681 2.038v.269h4.766v-.269l-1.681-2.038c-.181-.186-.266-.445-.232-.702v-6.116l4.183 9.125h.486l3.593-9.125v7.273c0 .194 0 .232-.127.359l-1.292 1.254v.269h6.274z" data-v-732a47ec></path></svg></a><a href="https://twitter.com/tendermint_team" target="_blank" title="twitter" rel="noreferrer noopener" class="smallprint__item__links__item" data-v-732a47ec><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" fill="#aaa" data-v-732a47ec><path d="M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z" data-v-732a47ec></path></svg></a><a href="https://www.linkedin.com/company/tendermint/" target="_blank" title="linkedin" rel="noreferrer noopener" class="smallprint__item__links__item" data-v-732a47ec><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" fill="#aaa" data-v-732a47ec><path d="M0 0v24h24v-24h-24zm8 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.397-2.586 7-2.777 7 2.476v6.759z" data-v-732a47ec></path></svg></a><a href="https://reddit.com/r/cosmosnetwork" target="_blank" title="reddit" rel="noreferrer noopener" class="smallprint__item__links__item" data-v-732a47ec><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" fill="#aaa" data-v-732a47ec><path d="M14.238 15.348c.085.084.085.221 0 .306-.465.462-1.194.687-2.231.687l-.008-.002-.008.002c-1.036 0-1.766-.225-2.231-.688-.085-.084-.085-.221 0-.305.084-.084.222-.084.307 0 .379.377 1.008.561 1.924.561l.008.002.008-.002c.915 0 1.544-.184 1.924-.561.085-.084.223-.084.307 0zm-3.44-2.418c0-.507-.414-.919-.922-.919-.509 0-.923.412-.923.919 0 .506.414.918.923.918.508.001.922-.411.922-.918zm13.202-.93c0 6.627-5.373 12-12 12s-12-5.373-12-12 5.373-12 12-12 12 5.373 12 12zm-5-.129c0-.851-.695-1.543-1.55-1.543-.417 0-.795.167-1.074.435-1.056-.695-2.485-1.137-4.066-1.194l.865-2.724 2.343.549-.003.034c0 .696.569 1.262 1.268 1.262.699 0 1.267-.566 1.267-1.262s-.568-1.262-1.267-1.262c-.537 0-.994.335-1.179.804l-2.525-.592c-.11-.027-.223.037-.257.145l-.965 3.038c-1.656.02-3.155.466-4.258 1.181-.277-.255-.644-.415-1.05-.415-.854.001-1.549.693-1.549 1.544 0 .566.311 1.056.768 1.325-.03.164-.05.331-.05.5 0 2.281 2.805 4.137 6.253 4.137s6.253-1.856 6.253-4.137c0-.16-.017-.317-.044-.472.486-.261.82-.766.82-1.353zm-4.872.141c-.509 0-.922.412-.922.919 0 .506.414.918.922.918s.922-.412.922-.918c0-.507-.413-.919-.922-.919z" data-v-732a47ec></path></svg></a><a href="https://t.me/cosmosproject" target="_blank" title="telegram" rel="noreferrer noopener" class="smallprint__item__links__item" data-v-732a47ec><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" fill="#aaa" data-v-732a47ec><path d="M12,0c-6.626,0 -12,5.372 -12,12c0,6.627 5.374,12 12,12c6.627,0 12,-5.373 12,-12c0,-6.628 -5.373,-12 -12,-12Zm3.224,17.871c0.188,0.133 0.43,0.166 0.646,0.085c0.215,-0.082 0.374,-0.267 0.422,-0.491c0.507,-2.382 1.737,-8.412 2.198,-10.578c0.035,-0.164 -0.023,-0.334 -0.151,-0.443c-0.129,-0.109 -0.307,-0.14 -0.465,-0.082c-2.446,0.906 -9.979,3.732 -13.058,4.871c-0.195,0.073 -0.322,0.26 -0.316,0.467c0.007,0.206 0.146,0.385 0.346,0.445c1.381,0.413 3.193,0.988 3.193,0.988c0,0 0.847,2.558 1.288,3.858c0.056,0.164 0.184,0.292 0.352,0.336c0.169,0.044 0.348,-0.002 0.474,-0.121c0.709,-0.669 1.805,-1.704 1.805,-1.704c0,0 2.084,1.527 3.266,2.369Zm-6.423,-5.062l0.98,3.231l0.218,-2.046c0,0 3.783,-3.413 5.941,-5.358c0.063,-0.057 0.071,-0.153 0.019,-0.22c-0.052,-0.067 -0.148,-0.083 -0.219,-0.037c-2.5,1.596 -6.939,4.43 -6.939,4.43Z" data-v-732a47ec></path></svg></a><a href="https://www.youtube.com/c/CosmosProject" target="_blank" title="youtube" rel="noreferrer noopener" class="smallprint__item__links__item" data-v-732a47ec><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" fill="#aaa" data-v-732a47ec><path d="M19.615 3.184c-3.604-.246-11.631-.245-15.23 0-3.897.266-4.356 2.62-4.385 8.816.029 6.185.484 8.549 4.385 8.816 3.6.245 11.626.246 15.23 0 3.897-.266 4.356-2.62 4.385-8.816-.029-6.185-.484-8.549-4.385-8.816zm-10.615 12.816v-8l8 3.993-8 4.007z" data-v-732a47ec></path></svg></a></div></div><div class="smallprint" data-v-732a47ec><div class="smallprint__item smallprint__item__links" data-v-732a47ec><a href="https://tendermint.com" data-v-732a47ec>tendermint.com</a></div><div class="smallprint__item__desc smallprint__item" data-v-732a47ec><div>The development of Tendermint Core was led primarily by All in Bits, Inc. The Tendermint trademark is owned by New Tendermint, LLC.</div></div></div></div></div></div></div></div></div></div><div class="sheet__sidebar" data-v-ec82e5e0 data-v-58560e81><!----> <!----></div><div class="sheet__sidebar" data-v-ec82e5e0 data-v-58560e81><!----> <!----></div><div class="sheet__sidebar sheet__sidebar__toc" data-v-ec82e5e0 data-v-58560e81><!----> <!----></div></div><div class="global-ui"></div></div>
|
||
<script src="/master/assets/js/app.d8230444.js" defer></script><script src="/master/assets/js/24.7da7f2cf.js" defer></script><script src="/master/assets/js/21.92fb7737.js" defer></script><script src="/master/assets/js/44.a966f787.js" defer></script><script src="/master/assets/js/19.a758649d.js" defer></script><script src="/master/assets/js/66.1a996a52.js" defer></script><script src="/master/assets/js/64.602a26f4.js" defer></script><script src="/master/assets/js/65.224ad1ec.js" defer></script><script src="/master/assets/js/25.c1f919e6.js" defer></script><script src="/master/assets/js/56.714e246c.js" defer></script><script src="/master/assets/js/62.c200562d.js" defer></script><script src="/master/assets/js/40.bbfd2b95.js" defer></script><script src="/master/assets/js/10.3cf8ba3a.js" defer></script><script src="/master/assets/js/7.c795f92d.js" defer></script><script src="/master/assets/js/169.53785d6d.js" defer></script><script src="/master/assets/js/5.4af69dfc.js" defer></script><script src="/master/assets/js/38.933ad5bd.js" defer></script><script src="/master/assets/js/13.cd4f8d8e.js" defer></script><script src="/master/assets/js/12.cf95ee24.js" defer></script><script src="/master/assets/js/16.e0a6886e.js" defer></script><script src="/master/assets/js/45.1110ab59.js" defer></script><script src="/master/assets/js/20.c6a2fb05.js" defer></script>
|
||
</body>
|
||
</html>
|