public class Transaction {
private String sender;
private String recipient;
private int amount;
// constructor, getters, setters, toString...
}
Slide 34
Slide 34 text
public class Block {
private final List transactions;
// constructor, getters, setters, toString...
}
Slide 35
Slide 35 text
public class Blockchain {
private List blocks;
// constructor, getters, setters, toString...
}
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
No content
Slide 38
Slide 38 text
No content
Slide 39
Slide 39 text
No content
Slide 40
Slide 40 text
No content
Slide 41
Slide 41 text
No content
Slide 42
Slide 42 text
No content
Slide 43
Slide 43 text
No content
Slide 44
Slide 44 text
public class Blockchain {
private List blocks;
private List pendingTransactions;
// constructor, getters, setters, toString...
}
Slide 45
Slide 45 text
// …
// TODO: Implement Peer Synchronization
// …
Slide 46
Slide 46 text
Fake Transactions
Slide 47
Slide 47 text
TODO: Rebecca buying a bike
from Peter
Slide 48
Slide 48 text
No content
Slide 49
Slide 49 text
No content
Slide 50
Slide 50 text
// …
// TODO: Implement Signatures
// …
Slide 51
Slide 51 text
Making the Ledger
Immutable
Slide 52
Slide 52 text
No content
Slide 53
Slide 53 text
No content
Slide 54
Slide 54 text
No content
Slide 55
Slide 55 text
No content
Slide 56
Slide 56 text
public class Block {
private final List transactions;
private final String prevBlockHash;
private final String blockHash;
// constructor, getters, setters, toString...
}
Slide 57
Slide 57 text
Achieving
Consensus
Slide 58
Slide 58 text
No content
Slide 59
Slide 59 text
No content
Slide 60
Slide 60 text
No content
Slide 61
Slide 61 text
No content
Slide 62
Slide 62 text
No content
Slide 63
Slide 63 text
No content
Slide 64
Slide 64 text
No content
Slide 65
Slide 65 text
No content
Slide 66
Slide 66 text
public class Block {
private final List transactions;
private final long nonce;
private final String prevBlockHash;
private final String blockHash;
// constructor, getters, setters, toString...
}
Slide 67
Slide 67 text
public BlockCandidate getMiningJob() {
String lastBlockHash = blocks.get(blocks.size() - 1)
.getBlockHash();
return new BlockCandidate(
pendingTransactions, lastBlockHash);
}
Slide 68
Slide 68 text
public void submitBlock(Block newBlock) {
if (isValidBlock(newBlock)) {
blocks.add(newBlock);
} else {
throw new IllegalArgumentException("Invalid block");
}
}
public class Blockchain {
private List blocks;
private List pendingTransactions;
private int difficulty = 4;
// constructors, getters, setters, toString…
}