Proof-of-Humanity-React
Proof-of-Humanity Core Component for React.
Used as a wrapper for PoH validators.
Install
npm install poh-react
Usage
1. Wrap your app into the ProofOfHumanityProvider
import { ProofOfHumanityProvider } from 'poh-react';
<ProofOfHumanityProvider>
<App />
</ProofOfHumanityProvider>;
2. Initialize at least one PoH validator plugin (e.g. poh-validator-hcaptcha)
import hCaptchaValidator from 'poh-validator-hcaptcha';
const validator = (
<HCaptchaValidator
sitekey="10000000-ffff-ffff-ffff-000000000001"
url="http://localhost:3000/api/v1/proof"
/>
);
3. Initialize the getProofOfHumanity
method from the PoH hook
import { useProofOfHumanity } from 'poh-react';
const { getProofOfHumanity } = useProofOfHumanity(validator);
4. Obtain the Proof-Of-Humanity prior to sending any sensitive transaction
const handleClick = () => {
try {
const { error, errorMessage, proof } = await getProofOfHumanity();
if (!error) {
const tx = await mySmartContract.someImportantMethod(proof);
}
} catch(error) {
console.error(error);
}
}
<button onClick={handleClick}>Send transaction</button>
The method in the smart contract must know how to deal with the proof
. You can leverage a Solidity library just for that: poh-contracts
Supported Validator Plugins
Validator Plugin Requirements
Validator plugin component must be a React component accepting the following props:
renderLogoOnly
(boolean) – if true
, the component should render its own logo instead of actual validator interface
data
(string) – data (a hex string) to be included into signed proof-of-humanity. Can be a random hex challege, or a random hex challenge along with address owner signature
onVerify
(function) – must be called once validation is complete with the object with following keys as the only parameter:
-
error
(boolean) – true
in case of error; otherwise false
-
errorMessage
(string) – in case of error; otherwise null
-
proof
(string): proof-of-humanity (a hex string); null
in case of error
Example plugin: hCaptcha validator
Author
Alex Bakoushin
License
MIT