A certificate contract platform on ethereum.
People might lie about having certificates. Also, schools, governments or any entity want to mitigate fraudulent certificates. We created a platform allowing schools or governments to issue certificates, making the certificates credible in a transparent and frad-preventing way. You own your certificates at one place, and you decide whom and when to share them with. Own and Share Your Achievements!
-
Multi-million dollar fake degree industry
-
Re-recruitment costs billions dollar worldwide
-
Background checks are increasingly common
- Expensive, employers pay
- Slow, delay start time
-
Decentralized, Secure, Interoperable etc.
-
Efficient, Easy Verification
-
Zero cost to employers and employees
-
Life-long learning credentials, one place
-
You own your certificates
Bob wants to hire potential employee Alice who just graduated from Stanford, and he wants to verify her diploma. After Alice sends Bob her contract address, Bob verify that is the address of issuer match to Stanford’s public address. If they match, Alice’s diploma is verified.
-
Issue
- Issue certificates to everyone
- Type in basic info for certificates, including title, content, expiration date, revokability, requested signer
- Upload certificate background
- Upload badge background
-
Sign
- Sigle Person Signing
- Multi-Sign
- A contract can be signed by many people
- Harfer to hack if one of the signer is compromised
- Signing Request Sending
- Once the user is the requested signer of the contract, he/she will be asked to sign the contract
- You can sign or decline w/o comment
-
Verification
- Verify certificates using contract addresses
- Type in the contract address, user can view the specified certificate
-
View
- View our own certificates with background and badge specified by the issuer
- View issued contract
-
Safety
- Revoke
- revoke unwanted certificates
- Blocking
- Block unwanted wallet address in case the private key is stolen
- Revoke
-
Privacy
- More to come
- Why webpage only shows baby fox face :( ? You will need to install Metamask plugin for your browser
- Why the page is not showing homepage but asking me to switch to Rinkeby? You will need to switch your network in Metamask to Rinkeby
- Why do we need this? Decentralization allows our community to remove trust party (third party) away from our current workflow and imporve overall efficiency.
- Do I have to pay for this? This platform is a form of Pay-Per-Use Software, so the users that writes blockchain will need to pay gas.
- What if I don't want a contract anymore? (Coming Soon) Users will have their ability to remove the certificate from their list
- Is my certificates secure? Depends on how you protect your private key :)
- How about privacy? The information on the Blockchain is public, unless you hashed the data. In this case, you can save certificate in the form of hashed text, and later ask verifiers to verify the hash text from the actual plain text certificate you send them.
- Will you add tokens? YES
- How is this different from a University having a searchable repository of graduates? 1. Having a centralize (University) to host a searchable database for people, the expense of maintaining the server will also be centralize to one single entity. Someone will have to pay for the expense either students or schools 2. This question is based on one assumption, that the insitute still exist/running by the time of verification 3. What if University becomes CollegeBoard in the upcoming years? (Every query for certificate will charge you 15$)
- What if I lost my private key? Oops...
- What if my private key is stolen? You can block your account using the lock account button on our app, and your address is no longer valid to issue certificate.
- I am a unversity. Why should I use Peony? Is it cheaper than the triditional diploma? It will be cheaper for the traditional diploma, and cheaper on maintaining the whole historical graduates certificates
- I am an employer. Do I need to pay for this? The verification costs you nothing! You save the money from performing background checks.
- I am an employee. Do I need to pay for this? The verification process costs you nothing too!
- Feasibility analysis. Does this service make sense, e.g. storage and gas costs? The gas cost is relatively cheaper than the original method.
We used drizzle to handle the life cycle of loading contract data in front end, allowing data to display on the web front using react. Majority of the certificate data is stored on the blockchain. We used Drizzle store framework to load and cache blockchain data on client's machine. (It will not load the whole system's data, but only the data that user needs)
Nowadays, the middle men charges excessive amount for just providing a minimum services (i.e. ETSGRE charges 27$ and CollegeBoard charges 12$ for every single school you send). This service will create a new revolution to our existing system that we will no longer need a third party trust group to verify any certificate. To keep this project as Decentralized as possible, we try to avoid using centralize cache database and oracles infrastructures. Majority of our project are consiste of web front end, smart contracts, and openzeppelin contracts library.
- Solidity
- Truffle
- ERC 721
- Drizzle
- React
- Promise framework
- antd: https://ant.design/
- Input, Radio, Card, Col, Row, Layout, Alert, message, Button, Menu, Icon, Search
- Toggle: https://developer.microsoft.com/en-us/fabric
- DatePicker: https://www.npmjs.com/package/react-datepicker
- moment: https://momentjs.com/
- Input, Radio from antd
- AccountData, ContractData, ContractForm: https://github.com/trufflesuite/drizzle-react-components
- drizzleConnect: https://github.com/trufflesuite/drizzle-react
- React, Component: https://reactjs.org/
- PropTypes: https://www.npmjs.com/package/prop-types
- _: http://underscorejs.org/
{
"ReceipientName": "Hans",
"IssuerName":"Stanford",
"Title":"St. Petershrb College",
"Body": "This is a testing diploma granted for Hans",
"CertificateBackGroundURL":"www.abc.com",
"BadgeURL": "www.badget.com",
"SignersNames" : [
"Peter, Principle",
"Ron, Professor"
]
}
Time unit for this project is based on nano-second(ns) NOT milliseconds
-
To deploy -http://truffleframework.com/tutorials/deploying-to-the-live-network
-
If you're having problem on testing the project on browser... Make sure you're MetaMask is running on same port number (Ganache: 7454)
-
npm install
- The way we use in truffle.js is using Infura API (which is a handy service that allow us to deploy like Geth but without having actual geth and a full synced node)
- First get a passphrase of the wallet account (the one for deploy) (We will secretly share the wallet secret phrase offline (NEVER PUSH PASSPHRASE to git/public domain))
- Under truffle.js modify the variable
passphrase
from<secret passphrase of the deployment wallet>
to proper passphrases (ex: betray apple car newyork ...) - Run
truffle compile
- Run
truffle migrate --network rinkeby
(Make sure the wallet you use in step 3. has enough Eth to deploy the contract, otherwise it will fail) - Wait the process to complete.
- To verify the deployment of the contract in
build/contracts/<target contract>
(Same as the teacher's instructions) that"networks"
has proper values set in (address, txn hashes, network ids ...etc) - Done
- Go to root directory of the project
- Run
npm run build
- Once build file is generated in
build_webpack/
foler - Copy the the whole folder to the server (root directory or the sepcified directory)
scp -r ./build_webpack/ peony@dapps.nofaults.org:~/cs359b-peony-blockchain-certificate
(For our class:/home/peony/cs359b-peony-blockchain-certificate
) - Done
- ssh into the server
ssh peony@dapps.nofaults.org
- scp to the root directory:
scp [file path] peony@dapps.nofaults.org:~/cs359b-peony-blockchain-certificate
Peony will extend and become not only a educational certificate platform, but a general service platform that supports vehicle license plates, tickets, membership, and even ownship documents. And yes, we did get some inteinterests from investors, exciting journey indeed!