SkyPirl Blockchain
  • SkyPirl (Pirl)
    • Docs.Pirl.io
    • About SkyPirl (Pirl)
    • Mission
    • Create SkyPirl 2.0 wallet
    • Restore wallet with secret 12 phrase
    • How to be a Nominator
    • SkyPirl coin specifications
    • Run a validator
    • How to unbound fund
    • How payout works
    • How to vote for Council
    • How to set identity
    • SLASHES
    • Refund of slashed
    • COIN SPECIFICATION
    • Governance and Treasury
    • Telemetry
    • List of wallet addresses not working
    • Spend from the treasury and Burn
    • Mint coins and transfer coins to the treasury
      • Treasury2
    • Burn2
    • Source Code
    • List of wallets holding coins of burned wallets with PIRL balance at block 3939000
  • About SkyPirl (Pirl)
  • Mission
  • PIRLmeet.com
    • About PIRLmeet.com
    • Free Trial
    • CINEMA
    • Microphone On-Off
    • Screen Sharing
      • Share—or don't share your audio
      • Video recording tutorial + camera + mp4 video download
    • Hands Up
    • Change the ringtone when giving a raise of hand
    • Stream MP4 videos
    • Stream mp4 video on Firefox browser
    • Cabinet Lock
      • Cabinet Lock account
      • Normal-Demo
      • How can I cabinet lock and keep strangers from entering the room?
      • How can I add people to the room when the room is locked?
    • Text chat
      • Room chat
      • Cabinetlock Chat
      • private chat per video
    • Connect Pirl wallet to Room-House
    • Change cover photo
    • Video title name
    • Setting up you own Room-House
    • How to download videos on youtube, Facebook and convert to mp4 files
    • Use camera beautification App when livestream
    • PIRLmeet can create meetings that last 24/7 and 365 days a year.
    • How does PIRLmeet secure products?
    • Get Pirl coin when playing videos on Room-house
    • Picture
    • OBS Studio
      • Download
      • Screen sharing and front camera
      • Stream video from R-H to Youtube
      • Stream games
      • Stream Video and Record Video and download videos
      • Good quality video settings
      • Edit the frame and choose the recording frame
    • Source Code
  • Game
    • Room-House.com and games
    • Slot Machine
      • Connect the slot machine to the SkyPirl Light Wallet.
      • Connect Room-House.com to the slot machine
  • SkyPirl Light Wallet
  • PIRL Decentralized Charity Foundation
  • SkyPirl Community
  • Apps for Android and IOS (PWA)
    • Android
    • Iphone (IOS)
    • Computer-Windows-PC
  • Business Paradigm R-H
    • Use SkyPirl coin to pay in Room-House.com
  • Roadmap
  • Core Team
  • xTer . Technology
    • About xTER SafeContainer
    • xTer Ecosystem
    • xTer SkyPirl
    • xTer Room-House
      • How to Room-House
    • xTer Room-House Plus
      • How to xTer room-House plus
    • xTer TrueAD
    • xTer SmartFilter
  • White Paper
  • Blog
    • News
      • ------What is Web 1.0, 2.0, 3.0?------
      • The world's first decentralized audio chat room Room-House
      • What's so special about decentralized audio chat rooms?
      • Features that make Room-House.com decentralized chat rooms competitive with giants
      • Ever heard of Decentralized Charity Fund?
      • What is online meeting? 4 most effective online conferencing solutions
      • What is online meeting? Is it easy or difficult to organize?
      • What is the standard of a professional online meeting room?
      • History of the world's first online meeting software
      • Decentralized Application Room-House.com (Daap)
      • In what year was the internet born? And the birth of the project SkyPirl
      • Cooperation between Room-House and Russian State Social University
      • Building SkyPirl Decentralized Internet in Space
      • Data collection is a huge industry that operates in the dark
      • Free and easy decentralized internet for everyone to use
      • What is Pirl (PIRL) ? Community Based Project Pioneering in Introducing Masternode Technology
      • PirlGuard — Innovative Solution against 51% Attacks
      • ETC and PirlGuard Cybersecurity Plan
      • PirlChat messenger release
      • Overview of PirlChat 0.5.1–0.6 Beta Versions
      • Decentralized blockchain messengers
      • PirlChat messenger version 1.0.4 released
      • What is Pirl 2.0 and what changes will come to the Pirl network
      • The Pirl project announced the launch of its own exchange
      • PIRL’s Content Masternodes Are Almost Out: What You Need to Know
      • PIRL Masternodes and DApps Overview
      • PIRL Decentralized Charity Foundation - SkyPirl
      • Thanks to PirlGuard, Callisto is protected against 51% attacks
      • What is SkyPirl(PIRL) project?
      • Here is the sci-fi story of the decentralized social network PIRL:
      • What is Callisto-Pirl.com project?
      • Here is the legend of the multi-planetary decentralized internet space station PIRL:
      • PIRL decentralized social network has the following key differences:
      • The SM feature of the decentralized social network PIRL seems to be an interesting secret.
      • SkyPirl(PIRL) is designed to attract investors with attractive features:
      • SkyPirl project does not sell ICO (Initial Coin Offering) or not raise funds for the following reaso
      • Merry Christmas and a Happy New Year! SkyPirl Callisto-Pirl.com
      • SkyPirl Project Merry Christmas Story:
      • Happy New Year! SkyPirl Callisto-Pirl.com
      • Here's the story of the SkyPirl Mars Exploration Project:
      • Multiplanetary Billionaire
      • Lost in space
      • The Last Space Train
      • The future of society: Polarization of rich and poor in the 4.0 revolution
      • Callisto-Pirl.com Civil War
      • Callisto-Pirl.com Civil War 2
      • Callisto-Pirl.com Civil War 3
      • Callisto-Pirl.com Civil War 4
      • Callisto-Pirl.com Civil War 5
      • Callisto-Pirl.com Civil War 6
      • Callisto-Pirl.com Civil War 7
      • Callisto-Pirl.com Civil War 8
      • Callisto-Pirl.com Civil War 9
      • Callisto-Pirl.com Civil War 10
      • Callisto-Pirl.com Civil War 11
      • Callisto-Pirl.com Civil War 12
      • Page 6
      • Page 5
      • Page 4
      • Page 3
      • Page 2
      • Page 1
      • Page
    • Technical
      • What is Bitcoin? How are Bitcoins created?
      • Export Your Private Key from Third-Party Wallets
      • What Is a Stablecoin?
      • What Is Wrapped Bitcoin?
      • 7 Ways to Generate Passive Income With Crypto
      • What is a decentralized social network?
      • How many Bitcoins can be mined in a day?
      • How many Bitcoins are there in the world?
      • What is a decentralized exchange? different from centralized floor?
      • What is Staking? 5 things to note when investing in Staking
      • What Are Blockchain Bridges?
      • Compare Hot Wallet and Cold Wallet, which one should you use?
      • What is NFT?
      • Building a Decentralized Internet in Space
      • Web 3.0 Paradox
      • Controversy about the future of the Internet
      • The metaverse virtual universe could revolutionize the Internet
      • 'Blockchain is the most influential technology since the Internet'
      • Web3 - Expectations for the Decentralized Internet
      • What is Dapp? The concept of Dapp and their classification
      • How Decentralized Web Browsers Give You Unsurpassed Privacy
      • Is Web 3.0 being hyped?
      • What are Nodes? Types of Nodes in Blockchain
      • Blockchain can be hacked or not?
      • What is Private Key and Public Key in Bitcoin?
      • What is a Nonce in Blockchain?
      • What is Decentralized Autonomous Cooperative (DAC)?
      • What is Genesis Block?
      • What is Web3? Explaining the Decentralized Internet of the Future
      • Z-Consensus CLO
      • DEX223 Explanation
      • CLOIP
        • CLOIP-1
        • CLOIP-2
        • CLOIP-3
        • CLOIP-4
      • Skuld Hard Fork: Transforming Callisto Network with Dynamic Monetary Policy
      • Dex223 ICO
      • CoinSavi là gì?
      • SLOFI Token
    • Pi NetWork
      • Pi NetWork ( English )
        • Pi Network (PI) Mining Step by Step Guide
        • How to Create a Pi Wallet
        • How to KYC Pi Network 100% Success (2023)
        • Pi Network Security Circle: How to Add Users to Security Circle?
        • How to Migrate Your Mining Pi Coin to Mainnet in 8 Steps (See Video)
        • Why Pi Network can become the most active existence of mobile smart cryptocurrency?
        • FAQ? (FAQ)
      • Pi NetWork ( Tiếng Việt)
        • Pi NetWork là gì?
        • Cách KYC Pi Network 100% thành công (2023)
        • Vòng tròn bảo mật là gì?
        • Hướng dẫn tạo ví Pi Network
        • Cách Đào Pi Trên Điện Thoại
        • Cài đặt tên như thế nào là đúng trong Pi Network
        • Bạn cần xác nhận ngay VÍ PI THẬT để chuẩn bị chuyển SỐ PI XỊN vào ví pi sau khi hoàn thành KYC.
        • Hướng dẫn cách rút chuyển Pi về Ví Mainnet
        • Cách tăng tốc độ Đào Pi Network
        • Tại sao Pi Network có thể trở thành sự tồn tại tích cực nhất của tiền điện tử thông minh di động?
        • Hỏi đáp (FAQ)
    • Việt Nam
      • Pirl (PIRL) Là Gì ? Dự Án Dựa Trên Cộng Đồng Đi Tiên Phong Trong Việc Giới Thiệu Công Nghệ Masternod
      • Giới thiệu về SkyPirl (Pirl)
      • Sứ Mệnh Pirl2.0
      • Phần mềm Room-House.com là gì
      • Giới thiệu về Room-House.com
      • Room-House có thể tạo các cuộc họp kéo dài 24/7 và 365 ngày một năm.
      • Room-House.com bảo mật sản phẩm như thế nào?
      • Giới thiệu về xTER SafeContainer
      • Kế hoạch an ninh mạng của ETC và PirlGuard
      • Quỹ từ thiện phi tập trung Pirl
      • Phát hành trình nhắn tin PirlChat
      • Tổng quan về các phiên bản Beta của PirlChat 0.5.1–0.6
      • Trình nhắn tin chuỗi khối phi tập trung
      • PirlChat messenger phiên bản 1.0.4 được phát hành
      • Pirl 2.0 là gì và những thay đổi nào sẽ đến với mạng Pirl
      • Dự án Pirl đã công bố ra mắt sàn giao dịch của riêng mình
      • Masternode nội dung của PIRL sắp hết: Những điều bạn cần biết
      • Tổng quan về PIRL Masternodes và DApps
      • Xây dựng Internet phi tập trung SkyPirl trong không gian
      • Nhờ PirlGuard, Callisto được bảo vệ chống lại các cuộc tấn công 51%
    • Russia
      • ------Что такое Web 1.0, 2.0, 3.0?------
      • Первый в мире децентрализованный аудиочат Room-House
      • Что такого особенного в децентрализованных аудиочатах?
      • Функции, которые делают децентрализованные чаты Room-House.com конкурентоспособными с гигантами
      • Вы когда-нибудь слышали о Децентрализованном благотворительном фонде?
      • Что такое онлайн-встреча? 4 самых эффективных решения для онлайн-конференций
      • Что такое онлайн-встреча? Легко или сложно это организовать?
      • Каков стандарт профессионального онлайн-зала для встреч?
      • История первого в мире программного обеспечения для онлайн-встреч
      • Децентрализованное приложение Room-House.com (Daap)
      • В каком году родился Интернет? И рождение проекта SkyPirl
      • Сотрудничество Room-House и Российского государственного социального университета
      • Создание децентрализованного Интернета SkyPirl в космосе
      • Сбор данных — это огромная индустрия, которая работает в темноте
      • Бесплатный и простой децентрализованный Интернет, которым может пользоваться каждый.
      • Что такое Пирл (PIRL)? Пионерский проект сообщества по внедрению технологии мастернод
      • PirlGuard — инновационное решение против атак 51%
      • План кибербезопасности ETC и PirlGuard
      • Релиз мессенджера PirlChat
      • Обзор бета-версий PirlChat 0.5.1–0.6
      • Децентрализованные мессенджеры на блокчейне
      • Вышла версия мессенджера PirlChat 1.0.4
      • Что такое Pirl 2.0 и какие изменения произойдут в сети Pirl
      • Проект Pirl объявил о запуске собственной биржи
      • Мастерноды контента PIRL почти закончились: что вам нужно знать
      • Обзор мастернод PIRL и DApps
      • Децентрализованный благотворительный фонд PIRL
      • Благодаря PirlGuard Каллисто защищен от атак 51%
    • China
      • ------什么是Web 1.0、2.0、3.0?------
      • 全球首个去中心化音频聊天室Room-House
      • 去中心化音频聊天室有什么特别之处?
      • 让 Room-House.com 去中心化聊天室与巨头竞争的功能
      • 听说过去中心化慈善基金吗?
      • 什么是线上会议?4种最有效的在线会议解决方案
      • 什么是线上会议?组织起来容易还是困难?
      • 专业的网络会议室的标准是什么?
      • 世界上第一个在线会议软件的历史
      • 去中心化应用室-House.com (Daap)
      • 互联网诞生于哪一年?SkyPirl 项目的诞生
      • Room-House与俄罗斯国立社会大学合作
      • 在太空中构建 SkyPirl 去中心化互联网
      • 数据收集是一个在黑暗中运作的庞大行业
      • 免费且简单的去中心化互联网,供所有人使用
      • 什么是皮尔(PIRL)?基于社区的项目开创了引入主节点技术的先河
      • PirlGuard — 针对 51% 攻击的创新解决方案
      • ETC 和 PirlGuard 网络安全计划
      • PirlChat 即时通讯软件发布
      • PirlChat 0.5.1–0.6 Beta 版本概述
      • 去中心化区块链信使
      • PirlChat 即时通讯软件 1.0.4 版发布
      • 什么是 Pirl 2.0,Pirl 网络将发生哪些变化
      • Pirl项目宣布推出自己的交易所
      • PIRL 的内容主节点即将退出:您需要了解的内容
      • PIRL 主节点和 DApp 概述
      • PIRL 去中心化慈善基金会
      • PirlGuard – 51% 攻击防护
    • Japan
      • -------Web 1.0、2.0、3.0とは何ですか?------
      • 世界初の分散型音声チャットルーム Room-House
      • 分散型音声チャット ルームの何がそんなに特別なのでしょうか?
      • Room-House.com の分散型チャット ルームを大手企業と競争できるようにする機能
      • 分散型慈善基金について聞いたことがありますか?
      • オンライン会議とは何ですか?最も効果的な 4 つのオンライン会議ソリューション
      • オンライン会議とは何ですか?整理するのは簡単ですか、それとも難しいですか?
      • プロフェッショナルなオンライン会議室の基準は何ですか?
      • 世界初のオンライン会議ソフトウェアの歴史
      • 分散型アプリケーション Room-House.com (Daap)
      • インターネットが誕生したのは何年ですか? そしてSkyPirlプロジェクトの誕生
      • SkyPirl 分散型インターネットを宇宙に構築する
      • データ収集は暗闇で行われる巨大産業です
      • 誰もが使える無料で簡単な分散型インターネット
      • ピル(PIRL)とは何ですか?マスターノードテクノロジーの導入における先駆的なコミュニティベースのプロジェクト
      • PirlGuard — 51% 攻撃に対する革新的なソリューション
      • ETC および PirlGuard サイバーセキュリティ プラン
      • PirlChatメッセンジャーのリリース
      • PirlChat 0.5.1 ~ 0.6 ベータ版の概要
      • 分散型ブロックチェーンメッセンジャー
      • PirlChat メッセンジャー バージョン 1.0.4 がリリースされました
      • Pirl 2.0 とは何か、Pirl ネットワークにどのような変更が加えられるか
      • Pirlプロジェクトが独自の取引所の立ち上げを発表
      • PIRL のコンテンツ マスターノードが間もなく終了します: 知っておくべきこと
      • PIRL マスターノードと DApps の概要
      • PIRL 分散型慈善財団
      • PirlGuard のおかげで、Callisto は 51% の攻撃から保護されています
    • Hindi
      • ------वेब 1.0, 2.0, 3.0 क्या है?------
      • Page दुनिया का पहला विकेन्द्रीकृत ऑडियो चैट रूम रूम-हाउस
      • विकेन्द्रीकृत ऑडियो चैट रूम के बारे में क्या खास है?
      • ऐसी विशेषताएँ जो रूम-हाउस.कॉम विकेंद्रीकृत चैट रूम को दिग्गजों के साथ प्रतिस्पर्धी बनाती हैं
      • क्या आपने कभी विकेंद्रीकृत चैरिटी फंड के बारे में सुना है?
      • ऑनलाइन मीटिंग क्या है? 4 सबसे प्रभावी ऑनलाइन कॉन्फ्रेंसिंग समाधान
      • ऑनलाइन मीटिंग क्या है? क्या इसे व्यवस्थित करना आसान है या कठिन?
      • एक पेशेवर ऑनलाइन मीटिंग रूम का मानक क्या है?
      • दुनिया के पहले ऑनलाइन मीटिंग सॉफ़्टवेयर का इतिहास
      • विकेन्द्रीकृत अनुप्रयोग रूम-हाउस.कॉम (डीएएपी)
      • इंटरनेट का जन्म किस वर्ष हुआ था? और प्रोजेक्ट स्काईपिरल का जन्म
      • अंतरिक्ष में स्काईपिरल विकेन्द्रीकृत इंटरनेट का निर्माण
      • डेटा संग्रह एक बहुत बड़ा उद्योग है जो अंधेरे में काम करता है
      • हर किसी के उपयोग के लिए मुफ़्त और आसान विकेन्द्रीकृत इंटरनेट
      • पर्ल (PIRL) क्या है? समुदाय आधारित परियोजना मास्टर्नोड प्रौद्योगिकी के परिचय में अग्रणी है
      • पिरलगार्ड - 51% हमलों के खिलाफ अभिनव समाधान
      • ईटीसी और पिरलगार्ड साइबर सुरक्षा योजना
      • PirlChat मैसेंजर रिलीज़
      • PirlChat 0.5.1–0.6 बीटा संस्करणों का अवलोकन
      • विकेन्द्रीकृत ब्लॉकचेन संदेशवाहक
      • PirlChat मैसेंजर संस्करण 1.0.4 जारी किया गया
      • Pirl 2.0 क्या है और Pirl नेटवर्क में क्या बदलाव आएंगे
      • पर्ल प्रोजेक्ट ने अपने स्वयं के एक्सचेंज के लॉन्च की घोषणा की
      • पीआईआरएल के कंटेंट मास्टरनोड्स लगभग समाप्त हो चुके हैं: आपको क्या जानना चाहिए
      • पीआईआरएल मास्टरनोड्स और डीएपी अवलोकन
      • पीआईआरएल विकेंद्रीकृत चैरिटी फाउंडेशन
      • PirlGuard को धन्यवाद, कैलिस्टो 51% हमलों से सुरक्षित है
    • Charity
      • Децентрализованный благотворительный фонд PIRL
      • PIRL 去中心化慈善基金会
      • PIRL 分散型慈善財団
      • Yayasan Amal Terdesentralisasi PIRL
      • PIRL विकेंद्रीकृत चैरिटी फाउंडेशन
      • Fundación Benéfica Descentralizada PIRL
      • Pirl المؤسسة الخيرية اللامركزية
      • קרן צדקה מבוזרת של PIRL
      • PIRL 분산형 자선 재단
      • PIRL Dezentrale Wohltätigkeitsstiftung
      • Ang mga desentralisadong charity fund Pirl
      • ມູນນິທິການກຸສົນ PIRL Decentralized
      • PIRL Decentralized caritas Foundation
      • มูลนิธิ PIRL Decentralized Charity Foundation
      • PIRL төвлөрсөн бус буяны сан
      • PIRL Weqfa Xêrxwazî ​​ya Nenavendî
      • Fundacja Dobroczynności Zdecentralizowanej PIRL
      • PIRL Gedesentraliseerde Liefdadigheidstigting
      • PIRL Adɔe Fapem a Wɔde Di Dwuma wɔ Decentralized
      • Fondacioni i Decentralizuar i Bamirësisë PIRL
      • PIRL ያልተማከለ የበጎ አድራጎት ድርጅት
      • PIRL ապակենտրոնացված բարեգործական հիմնադրամ
      • PIRL Mərkəzləşdirilməmiş Xeyriyyə Fondu
      • بنیاد خیریه غیرمتمرکز PIRL
      • Pirl বিকেন্দ্রীভূত দাতব্য তহবিল
      • PIRL Ongintzazko Fundazio Deszentralizatua
      • Дэцэнтралізаваны дабрачынны фонд PIRL
      • Pirl Decentralizovani dobrotvorni fondovi
      • Fundação de Caridade Descentralizada PIRL
      • Децентрализирана благотворителна фондация PIRL
      • Fundació Solidària Descentralitzada PIRL
      • Ang Pirl Decentralized Charity Fund
      • PIRL Fundazione di Carità Decentralizata
      • Decentralizirana dobrotvorna zaklada PIRL
      • Decentraliserede velgørenhedsfonde Pirl
      • PIRL detsentraliseeritud heategevusfond
      • PIRL Dɔmenyohabɔbɔ si Woɖo Ðe Dɔwɔƒewo
      • Stèidheachd Carthannais Sgaoilte PIRL
      • Fundación Benéfica Descentralizada PIRL
      • Ekitongole ky’obwannakyewa ekya PIRL Decentralized Charity Foundation
      • PIRL დეცენტრალიზებული საქველმოქმედო ფონდი
      • Fundación Caridad Descentralizada PIRL rehegua
      • PIRL વિકેન્દ્રિત ચેરિટી ફાઉન્ડેશન
      • PIRL Stichting Gedecentraliseerde Goede Doelen
      • Fondasyon Charite Desantralize PIRL
      • Gidauniyar Sadaka Mai Rarraba PIRL
      • PIRL Decentralizált Jótékonysági Alapítvány
      • Αποκεντρωμένο Φιλανθρωπικό Ίδρυμα PIRL
      • PIRL dreifð góðgerðarstofnun
      • PIRL Akwụsịghị Charity Foundation
      • Fondúireacht Carthanachta Díláraithe PIRL
      • PIRL Fondazione di beneficenza decentrata
      • PIRL ವಿಕೇಂದ್ರೀಕೃತ ಚಾರಿಟಿ ಫೌಂಡೇಶನ್
      • PIRL орталықтандырылмаған қайырымдылық қоры
      • PIRL មូលនិធិសប្បុរសធម៌វិមជ្ឈការ
      • PIRL Kwegereza abaturage ibikorwa byubugiraneza
      • PIRL Weqfa Xêrxwazî ​​ya Nenavendî
      • دامەزراوەی خێرخوازی لامەرکەزی PIRL
      • PIRL борбордон ажыратылган кайрымдуулук фонду
      • PIRL decentralizētais labdarības fonds
      • Fondation de Charité Décentralisée ya PIRL
      • PIRL decentralizuotas labdaros fondas
      • PIRL dezentraliséiert Charity Foundation
      • PIRL Децентрализирана добротворна фондација
      • PIRL Decentralized Charity Foundation
      • PIRL വികേന്ദ്രീകൃത ചാരിറ്റി ഫൗണ്ടേഷൻ
      • Fondazzjoni tal-Karità Deċentralizzata PIRL
      • PIRL Decentralized ပရဟိတဖောင်ဒေးရှင်း
      • Desentraliserte veldedige midler Pirl
      • PIRL विकेन्द्रीकृत चैरिटी फाउन्डेशन
      • PIRL Decentralized Charity Foundation
      • PIRL ବିକେନ୍ଦ୍ରୀକରଣ ଚାରିଟି ଫାଉଣ୍ଡେସନ୍ |
      • Faawundeeshinii Arjummaa Giddugaleessa Hin Qabne PIRL
      • PIRL غیر متمرکز خیریه بنسټ
      • Fondation caritative décentralisée PIRL
      • PIRL Hajautettu hyväntekeväisyyssäätiö
      • PIRL ਵਿਕੇਂਦਰੀਕ੍ਰਿਤ ਚੈਰਿਟੀ ਫਾਊਂਡੇਸ਼ਨ
      • PIRL Fundación Caridad Descentralizada nisqa
      • Fundația Descentralizată de Caritate PIRL
      • Decentralizované charitativní fondy Pirl
      • Децентрализована добротворна фондација Pirl
      • PIRL Aasaaska Samafalka ee Baahsan
      • Motheo wa Botho wo o Arotšwego wa PIRL
      • PIRL Decentralized Charity Foundation - Letlole la liphallelo
      • Yayasan Amal Desentralisasi PIRL
      • PIRL Wakfu wa Hisani uliogatuliwa
      • Фонди хайрияи ғайримарказии PIRL
      • PIRL பரவலாக்கப்பட்ட தொண்டு அறக்கட்டளை
      • PIRL వికేంద్రీకృత ఛారిటీ ఫౌండేషన్
      • PIRL Merkezi Olmayan Yardım Vakfı
      • Pirl Stiftelsen för decentraliserad välgörenhet
      • PIRL ዘይተማእከለ ግብረ ሰናይ ፋውንዴሽን
      • PIRL 去中心化慈善基金會
      • Децентралізований благодійний фонд PIRL
      • Pirl ڈی سینٹرلائزڈ چیریٹی فاؤنڈیشن
      • PIRL تارقاق خەير-ساخاۋەت فوندى
      • PIRL markazlashtirilmagan xayriya fondi
    • Science, Spirituality and Computers
      • Causal law - Sudo Key
      • Dream, Parallel Universe
      • What is Constellation, Star?
      • If Bitcoin is considered a technology created by the "Creator", can opposing Bitcoin be considered o
      • Decentralized Universe
      • Earth's Development History: From Flat to Sphere
      • The Future of Religion and Technology
  • FAQ?
    • General
      • Getting Started
      • Claims
      • Redenomination of DOT
      • Grants
      • Polkadot Ambassador Programme
      • Research Pages
      • Community
      • Contributing
      • Contributors
      • Glossary
      • Adding accounts to an ENS domain
      • Ledger Application
      • How to Protect Yourself from Scams
      • How to Do Your Own Research
      • Thousand Validators Programme
      • Frequently Asked Questions (FAQs)
      • Miscellaneous
      • Programmes
        • Grants
        • Bug Bounty
        • Substrate Builders Program
        • Thousand Validators Programme
        • Thousand Contributors Programme
    • Learn
      • Basics
        • Account Generation
          • Polkadot Accounts
          • Account Generation
          • Polkadot's Account Abstraction
          • Account Identity
          • Multi-Signature Accounts
          • Proxy Accounts
          • Pure Proxy Accounts
        • Transactions
          • Extrinsics
          • Balance Transfers
          • Transaction Fees
        • Token and Assets
          • Asset Hub
          • DOT
          • Token Inflation
          • Teleporting Assets
        • NFTs
          • Introduction to NFTs
          • NFT Projects
        • Components
          • Polkadot Host (PH)
          • WebAssembly (Wasm)
          • Runtime Upgrades
          • Governance
          • Treasury
          • Polkadot Consensus
        • Staking
          • Introduction to Staking
          • Nomination Pools
      • Advanced
        • Availability and Validity
        • Cross-Consensus Message Format (XCM)
        • Sequential Phragmén Method
        • Proxy Accounts
        • Randomness
        • Simple Payouts
        • SPREE
        • WebAssembly (Wasm)
      • Cryptography
        • Cryptography Explainer
        • Keys
      • Paraobjects
        • Parachains
          • Common Good Parachains
          • Parachain Slots Auction
          • Parachain Crowdloans
          • Teleporting Assets
        • Parathreads
        • Bridges
      • Polkadot Comparisons
        • Polkadot and Kusama
        • Other Comparisons
        • Ethereum 2.0
        • Cosmos
      • Polkadot Lauch Phased
      • Video Tutorials
    • Build
      • Builder's Guides
      • Development Guide
        • Builders Starter's Guide
        • Parachain Development
        • Decentralized Storage Systems
        • Smart Contracts
        • Oracles
        • Data Analytics
        • Wallets
        • Substrate Connect
        • SS58 Registry
        • Opening HRMP Channels
      • Integration Guide
        • Polkadot Integration Guide
        • Polkadot Protocol Information
        • Integration Assets
        • Node Management
        • Node Interaction
        • Transaction Construction and Signing
      • Tool
      • Resources
    • Maintain
      • Network Maintainers
      • Parameters
      • Node Endpoints
      • Node And Dapps
        • Set up a Full Node
        • Networks
        • Set up Secure WebSocket for Remote Connections
        • Resolving Errors
      • Nominated Guides
        • Nominate
        • Unbonding and Rebonding
      • Validator Guides
        • How to run a Validator on Polkadot
        • Validator Payout Overview
        • Using systemd for a Validator Node
        • Secure Validator
        • How to use Polkadot Validator setup
        • Set Up a Validator with NGINX Reverse Proxy
        • How to Upgrade Your Validator
        • Monitor your node
        • How to Chill
        • How to Stop Validating
        • Validator Community Overview
      • Governance Guides
        • Participate in Democracy
        • Join the Council
        • Voting for Councillors
  • Agency policy
    • Information privacy policy
  • Rumhaus
    • О Room-House.com
    • Бесплатная пробная версия
    • CINEMA
    • Microphone On-Off
    • Демонстрация экрана
      • Поделитесь или не делитесь своим аудио
      • Учебное пособие по записи видео + камера + загрузка видео в формате mp4
    • Руки вверх
    • Изменить мелодию звонка при поднятии руки
    • Потоковое видео в формате MP4
    • Потоковое видео mp4 в браузере Firefox
    • Cabinet Lock
      • Cabinet Lock account
      • Как я могу «запереть шкаф» и не дать посторонним войти в комнату?
      • Как я могу добавить людей в комнату, когда комната заблокирована?
    • Подключить кошелек SkyPirl к Room-House
    • Изменить обложку
    • Название видео
    • Настройка собственного Room-House
    • Как скачать видео на ютуб, фейсбук и конвертировать в мп4 файлы
    • Используйте приложение для улучшения камеры во время прямой трансляции
    • Room-House может организовывать встречи, которые длятся 24/7 и 365 дней в году.
    • Как Room-House защищает продукты?
    • Получите монету Pirl при воспроизведении видео на Room-house
    • Source Code
