Blockchain
We had 2 engineering meetings where we discussed blockchain in general:
There are many different blockchains out there, and while they have a lot of similarities, the programming model for each is fairly distinct. For now, FP Complete is specializing in Cosmos development. Please see the dedicated Cosmos training docs for more information.
Blockchain architecture
This diagram is meant to be shared externally in some form as a marketing message around our abilities with blockchain. I've tried to make it more generic by not referring to specific service providers (like AWS) or chain-specific tools (like Rust or CosmWasm).
graph LR
subgraph "Chain"
node(Node Provider) -->|Broadcast transaction| validators(Chain Validators)
validators -->|Produce blocks| node
sc(Smart Contracts) -->|Modify| state(Chain State)
sc -->|Query| state
node -->|Execute| sc
node -->|Query| sc
end
subgraph "Team"
dev(fa:fa-user Developers)
scDeployer(fa:fa-user Smart Contract Deployer)
frontendDeployer(fa:fa-user Frontend Deployer)
sre(fa:fa-user Site Reliability Engineer)
end
subgraph "Code Management"
git -->|Trigger Build| ci(Continuous Integration)
ci -->|Push image| registry(Docker Registry)
ci -->|Compile| scArtifacts(Smart Contract storage)
end
dev -->|Push Code| git(Git Repo)
sre -->|Deploy Service| orchestration
orchestration -->|Pull image| registry
frontendDeployer -->|Manual frontend deploy| web
scDeployer -->|Download| scArtifacts
scDeployer -->|Deploy contracts| node
subgraph "Cloud Provider"
orchestration(Orchestration service)
indexerProcessor(Indexer event Processor)
subgraph indexerAsg[Indexer Auto-scaling Group]
indexerRest(RESTful API Server)
end
indexerProcessor -->|Store events| sql(Managed SQL Database)
indexerRest -->|Query| sql
subgraph queryAsg[Query Optimizer ASG]
querier(Query Optimizer)
end
orchestration -->|Update image| indexerAsg
orchestration -->|Update image| queryAsg
end
indexerProcessor -->|Load events| node
querier --> node
subgraph "Content Delivery Network (CDN)"
web(Web Application)
end
subgraph "fa:fa-user End User"
mobileWallet(fa:fa-wallet Mobile Wallet) --> web
mobileBrowser(fa:fa-mobile Mobile Browser) --> web
desktopBrowser(fa:fa-desktop Desktop Browser) --> web
end
web -->|Query| indexerRest
web -->|Query| querier