Scorex framework

Information about Scorex framework

Published on June 9, 2016

Author: DmitryMeshkov

Source: slideshare.net

Content

1. 1 Scorex - модульная блокчейн платформа Дмитрий Мешков

2. 2 / 25 Структура доклада ● Введение в Scorex ● Использование Scorex ● Настройка Scorex ● План развития

3. 3 Введение в Scorex

4. 4 / 25 Мотивация ● Существующие блокчейн системы – много сильносвязанного кода Bitcoin: > 300K строк С/С++, 44К строк Python EtheriumJ: > 174K строк JAVA Scorex: ~ 4K строк Scala ● Замена даже небольшой части алгоритма – сложный процесс ● Более совершенные алгоритмы лежат на полках из-за сложности реализации

5. 5 / 25 Общая архитектура Модульная архитектура, которая позволяет легко менять ● Алгоритмы консенсуса (Proof-of-Work / Proof-of- Stake / Proofs-of-Retrievability / Proof-of-Activity) ● Вид состояния (box/account) ● Хранилище данных (in-memory, no-SQL, SQL) ● Криптографические алгоритмы (Sha / Гост) ● Параметры вынесены в json файл

6. 6 / 25 Качество фреймворка Применения блокчейна в финансовой сфере требует повышенного внимания к качеству фреймворка: ● Используются современные теоретические наработки ● Используются последние версии библиотек ● Компактный функциональный код ● Код покрыт тестами (ScalaCheck), налажено CI ● Большой выбор безопасных криптопримитивов https://github.com/ScorexProject/scrypto

7. 7 / 25 Достижения ● Победа и приз зрительских симпатий на Московском блокчейн хакатона ● Часть IOHK research ● Взаимодействие с ведущими исследователями мира ● Планируется использование в продакшн системах

8. 8 Использование Scorex

9. 9 / 25 Подготовка ● Документация на гитхабе: https://github.com/ScorexProject/Scorex/wiki/Getting-started ● Требуется Java 8 ● Рекомендуется использовать с sbt

10. 10 / 25 Добавляем модули libraryDependencies ++= Seq( "org.consensusresearch" %% "scorex-basics" % "1.+", "org.consensusresearch" %% "scorex-consensus" % "1.+", "org.consensusresearch" %% "scorex-perma" % "1.+", "org.consensusresearch" %% "scorex-transaction" % "1.+" ) Существующие модули: ● scorex-basics – ядро фреймворка ● scorex-transaction – транзакционный уровень ● scorex-consensus – алгоритмы консенсуса Nxt и Quora ● scorex-perma – алгоритм консенсуса Permacoin

11. 11 / 25 Создаем приложение class MyApplication(val settingsFilename: String) extends Application { // Your application config override val applicationName = "my cool application" override val appVersion = ApplicationVersion(0, 1, 0) override implicit lazy val settings = new Settings with TransactionSettings { override val filename: String = settingsFilename } // Define consensus and transaction modules of your application override implicit lazy val consensusModule = new NxtLikeConsensusModule() override implicit lazy val transactionModule = new SimpleTransactionModule()(settings, this) // Define API routes of your application override lazy val apiRoutes = Seq( BlocksApiRoute(this), TransactionsApiRoute(this), NxtConsensusApiRoute(this), WalletApiRoute(this), PaymentApiRoute(this), UtilsApiRoute(this), PeersApiRoute(this), AddressApiRoute(this) ) // API types are required for swagger support override lazy val apiTypes = Seq( typeOf[BlocksApiRoute], typeOf[TransactionsApiRoute], typeOf[NxtConsensusApiRoute], typeOf[WalletApiRoute], typeOf[PaymentApiRoute], typeOf[UtilsApiRoute], typeOf[PeersApiRoute], typeOf[AddressApiRoute] ) // Create your custom messages and add them to additionalMessageSpecs override lazy val additionalMessageSpecs = TransactionalMessagesRepo.specs // Start additional actors actorSystem.actorOf(Props(classOf[UnconfirmedPoolSynchronizer], this)) }

12. 12 / 25 Запускаем приложение object MyApplication extends App { // Provide filename by command-line arguments val filename = args.headOption.getOrElse("settings.json") // Create application instance val application = new MyApplication(filename) // Run it application.run() // Generate account in your wallet if (application.wallet.privateKeyAccounts().isEmpty) application.wallet.generateNewAccounts(1) }

13. 13 / 25 Проверяем API ● Для доступа к API можно использовать command line client или Swagger GUI

14. 14 Настройка Scorex

15. 15 / 25 Файл настройки ● Настройки вынесены в json файл ● Описание всех настроек доступно в wiki https://github.com/ScorexProject/Scorex/wiki/Settings ● В большинстве случаев достаточно использовать значение по умолчанию

16. 16 / 25 Файл настройки: пример { "p2p": { "bindAddress": "0.0.0.0", "upnp": false, "upnpGatewayTimeout": 7000, "upnpDiscoverTimeout": 3000, "port": 9084, "knownPeers": [ "23.94.190.226:9185" ], "maxConnections": 10 }, "walletDir": "/tmp/scorex/wallet", "dataDir": "/tmp/scorex/data", "rpcPort": 9085, "rpcAllowed": [], "maxRollback": 100, "blockGenerationDelay": 0, "genesisTimestamp": 1460952000000, "apiKeyHash": "GmVvcpx1BRUPDZiADbZ7a6zgQV3Sgj2GhNoEiTH9Drdx", "cors": false }

17. 17 / 25 Настройки безопасности Безопасность кошелька: ● walletDirOpt ● walletPassword ● walletSeed Безопасность API ● https ● apiKeyHash https://github.com/ScorexProject/Scorex/wiki/Security

18. 18 План развития

19. 19 / 25 Текущее состояние Тестнет Lagonaki: https://github.com/ScorexProject/Lagonaki ● Консенсус Permacoin ● Простейший транзакционный уровень на основе аккаунтов

20. 20 / 25 План развития Распространяется через mail list: https://scorex-dev.groups.io/g/main ● Релиз 1.3.0: ● Варианты хранения стейта Account/Box ● Гибкая схема подписи транзакций и блоков ● Обновленные authenticated data structures: Merkle tree Skip list

21. 21 / 25 План развития Roller chain consensus: http://arxiv.org/pdf/1603.07926v2.pdf https://github.com/ScorexProject/rollerchain ● Дальнейшее развитие Permacoin ● Право на генерацию блока предоставляется за доказательство хранения истории состояний блокчейна

22. 22 / 25 План развития Sigmacoin transaction layer: https://github.com/ScorexProject/sigmacoin ● Транзакционный уровень на основе output ● Трата output на основе Сигма протоколов ● Пример: этот output может потратить владелец ключей w1, w2, таких что x=gw1 и gw2 =hw2 . Т.е. вместо скриптов – доказательства на основе Zero-Knowledge.

23. 23 / 25 План развития Ergaki testnet: https://github.com/ScorexProject/ergaki ● Новый тестнет с попыткой внедрить инновационные теоритические наработки ● Rollerchain consensus ● Sigmacoin транзакционный уровень

24. 24 / 25 Обратная связь ● Github: https://github.com/ScorexProject/Scorex ● Maillist: https://scorex-dev.groups.io/g/main ● Контакты: https://iohk.io/team/ ● Mail: [email protected]

25. 25 Вопросы?

Related presentations


Other presentations created by DmitryMeshkov

Blockchain: under the hood
19. 02. 2017
0 views

Blockchain: under the hood