Powered by GitBook
On this page
  • What is the sequential Phragmén method?​
  • Where is the Phragmén method used in Polkadot?​
  • What does it mean for node operators?​
  • Understanding Phragmén​
  • Optimizations​
  • External Resources​
  1. FAQ?
  2. Learn
  3. Advanced

Sequential Phragmén Method

PreviousCross-Consensus Message Format (XCM)NextProxy Accounts

Last updated 1 year ago

What is the sequential Phragmén method?

The sequential Phragmén method is a multi-winner election method introduced by Edvard Phragmén in the 1890s. While sequential Phragmén is currently in use on Polkadot and Kusama, an improvement on the sequential Phragmén method named will be used in the future.

The quote below taken from the reference sums up the purpose of the sequential Phragmén method:

NOTE

The problem that Phragmén’s methods try to solve is that of electing a set of a given numbers of persons from a larger set of candidates. Phragmén discussed this in the context of a parliamentary election in a multi-member constituency; the same problem can, of course, also occur in local elections, but also in many other situations such as electing a board or a committee in an organization.

Where is the Phragmén method used in Polkadot?

NPoS: Validator Elections

The sequential Phragmén method is used in the Nominated Proof-of-Stake scheme to elect validators based on their own self-stake and the stake that is voted to them from nominators. It also tries to equalize the weights between the validators after each election round. Since validators are paid equally in Polkadot, it is important that the stake behind each validator is spread out. Polkadot tries to optimize three metrics in its elections:

  1. Maximize the total amount at stake.

  2. Maximize the stake behind the minimally staked validator.

  3. Minimize the variance of the stake in the set.

