parity progress report

50
Progress Report Parity

Upload: gavofyork

Post on 12-Apr-2017

187 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Parity Progress Report

Progress Report

Parity

Page 2: Parity Progress Report

Parity

What is Parity?

Parity Ethereum Client is software made by Parity Technologies

● Acts as a “full” node on the Ethereum network

● Keeps a synchronised block chain to audit other nodes

● Manages secret keys; signs and publishes transactions

● Written in Rust for correctness, performance and footprint

● Portable - works on Windows, Mac OS and Linux/Unix

● Modular actor-based architecture for reliability

Page 3: Parity Progress Report

Parity

What is Parity?

Advanced Ethereum client:

● State-trie pruning keeps database size to a minimum

● Auto-upgrading keeps node up to date via smart-contract

● Light-client operation for minimal-resource/embedded clients

● Chain-specification files for multi-chain interoperability

● Consensus-abstraction for pluggable consensus algorithms

Page 4: Parity Progress Report

Parity

PAR

● Fully syncs in around 60s● Serves & shares:

○ Compressed, condensed, aggregated state-trie data

○ Cryptographic manifests

● Multi-level security● Downloads receipts &

transactions to ensure full compatibility

Parity wire protocol for Warp-sync

Page 5: Parity Progress Report

Parity

PIP● Builds on Foundation’s LES

protocol● Request pipelining to

minimize round-trips● Responses fully provable:

sybil attack resistantParity light client Protocol

Page 6: Parity Progress Report

Parity

VaultsKeep your addresses to

yourself

● Geth-dialect of wallet files include address in plaintext

● Vaults encrypt address and other metadata of key files

● One path = one password● Enter path’s password to

see addresses of key files

Page 7: Parity Progress Report

Parity

Deep TracingFigure out what really

happened

● New trace_ API● Allows for:

○ state deltas○ VM trace○ deep transaction trace

● Used for:○ preview transactions○ re-run transactions

Page 8: Parity Progress Report

Parity

TendermintProof-of-Authority /

Proof-of-Stake pluggable consensus algorithm

● High-performance PBFT-based consensus algorithm

● Authorities controlled via smart-contract

● Proof-of-Stake variant

Page 9: Parity Progress Report

Parity

StratumSupport for Stratum

notification

● High-performance mining hardware can get TCP notifications of new work

Page 10: Parity Progress Report

Parity

Scheduled transactions

Transactions can be published only on certain

conditions

● Avoid publishing transactions until a specified:○ Block number○ Block timestamp

● “Alarm clock”● Scheduled transactions

persist between runs

Page 11: Parity Progress Report

Parity

Auto-updatingParity will stay in sync with

the network. Always.

● Multiple functions:○ Always○ Never○ Track versus minor-version○ Critical only○ Download only

● Controlled by smart-contract

● Smart-contract has partially-automated, multi-phase multi-key system

Page 12: Parity Progress Report

Parity

Parity Infrastructure

Smart contracts and services

● Registry hierarchical name registry

● TokenReg, DappReg, BadgeReg network-maintained indexes

● GithubHint/URLHint hash to URL hint system

● Operations Client version & consensus algorithm database/DAO

● SMSVerification SMS-based identity verification system

● EmailVerification e-Mail-based identity verification system

Page 13: Parity Progress Report

Parity

OperationsThe right information to keep network operations

going.

● Multi-stakeholder smart contract

● Multi-client, multi-track, multi-release, multi-binary

● Tracks consensus protocol● Implements much of

“Yellow Paper council”● Forks require teams signoff● Chronicles which releases

support which forks

Page 14: Parity Progress Report

Parity

SMS-CertifierFirst tool to fight Sybil

