SlideShare a Scribd company logo
Java and the
Blockchain
Introducing web3j
@conors10
Decentralised
Immutable data structure
Blockchain Technologies
2008
2013
2014
2015+
Java and the blockchain - introducing web3j
Ethereum
• The world computer
• Turing-complete virtual machine
• Public blockchain (mainnet & testnet)
Ether
• The fuel of the Ethereum blockchain
• Pay miners to process transactions
• Market capitalisation ~$1bn USD (Bitcoin ~$10bn)
• Associated with an address + wallet file
0x19e03255f667bdfd50a32722df860b1eeaf4d635
Obtaining Ether
• Buy it
• Find someone
• Kraken
• BTC Markets
• Mine it
• mainnet => requires dedicated GPUs
• testnet => quick using your CPU
• Refer to Geth/Parity mining docs
Smart Contracts
• Computerised contract
• Code + data that lives on the blockchain at an
address
• Transactions call functions => state transition
Transactions
• Transfer Ether
• Deploy a smart contract
• Call a smart contract
Transactions
Integration with Ethereum
web3j
• Complete Ethereum JSON-RPC implementation
• Ethereum wallet support
• Smart contract wrappers
• Command line tools
• Android compatible (v1.0.5+)
web3j artefacts
• Maven’s Nexus & Bintray's JFrog repositories
• Java 8: org.web3j:core
• Android: org.web3j:core-android
• web3j releases page:
• Command line tools: web3j-<version>.zip
web3j transactions
Getting started with
Ethereum
Free cloud clients @ https://infura.io/
Run a local client (to generate Ether):
$ geth --rpcapi personal,db,eth,net,web3
--rpc --testnet
$ parity --chain testnet
Create a wallet
$ ./web3j-1.0.6/bin/web3j wallet create
_ _____ _ _
| | |____ (_) (_)
__ _____| |__ / /_ _ ___
  / / / _  '_    | | | / _ 
 V V / __/ |_) |.___/ / | _ | || (_) |