Off-Chain Phragmén

Given the large set of nominators and validators, Phragmén's method is a difficult optimization problem. Polkadot uses off-chain workers to compute the result off-chain and submit a transaction to propose the set of winners. The reason for performing this computation off-chain is to keep a constant block time of six seconds and prevent long block times at the end of each era, when the validator election takes place.

Because certain user actions, like changing nominations, can change the outcome of the Phragmén election, the system forbids calls to these functions for the last quarter of the session before an era change. These functions are not permitted:

  • bondExtra

  • unbond

  • withdrawUnbonded

  • validate

  • nominate

  • chill

  • payoutStakers

  • rebond

The Phragmén method is also used in the council election mechanism. When you vote for council members, you can select up to 16 different candidates, and then place a reserved bond as the weight of your vote. Phragmén will run once on every election to determine the top candidates to assume council positions and then again amongst the top candidates to equalize the weight of the votes behind them as much as possible.

Phragmén is something that will run in the background and requires no extra effort from you. However, it is good to understand how it works since it means that not all the stake you've been nominated will end up on your validator after an election. Nominators are likely to nominate a few different validators that they trust to do a good job operating their nodes.

This section explains the sequential Phragmén method in-depth and walks through examples.

In order to understand the Weighted Phragmén method, we must first understand the basic Phragmén method. There must be some group of candidates, a group of seats they are vying for (which is less than the size of the group of candidates), and some group of voters. The voters can cast an approval vote - that is, they can signal approval for any subset of the candidates.