● Centralised service :(● Accounts get certified that

they have unique phone associated

● Low cost (12 Finney)● No data released on chain● Only hash stored on server

Page 15: Parity Progress Report

Parity

Email-CertifierSend Ether to an e-mail

address

● Centralised service :(● Accounts get certified that

they correspond to an email address

● Free● Email hash placed on chain● ETH address resolvable

Page 16: Parity Progress Report

Parity

What is Parity Wallet?

Primary user interface for the Parity Ethereum client

● Account/identity management

● Wallet management

● Contract development, deployment, management

● Secure authorisation & signing

● Transaction tracing and node management

● (Decentralised) Application publishing and management

● Chrome Browser Extension support

Page 17: Parity Progress Report

Parity

Account & Identity Management

● Name display: local and Registry

● Name input: local, Registry and e-Mail certified

● Displays Ether and Standard Tokens via Token Registry

● Displays certifications via Badge Registry

● Bestow and filter by tags

● Standard recovery phrase key generator

Page 18: Parity Progress Report

Parity

Accounts management

Page 19: Parity Progress Report

Parity

Creating a new account

Page 20: Parity Progress Report

Parity

Vault management

Page 21: Parity Progress Report

Parity

Account page

Page 22: Parity Progress Report

Parity

Sending funds to an eMail address

Page 23: Parity Progress Report

Parity

Wallet Management

● Seamless multi-signature wallet support

● Similar to accounts: taggable, badges, tokens

● One-click transaction approval

● Efficient transaction history

● Coming-soon: Wallet support for approving DApp transactions

Page 24: Parity Progress Report

Parity

Wallet management

Page 25: Parity Progress Report

Parity

Contract Development/Deployment/Management

● Solidity editor and compiler

● Streamlined deployment

● Management interface for:○ viewing public properties

○ calling into contract

○ executing transactions

○ inspecting events from contracts

Page 26: Parity Progress Report

Parity

Contract editor

Page 27: Parity Progress Report

Parity

Deploying a contract with parameters

Page 28: Parity Progress Report

Parity

Managing a contract

Page 29: Parity Progress Report

Parity

Executing a contract transaction

Page 30: Parity Progress Report

Parity

Secure Approval/Signing

● Multi-layer security approach:○ Only isolated high-security Parity module for storing/using secrets

○ Only high-security API allows signing to be approved by supplying password

○ Only JS signer code served by Parity has access by default

● In-Application overlay (“Signer Snippet”)○ Secure background pattern to ensure DApp isn’t sniffing password

○ Allows primary/default account selection

○ Identifies Application responsible for request

○ Works on Parity-hosted “DApplications” and Ethereum-enabled websites

○ Allows tweaking of parameters (gas, gasPrice and conditional publishing)

Page 31: Parity Progress Report

Parity

Signer with pending transaction

Page 32: Parity Progress Report

Parity

Tweaking transaction parameters

Page 33: Parity Progress Report

Parity

Application Publication & Management

● DApp manifest allows for metadata display

● (Decentralised) Applications visible on main Applications page

● Three sections:○ Local (those found in your parity/dapps directory)

○ Built-in (those that come bundled with Parity Wallet)

○ Network (those found published to the DApps Registry)

● Parity hosts all allowing for ease of development

● Coming soon: DApp permissions to allow certain DApps to access

greater portion of the API

Page 34: Parity Progress Report

Parity

Applications management

Page 35: Parity Progress Report

Parity

Node management & Transaction tracing

● View node information (consensus/chain/logging)

● Alter node operation (syncing & network)

● Published transactions can be traced

● View transaction queue to see nodes to which propagated

● May be resubmitted with altered gas/gasPrice

Page 36: Parity Progress Report

Parity

Viewing the transaction queue

Page 37: Parity Progress Report

Parity

Parity Dapp Tooling

Helping you build dapps

● RPC documentation auto-generated from the code with examples

● parity.js our low-level Promise-based alternative to web3.js

● oo7-parity.js our high-level Bond-based Dapp API

● oo7-react.js our high-level Bond & React-based helper API

● React component library for Dapp building blocks

● Tutorial available on Parity wiki

Page 38: Parity Progress Report

Parity

RPC DocsAutogenerated RPC

documentation

● All Parity RPCs now have markdown documentation auto-generated from code

Page 39: Parity Progress Report

Parity

parity.jsPromise-based Ethereum

Javascript API

Simple, async & compatible

api.eth.blockNumber()

.then(api.eth.getBlockByNumber)

.then(x => x.author)

.then(api.eth.getBalance)

.then(console.log)

Page 40: Parity Progress Report

Parity

oo7-parity.jsAdvanced Bond-based

Ethereum Javascript API

Succinct, Async and Reactive

bonds.balance(

bonds.blocks(

bonds.blockNumber

).author

).tie(console.log)

Bond = Ongoing Promise

Page 41: Parity Progress Report

Parity

oo7-react.jsBond-based React/Ethereum

Javascript API

render() {

return (<Rspan>{

Bonds.balance(

Bonds.block.author

).map(formatBalance)

}</Rspan>);

}

Page 42: Parity Progress Report

Parity

Works well with contracts

class App extends React.Component {constructor() {

super();this.coin = bonds.makeContract(

api.abi.erc20token, bonds.registry.getAddress(‘gavcoin’, ‘A’)

);}render() {

return (<div>You have <Rspan>{this.coin.balanceOf(bonds.accounts[0])

}</Rspan> GAV and <Rspan>{bonds.balance(bonds.accounts[0])

.map(formatBalance)}</Rspan>.</div>);

}}

● Fully reactive● Easy to extend● Composable● Simple API● Promise-friendly

Page 43: Parity Progress Report

Parity

Create new Bonded React Components

class Account extends ReactiveComponent {constructor() { super([‘address’]); }render() {

return (<span>{self.state.address}(<Balance value={

bonds.balance(self.state.address)}/>)

</span>);}

}class Balance extends ReactiveComponent {

constructor() { super([‘value’]); }render() {

return (<span>{formatBalance(self.state.value)

}</span>);}

}

● Fully reactive● Easy to extend● Composable● Simple API● Promise-friendly

Page 44: Parity Progress Report

What is Polkadot?

Page 45: Parity Progress Report

What does it provide?

Pooled securityall constituent chains of our community guaranteed

Trust-free transactionsconstituent chains can send transactions to each other

Entirely generalfree-form messages: no set semantics; same guarantees

as contract-calling in ethereum

Page 46: Parity Progress Report

How does it work?

Relay-chainthe top-level which coordinates consensus and

transaction delivery between constituents

Parachainsconstituent chains which gather and process

transactions

Page 47: Parity Progress Report

Basics of the Relay-chain

No functionalityno external transactions, no smart contracts

Governance built-intoken ownership gives voting privileges

Page 48: Parity Progress Report

Polkadot’s Relay-chain ensures that transactions between the constituent parachains get delivered and that they are all operating correctly.

Parachains can take any form of globally-coherent consensus system; potentially even another relay-chain. Enterprise-friendly encrypted, private, proof-of-authority chains are supported.

Bridges can exist to ferry transactions between the relay chain and existing, independent chains like Ethereum.

Extensible, Scalable and Flexible

Page 49: Parity Progress Report

Open parachains can be tightly integrated into Polkadot, using Polkadot’s validators to ensure their correct operation. They are the easiest and cheapest form of integration.

Closed parachains can be weakly integrated into Polkadot, giving them the freedom to manage validation internally e.g. using a set of recognised authorities.

Bridged chains can be integrated into Polkadot too. Bridges add complexity and cost to integration, but allow the chain to exercise its own means of consensus.

Polkadot network

Consortium parachain

Authorities manage parachain validation, access controls &c.

Transactions andinter-chain consensus

Page 50: Parity Progress Report

PolkadotJoin the dots

@gavofyork @polkadotproject @polkadotnetworkgithub.com/polkadot-io gitter.im/polkadot-io/Lobby