$24
In this lab, you will implement the ScroogeCoin cryptocurrency. You will act as Scrooge and verify transactions sent to you by users and add them to your ledger.
Your submission will only be the DefaultScroogeCoinServer.java class. Do not modify any of the other existing classes, as the auto-grading script will use the original implementations of all the other classes.
Your grade will be based entirely on the percent of test cases passed.
A few JUnit test cases have been given to you as sanity checks on your code, but the grading will be based different test cases. You should invest time in developing your own test cases.
In this lab, you will implement a ScroogeCoin application server.
Assume the following about the server:
1. Has the URL is https://scroogecoin.com.
2. Only accepts connections over HTTPS.
3. Has a valid SSL certificate.
4. Does not authenticate any users, include Scrooge.
5. Scrooge is the only person in control of the server.
These assumptions enable users to trust that any response they receive from the server is authorized by Scrooge. However, because the server does not authenticate users, your implementation will need to rely on digital signatures to process transactions securely. Scrooge runs the server and then submits transactions to the server through a web browser, like any other user.
Implement the following methods per the comments in the DefaultScroogeServer.java class file.
DefaultScroogeServer.init(KeyPair)
DefaultScroogeServer.epochHandler(List<Transaction>)
DefaultScroogeServer.isValid(Transaction)
DefaultScroogeServer.getUTXOs()