The subset should be a minimum size of one (i.e., one cannot vote for no candidates) and a maximum size of one less than the number of candidates (i.e., one cannot vote for all candidates). Users are allowed to vote for all or no candidates, but this will not have an effect on the final result, and so votes of this nature are meaningless.

Note that in this example, all voters are assumed to have equal say (that is, their vote does not count more or less than any other votes). The weighted case will be considered later. However, weighting can be "simulated" by having multiple voters vote for the same slate of candidates. For instance, five people voting for a particular candidate is mathematically the same as a single person with weight 5 voting for that candidate.

The Phragmén method will iterate, selecting one seat at a time, according to the following rules:

  1. Candidates submit their ballots, marking which candidates they approve. Ballots will not be modified after submission.

  2. An initial load of 0 is set for each ballot.

  3. The candidate who wins the next available seat is the one where the ballots of their supporters would have the least average (mean) cost if that candidate wins.

  4. The n ballots that approved that winning candidate get 1/n added to their load.

  5. The load of all ballots that supported the winner of this round are averaged out so that they are equal.

  6. If there are any more seats, go back to step 3. Otherwise, the selection ends.

Let's walk through an example with four candidates vying for three seats, and five voters.

Open Seats: 3Candidates:   A B C D  L0-------------------------Voter V1:       X      0Voter V2:         X X  0Voter V3:       X   X  0Voter V4:     X X      0Voter V5:       X X X  0

