scorex framework
TRANSCRIPT
Scorex -
Scorex
Scorex
Scorex
Scorex
Bitcoin: > 300K /++, 44 PythonEtheriumJ: > 174K JAVAScorex: ~ 4K Scala
-
, (Proof-of-Work / Proof-of-Stake / Proofs-of-Retrievability / Proof-of-Activity)
(box/account)
(in-memory, no-SQL, SQL)
(Sha / )
json
:
(ScalaCheck), CI
https://github.com/ScorexProject/scrypto
IOHK research
Scorex
: https://github.com/ScorexProject/Scorex/wiki/Getting-started
Java 8
sbt
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
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))
}
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)
}
API
API command line client Swagger GUI
Scorex
json
wikihttps://github.com/ScorexProject/Scorex/wiki/Settings
:
{
"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
}
:walletDirOpt
walletPassword
walletSeed API
https
apiKeyHash
https://github.com/ScorexProject/Scorex/wiki/Security
Lagonaki: https://github.com/ScorexProject/Lagonaki
Permacoin
mail list: https://scorex-dev.groups.io/g/main
1.3.0:
Account/Box
authenticated data structures:Merkle treeSkip list
Roller chain consensus: http://arxiv.org/pdf/1603.07926v2.pdfhttps://github.com/ScorexProject/rollerchain
Permacoin
Sigmacoin transaction layer: https://github.com/ScorexProject/sigmacoin
output
output
: output w1, w2, x=gw1 gw2=hw2... Zero-Knowledge.
Ergaki testnet:https://github.com/ScorexProject/ergaki
Rollerchain consensus
Sigmacoin
Github: https://github.com/ScorexProject/Scorex
Maillist: https://scorex-dev.groups.io/g/main
: https://iohk.io/team/
Mail: [email protected]
?
/
/