#DrupalEthereum @digitaldonkey09
@digitaldonkey09
"Sharing Economy" of
Uber, Airbnb
Centralized user data,
siloed Facebook, Google
Peer to Peer
+ no middlemen
Self-sovereign
user data
Internet of
Information
Crypto enthusiasts see the new layer of trust and value as Web3.0
Internet of
Value
"Ethereum is an open-source,
public, blockchain-based
distributed computing
platform featuring smart
contract functionality"
Programmable
money:
Smart Contracts
Decentralized
P2P Network
Immutable Global Ledger
Cryptographically signed updates
Consensus
without a central authority
Censorship-resistant
Public-Private Keys
Native token as currency
Private Consortium
Blockchain
(permissions, privacy, speed)
Global Public
Blockchain
BLOCKCHAIN
Timestamps
Currency
Digital Signatures
Accounts
Immutable Ledger
BLOCKCHAIN
Timestamps
Currency
Digital Signatures
Accounts
Immutable Ledger
Transaction
time
Miners compete to compute next block to earn Gas
BLOCKCHAIN
Timestamps
Currency
Signatures
Accounts
Ledger
Smart Contracts
contract CrowdFund
if time_is_up && balance > $10,000
move balance to crowdfund_account
else
return donation to original_donor
(pseudocode)
are programs with code and state stored on the blockchain
ETHEREUM
Timestamps
Currency
Signatures
Accounts
Ledger
Smart Contracts
Registries
ETHEREUM
Timestamps
Currency
Signatures
Accounts
Ledger
Smart Contracts
Registries
Multi-party Signatures
ETHEREUM
Timestamps
Currency
Signatures
Accounts
Ledger
Smart Contracts
Registries
Multi-party Signatures
Tokens
ERC-20 Tokens
fungible (replaceable) tradable assets (a banknote, stock)
ERC-721 Non-fungible Tokens
unique tradable assets (a Van Gogh painting or CryptoKitty)
Categories of Tokens
payment tokens, investment tokens, consumer utility tokens
ETHEREUM
Timestamps
Currency
Signatures
Accounts
Ledger
Smart Contracts
Registries
Multi-party Signatures
Tokens
Oracles
Real world data to use in smart contracts
off-chain input
COMMUNITY
CREATING
STANDARDS
Industry & Finance
https://www.eublockchainforum.eu/noteworthy/articles
Public & Social Services
ERC-948 Recurring Subscription
Subscription smart contract
User
Provider
?
Is proprietary / Isn't self owned
You pay for your "free" online identity with privacy
You can be excluded ("You may leave if you don't like the new Terms & Conditions")
Portable Decentralized identifier (DID)
Launch example site using Docker
https://github.com/digitaldonkey/docker-drupal-ethereum
Framework to develop Ethereum applications with Drupal
Ready for pioneers to get started
Frontend agnostic
many wallets and signing tools
Goal is out-of-the-box modules + good use cases
Backend agnostic
work with any Ethereum client or service
Semi-decentralized
Ethereum decentralized apps (dapps) are on a hard UX road to serverless
Current Web
Ideal Decentralization
Client side signing using Transaction-signers
Server just pulls data from blockchain
Transaction Signers
Javascript API
Drupal
Ethereum PHP
library
Ethereum Clients or Services
Ethereum
Push Transaction
Independently
Infura.io API
Etherscan API
Ethereum Nodes
Other providers
Ethereum Nodes
https://github.com/digitaldonkey/ethereum-php
API documentation: http://ethereum-php.org
Accounts
Map Accounts/Addresses to Drupal Accounts
➡ "Ethereum Identity for a known user group"
Experiment on connecting identity
Ethereum Signup / Ethereum User Register
Smart Contracts
Manage deploy as Drupal Admin
Provide ABI to process data in Drupal & frontend
Let Blockchain Events trigger PHP actions
Ethereum Smart Contract Entity
Servers (Ethereum Nodes)
Manage and Connect to Ethereum-nodes
Manage Networks IDs
Server Status Page
Ethereum main module
Transactions Signing
Provide contract ABI in frontend and Web3js
Let Drupal know about Blockchain actions
Provide default UI and web3Ready() in front end
Transaction Signers (web3)
Ethereum Signup
Ethereum User Connector
Text
Text + Private Key => Signature
Text + Signature Text => Ethereum Address
private key UX is hard
Browser Extensions
Hardware Wallets
Mobile Wallets & Signers
Desktop Wallets
Cloud Wallets
by Bobby Dresser (uPort)
Web3 browser wars?
⇢ Experiment with UX interactions
⇢ Develop standards for Dapp interaction
Visualize TX signer state
Initialize dapplet when requirements are met
Emit an Event in you Solidity contract code e.g in RegisterDrupal->newUser()
Add a "on"-EventHandler in your module src/Plugin/SmartContract
ethereum_user_connector/src/Plugin/SmartContract/RegisterDrupal.php
Trigger a web3 action like this.contract.methods.newUser(...)
class RegisterDrupal extends SmartContract { public static function onAccountCreated(EmittedEvent $event) { $hash = $event->getData()['hash']; $event->setResponse($controller>verifyUserByHash($hash)); } }
emit AccountCreated(msg.sender, hash);
Drupal Ethereum module
so far 27 pull requests merged
(Commits/PRs stats refer to the various involved projects and may not be up to date)
thorsten.krug@consensys.net
@digitaldonkey09
The development of Drupal Ethereum Module
Has been sponsored by ConsenSys
@ConsenSys
https://consensys.net
https://slides.com/digitaldonkey/drupaleurope