In this example, we can see that voter V1 approves only of candidate B, voter V2 approves of candidates C and D, etc. Voters can approve any number of candidates between 1 and number_of_candidates - 1. An initial "load" of 0 is set for each ballot (L0 = load after round 0, i.e., the "round" before the first round). We shall see shortly how this load is updated and used to select candidates.

We will now run through an iterative algorithm, with each iteration corresponding to one "seat". Since there are three seats, we will walk through three rounds.

For the first round, the winner is simply going to be the candidate with the most votes. Since all loads are equal, the lowest average load will be the candidate with the highest n, since 1/n will get smaller as n increases. For this first example round, for instance, candidate A had only one ballot vote for them. Thus, the average load for candidate A is 1/1, or 1. Candidate C has two ballots approving of them, so the average load is 1/2. Candidate B has the lowest average load, at 1/4 and they get the first seat. Ballots loads are now averaged out, although for the first iteration, this will not have any effect.

Filled seats: 1 (B)Open Seats: 2Candidates:   A B C D  L0 L1-----------------------------Voter V1:       X      0  1/4Voter V2:         X X  0  0Voter V3:       X   X  0  1/4Voter V4:     X X      0  1/4Voter V5:       X X X  0  1/4

We are now down to candidates A, C, and D for two open seats. There is only one voter (V4) for A, with load 1/4. C has two voters, V2 and V5, with loads of 0 and 1/4. D has three voters approving of them, V2, V3, and V5, with loads of 0, 1/4, and 1/4, respectively.

If Candidate A wins, the average load would be (1/4 + 1/1) / 1, or 5/4. If candidate C wins, the average load would be ((0 + 1/2) + (1/4 + 1/2)) / 2, or 5/8. If candidate D wins, the average load would be ((0 + 1/3) + (1/4 + 1/3) + (1/4 + 1/3)) / 3, or 1/2. Since 1/2 is the lowest average load, candidate D wins the second round.

