1"use strict";(globalThis.webpackChunkdrand_docs=globalThis.webpackChunkdrand_docs||[]).push([[8071],{9354(e,n,t){t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var a=t(26799),s=t(74848),i=t(28453);const r={title:"`quicknet` is live on the League of Entropy mainnet",description:"Unchained and fast randomness is here to stay \ud83d\ude80",date:new Date("2023-10-16T00:00:00.000Z"),author:"Yolan Romailler",tags:["News"]},o=void 0,d={authorsImageUrls:[void 0]},c=[{value:"Key Features of <code>quicknet</code> drand Network \ud83c\udf1f",id:"key-features-of-quicknet-drand-network-",level:2},{value:"The <code>quicknet</code> details",id:"the-quicknet-details",level:2},{value:"<code>quicknet-t</code>",id:"quicknet-t",level:2},{value:"<code>quicknet</code>",id:"quicknet",level:2},{value:"Sun-setting of <code>fastnet</code>",id:"sun-setting-of-fastnet",level:2},{value:"Shoutout to the League of Entropy \ud83e\udd1d",id:"shoutout-to-the-league-of-entropy-",level:2},{value:"Get Started \ud83d\ude80",id:"get-started-",level:2},{value:"G1 - G2 Swap",id:"g1---g2-swap",level:2},{value:"Unchained mode",id:"unchained-mode",level:2},{value:"Security considerations",id:"security-considerations",level:2},{value:"Extra liveness!",id:"extra-liveness",level:2},{value:"Onward!",id:"onward",level:2}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Unchained and fast randomness is here to stay \ud83d\ude80"}),"\n",(0,s.jsxs)(n.p,{children:["We are thrilled to announce the General Availability of our brand new ",(0,s.jsx)(n.code,{children:"quicknet"})," drand network running on the ",(0,s.jsx)(n.code,{children:"mainnet"})," nodes. This significant upgrade harnesses the capabilities of the new unchained randomness mode, enables timelock encryption in production and delivers outputs at a much faster frequency of ",(0,s.jsx)(n.strong,{children:"3 seconds"}),"!"]}),"\n",(0,s.jsx)(n.p,{children:"The network has now been running without hiccups for a month and a half, since its launch on August 23rd, and we\u2019ve seen our first early adopters start transitioning to it successfully."}),"\n",(0,s.jsxs)(n.h2,{id:"key-features-of-quicknet-drand-network-",children:["Key Features of ",(0,s.jsx)(n.code,{children:"quicknet"})," drand Network \ud83c\udf1f"]}),"\n",(0,s.jsx)(n.p,{children:"Keep reading to learn more details about the new features this network launch enables:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Unchained randomness mode:"})," This allows for ",(0,s.jsx)(n.strong,{children:"faster and simpler beacon verification"}),". Furthermore, unchained mode allows one to predict the message that will be signed in a future round (but nothing else), thus enabling \u201c",(0,s.jsx)(n.strong,{children:"timelock encryption"}),"\u201d!"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Runs on the League of Entropy\u2019s mainnet nodes:"})," Offers robustness, scalability, and reliability to our users, it runs on the same nodes that have been flawlessly delivering beacons every 30s for the past 3 years without missing a single beat."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"3s frequency:"})," Quicker generation compared to the legacy frequency, enabling faster applications, better UX and higher throughput."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Shorter beacons"}),": Thanks to the G1-G2 swap that we\u2019re detailing below, we\u2019ve been able to cut our signatures\u2019 size by 50%!"]}),"\n"]}),"\n",(0,s.jsxs)(n.h2,{id:"the-quicknet-details",children:["The ",(0,s.jsx)(n.code,{children:"quicknet"})," details"]}),"\n",(0,s.jsxs)(n.p,{children:["We have successfully launched the ",(0,s.jsx)(n.code,{children:"quicknet-t"})," Testnet beacon chain on the 13th of July and more recently the ",(0,s.jsx)(n.code,{children:"quicknet"})," one on our Mainnet on the 23rd of August."]}),"\n",(0,s.jsxs)(n.p,{children:["They are both available on our HTTPs relays, just like the previous ",(0,s.jsx)(n.code,{children:"default"})," network. All available chains on a given relay can be queried using the ",(0,s.jsx)(n.code,{children:"/chains"})," endpoint, e.g. ",(0,s.jsx)(n.a,{href:"https://api.drand.sh/chains",children:"https://api.drand.sh/chains"})," returns:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'["dbd506d6ef76e5f386f41c651dcb808c5bcbd75471cc4eafa3f4df7ad4e4c493",\n"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971",\n"8990e7a9aaed2ffed73dbd7092123d6f289930540d7651336225dc172e51b2ce"]\n'})}),"\n",(0,s.jsxs)(n.p,{children:["which are the chain-hashes of the ",(0,s.jsx)(n.code,{children:"fastnet"}),", ",(0,s.jsx)(n.code,{children:"quicknet"})," and ",(0,s.jsx)(n.code,{children:"default"})," chains respectively!"]}),"\n",(0,s.jsxs)(n.p,{children:["The same holds for our testnet relays, e.g. ",(0,s.jsx)(n.a,{href:"https://pl-us.testnet.drand.sh/chains",children:"https://pl-us.testnet.drand.sh/chains"})," returns the following chains:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"84b2234fb34e835dccd048255d7ad3194b81af7d978c3bf157e3469592ae4e02"})," our initial, ",(0,s.jsx)(n.code,{children:"default"})," testnet launched in May 2020 and running in chained mode."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"7672797f548f3f4748ac4bf3352fc6c6b6468c9ad40ad456a397545c6e2df5bf"})," our G2 based unchained testnet, launched in May 2022 and ",(0,s.jsx)(n.em,{children:"compatible with timelock on G2"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"f3827d772c155f95a9fda8901ddd59591a082df5ac6efe3a479ddb1f5eeb202c"})," our ",(0,s.jsx)(n.code,{children:"testnet-g"})," unchained beacon chain, featuring our non-RFC compliant G1 signature scheme."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.code,{children:"cc9c398442737cbd141526600919edd69f1d6f9b4adb67e4d912fbc64341a9a5"})," which is our latest ",(0,s.jsx)(n.code,{children:"quicknet-t"})," network, featuring RFC compliant BLS12-381 G1 based BLS signatures!"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Don\u2019t hesitate to check our ",(0,s.jsx)(n.a,{href:"https://drand.love/developer/",children:"developer documentation"})," for more information about our public endpoints!"]}),"\n",(0,s.jsx)(n.h2,{id:"quicknet-t",children:(0,s.jsx)(n.code,{children:"quicknet-t"})}),"\n",(0,s.jsxs)(n.p,{children:["You can always get more details about a given chain by querying its ",(0,s.jsx)(n.code,{children:"{chainhash}/info"})," endpoint, e.g. ",(0,s.jsx)(n.a,{href:"https://testnet-api.drand.cloudflare.com/cc9c398442737cbd141526600919edd69f1d6f9b4adb67e4d912fbc64341a9a5/info",children:"https://testnet-api.drand.cloudflare.com/cc9c398442737cbd141526600919edd69f1d6f9b4adb67e4d912fbc64341a9a5/info"})," returns the ",(0,s.jsx)(n.code,{children:"quicknet-t"})," details:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n"public_key":"b15b65b46fb29104f6a4b5d1e11a8da6344463973d423661bb0804846a0ecd1ef93c25057f1c0baab2ac53e56c662b66072f6d84ee791a3382bfb055afab1e6a375538d8ffc451104ac971d2dc9b168e2d3246b0be2015969cbaac298f6502da",\n"peri
1od":3,\n"genesis_time":1689232296,\n"hash":"cc9c398442737cbd141526600919edd69f1d6f9b4adb67e4d912fbc64341a9a5",\n"groupHash":"40d49d910472d4adb1d67f65db8332f11b4284eecf05c05c5eacd5eef7d40e2d",\n"schemeID":"bls-unchained-g1-rfc9380",\n"metadata":{"beaconID":"quicknet-t"}\n}\n'})}),"\n",(0,s.jsx)(n.h2,{id:"quicknet",children:(0,s.jsx)(n.code,{children:"quicknet"})}),"\n",(0,s.jsxs)(n.p,{children:["The same holds for our mainnet relays, any given beacon chain information can be queried from our HTTP relays, e.g. ",(0,s.jsx)(n.a,{href:"https://api.drand.sh/52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971/info",children:"https://api.drand.sh/52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971/info"})," returns the ",(0,s.jsx)(n.code,{children:"quicknet"})," details:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n"public_key":"83cf0f2896adee7eb8b5f01fcad3912212c437e0073e911fb90022d3e760183c8c4b450b6a0a6c3ac6a5776a2d1064510d1fec758c921cc22b0e17e63aaf4bcb5ed66304de9cf809bd274ca73bab4af5a6e9c76a4bc09e76eae8991ef5ece45a",\n"period":3,\n"genesis_time":1692803367,\n"hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971",\n"groupHash":"f477d5c89f21a17c863a7f937c6a6d15859414d2be09cd448d4279af331c5d3e",\n"schemeID":"bls-unchained-g1-rfc9380",\n"metadata":{"beaconID":"quicknet"}\n}\n'})}),"\n",(0,s.jsxs)(n.h2,{id:"sun-setting-of-fastnet",children:["Sun-setting of ",(0,s.jsx)(n.code,{children:"fastnet"})]}),"\n",(0,s.jsxs)(n.p,{children:["If you've been following our blog, you'll remember our previous post about ",(0,s.jsx)(n.a,{href:"/blog/2023/03/28/timelock-on-fastnet",children:"timelock being supported on mainnet"})," where we announced the launch of our new ",(0,s.jsx)(n.code,{children:"fastnet"})," network that supported our timelock scheme. The League of Entropy launched this new drand network on March 1st, 2023, however we quickly identified an issue with our BLS signatures on G1 that made them non-spec compliant with the Hash To Curve ",(0,s.jsx)(n.a,{href:"https://www.ietf.org/rfc/rfc9380.html",children:"RFC 9380"})," as well as most BLS signatures implementations on G1 apart from ours. Therefore we had to double down and launch the ",(0,s.jsx)(n.code,{children:"quicknet"})," network in order to fix this issue."]}),"\n",(0,s.jsxs)(n.p,{children:["We'll be sun-setting ",(0,s.jsx)(n.code,{children:"fastnet"})," in the coming months ",(0,s.jsx)(n.a,{href:"/blog/2023/07/03/fastnet-sunset-quicknet-new",children:"as announced previously"}),". We are currently going to scale down ",(0,s.jsx)(n.code,{children:"fastnet"})," by another 3 nodes in November, and we'll be shutting it down completely in Q1'24 most likely. Please reach out to us if this is a concern for you or your team."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Note: The default chained beacon network remains available with its legacy frequency of 30s for those who require it. We might consider deprecating it at some point in the next 18 months, but nothing is set in stone yet."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"shoutout-to-the-league-of-entropy-",children:"Shoutout to the League of Entropy \ud83e\udd1d"}),"\n",(0,s.jsxs)(n.p,{children:["Our decentralisation journey wouldn't be possible without the League of Entropy. We are delighted to share that all members in the League of Entropy are running the ",(0,s.jsx)(n.code,{children:"quicknet"})," drand network alongside the ",(0,s.jsx)(n.code,{children:"default"})," chained beacon network on the League\u2019s network of currently 23 nodes."]}),"\n",(0,s.jsx)(n.p,{children:"A big shoutout to the League of Entropy for their invaluable contributions, running drand nodes for free for anyone to use whenever one needs public, verifiable randomness. Together, we're pioneering a faster, more decentralised future for randomness generation, with this new unchained network enabling a host of new possibilities for our users!"}),"\n",(0,s.jsx)(n.h2,{id:"get-started-",children:"Get Started \ud83d\ude80"}),"\n",(0,s.jsxs)(n.p,{children:["For developers and users eager to dive into the new ",(0,s.jsx)(n.code,{children:"quicknet"})," drand network, our ",(0,s.jsx)(n.a,{href:"/developer/",children:"official documentation"})," provides detailed resources about using drand relays and beacons."]}),"\n",(0,s.jsxs)(n.p,{children:['We also have a blog post about "',(0,s.jsx)(n.a,{href:"/blog/2023/06/02/drand-explainer",children:"drand for beginners"})," that's packed with useful information and another one about ",(0,s.jsx)(n.a,{href:"/blog/2023/03/15/draffle",children:"using drand on-chain"})," with a demo lottery use-case running on the Filecoin Virtual Machine."]}),"\n",(0,s.jsx)(n.h2,{id:"g1---g2-swap",children:"G1 - G2 Swap"}),"\n",(0,s.jsx)(n.p,{children:"Let us see what the G1-G2 swap really means!"}),"\n",(0,s.jsxs)(n.p,{children:["The BLS signature schemes operates on \u201cpairing-friendly\u201d elliptic curves. These curves typically define 3 groups that are of interest to the cryptographer: the group G1 and G2 and the so-called \u201ctarget group\u201d GT onto which a ",(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Pairing-based_cryptography",children:"pairing operation"})," will allow to project points from the groups G1 and G2 in a bilinear manner."]}
1),"\n",(0,s.jsx)(n.p,{children:"In the current instantiations of drand networks, we\u2019re relying on the pairing-friendly curve BLS12-381, whose groups G1 and G2 have points that can be encoded in 48 bytes and 96 bytes, respectively."}),"\n",(0,s.jsxs)(n.p,{children:["Therefore, it usually makes sense for BLS signatures to be instantiated with the ",(0,s.jsx)(n.strong,{children:"public key"})," over G1 and the ",(0,s.jsx)(n.strong,{children:"signatures"})," over G2, meaning ",(0,s.jsx)(n.em,{children:"shorter"})," public keys but ",(0,s.jsx)(n.em,{children:"longer"})," signatures. This is so because the BLS signature scheme allows for ",(0,s.jsx)(n.strong,{children:"signature aggregation"}),", which means we can aggregate multiple signatures for different public keys into a single aggregated signature that verifies against the many public keys. Using short public keys but long signatures hence minimizes the overall size of the data required for verification."]}),"\n",(0,s.jsx)(n.p,{children:"However, this does not apply to drand\u2019s beacons since new ones are generated at a fixed frequency, each with its own signature. Therefore, it makes more sense for drand\u2019s beacons to have shorter signatures and a longer group public key, since we cannot benefit from the aggregation capabilities of BLS signatures and the public key for a given group never changes, and can thus be stored only once unlike the signatures which need to be stored for each single beacon."}),"\n",(0,s.jsx)(n.p,{children:"This is the reason why it makes more sense given the way drand beacons work to have the public key of the group on G2 (i.e. be of size 96 bytes) and have the signatures of the beacons on the group G1 of BLS12-381 (i.e. be encoded into only 48 bytes)."}),"\n",(0,s.jsxs)(n.p,{children:["This swap allowed us to ",(0,s.jsxs)(n.strong,{children:["reduce the size of the drand beacons emitted by the new ",(0,s.jsx)(n.code,{children:"quicknet"})," network by 50%"]}),", as well as to ",(0,s.jsx)(n.strong,{children:"increase the performance and reduce the gas cost"})," of any on-chain operations pertaining to drand beacons produced by ",(0,s.jsx)(n.code,{children:"quicknet"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"unchained-mode",children:"Unchained mode"}),"\n",(0,s.jsxs)(n.p,{children:["We've introduced the notion of ",(0,s.jsx)(n.a,{href:"/blog/2022/02/21/multi-frequency-support-and-timelock-encryption-capabilities#unchained-randomness-timed-encryption",children:"unchained beacons"})," last year on the blog already. But in essence, the new drand network brings a host of improvements aimed at enhancing the overall UX for drand users and developers. The 'unchained mode' means that new random beacons are entirely independent from previous ones, meaning that you can now perform stateless verification of a beacon, without having to keep a record of past beacons!"]}),"\n",(0,s.jsx)(n.p,{children:"These enhancements are designed to make the drand network more robust, efficient, and user-friendly. They help in reducing the computational and storage load of our users, making drand more cost-effective and faster. The unchained nature of the beacons also means you can now decide to sample only one every 5 beacons to have a frequency of 15s or one every 20 beacons to have a frequency of 1 minute! This significantly improves flexibility and scalability for everyone."}),"\n",(0,s.jsxs)(n.p,{children:["We\u2019re looking forward your projects and ideas, don\u2019t hesitate to ",(0,s.jsx)(n.a,{href:"https://join.slack.com/t/drandworkspace/shared_invite/zt-19u4rf6if-bf7lxIvF2zYn4~TrBwfkiA",children:"join our Slack workspace"})," to discuss these."]}),"\n",(0,s.jsx)(n.h2,{id:"security-considerations",children:"Security considerations"}),"\n",(0,s.jsxs)(n.p,{children:["Finally, you might be wondering what these changes might means from a ",(0,s.jsx)(n.strong,{children:"security"})," point of view. On that front, the guarantees of the League of Entropy (LoE) network remain the same:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["a random beacon ",(0,s.jsx)(n.strong,{children:"cannot be predicted"})," unless a threshold number of LoE nodes collude (current threshold is 12 out of 22 nodes, it should increase as the League of Entropy onboards new members)."]}),"\n",(0,s.jsxs)(n.li,{children:["a random beacon ",(0,s.jsx)(n.strong,{children:"cannot be bi
1ased"})," by anybody unless the attacker is able to change the public key of the group, which should be hard-coded in your code."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["The fact that the drand beacons are now ",(0,s.jsx)(n.strong,{children:"unchained"})," might give the ",(0,s.jsx)(n.em,{children:"false impression"})," that they are ",(0,s.jsx)(n.em,{children:"less secure"})," than the previous ",(0,s.jsx)(n.em,{children:(0,s.jsx)(n.strong,{children:"chained"})})," ones, however this is not the case:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"predictability:"})," an attacker controlling a threshold number of shares is able to predict any arbitrary round in the unchained setting, whereas they would need to compute all intermediary rounds in order to predict a given future round with the chained setting. ",(0,s.jsx)(n.em,{children:"However"})," controlling a threshold amount of shares at any point in time allows computation of the shared secret of the group and nothing can prevent such an attacker having obtained the group secret from then computing all future chained rounds offline much faster than the existing network would have, leading to the same result as in the unchained case: a complete predictability of all future rounds in case of a compromise of either schemes."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"bias:"})," all future beacons are entirely determined by two things: the initial Distributed Key Generation and their round number. This was already the case for the chained network and hasn\u2019t changed with the unchained schemes. For a given distributed group public key, future rounds cannot be biased in any way after the initial Distributed Key Generation ceremony has been run."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["We've also made sure our new Timelock Encryption service relying on our new ",(0,s.jsx)(n.code,{children:"quicknet"})," network was ",(0,s.jsx)(n.a,{href:"/blog/2023/05/26/tlock-security-assessment",children:"properly audited"}),". We've got you covered!"]}),"\n",(0,s.jsx)(n.h2,{id:"extra-liveness",children:"Extra liveness!"}),"\n",(0,s.jsxs)(n.p,{children:["From a ",(0,s.jsx)(n.strong,{children:"liveness"}
1)," point of view, the way the drand nodes operate hasn\u2019t changed and we are very happy to announce the availability of a new official HTTP relay run by ",(0,s.jsx)(n.a,{href:"https://www.storswift.com/",children:"StorSwift"}),", a dear member of the League of Entropy. Their relay is reachable at ",(0,s.jsx)(n.a,{href:"https://api.drand.secureweb3.com:6875/chains",children:(0,s.jsx)(n.code,{children:"https://api.drand.secureweb3.com:6875"})})," and as you can see by querying ",(0,s.jsx)(n.a,{href:"https://api.drand.secureweb3.com:6875/chains",children:"https://api.drand.secureweb3.com:6875/chains"})," provides access to both our mainnet ",(0,s.jsx)(n.code,{children:"default"})," and mainnet ",(0,s.jsx)(n.code,{children:"quicknet"})," beacons. It is also located in Asia."]}),"\n",(0,s.jsx)(n.p,{children:"As you can see, the League of Entropy\u2019s and drand\u2019s security, liveness and availability are not impacted in any way by these changes - on the contrary."}),"\n",(0,s.jsx)(n.h2,{id:"onward",children:"Onward!"}),"\n",(0,s.jsx)(n.p,{children:"That\u2019s it, we\u2019ve launched everything we need to allow you to start using Timelock Encryption or drand random beacons right now in your services! And actually people do!"}),"\n",(0,s.jsxs)(n.p,{children:["If you are already doing so, or plan on doing so, don\u2019t hesitate to join our ",(0,s.jsx)(n.a,{href:"https://join.slack.com/t/drandworkspace/shared_invite/zt-19u4rf6if-bf7lxIvF2zYn4~TrBwfkiA",children:"drand Slack"}),", since we love hearing about what people are doing with what we\u2019ve built!"]}),"\n",(0,s.jsx)(n.p,{children:"Until next time! \ud83d\ude04"})]})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},28453(e,n,t){t.d(n,{R:()=>r,x:()=>o});var a=t(96540);const s={},i=a.createContext(s);function r(e){const n=a.useContext(i);return a.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),a.createElement(i.Provider,{value:n},e.children)}},26799(e){e.exports=JSON.parse('{"permalink":"/blog/2023/10/16/quicknet-is-live","editUrl":"https://github.com/drand/drand-docs/tree/master/blog/2023-10-16-quicknet-is-live.md","source":"@site/blog/2023-10-16-quicknet-is-live.md","title":"`quicknet` is live on the League of Entropy mainnet","description":"Unchained and fast randomness is here to stay \ud83d\ude80","date":"2023-10-16T00:00:00.000Z","tags":[{"inline":true,"label":"News","permalink":"/blog/tags/news"}],"readingTime":6.6,"hasTruncateMarker":true,"authors":[{"name":"Yolan Romailler","key":null,"page":null}],"frontMatter":{"title":"`quicknet` is live on the League of Entropy mainnet","description":"Unchained and fast randomness is here to stay \ud83d\ude80","date":"2023-10-16T00:00:00.000Z","author":"Yolan Romailler","tags":["News"]},"unlisted":false,"prevItem":{"title":"Post-mortem following testnet outage on 21st of February","permalink":"/blog/2024/02/23/testnet-ceremony-post-mortem"},"nextItem":{"title":"Treasure Hunting Together: An Exploration of the Beauty of Distributed Key Generation Algorithms","permalink":"/blog/2023/09/08/distributed-key-generation"}}')}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.