_/_/ ___|_.__/ ____/| |(_)|_| ___/
_/ |
|__/
Please enter a wallet file password:
Please re-enter the password:
Please enter a destination directory location [/Users/Conor/
Library/Ethereum/testnet/keystore]: ~/testnet-keystore
Wallet file UTC--2016-11-10T22-52-35.722000000Z--
a929d0fe936c719c4e4d1194ae64e415c7e9e8fe.json successfully
created in: /Users/Conor/testnet-keystore
Wallet file{
"address":"a929d0fe936c719c4e4d1194ae64e415c7e9e8fe",
"id":"c2fbffdd-f588-43a8-9b0c-facb6fd84dfe",
"version":3,
"crypto":{
"cipher":"aes-128-ctr",
"ciphertext":"27be0c93939fc8262977c4454a6b7c261c931dfd8c030b2d3e60ef76f99bfdc6",
"cipherparams":{
"iv":"5aa4fdc64eef6bd82621c6036a323c41"
},
"kdf":"scrypt",
"kdfparams":{
"dklen":32,
"n":262144,
"p":1,
"r":8,
"salt":"6ebc76f30ee21c9a05f907a1ad1df7cca06dd594cf6c537c5e6c79fa88c9b9d1"
},
"mac":"178eace46da9acbf259e94141fbcb7d3d43041e2ec546cd4fe24958e55a49446"
}
}
View transactions
Using web3j
• Create client
Web3j web3 = Web3j.build(new HttpService());
// defaults to http://localhost:8545/
• Call method
web3.<method name>([param1, …, paramN).
[send()|sendAsync()]
Display client version
Web3j web3 = Web3j.build(new HttpService());
Web3ClientVersion clientVersion =
web3.web3ClientVersion()
.sendAsync().get();
System.out.println(“Client version: “ +
clientVersion.getWeb3ClientVersion());
Client version: Geth/v1.4.18-stable-c72f5459/
darwin/go1.7.3
Sending Ether
Web3j web3 = Web3j.build(new HttpService());
Credentials credentials = WalletUtils.loadCredentials(
"password", "/path/to/walletfile");
TransactionReceipt transactionReceipt =
Transfer.sendFundsAsync(
web3,
credentials, “0x<to address>",
BigDecimal.valueOf(0.2),
Convert.Unit.ETHER).get();
System.out.println(“Funds transfer completed…” + …);
Funds transfer completed, transaction hash:
0x16e41aa9d97d1c3374a4cb9599febdb24d4d5648b607c99e01a8
e79e3eab2c34, block number: 1840479
Java and the blockchain - introducing web3j
Block #1840479
Ethereum Smart Contracts
• Usually written in Solidity
• Statically typed high level language
• Compiled to Ethereum Virtual Machine (EVM) byte
code
• Create Java wrappers with web3j
Greeter.sol
contract mortal {
address owner;
function mortal() { owner = msg.sender; }
function kill() { if (msg.sender == owner) suicide(owner); }
}
contract greeter is mortal {
string greeting;
// constructor
function greeter(string _greeting) public {
greeting = _greeting;
}
// getter
function greet() constant returns (string) {
return greeting;
}
}
Smart Contract Wrappers
• Compile
$ solc Greeter.sol --bin --abi --optimize
-o build/
• Generate wrappers
$ ./web3j-1.0.6/bin/web3j solidity
generate build/greeter.bin build/
greeter.abi -p
org.web3j.example.generated -o src/main/
java/
Greeter.java
public final class Greeter extends Contract {

private static final String BINARY = “6060604052604....";

...



public Future<Utf8String> greet() {

Function function = new Function<Utf8String>("greet", 

Arrays.<Type>asList(), 

Arrays.<TypeReference<Utf8String>>asList(new
TypeReference<Utf8String>() {}));

return executeCallSingleValueReturnAsync(function);

}



public static Future<Greeter> deploy(Web3j web3j, Credentials
credentials, BigInteger gasPrice, BigInteger gasLimit, BigInteger
initialValue, Utf8String _greeting) {

String encodedConstructor =
FunctionEncoder.encodeConstructor(Arrays.<Type>asList(_greeting));

return deployAsync(Greeter.class, web3j, credentials,
gasPrice, gasLimit, BINARY, encodedConstructor, initialValue);

}
...
Hello Blockchain World!
Web3j web3 = Web3j.build(new HttpService());
Credentials credentials =
WalletUtils.loadCredentials(
"my password",
"/path/to/walletfile");
Greeter contract = Greeter.deploy(
web3, credentials, BigInteger.ZERO,
new Utf8String("Hello blockchain world!"))
.get();
Utf8String greeting = contract.greet().get();
System.out.println(greeting.getTypeAsString());
Hello blockchain world!
Smarter Contracts
Smarter Contracts
• Asset tokenisation
• Hold Ether
• EIP-20 smart contract token standard
• See web3j examples
web3j + Ethereum
• web3j simplifies working with Ethereum
• Plenty of documentation
• Smart contract integration tests
Further Information
• Project home http://web3j.io
• Mining http://docs.web3j.io/
transactions.html#obtaining-ether
• Useful resources http://docs.web3j.io/links.html
• Chat https://gitter.im/web3j/web3j
• Blog http://conorsvensson.com/
Ad

Recommended

web3j Overview
web3j Overview
Conor Svensson
 
Building Java and Android apps on the blockchain
Building Java and Android apps on the blockchain
Conor Svensson
 
web3j overview
web3j overview
Conor Svensson
 
Web3j 2.0 Update
Web3j 2.0 Update
Conor Svensson
 
web3j 1.0 update
web3j 1.0 update
Conor Svensson
 
Learning Solidity
Learning Solidity
Arnold Pham
 
2019 03 18_kenneth_simplebitcoinwebsite
2019 03 18_kenneth_simplebitcoinwebsite
Hu Kenneth
 
Introduction to Ethereum
Introduction to Ethereum
Arnold Pham
 
Ethereum - MetaMask&Remix&Smartcontract
Ethereum - MetaMask&Remix&Smartcontract
Hu Kenneth
 
Meteor and Bitcoin (Lightning Talk)
Meteor and Bitcoin (Lightning Talk)
Ryan Casey
 
20180711 Metamask
20180711 Metamask
Hu Kenneth
 
Libbitcoin slides
Libbitcoin slides
swansontec
 
20180714 workshop - Ethereum decentralized application with truffle framework
20180714 workshop - Ethereum decentralized application with truffle framework
Hu Kenneth
 
Socket.IO
Socket.IO
Davide Pedranz
 
Ingredients for creating dapps
Ingredients for creating dapps
Stefaan Ponnet
 
WebSockets Jump Start
WebSockets Jump Start
Haim Michael
 
Building interactivity with websockets
Building interactivity with websockets
Wim Godden
 
Blockchain for Developers
Blockchain for Developers
Shimi Bandiel
 
Blockchain for creative content - What we do in LikeCoin
Blockchain for creative content - What we do in LikeCoin
Aludirk Wong
 
gething started - ethereum & using the geth golang client
gething started - ethereum & using the geth golang client
Sathish VJ
 
Web sockets Introduction
Web sockets Introduction
Sudhir Bastakoti
 
Realtime web experience with signal r
Realtime web experience with signal r
Ran Wahle
 
Write Smart Contracts with Truffle Framework
Write Smart Contracts with Truffle Framework
Shun Shiku
 
CBGTBT - Part 3 - Transactions 101
CBGTBT - Part 3 - Transactions 101
Blockstrap.com
 
Cryptography In Silverlight
Cryptography In Silverlight
Barry Dorrans
 
Build dapps 1:3 dev tools
Build dapps 1:3 dev tools
Martin Köppelmann
 
Node.js introduction
Node.js introduction
Parth Joshi
 
Ethereum bxl
Ethereum bxl
Benjamin MATEO
 
Smart contracts using web3.js
Smart contracts using web3.js
Felix Crisan
 
The Ethereum Geth Client
The Ethereum Geth Client
Arnold Pham
 

More Related Content

What's hot (20)

Ethereum - MetaMask&Remix&Smartcontract
Ethereum - MetaMask&Remix&Smartcontract
Hu Kenneth
 
Meteor and Bitcoin (Lightning Talk)
Meteor and Bitcoin (Lightning Talk)
Ryan Casey
 
20180711 Metamask
20180711 Metamask
Hu Kenneth
 
Libbitcoin slides
Libbitcoin slides
swansontec
 
20180714 workshop - Ethereum decentralized application with truffle framework
20180714 workshop - Ethereum decentralized application with truffle framework
Hu Kenneth
 
Socket.IO
Socket.IO
Davide Pedranz
 
Ingredients for creating dapps
Ingredients for creating dapps
Stefaan Ponnet
 
WebSockets Jump Start
WebSockets Jump Start
Haim Michael
 
Building interactivity with websockets
Building interactivity with websockets
Wim Godden
 
Blockchain for Developers
Blockchain for Developers
Shimi Bandiel
 
Blockchain for creative content - What we do in LikeCoin
Blockchain for creative content - What we do in LikeCoin
Aludirk Wong
 
gething started - ethereum & using the geth golang client
gething started - ethereum & using the geth golang client
Sathish VJ
 
Web sockets Introduction
Web sockets Introduction
Sudhir Bastakoti
 
Realtime web experience with signal r
Realtime web experience with signal r
Ran Wahle
 
Write Smart Contracts with Truffle Framework
Write Smart Contracts with Truffle Framework
Shun Shiku
 
CBGTBT - Part 3 - Transactions 101
CBGTBT - Part 3 - Transactions 101
Blockstrap.com
 
Cryptography In Silverlight
Cryptography In Silverlight
Barry Dorrans
 
Build dapps 1:3 dev tools
Build dapps 1:3 dev tools
Martin Köppelmann
 
Node.js introduction
Node.js introduction
Parth Joshi
 
Ethereum bxl
Ethereum bxl
Benjamin MATEO
 
Ethereum - MetaMask&Remix&Smartcontract
Ethereum - MetaMask&Remix&Smartcontract
Hu Kenneth
 
Meteor and Bitcoin (Lightning Talk)
Meteor and Bitcoin (Lightning Talk)
Ryan Casey
 
20180711 Metamask
20180711 Metamask
Hu Kenneth
 
Libbitcoin slides
Libbitcoin slides
swansontec
 
20180714 workshop - Ethereum decentralized application with truffle framework
20180714 workshop - Ethereum decentralized application with truffle framework
Hu Kenneth
 
Ingredients for creating dapps
Ingredients for creating dapps
Stefaan Ponnet
 
WebSockets Jump Start
WebSockets Jump Start
Haim Michael
 
Building interactivity with websockets
Building interactivity with websockets
Wim Godden
 
Blockchain for Developers
Blockchain for Developers
Shimi Bandiel
 
Blockchain for creative content - What we do in LikeCoin
Blockchain for creative content - What we do in LikeCoin
Aludirk Wong
 
gething started - ethereum & using the geth golang client
gething started - ethereum & using the geth golang client
Sathish VJ
 
Realtime web experience with signal r
Realtime web experience with signal r
Ran Wahle
 
Write Smart Contracts with Truffle Framework
Write Smart Contracts with Truffle Framework
Shun Shiku
 
CBGTBT - Part 3 - Transactions 101
CBGTBT - Part 3 - Transactions 101
Blockstrap.com
 
Cryptography In Silverlight
Cryptography In Silverlight
Barry Dorrans
 
Node.js introduction
Node.js introduction
Parth Joshi
 

Similar to Java and the blockchain - introducing web3j (20)

Smart contracts using web3.js
Smart contracts using web3.js
Felix Crisan
 
The Ethereum Geth Client
The Ethereum Geth Client
Arnold Pham
 
DevEx in Ethereum - a look at the developer stack
DevEx in Ethereum - a look at the developer stack
All Things Open
 
Javascript toolset for Ethereum Smart Contract development
Javascript toolset for Ethereum Smart Contract development
BugSense
 
The JavaScript toolset for development on Ethereum
The JavaScript toolset for development on Ethereum
GreeceJS
 
Dappsmedia smartcontract _write_smartcontracts_on_console_ethereum
Dappsmedia smartcontract _write_smartcontracts_on_console_ethereum
Tomoaki Sato
 
Ethereum
Ethereum
Brian Yap
 
Exploring ethereum
Exploring ethereum
Nikhil Krishna Nair
 
Ethereum Block Chain
Ethereum Block Chain
SanatPandoh
 
Eclipsecon Europe: Blockchain, Ethereum and Business Applications
Eclipsecon Europe: Blockchain, Ethereum and Business Applications
Matthias Zimmermann
 
Ethereum in a nutshell
Ethereum in a nutshell
Daniel Chan
 
Building Apps with Ethereum Smart Contract
Building Apps with Ethereum Smart Contract
Vaideeswaran Sethuraman
 
Blockchain Coding Dojo - BlockchainHub Graz
Blockchain Coding Dojo - BlockchainHub Graz
BlockchainHub Graz
 
Build your own private blockchain based on ethereum
Build your own private blockchain based on ethereum
Mehran Pourvahab
 
The Foundation of Smart Contract Development on Ethereum
The Foundation of Smart Contract Development on Ethereum
NAtional Institute of TEchnology Rourkela , Galgotias University
 
Introduction to Blockchain with an Ethereuem Hands-on
Introduction to Blockchain with an Ethereuem Hands-on
Johann Romefort
 
Ryan Stortz & Sophia D'Antoine - “EVM2VEC: Bug Discovery in Smart Contracts”
Ryan Stortz & Sophia D'Antoine - “EVM2VEC: Bug Discovery in Smart Contracts”
Hacken_Ecosystem
 
Developing Blockchain Applications
Developing Blockchain Applications
malikmayank
 
Blockchain, Ethereum and Business Applications
Blockchain, Ethereum and Business Applications
Matthias Zimmermann
 
Ethereum.pptx
Ethereum.pptx
keepsmile22
 
Smart contracts using web3.js
Smart contracts using web3.js
Felix Crisan
 
The Ethereum Geth Client
The Ethereum Geth Client
Arnold Pham
 
DevEx in Ethereum - a look at the developer stack
DevEx in Ethereum - a look at the developer stack
All Things Open
 
Javascript toolset for Ethereum Smart Contract development
Javascript toolset for Ethereum Smart Contract development
BugSense
 
The JavaScript toolset for development on Ethereum
The JavaScript toolset for development on Ethereum
GreeceJS
 
Dappsmedia smartcontract _write_smartcontracts_on_console_ethereum
Dappsmedia smartcontract _write_smartcontracts_on_console_ethereum
Tomoaki Sato
 
Ethereum Block Chain
Ethereum Block Chain
SanatPandoh
 
Eclipsecon Europe: Blockchain, Ethereum and Business Applications
Eclipsecon Europe: Blockchain, Ethereum and Business Applications
Matthias Zimmermann
 
Ethereum in a nutshell
Ethereum in a nutshell
Daniel Chan
 
Building Apps with Ethereum Smart Contract
Building Apps with Ethereum Smart Contract
Vaideeswaran Sethuraman
 
Blockchain Coding Dojo - BlockchainHub Graz
Blockchain Coding Dojo - BlockchainHub Graz
BlockchainHub Graz
 
Build your own private blockchain based on ethereum
Build your own private blockchain based on ethereum
Mehran Pourvahab
 
Introduction to Blockchain with an Ethereuem Hands-on
Introduction to Blockchain with an Ethereuem Hands-on
Johann Romefort
 
Ryan Stortz & Sophia D'Antoine - “EVM2VEC: Bug Discovery in Smart Contracts”
Ryan Stortz & Sophia D'Antoine - “EVM2VEC: Bug Discovery in Smart Contracts”
Hacken_Ecosystem
 
Developing Blockchain Applications
Developing Blockchain Applications
malikmayank
 
Blockchain, Ethereum and Business Applications
Blockchain, Ethereum and Business Applications
Matthias Zimmermann
 
Ad

More from Conor Svensson (6)

Blockchain - Navigating this Game-Changing Technology
Blockchain - Navigating this Game-Changing Technology
Conor Svensson
 
Ether mining 101 v2
Ether mining 101 v2
Conor Svensson
 
Cloud Native Microservices with Spring Cloud
Cloud Native Microservices with Spring Cloud
Conor Svensson
 
Ether Mining 101
Ether Mining 101
Conor Svensson
 
Cloud Native Microservices with Spring Cloud
Cloud Native Microservices with Spring Cloud
Conor Svensson
 
Java Microservices with Netflix OSS & Spring
Java Microservices with Netflix OSS & Spring
Conor Svensson
 
Blockchain - Navigating this Game-Changing Technology
Blockchain - Navigating this Game-Changing Technology
Conor Svensson
 
Cloud Native Microservices with Spring Cloud
Cloud Native Microservices with Spring Cloud
Conor Svensson
 
Cloud Native Microservices with Spring Cloud
Cloud Native Microservices with Spring Cloud
Conor Svensson
 
Java Microservices with Netflix OSS & Spring
Java Microservices with Netflix OSS & Spring
Conor Svensson
 
Ad

Recently uploaded (20)

FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
UserCon Belgium: Honey, VMware increased my bill
UserCon Belgium: Honey, VMware increased my bill
stijn40
 
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
Curietech AI in action - Accelerate MuleSoft development
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
 
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
 
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Nilesh Gule
 
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
 
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
OpenPOWER Foundation & Open-Source Core Innovations
OpenPOWER Foundation & Open-Source Core Innovations
IBM
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
Securing AI - There Is No Try, Only Do!.pdf
Securing AI - There Is No Try, Only Do!.pdf
Priyanka Aash
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
Techniques for Automatic Device Identification and Network Assignment.pdf
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
UserCon Belgium: Honey, VMware increased my bill
UserCon Belgium: Honey, VMware increased my bill
stijn40
 
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
Curietech AI in action - Accelerate MuleSoft development
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
 
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
 
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Nilesh Gule
 
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
 
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
 
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
OpenPOWER Foundation & Open-Source Core Innovations
OpenPOWER Foundation & Open-Source Core Innovations
IBM
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
Securing AI - There Is No Try, Only Do!.pdf
Securing AI - There Is No Try, Only Do!.pdf
Priyanka Aash
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
Techniques for Automatic Device Identification and Network Assignment.pdf
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
 

Java and the blockchain - introducing web3j