Now everybody who voted for Candidate D has their load set to the average, 1/2 of all the loads.

Filled seats: 2 (B, D)Open Seats: 1Candidates:   A B C D  L0 L1  L2---------------------------------Voter V1:       X      0  1/4 1/4Voter V2:         X X  0  0   1/2Voter V3:       X   X  0  1/4 1/2Voter V4:     X X      0  1/4 1/4Voter V5:       X X X  0  1/4 1/2

There is now one seat open and two candidates, A and C. Voter V4 is the only one voting for A, so if A wins then the average load would be (1/4 + 1/1) / 1, or 5/4. Voters V2 and V5 (both with load 1/2) support C, so if C wins the average load would be ((1/2 + 1/2) + (1/2 + 1/2)) / 2, or 1. Since the average load would be lower with C, C wins the final seat.

Filled seats: 3 (B, D, C)Open Seats: 0Candidates:   A B C D  L0 L1  L2  L3------------------------------------Voter V1:       X      0  1/4 1/4 1/4Voter V2:         X X  0  0   1/2 1Voter V3:       X   X  0  1/4 1/2 1/2Voter V4:     X X      0  1/4 1/4 1/4Voter V5:       X X X  0  1/4 1/2 1

An interesting characteristic of this calculation is that the total load of all voters will always equal the number of seats filled in that round. In the zeroth round, load starts at 0 and there are no seats filled. After the first round, the total of all loads is 1, after the second round it is 2, etc.

While this method works well if all voters have equal weight, this is not the case in Polkadot. Elections for both validators and candidates for the Polkadot Council are weighted by the number of tokens held by the voters. This makes elections more similar to a corporate shareholder election than a traditional political election, where some members have more pull than others. Someone with a single token will have much less voting power than someone with 100. Although this may seem anti-democratic, in a pseudonymous system, it is trivial for someone with 100 tokens to create 100 different accounts and spread their wealth to all of their pseudonyms.

Therefore, not only do we want to allow voters to have their preferences expressed in the result, but do so while keeping as equal a distribution of their stake as possible and express the wishes of minorities as much as is possible. The Weighted Phragmén method allows us to reach these goals.

Weighted Phragmén is similar to Basic Phragmén in that it selects candidates sequentially, one per round, until the maximum number of candidates are elected. However, it has additional features to also allocate weight (stake) behind the candidates.

NOTE: in terms of validator selection, for the following algorithm, you can think of "voters" as "nominators" and "candidates" as "validators".

  1. Candidates are elected, one per round, and added to the set of successful candidates (they have won a "seat"). This aspect of the algorithm is very similar to the "basic Phragmén" algorithm described above.

  2. However, as candidates are elected, a weighted mapping is built, defining the weights of each selection of a validator by each nominator.

In more depth, the algorithm operates like so:

  1. Create a list of all voters, their total amount of stake, and which validators they support.

  2. Generate an initial edge-weighted graph mapping from voters to candidates, where each edge weight is the total potential weight (stake) given by that voter. The sum of all potential weight for a given candidate is called their approval stake.

  3. Now we start electing candidates. For the list of all candidates who have not been elected, get their score, which is equal to 1 / approval_stake.

  4. For each voter, update the score of each candidate they support by adding their total budget (stake) multiplied by the load of the voter and then dividing by that candidate's approval stake (voter_budget * voter_load / candidate_approval_stake).

  5. Determine the candidate with the lowest score and elect that candidate. Remove the elected candidate from the pool of potential candidates.

  6. The load for each edge connecting to the winning candidate is updated, with the edge load set to the score of the candidate minus the voter's load, and the voter's load then set to the candidate's score.

  7. If there are more candidates to elect, go to Step 3. Otherwise, continue to step 8.

  8. Now the stake is distributed amongst each nominator who backed at least one elected candidate. The backing stake for each candidate is calculated by taking the budget of the voter and multiplying by the edge load then dividing by the candidate load (voter_budget * edge_load / candidate_load).

Note: All numbers in this example are rounded off to three decimal places.

In the following example, there are five voters and five candidates vying for three potential seats. Each voter V1 - V5 has an amount of stake equal to their number (e.g., V1 has stake of 1, V2 has stake of 2, etc.). Every voter is also going to have a load, which initially starts at 0.

Filled seats: 0Open Seats: 3Candidates:    A B C D E  L0----------------------------Voter V1 (1):  X X        0Voter V2 (2):  X X        0Voter V3 (3):  X          0Voter V4 (4):    X X X    0Voter V5 (5):  X     X    0

Let us now calculate the approval stake of each of the candidates. Recall that this is merely the amount of all support for that candidate by all voters.

Candidate A: 1 + 2 + 3 + 5 = 11Candidate B: 1 + 2 + 4 = 7Candidate C: 4 = 4Candidate D: 4 + 5 = 9Candidate E: 0

The first step is easy - candidate E has 0 approval stake and can be ignored from here on out. They will never be elected.

We can now calculate the initial scores of the candidates, which is 1 / approval_stake:

Candidate A: 1 / 11 = 0.091Candidate B: 1 / 7 = 0.143Candidate C: 1 / 4 = 0.25Candidate D: 1 / 9 = 0.111Candidate E: N/A

For every edge, we are going to calculate the score, which is current score plus the total budget * the load of the voter divided by the approval stake of the candidate. However, since the load of every voter starts at 0, and anything multiplied by 0 is 0, any addition will be 0 / x, or 0. This means that this step can be safely ignored for the initial round.

Thus, the best (lowest) score for Round 0 is Candidate A, with a score of 0.091.

Candidates:    A B C D E  L0 L1----------------------------------Voter V1 (1):  X X        0  0.091Voter V2 (2):  X X        0  0.091Voter V3 (3):  X          0  0.091Voter V4 (4):    X X X    0  0Voter V5 (5):  X     X    0  0.091
Filled seats: 1 (A)Open Seats: 2Candidates:    A B C D E  L0----------------------------Voter V1 (1):  X X        0Voter V2 (2):  X X        0Voter V3 (3):  X          0Voter V4 (4):    X X X    0Voter V5 (5):  X     X    0

Candidate A is now safe; there is no way that they will lose their seat. Before moving on to the next round, we need to update the scores on the edges of our graph for any candidates who have not yet been elected.

We elided this detail in the previous round, since it made no difference to the final scores, but we should go into depth here to see how scores are updated. We first must calculate the new loads of the voters, and then calculate the new scores of the candidates.

Any voter who had one of their choices for candidate fill the seat in this round (i.e., voters V1, V2, V3, and V5, who all voted for A) will have their load increased. This load increase will blunt the impact of their vote in future rounds, and the edge (which will be used in determining stake allocation later) is set to the score of the elected candidate minus the current voter load.

edge_load = elected_candidate_score - voter_loadvoter_load = elected_candidate_score

In this instance, the score of the elected candidate is 0.091 and the voter loads are all 0. So for each voter who voted for A, we will calculate a new edge load Voter -> A of:

Edge load: 0.091 - 0 = 0.091

and a new voter load of:

Voter load: 0.091

As a reminder, here are the current scores. Loads of the voters are all 0.

Candidate B : 0.143Candidate C : 0.25Candidate D : 0.111

Now, we go through the weighted graph and update the score of the candidate and the load of the edge, using the algorithm:

