ethereum java

Share Published on Nov 23, 2016 An overview of what blockchain is, how the Ethereum blockchain works, and how you can deploy and interact with smart contracts on Ethereum, all from within the JVM, thanks to web3j.... Technology 1 Comment Statistics Notes Show More Views Actions 0 Embeds 0 1.Java and the Blockchain Introducing web3j @conors10 2.Immutable data structure 4.Blockchain Technologies 2008 2013 2014 2015+ 5.Ethereum • The world computer • Turing-complete virtual machine • Public blockchain (mainnet & testnet) 6.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 7.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 8.

Smart Contracts • Computerised contract • Code + data that lives on the blockchain at an address • Transactions call functions => state transition 9.Transactions • Transfer Ether • Deploy a smart contract • Call a smart contract 10.Integration with Ethereum 12. web3j • Complete Ethereum JSON-RPC implementation • Ethereum wallet support • Smart contract wrappers • Command line tools • Android compatible (v1.0.5+) 13. 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-
.zip 14. web3j transactions 15.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 16.

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 17.
bitcoin miner botnet downloadWallet 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" } } 18.
bitcoin is not a fiat currency

Using web3j • Create client Web3j web3 = Web3j.build(new HttpService()); // defaults to http://localhost:8545/ • Call method web3.
([param1, …, paramN).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 21.bitcoin summit londonSending Ether Web3j web3 = Web3j.build(new HttpService()); Credentials credentials = WalletUtils.loadCredentials( "password", "/path/to/walletfile"); TransactionReceipt transactionReceipt = Transfer.sendFundsAsync( web3, credentials, “0x", BigDecimal.valueOf(0.2), Convert.Unit.ETHER).get(); System.out.println(“Funds transfer completed…” + …); Funds transfer completed, transaction hash: 0x16e41aa9d97d1c3374a4cb9599febdb24d4d5648b607c99e01a8 e79e3eab2c34, block number: 1840479 22.litecoin investors

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 24.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; } } 25.
ethereum bot traderSmart 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/ 26.
bitcoin poker holdem

Greeter.java public final class Greeter extends Contract { private static final String BINARY = “6060604052604....";... public Future
greet() { Function function = new Function("greet", Arrays.asList(), Arrays.>asList(new TypeReference() {})); return executeCallSingleValueReturnAsync(function); } public static Future deploy(Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit, BigInteger initialValue, Utf8String _greeting) { String encodedConstructor = FunctionEncoder.encodeConstructor(Arrays.asList(_greeting)); return deployAsync(Greeter.class, web3j, credentials, gasPrice, gasLimit, BINARY, encodedConstructor, initialValue); } ... 27.btc bitcointalkWeb3j 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!ethereum ether news