candidate_score = candidate_score + ((voter_budget * voter_load) / candidate_approval_stake)

Without walking through each step, this gives us the following modifications to the scores of the different candidates.

V1 updates B to 0.156V2 updates B to 0.182V4 updates B to 0.182V4 updates C to 0.25V4 updates D to 0.111V5 updates D to 0.162

After scores are updated, the final scores for the candidates for this round are:

Candidate B: 0.182Candidate C: 0.25Candidate D: 0.162

D, with the lowest score, is elected. You will note that even though candidate B had more voters supporting them, candidate D won the election due to their lower score. This is directly due to the fact that they had the lowest score, of course, but the root reason behind them having a lower score was both the greater amount of stake behind them and that voters who did not get one of their choices in an earlier round (in this example, voter V4) correspond to a higher likelihood of a candidate being elected.

We then update the loads for the voters and edges as specified above for any voters who voted for candidate D (viz., V4 and V5) using the same formula as above.

Filled seats: 2 (A, D)Open Seats: 1Candidates:    A B C D E  L0 L1    L2-----------------------------------Voter V1 (1):  X X        0  0.091 0.091Voter V2 (2):  X X        0  0.091 0.091Voter V3 (3):  X          0  0.091 0.091Voter V4 (4):    X X X    0  0     0.162Voter V5 (5):  X     X    0  0.091 0.162

Following a similar process for Round 2, we start with initial candidate scores of:

Candidate B : 0.143Candidate C : 0.25

We can then update the scores of the remaining two candidates according to the algorithm described above.

V1 updates B to 0.156V2 updates B to 0.182V4 updates B to 0.274V4 updates C to 0.412

With the lowest score of 0.274, Candidate B claims the last open seat. Candidates A, D, and B have been elected, and candidates C and E are not.

Before moving on, we must perform a final load adjustment for the voters and the graph.

Filled seats: 3 (A, D, B)Open Seats: 0Candidates:    A B C D E  L0 L1    L2    L3------------------------------------------Voter V1 (1):  X X        0  0.091 0.091 0.274Voter V2 (2):  X X        0  0.091 0.091 0.274Voter V3 (3):  X          0  0.091 0.091 0.091Voter V4 (4):    X X X    0  0     0.162 0.274Voter V5 (5):  X     X    0  0.091 0.162 0.162

Now we have to determine how much stake every voter should allocate to each candidate. This is done by taking the load of the each edge and dividing it by the voter load, then multiplying by the total budget of the voter.

In this example, the weighted graph ended up looking like this:

Nominator: V1    Edge to A load= 0.091    Edge to B load= 0.183Nominator: V2    Edge to A load= 0.091    Edge to B load= 0.183Nominator: V3    Edge to A load= 0.091Nominator: V4    Edge to B load= 0.113    Edge to D load= 0.162Nominator: V5    Edge to A load= 0.091    Edge to D load= 0.071

For instance, the budget of V1 is 1, the edge load to A is 0.091, and the voter load is 0.274. Using our equation:

backing_stake (A) = voter_budget * edge_load / voter_load

We can fill these variables in with:

backing_stake (A) = 1 * 0.091 / 0.274 = 0.332

For V1 backing stake of B, you can simply replace the edge load value and re-calculate.

backing_stake (B) = 1 * 0.183 / 0.274 = 0.668

Note that the total amount of all backing stake for a given voter will equal the total budget of the voter, unless that voter had no candidates elected, in which case it will be 0.

The final results are:

A is elected with stake 6.807.D is elected with stake 4.545.B is elected with stake 3.647.V1 supports: A with stake: 0.332 and B with stake: 0.668.V2 supports: A with stake: 0.663 and B with stake: 1.337.V3 supports: A with stake: 3.0.V4 supports: B with stake: 1.642 and D with stake: 2.358.V5 supports: A with stake: 2.813 and D with stake: 2.187.

You will notice that the total amount of stake for candidates A, D, and B equals (aside from rounding errors) the total amount of stake of all the voters (1 + 2 + 3 + 4 + 5 = 15). This is because each voter had at least one of their candidates fill a seat. Any voter whose had none of their candidates selected will also not have any stake in any of the elected candidates.

The results for nominating validators are further optimized for several purposes:

  1. To reduce the number of edges, i.e. to minimize the number of validators any nominator selects

  2. To ensure, as much as possible, an even distribution of stake among the validators

  3. Reduce the amount of block computation time

After running the weighted Phragmén algorithm, a process is run that redistributes the vote amongst the elected set. This process will never add or remove an elected candidate from the set. Instead, it reduces the variance in the list of backing stake from the voters to the elected candidates. Perfect equalization is not always possible, but the algorithm attempts to equalize as much as possible. It then runs an edge-reducing algorithm to minimize the number of validators per nominator, ideally giving every nominator a single validator to nominate per era.

Paying out rewards for staking from every validator to all of their nominators can cost a non-trivial amount of chain resources (in terms of space on chain and resources to compute). Assume a system with 200 validators and 1000 nominators, where each of the nominators has nominated 10 different validators. Payout would thus require 1_000 * 10, or 10_000 transactions. In an ideal scenario, if every nominator selects a single validator, only 1_000 transactions would need to take place - an order of magnitude fewer. Empirically, network slowdown at the beginning of an era has occurred due to the large number of individual payouts by validators to nominators. In extreme cases, this could be an attack vector on the system, where nominators nominate many different validators with small amounts of stake in order to slow the system at the next era change.

While this would reduce network and on-chain load, being able to select only a single validator incurs some diversification costs. If the single validator that a nominator has nominated goes offline or acts maliciously, then the nominator incurs a risk of a significant amount of slashing. Nominators are thus allowed to nominate up to 16 different validators. However, after the weighted edge-reducing algorithm is run, the number of validators per nominator is minimized. Nominators are likely to see themselves nominating a single active validator for an era.

At each era change, as the algorithm runs again, nominators are likely to have a different validator than they had before (assuming a significant number of selected validators). Therefore, nominators can diversify against incompetent or corrupt validators causing slashing on their accounts, even if they only nominate a single validator per era.

Another issue is that we want to ensure that as equal a distribution of votes as possible amongst the elected validators or council members. This helps us increase the security of the system by ensuring that the minimum amount of tokens in order to join the active validator set or council is as high as possible. For example, assume a result of five validators being elected, where validators have the following stake: {1_000, 20, 10, 10, 10}, for a total stake of 1_050. In this case, a potential attacker could join the active validator set with only 11 tokens, and could obtain a majority of validators with only 33 tokens (since the attacker only has to have enough stake to "kick out" the three lowest validators).

In contrast, imagine a different result with the same amount of total stake, but with that stake perfectly equally distributed: {210, 210, 210, 210, 210}. With the same amount of stake, an attacker would need to stake 633 tokens in order to get a majority of validators, a much more expensive proposition. Although obtaining an equal distribution is unlikely, the more equal the distribution, the higher the threshold - and thus the higher the expense - for attackers to gain entry to the set.

Running the Phragmén algorithm is time-consuming, and often cannot be completed within the time limits of production of a single block. Waiting for calculation to complete would jeopardize the constant block production time of the network. Therefore, as much computation as possible is moved to an offchain worker, which validators can work on the problem without impacting block production time. By restricting the ability of users to make any modifications in the last 25% of an era, and running the selection of validators by nominators as an offchain process, validators have a significant amount of time to calculate the new active validator set and allocate the nominators in an optimal manner.

There are several further restrictions put in place to limit the complexity of the election and payout. As already mentioned, any given nominator can only select up to 16 validators to nominate. Conversely, a single validator can have only 256 nominators. A drawback to this is that it is possible, if the number of nominators is very high or the number of validators is very low, that all available validators may be "oversubscribed" and unable to accept more nominations. In this case, one may need a larger amount of stake to participate in staking, since nominations are priority-ranked in terms of amount of stake.

Phragmms, formerly known as Balphragmms, is a new election rule inspired by Phragmén and developed in-house for Polkadot. In general, election rules on blockchains is an active topic of research. This is due to the conflicting requirements for election rules and blockchains: elections are computationally expensive, but blockchains are computationally limited. Thus, this work constitutes state of the art in terms of optimization.

Proportional representation is a very important property for a decentralized network to have in order to maintain a sufficient level of decentralization. While this is already provided by the currently implemented seqPhragmen, this new election rule provides the advantage of the added security guarantee described below. As far as we can tell, at the time of writing, Polkadot and Kusama are the only blockchain networks that implement an election rule that guarantees proportional representation.

The security of a distributed and decentralized system such as Polkadot is directly related to the goal of avoiding overrepresentation of any minority. This is a stark contrast to traditional approaches to proportional representation axioms, which typically only seek to avoid underrepresentation.

This new election rule aims to achieve a constant-factor approximation guarantee for the maximin support objective and the closely related proportional justified representation (PJR) property.

The PJR property considers the proportionality of the voter’s decision power. The property states that a group of voters with cohesive candidate preferences and a large enough aggregate voting strength deserve to have a number of representatives proportional to the group’s vote strength.

Sequential Phragmén (seqPhragmen) and MMS are two efficient election rules that both achieve PJR.

Currently, Polkadot employs the seqPhragmen method for validator and council elections. Although seqPhramen has a very fast runtime, it does not provide constant-factor approximation for the maximin support problem. This is due to seqPhramen only performing an approximate rebalancing of the distribution of stake.

In contrast, MMS is another standard greedy algorithm that simultaneously achieves the PJR property and provides a constant factor approximation for maximin support, although with a considerably slower runtime. This is because for a given partial solution, MMS computes a balanced edge weight vector for each possible augmented committee when a new candidate is added, which is computationally expensive.

We introduce a new heuristic inspired by seqPhragmen, PhragMMS, which maintains a comparable runtime to seqPhragmen, offers a constant-factor approximation guarantee for the maximin support objective, and satisfies PJR. This is the fastest known algorithm to achieve a constant-factor guarantee for maximin support.

The computation is executed by off-chain workers privately and separately from block production, and the validators only need to submit and verify the solutions on-chain. Relative to a committee A, the score of an unelected candidate c is an easy-to-compute rough estimate of what would be the size of the least stake backing if we added c to committee A. Observing on-chain, only one solution needs to be tracked at any given time, and a block producer can submit a new solution in the block only if the block passes the verification test, consisting of checking:

  1. Feasibility,

  2. Balancedness, and

  3. Local Optimality - The least stake backing of A is higher than the highest score among unelected candidates

If the tentative solution passes the tests, then it replaces the current solution as the tentative winner. The official winning solution is declared at the end of the election window.

A powerful feature of this algorithm is the fact that both its approximation guarantee for maximin support and the above checks passing can be efficiently verified in linear time. This allows for a more scalable solution for secure and proportional committee elections. While seqPhragmen also has a notion of score for unelected candidates, Phragmms can be seen as a natural complication of the seqPhragmen algorithm, where Phragmms always grants higher score values to candidates and thus inserts them with higher support values.

To summarize, the main differences between the two rules are:

  • In seqPhragmen, lower scores are better, whereas in Phragmms, higher scores are better.

  • Inspired by seqPhragmen, the scoring system of Phragmms can be considered to be more intuitive and does a better job at estimating the value of adding a candidate to the current solution, and hence leads to a better candidate-selection heuristic.

  • Unlike seqPhragmen, in Phragmms, the edge weight vector w is completely rebalanced after each iteration of the algorithm.

The Phragmms election rule is currently being implemented on Polkadot. Once completed, it will become one of the most sophisticated election rules implemented on a blockchain. For the first time, this election rule will provide both fair representation (PJR) and security (constant-factor approximation for the maximin support objection) to a blockchain network.

The Phragmms algorithm iterates through the available seats, starting with an empty committee of size k:

  1. Initialize an empty committee A and zero edge weight vector w = 0.

  2. Repeat k times:

    • Find the unelected candidate with highest score and add it to committee A.

    • Re-balance the weight vector w for the new committee A.

  3. Return A and w.

Council Elections

What does it mean for node operators?

You can use the script for predicting the outcome of a validator election ahead of a new election.

Understanding Phragmén

Basic Phragmén

Rationale

The particular algorithm we call here the "Basic Phragmén" was first described by Brill et al. in their paper .

Algorithm

Example

Weighted Phragmén

Rationale

Algorithm

Example

Optimizations

High-Level Description

To minimize block computation time, the staking process is run as an . In order to give time for this off-chain worker to run, staking commands (bond, nominate, etc.) are not allowed in the last quarter of each era.

These optimizations will not be covered in-depth on this page. For more details, you can view the , the , or the seqPhragménwithpostprocessing method in the . If you would like to dive even more deeply, you can review the .

Rationale for Minimizing the Number of Validators Per Nominator

Rationale for Maintaining an Even Distribution of Stake

Rationale for Reducing Block Computing Time

Phragmms (fka Balphragmms)

Maximin Support Objective and PJR

The maximin support objective is based on maximizing the support of the least-supported elected candidate, or in the case of Polkadot and Kusama, maximizing the least amount of stake backing amongst elected validators. This security-based objective translates to a security guarantee for NPoS and makes it difficult for an adversarial whale’s validator nodes to be elected. The Phragmms rule, and the guarantees it provides in terms of security and proportionality, have been formalized in a ).

Comparing Sequential Phragmén, MMS, and Phragmms

The New Election Rule: Phragmms

Phragmms is an iterative greedy algorithm that starts with an empty committee and alternates between the Phragmms heuristic for inserting a new candidate and rebalancing by replacing the weight vector with a balanced one. The main differentiator between Phragmms and seqPhragmen is that the latter only perform an approximate rebalancing. Details can be found in .

Algorithm

External Resources

- W3F research paper that expands on the sequential Phragmén method.

- An overview of Nominated Proof of Stake as its applied to Polkadot.

- Python implementations of Simple and Complicated Phragmén methods.

- Rust implementation used in Substrate.

- 95-page paper explaining Phragmén's election methods in detail.

- This paper by Brill et al. is the source for the simple Phragmén method, along with proofs about its properties.

- Script to generate the Phragmén validator election outcome before the start of an era.

​
Phragmms
Phragmén paper
​
​
​
​
​
offline-phragmén
​
​
​
"Phragmén’s Voting Methods and Justified Representation"
​
​
​
​
​
​
​
​
off-chain worker
Rust implementation of elections in Substrate
Rust implementation of staking in Substrate
Python reference implementation
W3F Research Page on Sequential Phragmén Method
​
​
​
​
​
peer-reviewed paper
​
​
Balanced Stake Distribution
​
​
Phragmms
W3F Research Page on NPoS
Python Reference Implementations
Substrate Implementation
Phragmén's and Thiele's Election Methods
Phragmén’s Voting Methods and Justified Representation
Offline Phragmén